FooGallery – Image Gallery WordPress Plugin - Version 2.2.6

Version Description

  • Date Updated : 2022-03-31
  • New : Added new gallery template : Carousel
  • Fix : Fixed bug with captions showing alternatives when using paging
  • Fix : Fixed conflict with image lazy loading in Safari 15.4, by adding loading=eager
  • Update : FooGallery client side 2.0.30
Download this release

Release Info

Developer bradvin
Plugin Icon 128x128 FooGallery – Image Gallery WordPress Plugin
Version 2.2.6
Comparing to
See all releases

Code changes from version 2.1.34 to 2.2.6

Files changed (46) hide show
  1. LICENSE.txt +338 -338
  2. README.txt +1031 -1015
  3. changelog.txt +3 -3
  4. css/admin-foogallery-gallery-piles.css +92 -92
  5. css/admin-foogallery.css +679 -679
  6. css/admin-page-foogallery-extensions.css +269 -269
  7. css/admin-page-foogallery-help.css +564 -564
  8. css/admin-page-foogallery-settings.css +44 -44
  9. css/admin-tinymce.css +114 -114
  10. css/foogallery-foovideo-overrides.css +95 -95
  11. css/foogallery.admin.datasources.css +122 -122
  12. extensions/albums/admin/class-columns.php +73 -73
  13. extensions/albums/admin/class-metaboxes.php +577 -577
  14. extensions/albums/album-default.php +84 -84
  15. extensions/albums/album-stack.php +86 -86
  16. extensions/albums/class-albums-extension.php +175 -175
  17. extensions/albums/class-foogallery-album.php +256 -256
  18. extensions/albums/class-posttypes.php +108 -108
  19. extensions/albums/css/admin-foogallery-album.css +272 -272
  20. extensions/albums/css/album-default.css +102 -102
  21. extensions/albums/css/album-stack.css +289 -289
  22. extensions/albums/functions.php +390 -390
  23. extensions/albums/js/admin-foogallery-album.js +148 -148
  24. extensions/albums/js/album-stack.js +869 -869
  25. extensions/albums/public/class-foogallery-album-template-loader.php +184 -184
  26. extensions/albums/public/class-rewrite-rules.php +46 -46
  27. extensions/albums/public/class-shortcodes.php +44 -44
  28. extensions/default-templates/carousel/class-carousel-gallery-template.php +339 -0
  29. extensions/default-templates/carousel/gallery-carousel.php +26 -0
  30. extensions/default-templates/class-default-templates-extension.php +13 -13
  31. extensions/default-templates/class-default-templates.php +54 -53
  32. extensions/default-templates/default/class-default-gallery-template.php +239 -239
  33. extensions/default-templates/default/gallery-default.php +19 -19
  34. extensions/default-templates/default/js/admin-gallery-default.js +88 -88
  35. extensions/default-templates/functions.php +49 -49
  36. extensions/default-templates/image-viewer/class-image-viewer-gallery-template.php +311 -311
  37. extensions/default-templates/image-viewer/gallery-image-viewer.php +38 -38
  38. extensions/default-templates/image-viewer/js/admin-gallery-image-viewer.js +122 -122
  39. extensions/default-templates/justified/class-justified-gallery-template.php +352 -352
  40. extensions/default-templates/justified/gallery-justified.php +15 -15
  41. extensions/default-templates/masonry/class-masonry-gallery-template.php +406 -406
  42. extensions/default-templates/masonry/gallery-masonry.php +25 -25
  43. extensions/default-templates/masonry/js/admin-gallery-masonry.js +29 -29
  44. extensions/default-templates/shared/css/admin-foogallery.css +86 -86
  45. extensions/default-templates/shared/css/foogallery.css +3641 -3478
  46. extensions/default-templates/shared/css/foogallery.min.css +1 -1
LICENSE.txt CHANGED
@@ -1,339 +1,339 @@
1
- GNU GENERAL PUBLIC LICENSE
2
- Version 2, June 1991
3
-
4
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
- Everyone is permitted to copy and distribute verbatim copies
7
- of this license document, but changing it is not allowed.
8
-
9
- Preamble
10
-
11
- The licenses for most software are designed to take away your
12
- freedom to share and change it. By contrast, the GNU General Public
13
- License is intended to guarantee your freedom to share and change free
14
- software--to make sure the software is free for all its users. This
15
- General Public License applies to most of the Free Software
16
- Foundation's software and to any other program whose authors commit to
17
- using it. (Some other Free Software Foundation software is covered by
18
- the GNU Lesser General Public License instead.) You can apply it to
19
- your programs, too.
20
-
21
- When we speak of free software, we are referring to freedom, not
22
- price. Our General Public Licenses are designed to make sure that you
23
- have the freedom to distribute copies of free software (and charge for
24
- this service if you wish), that you receive source code or can get it
25
- if you want it, that you can change the software or use pieces of it
26
- in new free programs; and that you know you can do these things.
27
-
28
- To protect your rights, we need to make restrictions that forbid
29
- anyone to deny you these rights or to ask you to surrender the rights.
30
- These restrictions translate to certain responsibilities for you if you
31
- distribute copies of the software, or if you modify it.
32
-
33
- For example, if you distribute copies of such a program, whether
34
- gratis or for a fee, you must give the recipients all the rights that
35
- you have. You must make sure that they, too, receive or can get the
36
- source code. And you must show them these terms so they know their
37
- rights.
38
-
39
- We protect your rights with two steps: (1) copyright the software, and
40
- (2) offer you this license which gives you legal permission to copy,
41
- distribute and/or modify the software.
42
-
43
- Also, for each author's protection and ours, we want to make certain
44
- that everyone understands that there is no warranty for this free
45
- software. If the software is modified by someone else and passed on, we
46
- want its recipients to know that what they have is not the original, so
47
- that any problems introduced by others will not reflect on the original
48
- authors' reputations.
49
-
50
- Finally, any free program is threatened constantly by software
51
- patents. We wish to avoid the danger that redistributors of a free
52
- program will individually obtain patent licenses, in effect making the
53
- program proprietary. To prevent this, we have made it clear that any
54
- patent must be licensed for everyone's free use or not licensed at all.
55
-
56
- The precise terms and conditions for copying, distribution and
57
- modification follow.
58
-
59
- GNU GENERAL PUBLIC LICENSE
60
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
-
62
- 0. This License applies to any program or other work which contains
63
- a notice placed by the copyright holder saying it may be distributed
64
- under the terms of this General Public License. The "Program", below,
65
- refers to any such program or work, and a "work based on the Program"
66
- means either the Program or any derivative work under copyright law:
67
- that is to say, a work containing the Program or a portion of it,
68
- either verbatim or with modifications and/or translated into another
69
- language. (Hereinafter, translation is included without limitation in
70
- the term "modification".) Each licensee is addressed as "you".
71
-
72
- Activities other than copying, distribution and modification are not
73
- covered by this License; they are outside its scope. The act of
74
- running the Program is not restricted, and the output from the Program
75
- is covered only if its contents constitute a work based on the
76
- Program (independent of having been made by running the Program).
77
- Whether that is true depends on what the Program does.
78
-
79
- 1. You may copy and distribute verbatim copies of the Program's
80
- source code as you receive it, in any medium, provided that you
81
- conspicuously and appropriately publish on each copy an appropriate
82
- copyright notice and disclaimer of warranty; keep intact all the
83
- notices that refer to this License and to the absence of any warranty;
84
- and give any other recipients of the Program a copy of this License
85
- along with the Program.
86
-
87
- You may charge a fee for the physical act of transferring a copy, and
88
- you may at your option offer warranty protection in exchange for a fee.
89
-
90
- 2. You may modify your copy or copies of the Program or any portion
91
- of it, thus forming a work based on the Program, and copy and
92
- distribute such modifications or work under the terms of Section 1
93
- above, provided that you also meet all of these conditions:
94
-
95
- a) You must cause the modified files to carry prominent notices
96
- stating that you changed the files and the date of any change.
97
-
98
- b) You must cause any work that you distribute or publish, that in
99
- whole or in part contains or is derived from the Program or any
100
- part thereof, to be licensed as a whole at no charge to all third
101
- parties under the terms of this License.
102
-
103
- c) If the modified program normally reads commands interactively
104
- when run, you must cause it, when started running for such
105
- interactive use in the most ordinary way, to print or display an
106
- announcement including an appropriate copyright notice and a
107
- notice that there is no warranty (or else, saying that you provide
108
- a warranty) and that users may redistribute the program under
109
- these conditions, and telling the user how to view a copy of this
110
- License. (Exception: if the Program itself is interactive but
111
- does not normally print such an announcement, your work based on
112
- the Program is not required to print an announcement.)
113
-
114
- These requirements apply to the modified work as a whole. If
115
- identifiable sections of that work are not derived from the Program,
116
- and can be reasonably considered independent and separate works in
117
- themselves, then this License, and its terms, do not apply to those
118
- sections when you distribute them as separate works. But when you
119
- distribute the same sections as part of a whole which is a work based
120
- on the Program, the distribution of the whole must be on the terms of
121
- this License, whose permissions for other licensees extend to the
122
- entire whole, and thus to each and every part regardless of who wrote it.
123
-
124
- Thus, it is not the intent of this section to claim rights or contest
125
- your rights to work written entirely by you; rather, the intent is to
126
- exercise the right to control the distribution of derivative or
127
- collective works based on the Program.
128
-
129
- In addition, mere aggregation of another work not based on the Program
130
- with the Program (or with a work based on the Program) on a volume of
131
- a storage or distribution medium does not bring the other work under
132
- the scope of this License.
133
-
134
- 3. You may copy and distribute the Program (or a work based on it,
135
- under Section 2) in object code or executable form under the terms of
136
- Sections 1 and 2 above provided that you also do one of the following:
137
-
138
- a) Accompany it with the complete corresponding machine-readable
139
- source code, which must be distributed under the terms of Sections
140
- 1 and 2 above on a medium customarily used for software interchange; or,
141
-
142
- b) Accompany it with a written offer, valid for at least three
143
- years, to give any third party, for a charge no more than your
144
- cost of physically performing source distribution, a complete
145
- machine-readable copy of the corresponding source code, to be
146
- distributed under the terms of Sections 1 and 2 above on a medium
147
- customarily used for software interchange; or,
148
-
149
- c) Accompany it with the information you received as to the offer
150
- to distribute corresponding source code. (This alternative is
151
- allowed only for noncommercial distribution and only if you
152
- received the program in object code or executable form with such
153
- an offer, in accord with Subsection b above.)
154
-
155
- The source code for a work means the preferred form of the work for
156
- making modifications to it. For an executable work, complete source
157
- code means all the source code for all modules it contains, plus any
158
- associated interface definition files, plus the scripts used to
159
- control compilation and installation of the executable. However, as a
160
- special exception, the source code distributed need not include
161
- anything that is normally distributed (in either source or binary
162
- form) with the major components (compiler, kernel, and so on) of the
163
- operating system on which the executable runs, unless that component
164
- itself accompanies the executable.
165
-
166
- If distribution of executable or object code is made by offering
167
- access to copy from a designated place, then offering equivalent
168
- access to copy the source code from the same place counts as
169
- distribution of the source code, even though third parties are not
170
- compelled to copy the source along with the object code.
171
-
172
- 4. You may not copy, modify, sublicense, or distribute the Program
173
- except as expressly provided under this License. Any attempt
174
- otherwise to copy, modify, sublicense or distribute the Program is
175
- void, and will automatically terminate your rights under this License.
176
- However, parties who have received copies, or rights, from you under
177
- this License will not have their licenses terminated so long as such
178
- parties remain in full compliance.
179
-
180
- 5. You are not required to accept this License, since you have not
181
- signed it. However, nothing else grants you permission to modify or
182
- distribute the Program or its derivative works. These actions are
183
- prohibited by law if you do not accept this License. Therefore, by
184
- modifying or distributing the Program (or any work based on the
185
- Program), you indicate your acceptance of this License to do so, and
186
- all its terms and conditions for copying, distributing or modifying
187
- the Program or works based on it.
188
-
189
- 6. Each time you redistribute the Program (or any work based on the
190
- Program), the recipient automatically receives a license from the
191
- original licensor to copy, distribute or modify the Program subject to
192
- these terms and conditions. You may not impose any further
193
- restrictions on the recipients' exercise of the rights granted herein.
194
- You are not responsible for enforcing compliance by third parties to
195
- this License.
196
-
197
- 7. If, as a consequence of a court judgment or allegation of patent
198
- infringement or for any other reason (not limited to patent issues),
199
- conditions are imposed on you (whether by court order, agreement or
200
- otherwise) that contradict the conditions of this License, they do not
201
- excuse you from the conditions of this License. If you cannot
202
- distribute so as to satisfy simultaneously your obligations under this
203
- License and any other pertinent obligations, then as a consequence you
204
- may not distribute the Program at all. For example, if a patent
205
- license would not permit royalty-free redistribution of the Program by
206
- all those who receive copies directly or indirectly through you, then
207
- the only way you could satisfy both it and this License would be to
208
- refrain entirely from distribution of the Program.
209
-
210
- If any portion of this section is held invalid or unenforceable under
211
- any particular circumstance, the balance of the section is intended to
212
- apply and the section as a whole is intended to apply in other
213
- circumstances.
214
-
215
- It is not the purpose of this section to induce you to infringe any
216
- patents or other property right claims or to contest validity of any
217
- such claims; this section has the sole purpose of protecting the
218
- integrity of the free software distribution system, which is
219
- implemented by public license practices. Many people have made
220
- generous contributions to the wide range of software distributed
221
- through that system in reliance on consistent application of that
222
- system; it is up to the author/donor to decide if he or she is willing
223
- to distribute software through any other system and a licensee cannot
224
- impose that choice.
225
-
226
- This section is intended to make thoroughly clear what is believed to
227
- be a consequence of the rest of this License.
228
-
229
- 8. If the distribution and/or use of the Program is restricted in
230
- certain countries either by patents or by copyrighted interfaces, the
231
- original copyright holder who places the Program under this License
232
- may add an explicit geographical distribution limitation excluding
233
- those countries, so that distribution is permitted only in or among
234
- countries not thus excluded. In such case, this License incorporates
235
- the limitation as if written in the body of this License.
236
-
237
- 9. The Free Software Foundation may publish revised and/or new versions
238
- of the General Public License from time to time. Such new versions will
239
- be similar in spirit to the present version, but may differ in detail to
240
- address new problems or concerns.
241
-
242
- Each version is given a distinguishing version number. If the Program
243
- specifies a version number of this License which applies to it and "any
244
- later version", you have the option of following the terms and conditions
245
- either of that version or of any later version published by the Free
246
- Software Foundation. If the Program does not specify a version number of
247
- this License, you may choose any version ever published by the Free Software
248
- Foundation.
249
-
250
- 10. If you wish to incorporate parts of the Program into other free
251
- programs whose distribution conditions are different, write to the author
252
- to ask for permission. For software which is copyrighted by the Free
253
- Software Foundation, write to the Free Software Foundation; we sometimes
254
- make exceptions for this. Our decision will be guided by the two goals
255
- of preserving the free status of all derivatives of our free software and
256
- of promoting the sharing and reuse of software generally.
257
-
258
- NO WARRANTY
259
-
260
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
- FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
- OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
- PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
- OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
- TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
- REPAIR OR CORRECTION.
269
-
270
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
- REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
- INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
- OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
- TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
- POSSIBILITY OF SUCH DAMAGES.
279
-
280
- END OF TERMS AND CONDITIONS
281
-
282
- How to Apply These Terms to Your New Programs
283
-
284
- If you develop a new program, and you want it to be of the greatest
285
- possible use to the public, the best way to achieve this is to make it
286
- free software which everyone can redistribute and change under these terms.
287
-
288
- To do so, attach the following notices to the program. It is safest
289
- to attach them to the start of each source file to most effectively
290
- convey the exclusion of warranty; and each file should have at least
291
- the "copyright" line and a pointer to where the full notice is found.
292
-
293
- <one line to give the program's name and a brief idea of what it does.>
294
- Copyright (C) <year> <name of author>
295
-
296
- This program is free software; you can redistribute it and/or modify
297
- it under the terms of the GNU General Public License as published by
298
- the Free Software Foundation; either version 2 of the License, or
299
- (at your option) any later version.
300
-
301
- This program is distributed in the hope that it will be useful,
302
- but WITHOUT ANY WARRANTY; without even the implied warranty of
303
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
- GNU General Public License for more details.
305
-
306
- You should have received a copy of the GNU General Public License along
307
- with this program; if not, write to the Free Software Foundation, Inc.,
308
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
-
310
- Also add information on how to contact you by electronic and paper mail.
311
-
312
- If the program is interactive, make it output a short notice like this
313
- when it starts in an interactive mode:
314
-
315
- Gnomovision version 69, Copyright (C) year name of author
316
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317
- This is free software, and you are welcome to redistribute it
318
- under certain conditions; type `show c' for details.
319
-
320
- The hypothetical commands `show w' and `show c' should show the appropriate
321
- parts of the General Public License. Of course, the commands you use may
322
- be called something other than `show w' and `show c'; they could even be
323
- mouse-clicks or menu items--whatever suits your program.
324
-
325
- You should also get your employer (if you work as a programmer) or your
326
- school, if any, to sign a "copyright disclaimer" for the program, if
327
- necessary. Here is a sample; alter the names:
328
-
329
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
-
332
- <signature of Ty Coon>, 1 April 1989
333
- Ty Coon, President of Vice
334
-
335
- This General Public License does not permit incorporating your program into
336
- proprietary programs. If your program is a subroutine library, you may
337
- consider it more useful to permit linking proprietary applications with the
338
- library. If this is what you want to do, use the GNU Lesser General
339
  Public License instead of this License.
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ Preamble
10
+
11
+ The licenses for most software are designed to take away your
12
+ freedom to share and change it. By contrast, the GNU General Public
13
+ License is intended to guarantee your freedom to share and change free
14
+ software--to make sure the software is free for all its users. This
15
+ General Public License applies to most of the Free Software
16
+ Foundation's software and to any other program whose authors commit to
17
+ using it. (Some other Free Software Foundation software is covered by
18
+ the GNU Lesser General Public License instead.) You can apply it to
19
+ your programs, too.
20
+
21
+ When we speak of free software, we are referring to freedom, not
22
+ price. Our General Public Licenses are designed to make sure that you
23
+ have the freedom to distribute copies of free software (and charge for
24
+ this service if you wish), that you receive source code or can get it
25
+ if you want it, that you can change the software or use pieces of it
26
+ in new free programs; and that you know you can do these things.
27
+
28
+ To protect your rights, we need to make restrictions that forbid
29
+ anyone to deny you these rights or to ask you to surrender the rights.
30
+ These restrictions translate to certain responsibilities for you if you
31
+ distribute copies of the software, or if you modify it.
32
+
33
+ For example, if you distribute copies of such a program, whether
34
+ gratis or for a fee, you must give the recipients all the rights that
35
+ you have. You must make sure that they, too, receive or can get the
36
+ source code. And you must show them these terms so they know their
37
+ rights.
38
+
39
+ We protect your rights with two steps: (1) copyright the software, and
40
+ (2) offer you this license which gives you legal permission to copy,
41
+ distribute and/or modify the software.
42
+
43
+ Also, for each author's protection and ours, we want to make certain
44
+ that everyone understands that there is no warranty for this free
45
+ software. If the software is modified by someone else and passed on, we
46
+ want its recipients to know that what they have is not the original, so
47
+ that any problems introduced by others will not reflect on the original
48
+ authors' reputations.
49
+
50
+ Finally, any free program is threatened constantly by software
51
+ patents. We wish to avoid the danger that redistributors of a free
52
+ program will individually obtain patent licenses, in effect making the
53
+ program proprietary. To prevent this, we have made it clear that any
54
+ patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ GNU GENERAL PUBLIC LICENSE
60
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+ 0. This License applies to any program or other work which contains
63
+ a notice placed by the copyright holder saying it may be distributed
64
+ under the terms of this General Public License. The "Program", below,
65
+ refers to any such program or work, and a "work based on the Program"
66
+ means either the Program or any derivative work under copyright law:
67
+ that is to say, a work containing the Program or a portion of it,
68
+ either verbatim or with modifications and/or translated into another
69
+ language. (Hereinafter, translation is included without limitation in
70
+ the term "modification".) Each licensee is addressed as "you".
71
+
72
+ Activities other than copying, distribution and modification are not
73
+ covered by this License; they are outside its scope. The act of
74
+ running the Program is not restricted, and the output from the Program
75
+ is covered only if its contents constitute a work based on the
76
+ Program (independent of having been made by running the Program).
77
+ Whether that is true depends on what the Program does.
78
+
79
+ 1. You may copy and distribute verbatim copies of the Program's
80
+ source code as you receive it, in any medium, provided that you
81
+ conspicuously and appropriately publish on each copy an appropriate
82
+ copyright notice and disclaimer of warranty; keep intact all the
83
+ notices that refer to this License and to the absence of any warranty;
84
+ and give any other recipients of the Program a copy of this License
85
+ along with the Program.
86
+
87
+ You may charge a fee for the physical act of transferring a copy, and
88
+ you may at your option offer warranty protection in exchange for a fee.
89
+
90
+ 2. You may modify your copy or copies of the Program or any portion
91
+ of it, thus forming a work based on the Program, and copy and
92
+ distribute such modifications or work under the terms of Section 1
93
+ above, provided that you also meet all of these conditions:
94
+
95
+ a) You must cause the modified files to carry prominent notices
96
+ stating that you changed the files and the date of any change.
97
+
98
+ b) You must cause any work that you distribute or publish, that in
99
+ whole or in part contains or is derived from the Program or any
100
+ part thereof, to be licensed as a whole at no charge to all third
101
+ parties under the terms of this License.
102
+
103
+ c) If the modified program normally reads commands interactively
104
+ when run, you must cause it, when started running for such
105
+ interactive use in the most ordinary way, to print or display an
106
+ announcement including an appropriate copyright notice and a
107
+ notice that there is no warranty (or else, saying that you provide
108
+ a warranty) and that users may redistribute the program under
109
+ these conditions, and telling the user how to view a copy of this
110
+ License. (Exception: if the Program itself is interactive but
111
+ does not normally print such an announcement, your work based on
112
+ the Program is not required to print an announcement.)
113
+
114
+ These requirements apply to the modified work as a whole. If
115
+ identifiable sections of that work are not derived from the Program,
116
+ and can be reasonably considered independent and separate works in
117
+ themselves, then this License, and its terms, do not apply to those
118
+ sections when you distribute them as separate works. But when you
119
+ distribute the same sections as part of a whole which is a work based
120
+ on the Program, the distribution of the whole must be on the terms of
121
+ this License, whose permissions for other licensees extend to the
122
+ entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+ Thus, it is not the intent of this section to claim rights or contest
125
+ your rights to work written entirely by you; rather, the intent is to
126
+ exercise the right to control the distribution of derivative or
127
+ collective works based on the Program.
128
+
129
+ In addition, mere aggregation of another work not based on the Program
130
+ with the Program (or with a work based on the Program) on a volume of
131
+ a storage or distribution medium does not bring the other work under
132
+ the scope of this License.
133
+
134
+ 3. You may copy and distribute the Program (or a work based on it,
135
+ under Section 2) in object code or executable form under the terms of
136
+ Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+ a) Accompany it with the complete corresponding machine-readable
139
+ source code, which must be distributed under the terms of Sections
140
+ 1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+ b) Accompany it with a written offer, valid for at least three
143
+ years, to give any third party, for a charge no more than your
144
+ cost of physically performing source distribution, a complete
145
+ machine-readable copy of the corresponding source code, to be
146
+ distributed under the terms of Sections 1 and 2 above on a medium
147
+ customarily used for software interchange; or,
148
+
149
+ c) Accompany it with the information you received as to the offer
150
+ to distribute corresponding source code. (This alternative is
151
+ allowed only for noncommercial distribution and only if you
152
+ received the program in object code or executable form with such
153
+ an offer, in accord with Subsection b above.)
154
+
155
+ The source code for a work means the preferred form of the work for
156
+ making modifications to it. For an executable work, complete source
157
+ code means all the source code for all modules it contains, plus any
158
+ associated interface definition files, plus the scripts used to
159
+ control compilation and installation of the executable. However, as a
160
+ special exception, the source code distributed need not include
161
+ anything that is normally distributed (in either source or binary
162
+ form) with the major components (compiler, kernel, and so on) of the
163
+ operating system on which the executable runs, unless that component
164
+ itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering
167
+ access to copy from a designated place, then offering equivalent
168
+ access to copy the source code from the same place counts as
169
+ distribution of the source code, even though third parties are not
170
+ compelled to copy the source along with the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program
173
+ except as expressly provided under this License. Any attempt
174
+ otherwise to copy, modify, sublicense or distribute the Program is
175
+ void, and will automatically terminate your rights under this License.
176
+ However, parties who have received copies, or rights, from you under
177
+ this License will not have their licenses terminated so long as such
178
+ parties remain in full compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not
181
+ signed it. However, nothing else grants you permission to modify or
182
+ distribute the Program or its derivative works. These actions are
183
+ prohibited by law if you do not accept this License. Therefore, by
184
+ modifying or distributing the Program (or any work based on the
185
+ Program), you indicate your acceptance of this License to do so, and
186
+ all its terms and conditions for copying, distributing or modifying
187
+ the Program or works based on it.
188
+
189
+ 6. Each time you redistribute the Program (or any work based on the
190
+ Program), the recipient automatically receives a license from the
191
+ original licensor to copy, distribute or modify the Program subject to
192
+ these terms and conditions. You may not impose any further
193
+ restrictions on the recipients' exercise of the rights granted herein.
194
+ You are not responsible for enforcing compliance by third parties to
195
+ this License.
196
+
197
+ 7. If, as a consequence of a court judgment or allegation of patent
198
+ infringement or for any other reason (not limited to patent issues),
199
+ conditions are imposed on you (whether by court order, agreement or
200
+ otherwise) that contradict the conditions of this License, they do not
201
+ excuse you from the conditions of this License. If you cannot
202
+ distribute so as to satisfy simultaneously your obligations under this
203
+ License and any other pertinent obligations, then as a consequence you
204
+ may not distribute the Program at all. For example, if a patent
205
+ license would not permit royalty-free redistribution of the Program by
206
+ all those who receive copies directly or indirectly through you, then
207
+ the only way you could satisfy both it and this License would be to
208
+ refrain entirely from distribution of the Program.
209
+
210
+ If any portion of this section is held invalid or unenforceable under
211
+ any particular circumstance, the balance of the section is intended to
212
+ apply and the section as a whole is intended to apply in other
213
+ circumstances.
214
+
215
+ It is not the purpose of this section to induce you to infringe any
216
+ patents or other property right claims or to contest validity of any
217
+ such claims; this section has the sole purpose of protecting the
218
+ integrity of the free software distribution system, which is
219
+ implemented by public license practices. Many people have made
220
+ generous contributions to the wide range of software distributed
221
+ through that system in reliance on consistent application of that
222
+ system; it is up to the author/donor to decide if he or she is willing
223
+ to distribute software through any other system and a licensee cannot
224
+ impose that choice.
225
+
226
+ This section is intended to make thoroughly clear what is believed to
227
+ be a consequence of the rest of this License.
228
+
229
+ 8. If the distribution and/or use of the Program is restricted in
230
+ certain countries either by patents or by copyrighted interfaces, the
231
+ original copyright holder who places the Program under this License
232
+ may add an explicit geographical distribution limitation excluding
233
+ those countries, so that distribution is permitted only in or among
234
+ countries not thus excluded. In such case, this License incorporates
235
+ the limitation as if written in the body of this License.
236
+
237
+ 9. The Free Software Foundation may publish revised and/or new versions
238
+ of the General Public License from time to time. Such new versions will
239
+ be similar in spirit to the present version, but may differ in detail to
240
+ address new problems or concerns.
241
+
242
+ Each version is given a distinguishing version number. If the Program
243
+ specifies a version number of this License which applies to it and "any
244
+ later version", you have the option of following the terms and conditions
245
+ either of that version or of any later version published by the Free
246
+ Software Foundation. If the Program does not specify a version number of
247
+ this License, you may choose any version ever published by the Free Software
248
+ Foundation.
249
+
250
+ 10. If you wish to incorporate parts of the Program into other free
251
+ programs whose distribution conditions are different, write to the author
252
+ to ask for permission. For software which is copyrighted by the Free
253
+ Software Foundation, write to the Free Software Foundation; we sometimes
254
+ make exceptions for this. Our decision will be guided by the two goals
255
+ of preserving the free status of all derivatives of our free software and
256
+ of promoting the sharing and reuse of software generally.
257
+
258
+ NO WARRANTY
259
+
260
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+ REPAIR OR CORRECTION.
269
+
270
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+ POSSIBILITY OF SUCH DAMAGES.
279
+
280
+ END OF TERMS AND CONDITIONS
281
+
282
+ How to Apply These Terms to Your New Programs
283
+
284
+ If you develop a new program, and you want it to be of the greatest
285
+ possible use to the public, the best way to achieve this is to make it
286
+ free software which everyone can redistribute and change under these terms.
287
+
288
+ To do so, attach the following notices to the program. It is safest
289
+ to attach them to the start of each source file to most effectively
290
+ convey the exclusion of warranty; and each file should have at least
291
+ the "copyright" line and a pointer to where the full notice is found.
292
+
293
+ <one line to give the program's name and a brief idea of what it does.>
294
+ Copyright (C) <year> <name of author>
295
+
296
+ This program is free software; you can redistribute it and/or modify
297
+ it under the terms of the GNU General Public License as published by
298
+ the Free Software Foundation; either version 2 of the License, or
299
+ (at your option) any later version.
300
+
301
+ This program is distributed in the hope that it will be useful,
302
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
+ GNU General Public License for more details.
305
+
306
+ You should have received a copy of the GNU General Public License along
307
+ with this program; if not, write to the Free Software Foundation, Inc.,
308
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
+
310
+ Also add information on how to contact you by electronic and paper mail.
311
+
312
+ If the program is interactive, make it output a short notice like this
313
+ when it starts in an interactive mode:
314
+
315
+ Gnomovision version 69, Copyright (C) year name of author
316
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317
+ This is free software, and you are welcome to redistribute it
318
+ under certain conditions; type `show c' for details.
319
+
320
+ The hypothetical commands `show w' and `show c' should show the appropriate
321
+ parts of the General Public License. Of course, the commands you use may
322
+ be called something other than `show w' and `show c'; they could even be
323
+ mouse-clicks or menu items--whatever suits your program.
324
+
325
+ You should also get your employer (if you work as a programmer) or your
326
+ school, if any, to sign a "copyright disclaimer" for the program, if
327
+ necessary. Here is a sample; alter the names:
328
+
329
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
+
332
+ <signature of Ty Coon>, 1 April 1989
333
+ Ty Coon, President of Vice
334
+
335
+ This General Public License does not permit incorporating your program into
336
+ proprietary programs. If your program is a subroutine library, you may
337
+ consider it more useful to permit linking proprietary applications with the
338
+ library. If this is what you want to do, use the GNU Lesser General
339
  Public License instead of this License.
README.txt CHANGED
@@ -1,1016 +1,1032 @@
1
- === Best WordPress Gallery Plugin - FooGallery ===
2
- Contributors: bradvin, steveush, fooplugins
3
- Donate link: https://fooplugins.com
4
- Tags: gallery, image gallery, photo gallery, responsive gallery, wordpress gallery plugin, best gallery plugin, albums, media gallery, video gallery, lightbox
5
- Requires at least: 4.6
6
- Tested up to: 5.9
7
- Stable tag: 2.1.34
8
- License: GPLv2 or later
9
- License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
-
11
- The best WordPress gallery plugin. Create stunning galleries in minutes, with advanced settings for complete customization and control.
12
-
13
- == Description ==
14
-
15
- = WordPress Gallery Plugin =
16
-
17
- Make galleries in WordPress great again with FooGallery! Add a stunning gallery to your website in under 1 minute using our beautiful pre-built templates, or if you want more control, then take advantage of all our advanced settings to customsize your galleries to look exactly the way you want.
18
-
19
- FooGallery is an easy-to-use image gallery plugin, with stunning pre-built gallery layouts and a focus on performance and SEO.
20
- It is also responsive, retina-ready and supports lazy loading for lightning fast photo galleries.
21
-
22
- Live previews are available while creating an image gallery, and also within the Gutenberg block editor with our FooGallery Block.
23
-
24
- FooGallery was built to be highly configurable and extendable for developers or freelancers.
25
-
26
- That is why we think FooGallery is the best WordPress gallery plugin. After using it, we hope you will agree.
27
-
28
- [Visit the FooGallery Homepage](https://fooplugins.com/foogallery-wordpress-gallery-plugin/)
29
-
30
- = Performance Updates for Google's Core Web Vitals =
31
-
32
- A faster gallery now means a more favourable ranking in Google!
33
- FooGallery has been specifically optimized to score better for Google's Core Web Vitals update in 2021.
34
- We have focused on the speed of our javascript code, and also improved the visual stability of all gallery layouts.
35
- This has led to dramatically better scores for the 3 key lighthouse factors including:
36
-
37
- * Largest Contentful Paint - galleries load and appear quicker for your visitors
38
- * First Input Delay - you can interact with the gallery sooner
39
- * Cumulative Layout Shift - gallery images shift around a lot less than before!
40
-
41
- = WordPress Gallery Plugin Features =
42
-
43
- The following free features make FooGallery the **best gallery plugin** on the market!
44
-
45
- * 6 Beautiful Image Gallery templates
46
- * Responsive Image Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/responsive-image-gallery/)
47
- * Image Viewer Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/image-viewer-gallery/)
48
- * Masonry Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/masonry-gallery/)
49
- * Simple Portfolio - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-portfolio-gallery/)
50
- * Justified Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/justified-gallery/)
51
- * Single Thumbnail Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/single-thumbnail-gallery/)
52
- * Easy to customize!
53
- * Adjust thumbnail size, spacing & alignment
54
- * Adjust border size, rounded corners, drop shadows, inner shadows
55
- * Choose from a selection of loading icons
56
- * Animated loaded effects - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/animated-loaded-effects/)
57
- * Awesome hover effects - adjust colors, scaling and icons
58
- * Complete control over captions
59
- * Focus on Performance
60
- * Lazy Loading options
61
- * Simple pagination [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/gallery-pagination/)
62
- * Optimized code
63
- * Reduced content layout shift
64
- * Focus on SEO
65
- * ALT and title attributes on all images
66
- * Yoast SEO sitemap integration
67
- * Rank Math SEO sitemap integration
68
- * AIOSEO sitemap integration
69
- * Albums built-in! (just activate the albums extension)
70
- * Responsive album layout - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-album-gallery/)
71
- * All-in-one Stack album - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-album-gallery/#all-in-one)
72
- * Gutenberg ready (Gallery previews inside the new editor!)
73
- * Live previews as you make changes!
74
- * Retina thumbnail support
75
- * Gallery Widget
76
- * Use built-in media library to manage images
77
- * Drag n Drop reordering of images and galleries
78
- * Custom CSS for both galleries and albums
79
- * Copy to clipboard shortcodes
80
- * One-click gallery page creation
81
- * NextGen importer tool (albums and galleries and shortcodes)
82
- * Multisite Support
83
-
84
- = PRO Gallery Features =
85
-
86
- There are 3 PRO plans available, that will work with any budget:
87
-
88
- [PRO Starter](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-starter-features) | [PRO Expert](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-expert-features) | [PRO Commerce](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-commerce-features)
89
-
90
- **PRO Starter Features**
91
-
92
- * 3 more beautiful PRO responsive gallery templates:
93
- * Polaroid gallery template - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/polaroid-gallery/)
94
- * Grid gallery template - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/grid-gallery/)
95
- * Slider gallery template - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/slider-gallery/)
96
- * PRO image and media lightbox built in! [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pro-lightbox/)
97
- * 11 beautiful hover effect presets - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/hover-presets/)
98
- * 12 CSS thumbnail filters (Instagram) - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/filter-effects/)
99
-
100
- **PRO Expert Features**
101
-
102
- * Video Support - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/video-gallery/)
103
- * Import video from Youtube, Vimeo and others
104
- * Self-hosted videos
105
- * Filtering
106
- * Add filters using Media Tags or Categories - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/filtering/)
107
- * Multi-level filtering for galleries [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/filtering/#multi-level)
108
- * Bulk media tags and category management for attachments
109
- * Dynamic Galleries (load images from other sources):
110
- * Load from a folder on the server
111
- * Load from a collection from Adobe Lightroom (using WP/LR Sync)
112
- * Load all attachments with Media Tags
113
- * Load all attachments with Media Categories
114
- * Load from a folder in Real Media Library
115
- * Load featured images from a post/page/custom post type - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/post-query-gallery/)
116
- * Advanced Pagination
117
- * Numbered pagination - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pagination/#numbered)
118
- * "Load More" pagination - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pagination/#load-more)
119
- * Infinite scroll image gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pagination/#infinite-scroll)
120
- * Advanced Custom Captions - [demo](hhttps://fooplugins.com/foogallery-wordpress-gallery-plugin/custom-captions/)
121
- * EXIF metadata gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/exif-data/)
122
- * Bulk Copy Gallery Settings - [more info](https://fooplugins.com/bulk-copy-foogallery-pro/)
123
- * Deeplinking support for pages and filters
124
-
125
- **PRO Commerce Features**
126
-
127
- * Image Protection
128
- * Photo watermarking - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/photo-watermark/)
129
- * No right-click protection - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/photo-watermark/)
130
- * Deep WooCommerce integration - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/woocommerce-integration/#product-gallery)
131
- * Create a dynamic gallery from your WooCommerce products in seconds!
132
- * Filter using WooCommerce product categories
133
- * Show sales ribbons for products on sale
134
- * Add-to-cart buttons on thumbnails
135
- * Support for product variations
136
- * Show product details (including variations) in Lightbox
137
- * Sell your images online - [demo](https://footest.tastewp.com/)
138
- * Link all your gallery items to a single master product
139
- * Supports variations
140
-
141
- [See More Demos](https://fooplugins.com/foogallery-wordpress-gallery-plugin/demos/)
142
-
143
- **Test Drive**
144
-
145
- Take FooGallery for a test drive! Spin up your very own WP instance with FooGallery pre-installed:
146
-
147
- [Start FooGallery Test Drive!](https://tastewp.com/new/?pre-installed-plugin-slug=foogallery)
148
-
149
- **Documentation**
150
-
151
- * [FooGallery Documentation](https://fooplugins.com/documentation/foogallery/)
152
-
153
- **Gutenberg**
154
-
155
- FooGallery includes a really simple-to-use Gutenberg block to add your existing FooGallery image galleries in seconds. And it includes live previews of the image gallery too!
156
-
157
- **GDPR**
158
-
159
- When you install FooGallery for the first time, the plugin asks you (the website admin) to opt-in so that we can track your usage of the plugin and provide a better service (send you update emails for new version releases and security updates etc). *This is optional and not required in order to use the plugin.*
160
-
161
- From your website point of view, FooGallery never collects or stores any visitor information at all, when someone visits your website.
162
-
163
- **PHP 8 Compatible**
164
-
165
- FooGallery has been tried and tested on servers running up to PHP 8
166
-
167
- **Retina Support**
168
-
169
- FooGallery is a responsive gallery with built-in support for higher quality thumbnails on retina-enabled displays. No more blurry thumbnails, just crisp thumbnails so that your image galleries look amazing on all devices.
170
-
171
- **Video Gallery**
172
-
173
- FooGallery PRO Expert allows you to create a video gallery in seconds! Import from YouTube, Vimeo, Facebook, TED and Dailymotion, or import a self-hosted video from any online source (eg. S3 bucket).
174
- You can also easily create mixed galleries with both images and videos!
175
-
176
- **WooCommerce**
177
-
178
- Sell your photographs online with our full WooCommerce integration, available in PRO Commerce. You can either create a dyanmic gallery from your existing products, or you can sell images in a gallery by linking them to a single master product. With full support for variations. Highlight products for sale with ribbons. Add call-to-action buttons to your items, for example AJAX Add to Cart buttons.
179
-
180
- **Albums Built In**
181
-
182
- Albums are built in as an extension. Simply head over to the extensions page and activate the albums extension. A new menu item will appear that allows you to add albums just as easily as galleries.
183
-
184
- **Built For Developers**
185
-
186
- FooGallery was designed to be the most developer-friendly image gallery plugin available for WordPress. It was also built on top of a solid extension framework, which means different functionality is separated out into different areas in the codebase. It also means the core plugin is lightweight, but still allowing for the most flexibility.
187
-
188
- **Special Thanks**
189
-
190
- Thanks to Fortinet FortiGuard Labs for the security testing conducted on the plugin. FooGallery is a safer plugin thanks to them.
191
-
192
- == Best Wordpress Gallery Plugin ==
193
-
194
- We did the research. FooGallery has the best performance and has the most features out of any free WordPress gallery plugin. Read our blog post about it:
195
-
196
- [What is the Best WordPress Gallery Plugin?](https://fooplugins.com/best-wordpress-gallery-plugin/)
197
-
198
- == Installation ==
199
-
200
- 1. Upload `foogallery` folder to the `/wp-content/plugins/` directory
201
- 2. Activate the plugin through the 'Plugins' menu in WordPress
202
- 3. You will be redirected to the FooGallery Help page to get started with the best gallery plugin
203
-
204
- == Frequently Asked Questions ==
205
-
206
- = My galleries are not working. Thumbnails are greyed out and not loading when I scroll down the page. =
207
-
208
- Lazy loading is not working on your gallery. This could be due to a conflict between our plugin and your theme.
209
- You can test this theory by testing a different theme (if possible).
210
- We can help you get it working, by contacting our support.
211
-
212
- = I have created a gallery in the backend, but when I look at it on the frontend, it does not show correctly. =
213
-
214
- Sometimes, there are issues when the theme does not follow WordPress best practices.
215
- In order for FooGallery to function properly, the theme needs to have:
216
- * A call to wp_head(); in the header.php file.
217
- * A call to wp_footer(); in the footer.php file.
218
-
219
- One way to check if the theme is the problem, is by switching to one of the built-in WordPress themes, and then see if the gallery loads.
220
-
221
- = After updating, my galleries no longer work! What should I do? =
222
-
223
- Do you have any WordPress caching or optimization plugins? If so, then clear/purge your caches.
224
- Do you have any caching setup at your website host? If so, clear/purge those caches.
225
-
226
- = After installing the plugin, my site is broken! Help! =
227
-
228
- First thing to do is restore your site to it's previous working state.
229
- 1. Get access to your site via FTP, or SFTP.
230
- 2. Navigate to the wp-content/plugins folder.
231
- 3. Rename the foogallery folder to foogallery1 in order to deactivate the plugin.
232
- 4. At this point, your site should be working again.
233
- 5. Please contact our support and provide the following info:
234
- * What version of WordPress you are running.
235
- * What version of PHP you are using.
236
- * What version of FooGallery you installed.
237
- * What error was shown when your site was broken?
238
- * What plugins and theme are you using?
239
-
240
- = I purchased a PRO license, but the Free version is still running. =
241
-
242
- Make sure you are running the PRO version. You can check this by visiting the FooGallery -> Account page within the WordPress admin.
243
- If you do not have the PRO version, you can download it by visiting your account page at https://fooplugins.com/account
244
- If you have the PRO version, then clear any caches on your site or for your host. Also clear CSS Optimiztion Cache from FooGallery Settings.
245
- If it still does not work, then please contact our support to help further.
246
-
247
- = Why are my thumbnails so blurry? =
248
-
249
- Have you enabled retina support for your galleries? To enable retina support, edit the gallery and locate the Retina Support metabox.
250
-
251
- = Can I add videos to my galleries? =
252
-
253
- Yes, video is supported in [FooGallery PRO Expert](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-expert-features)!
254
-
255
- = Can I sell photographs from a gallery? =
256
-
257
- Yes, that is why we built [FooGallery PRO Commerce](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-commerce-features)!
258
- You can choose to create a gallery based of your products, or you can link all images in a gallery to a master product. This allows you complete control over how you want to run your image store and how they are sold on your website.
259
-
260
- = Do I need to install a separate plugin to show a lightbox? =
261
-
262
- For the Free version of FooGallery - Yes, you will need to install FooBox Image Lightbox.
263
- For the PRO version of FooGallery - No, we have built in a uniquely beautiful lightbox!
264
-
265
- = How do I get albums working? =
266
-
267
- Simply go to the FooGallery extensions page and activate the Albums extension. If you do not see a button to activate the albums extension, reload the extensions list by clicking the reload button.
268
-
269
- = Can I add a watermark to my images? =
270
-
271
- Yes, our PRO Commerce plan includes image watermarking.
272
-
273
- = Can I add external links to items in the gallery? =
274
-
275
- Yes, you can link to any external website by choosing "Custom URL" for the Thumbnail Link setting. You also then need to set a custom URL for the items in your gallery, which is done by editing the attachment.
276
-
277
- = How do I turn off all the PRO Promotions in the admin? =
278
-
279
- Goto FooGallery Settings -> Advanced Tab and check "Disable PRO Promotions" and then save your settings.
280
-
281
- = How can you claim that FooGallery is the best WordPress gallery plugin? =
282
-
283
- We did the research and comparison. See our findings : [What is the Best WordPress Gallery Plugin?](https://fooplugins.com/best-wordpress-gallery-plugin/)
284
-
285
- == Screenshots ==
286
-
287
- 1. Gallery Edit Page
288
- 2. Visual Shortcodes
289
- 3. Gallery Picker
290
- 4. Frontend example with default template
291
- 5. Album Edit Page
292
-
293
- == Upgrade Notice ==
294
-
295
- Please update in order to for FooGallery to work in WP 5.5+!
296
-
297
- == Changelog ==
298
-
299
- = 2.1.34 =
300
- * Date Updated : 2022-02-01
301
- * Fix : Fixed bug where WebP images could not be uploaded when using the GD image editor
302
- * Fix : Security Fix in wp-admin
303
- * Update : Update to Freemius SDK
304
-
305
- = 2.1.33 =
306
- * Date Updated : 2022-01-15
307
- * Update : FooGallery client side 2.0.24
308
- * Fix : Ensure gallery layout is triggered in certain scenarios.
309
- * Fix : Updated the hover effects and presets to trigger on focus for better accessibility.
310
- * Fix : il8n bug where il8n script was not being included in page in some scenarios.
311
- * Fix : Removed Gutenberg editor warnings when using the FooGallery block.
312
-
313
-
314
- = 2.1.28 =
315
- * Date Updated : 2021-10-27
316
- * Fix : Fixed issue when no attachments being saved when updating gallery, in some scenarios.
317
- * Update : Updated features on help page. Updated links to correct URL's.
318
-
319
-
320
- = 2.1.24 =
321
- * Date Updated : 2021-10-16
322
-
323
-
324
- = 2.1.18 =
325
- * Date Updated : 2021-09-01
326
- * Update : FooGallery client side 2.0.20
327
- * Update : Updated FooGallery Help page in admin to match new branding
328
- * Update : Updated internal promotions to match plans
329
- * Fix : fixed bug in WP 5.8 when not all attachments showing in media modal
330
- * Fix : Added custom CSS for 3 gallery templates, to avoid incorrect thumb widths with certain themes and SVG thumbnails.
331
- * Fix : Added logic to generate unique ID's for the gallery container if the gallery is included more than once on a page.
332
- * New : Added custom pagination theme
333
-
334
-
335
- = 2.0.39 =
336
- * Date Updated : 2021-06-12
337
- * Fix : Changed how attachment full size image details are determined, when there are issues in certain setups
338
- * Fix : jQuery backwards compatibility
339
- * Fix : Fixed issues with thumb widths for certain theme css
340
- * Fix : Updated lazyload placeholder SVG to include width and height attributes
341
- * Fix : Updated help page demo's to use correct placeholders
342
- * Update : FooGallery client side 2.0.16
343
-
344
-
345
- = 2.0.35 =
346
- * Date Updated : 2021-05-20
347
- * New : Added lazyload compatibility for Imagify (replace img tags with picture tags)
348
- * Fix : updated how gallery usage is determined
349
- * Fix : sanitised gallery custom CSS and global custom CSS & JS admin settings
350
- * Fix : only show rating admin message after 5 galleries have been created (was showing always!)
351
- * Update : FooGallery client side 2.0.13
352
-
353
- = 2.0.30 =
354
- * Date Updated : 2021-05-03
355
- * New : Added lazyload compatibility for Jetpack, Jetpack Boost, WPMU Smush, EWWW Image Optimizer, W3 Total Cache, WP Optimize
356
- * New : Added "Enable Gallery Descriptions" setting for Albums
357
- * New : Galleries used in albums will now show a link to the album in the Usage column on the gallery listing page
358
- * New : output gallery debug info when debugging setting is enable
359
- * Update : FooGallery client side 2.0.12
360
- * Update : Updated the thumbnail generation test image to use a local image within the plugin
361
- * Update : Added "Last Row" gallery setting back for Justified Galleries
362
- * Fix : Fixed bug with custom URL's not working for Single Thumbnail galleries
363
-
364
-
365
- = 2.0.24 =
366
- * Date Updated : 2021-18-04
367
- * Update : FooGallery client side 2.0.11
368
- * Fix : Fixed compatibility with WPRocket and rendering inline script of gallery items json
369
-
370
-
371
- = 2.0.20 =
372
- * Date Updated : 2021-11-04
373
- * New : Major performance improvements for all gallery templates (improving scores for Core Web Vitals)
374
- * New : Added "Mobile Columns" gallery setting for Responsive Galleries
375
- * New : Added 6 Columns option for Masonry gallery layout
376
- * New : Added "Horizontal Layout" gallery setting for Masonry galleries, to try maintain left-to-right order of images
377
- * New : Made all image loaded effects in PRO now available in free!!
378
- * New : Added first-class support for ShortPixel Adaptive Images as a thumbnail engine. (can be changed from settings)
379
- * New : Added "Alignment" gallery setting under "Captions" tab for changing horizontal alignment of thumbnail captions
380
- * New : Added "Image Title Attribute" gallery setting under "Advanced" tab for disabling the title attribute added to thumbnail img tags
381
- * New : Added gallery settings to change the lightbox captions when FooBox is the selected lightbox
382
- * New : Added ability to refresh gallery preview when editing by clicking preview button again
383
- * New : Added lazyload support to stack album, giving a major performance boost to very large albums!
384
- * New : Overhauled Help page when plugin is activated, including the ability create demo gallery content and view inline demos
385
- * New : Added ability to override captions for FooBox
386
- * Update : FooGallery client side 2.0.9
387
- * Update : Simplified extensions admin page and removed all build-your-own logic
388
- * Update : Updated the Justified gallery template. Removed "Max Row Height" and "Last Row" settings.
389
- * Update : Updated the Thumbnail gallery template. Removed "Thumbnail Crop" setting.
390
- * Fix : Updated styling for FooGallery Block to look correct in latest version of Gutenberg
391
- * Fix : JSON objects get built using all attributes needed
392
- * Fix : Could not add images to the gallery for some installs, due to no thumbnail sizes being returned. Made the logic more resilient.
393
- * Fix : Compatible with WP Rocket Lazy loading
394
- * Fix : Javascript error with Masonry related to script dependencies when using script minifiers
395
-
396
-
397
- = 1.10.4 =
398
- * Date Updated : 2021-02-03
399
- * Fix : fix for fatal error running pre WP5 : Fatal error: Uncaught ArgumentCountError: Too few arguments to function FooGallery_Thumb_Engine_Default::delete_cache_folder_for_attachment()
400
-
401
- = 1.10.3 =
402
- * Date Updated : 2021-20-02
403
- * Fix : fixed a fatal PHP error on some installs
404
-
405
- = 1.10.1 =
406
- * Date Updated : 2021-18-02
407
- * Fix : fixed a fatal PHP error with PHP 5.6
408
-
409
- = 1.10.0 =
410
- * Date Updated : 2021-18-02
411
- * Update : Removed WPThumb library completely
412
- * Update : Updated to Freemius SDK 2.4.2
413
- * Fix : updated FooGallery block category to 'media'
414
-
415
-
416
- = 1.9.53 =
417
- * Date Updated : 2021-23-01
418
- * Update : FooGallery client side 1.4.26
419
-
420
- = 1.9.52 =
421
- * Date Updated : 2021-22-01
422
-
423
-
424
- = 1.9.50 =
425
- * Date Updated : 2021-21-01
426
-
427
- * Fix : fixed incorrect settings showing for certain gallery templates
428
-
429
- = 1.9.49 =
430
- * Date Updated : 2021-13-01
431
- * Fix : Advanced settings for a gallery to properly override settings rather than merge
432
-
433
-
434
- = 1.9.48 =
435
- * Date Updated : 2021-11-01
436
- * New : Added global Custom JS & CSS settings which are included for all galleries
437
- * New : Added global language settings which apply to all galleries
438
- * Update : Updated All-in-one SEO support to work with AIOSEO v4
439
- * Update : FooGallery client side 1.4.25
440
- * Update : updated WPML compatibility to account for new language settings
441
- * Fix : image URL's with spaces - always ensure image URL's are escaped
442
- * Fix : fixed PHP warning on activation
443
- * Test : tested PHP8 support!
444
-
445
-
446
- = 1.9.47 =
447
- * Date Updated : 2020-16-10
448
-
449
-
450
- = 1.9.46 =
451
- * Date Updated : 2020-15-10
452
-
453
-
454
- = 1.9.45 =
455
- * Date Updated : 2020-15-10
456
- * Fix : Updated albums to use FooGallery stylesheet enqueue function
457
-
458
-
459
- = 1.9.44 =
460
- * Date Updated : 2020-12-06
461
- * New : Allow thumb width and height to be overridden with shortcode arguments override_width and override_height
462
- * Fix : fixed caption bugs where FooBox was not picking up custom/override captions
463
- * Fix : removed use of deprecated functions in jQuery for WP 5.6
464
- * Fix : removed localStorage checks, so that browser does not say that cookies are in use
465
- * Update : FooGallery client side 1.4.24
466
- * Update : Frontend gallery initialization now uses custom ready event by default, to avoid jQuery errors
467
-
468
-
469
- = 1.9.40 =
470
- * Date Updated : 2020-11-29
471
- * Fix : rewrite of All-in-one Stack album fixing many bugs
472
- * Fix : fixed some styling issues with album edit page and gallery select modal
473
- * New : Added setting 'Force Hide Trial Notice' to never show the trail upsell message again
474
- * Update : FooGallery client side 1.4.22
475
-
476
- = 1.9.39 =
477
- * Date Updated : 2020-11-24
478
- * Fix : Allow gallery thumb order to be overridden when using foogallery_attachment_get_posts_args filter
479
-
480
- = 1.9.38 =
481
- * Date Updated : 2020-11-02
482
- * Fix : Fixed PHP warning within thumbnail generation code when deleting attachments
483
- * New : Added function to render an album : foogallery_render_album
484
-
485
- = 1.9.37 =
486
- * Date Updated : 2020-10-29
487
- * Update : Ensure Gallery Items and Settings metaboxes are always visible when editing a gallery
488
-
489
- = 1.9.36 =
490
- * Date Updated : 2020-10-27
491
- * Update : Freemius SDK 2.4.1
492
-
493
- = 1.9.35 =
494
- * Date Updated : 2020-10-12
495
- * Fix : Fix for thumbnail generation not working when upload folder is not HTTPS
496
-
497
-
498
- = 1.9.34 =
499
- * Date Updated : 2020-08-30
500
- * Fix : Fix for incorrect captions in some scenarios
501
- * Fix : Compatibility with Owl Carousel Extension and others
502
- * Update : FooGallery client side 1.4.18
503
-
504
- = 1.9.31 =
505
- * Date Updated : 2020-08-07
506
- * Fix : IMPORTANT fix for WP 5.5 compatibility when editing galleries (gallery preview button was not showing)
507
-
508
-
509
- = 1.9.30 =
510
- * Date Updated : 2020-08-03
511
- * Fix : IMPORTANT fix for WP 5.5 compatibility when editing galleries (gallery template selector was not showing)
512
- * New : Support for All in One SEO Pack sitemaps
513
- * Update : improved lightbox messages when no lightboxes are installed
514
- * Update : Freemius SDK 2.4.0.1
515
-
516
-
517
- = 1.9.28 =
518
- * Date Updated : 2020-07-18
519
- * Fix : Fix for some installs showing thumbnail generation error
520
- * Update : better mobile support for admin settings tabs
521
- * Update : FooGallery client side 1.4.16
522
-
523
-
524
- = 1.9.26 =
525
- * Date Updated : 2020-06-29
526
- * Fix : Fix for All-In-One album hidden items still clickable
527
- * Fix : Fix for fatal error on some versions of PHP
528
- * Update : FooGallery client side 1.4.15
529
-
530
-
531
- = 1.9.25 =
532
- * Date Updated : 2020-06-04
533
- * Fix : Fixed bug to prevent infinite loop with ResizeObserver in some themes
534
- * Fix : Fixed possible text-domain issue
535
- * Update : FooGallery client side 1.4.13
536
-
537
-
538
- = 1.9.24 =
539
- * Date Updated : 2020-05-04
540
- * Fix : Fixed bug where thumbs were not loading on mobile in Justified and Portfolio galleries
541
- * Update : FooGallery client side 1.4.12
542
-
543
- = 1.9.23 =
544
- * Date Updated : 2020-05-02
545
- * New : Reworked hover effect settings to allow none
546
- * New : Added new zoomed hover effect
547
- * New : Added new transparent theme hover effect
548
- * New : Added new advanced setting to add custom class to the gallery container
549
- * New : Added global settings for upscaling small images when using larger thumbnail dimensions
550
- * New : Added Pro feature promotions in gallery settings
551
- * New : Added setting to force GD Image editor as the default
552
- * New : Added info for active image editor to Settings -> Images tab
553
- * New : Improved caption sanitization
554
- * Fix : Fixed bug with Safari when editing a gallery, not loading thumbs
555
- * Fix : Fixed gallery previews in certain situations
556
- * Update : Freemius SDK 2.3.2
557
- * Update : FooGallery client side 1.4.11
558
-
559
-
560
- = 1.9.11 =
561
- * Date Updated : 2020-03-29
562
- * Fix : Fix for Simple Portfolio template not saving "None" for captions.
563
- * Fix : Fixed albums when adding incorrect markup target="default"
564
- * Fix : Updated thumbnail generation test logic to be more resilient, and improved admin message.
565
- * Fix : Updated RankMath compatibility to work with pre PHP 5.4
566
- * New : Added filter "foogallery_build_dynamic_gallery" for dynamic gallery creation
567
- * New : Added WPML config file for better translations. (Also improves Polylang compatibility.)
568
-
569
- * Update : FooGallery client side 1.4.6 (including multiple bug fixes)
570
-
571
- = 1.9.8 =
572
- * Date Updated : 2020-03-08
573
- * New : Added RankMath compatibility - sitemap image indexing.
574
- * New : Added new setting under Hover Effects : Invert Color. Invert the caption icon colors from dark to light.
575
- * New : All hover and loading icons converted to SVG format.
576
- * New : Lazy load gallery images when editing a gallery (improved performance for large galleries in the admin).
577
-
578
- * Fix : Previews not updating in some cases.
579
- * Update : FooGallery client side 1.4.0 (MAJOR UPDATE).
580
-
581
- = 1.8.20 =
582
- * Date Updated : 2019-11-22
583
- * Fix : Fix for Masonry template layout issue in Firefox
584
-
585
- * Update : FooGallery client side 1.3.6
586
-
587
- = 1.8.18 =
588
- * Date Updated : 2019-10-23
589
- * New : Elementor compatibility - gallery previews in Elementor editor work, and added a FooGallery widget to the Elementor editor
590
-
591
- * Fix : Images in Yoast SEO sitemaps pull correctly for all types of gallery embedding
592
- * Fix : Lazy-load issues on certain browsers (reverted back to old logic)
593
- * Fix : Updated WPThumb so that images with querystrings in the URL will work
594
- * Fix : Minor security issue fixed on the FooGallery settings page (only exploitable by administrators)
595
-
596
- = 1.8.14 =
597
-
598
- * New : Added setting to move "Add Media" button to front of attachment listing (Advanced tab in FooGallery Settings)
599
-
600
- * Fix : Lazy-load issues with Gutenberg Editor
601
- * Fix : Simple portfolio layout issue with certain themes
602
- * Update : FooGallery client side 1.3.4
603
-
604
- = 1.8.12 =
605
- * Fix : Previews not working on new galleries
606
-
607
- = 1.8.11 =
608
- * New : Added advanced gallery settings for custom settings and custom attributes
609
- * Fix : Rewrite of Simple Portfolio to incorrect thumb heights
610
- * Fix : Lazy-load issues for certain themes
611
- * Update : FooGallery client side 1.3.3
612
-
613
- = 1.8.8 =
614
- * New : Implemented the Datasource architecture within the plugin
615
- * Fix : PHP Warnings when previewing galleries
616
- * Fix : Simple Portfolio thumbnails cut off in certain scenarios
617
- * Fix : Updated Gutenberg block to work in latest Gutengerg release
618
- * Update : FooGallery client side 1.2.10
619
-
620
- = 1.7.8 =
621
- * New : Added filter to override content when creating a gallery page 'foogallery_create_gallery_page_content'
622
- * Fix : Fixed bug for Justified gallery, when last row was set to hidden
623
- * Update : FooGallery client side 1.2.8
624
- * Update : Freemius SDK 2.3.0
625
-
626
- = 1.7.7 =
627
- * New : Added slider navigation buttons in Slider PRO template
628
- * Fix : Fixed gallery usage with custom post types
629
- * Fix : Captions being cut off in portfolio template
630
- * Fix : Multiple small bugs and tweaks
631
- * Update : Updated to handle Chrome's new allow attribute in videos
632
- * Update : FooGallery client side 1.2.7
633
-
634
- = 1.7.6 =
635
- * Fix : Fixed issues with paging introduced in 1.7.4
636
- * Fix : Fixed conflicts with other lazy loading plugins
637
- * Update : FooGallery client side 1.2.3
638
-
639
- = 1.7.4 =
640
- * New : Major performance enhancements for all galleries
641
- * New : Performance enhancements with FooBox
642
- * New : Force HTTPS setting for migrated sites
643
- * New : FooGallery Gutenberg block gallery search
644
- * Fix : fixed scroll blocking violation warnings in dev tools
645
- * Fix : fixed Wistia video import issues
646
- * Update : FooGallery client side 1.2.2
647
-
648
- = 1.6.17 =
649
- * IMPORTANT : Please update to address a security vulnerability.
650
- * Fix : Security vulnerability
651
- * Fix : Images caching in certain browsers, not loading
652
- * Update : Freemius SDK 2.2.4
653
- * Update : FooGallery client side 1.1.13
654
-
655
- = 1.6.15 =
656
- * Fix : fixed logo path in admin
657
- * Update : changed the paging default output to HTML
658
-
659
- = 1.6.14 =
660
- * New : Added free trial tab to landing page
661
- * New : Added demo tab to landing page
662
- * New : Added support tab to landing page
663
- * New : Added help with FooBox lightbox in gallery templates
664
- * New : New setting to override thumb generation test URL
665
- * New : New setting to output gallery JSON to script block
666
- * New : Added rating admin notice after 5 galleries has been created
667
- * Fix : Fixed issues with video support in All-In-One stack album
668
- * Fix : Support for galleries loading in FooBox
669
- * Update : updated plugin generator
670
- * Update : FooGallery client side 1.1.10
671
- * Update : Freemius SDK 2.2.3
672
-
673
- = 1.6.13 =
674
- * New : Added setting to render JSON data to script block (fix for some caching plugins)
675
- * Fix : Compatibility with WPML Media
676
-
677
- = 1.6.11 =
678
- * Fix : Random thumbnails not loading in FireFox
679
- * Update : FooGallery client side 1.1.8
680
-
681
- = 1.6.10 =
682
- * Fix : Safari bug with lazy loading
683
- * Fix : Thumbs not loading with paging
684
- * Fix : duplicate caption title in some scenarios
685
- * Fix : clicking html in caption was not loading lightbox
686
- * Update : FooGallery client side 1.1.7
687
-
688
- = 1.6.7 =
689
- * New : added new filter for allowed post types that foogallery can be attached to
690
- * New : added loop setting for image viewer gallery template
691
- * New : override sorting in shortcode by providing "sort" attribute
692
- * Fix : Beaver Builder javascript error while editing a page
693
- * Fix : album shortcodes not working in some page builders
694
- * Fix : attach gallery to post when gutenberg block is included
695
- * Fix : filtering + paging bugs corrected in some scenarios
696
- * Fix : multiple small bugs and tweaks
697
- * Fix : Thumbnail generation tries to use first image in media library
698
- * Update : FooGallery client side 1.1.5
699
- * Update : Freemius SDK 2.2.2
700
-
701
- = 1.6.1 =
702
- * New : Gutenberg FooGallery block (including live gallery previews!)
703
- * Fix : foogallery shortcode not rendering in certain cases
704
- * Fix : disabling lazy loading via settings was being ignored
705
- * Update : Freemius SDK 2.1.3 (which fixes fatal Multisite bug)
706
-
707
- = 1.5.9 =
708
- * Fix : Theme customizer not loading for some theme/plugin combinations
709
-
710
- = 1.5.8 =
711
- * Major version bump to correspond with FooGallery PRO which includes video support
712
- * New : Upgrade offer to FooGallery PRO for FooVideo customers
713
- * New : Language setting for load more pagination
714
- * Update : FooGallery client side 1.1.2
715
- * Update : Freemius SDK 2.1.1
716
- * Fix : Pagination + Filtering bugs
717
- * Fix : PHP 7.1 compatibility tests failing for clone
718
- * Fix : better paging + filtering support
719
- * Fix : better RTL support in media modal
720
- * Multiple bug fixes and improvements
721
-
722
- = 1.4.31 =
723
-
724
- * New : GDPR notice in readme
725
- * New : Update to Freemius SDK 2.0.1
726
- * Fix : Default captions bug introduced in 1.4.30
727
-
728
- = 1.4.30 =
729
-
730
- * Fix : Album 404 issues when used on homepage
731
- * Fix : Dimension attributes missing for upscaling small images
732
- * Fix : Issue when galleries cannot be added to an album
733
- * Fix : Lightbox caption mismatch
734
- * New : Setting for legacy thumb cropping in Simple Portfolio gallery
735
- * Update : FooGallery client side 1.0.26
736
-
737
- = 1.4.29 =
738
-
739
- * New : Added an album setting to set the gallery title size (h2,h3,h4,h5,h6)
740
- * Fix : media modal issues with Elementor
741
- * Fix : media modal issues with Thrive Architect
742
- * Fix : caption override fix for single thumbnail galleries
743
- * Update : media modal improvements
744
-
745
- = 1.4.27 =
746
-
747
- * Fix : Justified gallery issues in certain browsers / devices
748
- * Fix : Portfolio gallery issues in certain browsers / devices
749
- * Fix : Use of correct rel attribute for better lightbox compatibility and W3 validation
750
- * Fix : Removed local translations that were incomplete and outdated
751
- * Update : FooGallery client side 1.0.24
752
- * Update : language files
753
-
754
- = 1.4.26 =
755
-
756
- * Fix : Filtering introduced an array initialization construct not working for older versions of php
757
-
758
- = 1.4.25 =
759
-
760
- * New : Retina support for albums!
761
- * New : Default crop position setting for attachments
762
- * New : Speed up gallery previews in wp-admin
763
- * New : Caption support for Responsive Lightbox by dFactory
764
- * Fix : Extension loading issues on certain installs
765
- * Fix : Shortcode copy-to-clipboard metabox works again
766
- * Fix : Bugs fixes for paging, filtering, FooBox and more
767
- * Fix : Ensure jquery-ui-sortable is loaded on edit page for some installs
768
- * Fix : All-In-One Stack Album layout bugs
769
- * Fix : Reworked extensions listing page logic
770
- * Update : FooGallery client side 1.0.23
771
- * Update : Freemius SDK 1.2.4
772
-
773
- = 1.4.15 =
774
-
775
- * Fix : All-In-One stack album fatal error when 2 albums on same page
776
-
777
- = 1.4.14 =
778
-
779
- * Fix : All-In-One stack album now uses the gallery featured image
780
- * Added more position options for Single Thumbnail Gallery
781
- * Added paging output setting
782
- * Update to latest client side JS 1.0.20
783
-
784
- = 1.4.12 =
785
-
786
- * New : NextGen importer now includes shortcode replacement
787
- * New : Masonry gallery supports captions below thumbnails
788
- * New : Performance improvements for very large galleries (1000+ images)
789
- * Fix : Bugs fixes for paging, FooBox and more
790
- * Update to latest client side JS 1.0.18
791
-
792
- = 1.4.8 =
793
-
794
- * New : added custom ready event setting for overcoming 3rd party jQuery exceptions
795
- * New : added crop thumbnail option to 'Single Thumbnail' and 'Image Viewer' templates
796
- * Update to latest client side JS
797
-
798
- = 1.4.7 =
799
-
800
- * Fix : conflicts with WP Rocket CDN features
801
- * Fix : conflicts with themes or plugins deferring script loading
802
- * New : Auto-loading of default templates
803
- * Update to latest client side JS
804
-
805
- = 1.4.6 =
806
-
807
- * Fix : conflicts with other scripts or plugins using data-src attributes
808
- * Fix : script moved back to use jQuery ready event, to avoid some conflicts
809
- * New : Global setting to disable lazy loading for all galleries
810
- * New : FooGallery Widget!
811
- * New : Admin notice for Autoptomize users to delete cache on updates
812
- * Update to latest client side JS
813
-
814
- = 1.4.5 =
815
-
816
- * Fix : Lazy loading - scrolling galleries in certain scenarios were not loading thumbs
817
- * Fix : Galleries that were hidden on page load were not displaying correctly when shown
818
- * Fix : Default gallery settings were not being applied to new galleries
819
- * New : shortcode arguments applied to gallery for common fields
820
- * New : HTML caching is disabled by default now!
821
- * Updated to latest client side JS and CSS
822
-
823
- = 1.4.4 =
824
-
825
- * Fix : upgrade was calling underfined function
826
-
827
- = 1.4.3 =
828
-
829
- * Fix : Justify gallery template issues
830
- * Fix : Masonry gallery template issues
831
- * Fix : Caption description not hidden when supposed to
832
- * Fix : Complete rework of thumbnail dimension logic!
833
- * Fix : Redirection bug on activation
834
- * Fix : Added checks for galleries causing PHP warnings
835
- * Fix : Multisite warnings on activation
836
- * New : Last Row setting in Justify gallery template
837
- * New : Alignment setting in Simple Portfolio gallery template
838
- * New : Added more checks after load to ensure gallery layout is correct
839
- * New : Added lazy loading advanced setting
840
- * Updated to Freemius SDK 1.2.2.10
841
- * Updated to latest client side JS and CSS
842
-
843
- = 1.3.28 =
844
-
845
- * Complete rewrite of the built-in gallery templates
846
- * New : lazy loading
847
- * New : simple pagination
848
- * New : Live Previews when editing a gallery
849
- * 260+ updates, changes and bug fixes
850
-
851
- = 1.3.8 =
852
-
853
- * New : Built in support for FooBox, fixing a lot of issues where FooBox option is not available
854
- * Fix : More reliable extension active status on extensions listing
855
- * Fix : More obvious wording for 3rd party plugins when they are not installed
856
-
857
- = 1.3.7 =
858
-
859
- * Fix : Activation redirect bug showing "Sorry, you are not allowed to access this page."
860
-
861
- = 1.3.6 =
862
-
863
- * New : Freemius integration!
864
- * New : Added support for the Responsive Lightbox by dFactory
865
- * New : New custom class field for an attachment
866
- * New : Added more system info for better debugging when there are server issues
867
- * Fix : Visual editor FooGallery edit button
868
- * Fix : Image Viewer hover effect none now works as expected
869
- * Fix : Disable HTML caching for randomly ordered galleries
870
-
871
- = 1.2.20 =
872
-
873
- * New : Force Use Original thumb setting on gallery edit page
874
- * Fix : PHP warning from thumbnail class since 1.2.19
875
-
876
- = 1.2.19 =
877
-
878
- * New : Gallery output caching! Saves database requests improving load time
879
- * New : Gallery usage column in admin gallery listing
880
- * New : Better support for animated gifs
881
- * New : Hover icons retina support
882
- * New : Uninstall button on settings
883
- * New : Save thumb dimensions per attachment. (needed in future versions)
884
- * Fix : Extensions refactor and many issues resolved
885
- * Fix : Better retina support for all templates
886
- * Fix : Colorize / Greyscale CSS filters
887
- * Fix : Even better wpthumb compatibility
888
-
889
- = 1.2.18 =
890
-
891
- * Fix : Handle no settings in retina metabox
892
-
893
- = 1.2.17 =
894
-
895
- * New : Retina support - metabox per gallery and default settings
896
- * New : Attachment datasources - backend changes for how images are used in a gallery. (This will allow for new external sources in the future)
897
- * New : Caption color settings in Simple portfolio gallery template
898
- * New : Updated to latest Justified Gallery
899
- * Fix : Better wpthumb compatibility
900
-
901
- = 1.2.16 =
902
-
903
- * Fix : Yoast SEO Sitemaps fatal error with deleted galleries
904
- * Fix : Updating pages with deleted galleries throws php warnings
905
-
906
- = 1.2.15 =
907
-
908
- * Fix : Album admin CSS issues in WP 4.6
909
- * Fix : Masonry layout issues in WP 4.6
910
- * Fix : Media attachment fields not updating
911
- * Fix : Better support for IE10
912
- * New : Thumbnail generation test admin notice and settings
913
-
914
- = 1.2.13 =
915
-
916
- * Fix : Shortcode replacing content in visual editor
917
- * Fix : Gallery hover effect of None being ignored
918
- * New : ImageViewer language settings for 'Prev', 'Next' & 'of'
919
- * New : Setting to use original thumbnails if available
920
-
921
- = 1.2.12 =
922
-
923
- * Fix : Simple Portfolio missing captions fix
924
-
925
- = 1.2.11 =
926
-
927
- * Fix : Simple Portfolio undefined function fix
928
-
929
- = 1.2.10 =
930
-
931
- * New : support for multiple admin JS and CSS assets for gallery templates
932
- * New : Added setting to choose Caption Description source
933
- * New : Crop position can be chosen for attachments
934
- * New : Albums gallery details modal for setting a gallery URL
935
- * New : Better shortcode preview in editor
936
- * New : Editor button now supported if multiple editors exist
937
- * Fix : Better No-Link support for gallery templates
938
- * Fix : Compatible with Unyson plugin
939
- * Fix : Compatible with Advanced Custom Fields
940
- * Fix : Simple Portfolio fixes and tweaks
941
- * Fix : ImageViewer fixes and better browser compatibility
942
- * Fix : Changed assets enqueue version to rather use extension version
943
- * Fix : Album URL fix for permalinks with no trailing slashes
944
-
945
- = 1.2.9 =
946
- * New : Added Image Viewer gallery template
947
- * New : Caption support for default template
948
- * New : Yoast SEO gallery image support!
949
- * New : Responsive options for Masonry gallery
950
- * New : change gallery URL slug for albums
951
- * New : setting to turn off loading animation in default gallery
952
- * New : French translation
953
- * Fix : Support for WP 4.4
954
- * Fix : All templates - moved all jQuery ready events to vanilla JS
955
- * Fix : Many gallery template tweaks
956
- * Fix : allow no default to be chosen in settings
957
-
958
- = 1.2.8 =
959
- * Works now with Polylang translation plugin
960
- * CSS Updates & enhancements to all gallery templates
961
- * Password protected galleries now work as expected
962
- * Ability to hide WYSIWYG editor button
963
- * Updated WPThumb
964
- * Multiple bug fixes and improvements
965
-
966
- = 1.2.7 =
967
- * Bug fixes for 1.2.6 release
968
- * Added 2 new settings to Justified Gallery template (maxRowHeight + Caption Source)
969
-
970
- = 1.2.6 =
971
- * CSS load optimizations
972
- * Updates and tweaks on all built-in gallery templates
973
- * More robust extension loading
974
- * More robust upgrades to FooBox PRO
975
- * Improved copy-to-clipboard
976
- * Added more hover effects
977
- * Support for FooVideo
978
-
979
- = 1.2.5 =
980
- * Fix for extensions being empty
981
- * Added support for Multi-site
982
- * Added esc_url to all places where url is rendered
983
- * Updated to latest Justified Gallery v3.5.4
984
-
985
- = 1.2.4 =
986
- * Many album template updates, enhancements and fixes
987
- * Many gallery template tweaks and fixes
988
- * Sort order settings for galleries and albums
989
- * Added new Single Thumbnail Gallery template
990
-
991
- = 1.2.1 =
992
- * Added setting to choose default gallery to copy settings from
993
- * Fixed bug #45 - gallery fields not showing onload
994
- * replaced minicolors with spectrum colorpicker
995
- * Allow gallery fields to have a suffix
996
- * Added function to render galleries "foogallery_render_gallery( $gallery_id )"
997
-
998
- = 1.2.0 =
999
- * Added albums extension
1000
- * Added custom CSS metaboxes
1001
- * Updated Nextgen importer
1002
- * Fixed many bugs
1003
-
1004
- = 1.1.8.2 =
1005
- * Fixed "edit gallery" CSS with WP 4.0
1006
-
1007
- = 1.1.8.1 =
1008
- * Fixed "insert gallery" CSS with WP 4.0
1009
-
1010
- = 1.1.8 =
1011
- * Added 2 new gallery templates
1012
- * Added 10+ actions and filters for more customization
1013
- * Countless bug fixes and enhancements
1014
-
1015
- = 1.1.7 =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1016
  * first version!
1
+ === Best WordPress Gallery Plugin FooGallery ===
2
+ Contributors: bradvin, steveush, fooplugins
3
+ Donate link: https://fooplugins.com
4
+ Tags: gallery, image gallery, photo gallery, responsive gallery, wordpress gallery plugin, best gallery plugin, albums, media gallery, video gallery, lightbox
5
+ Requires at least: 5.2
6
+ Tested up to: 5.9
7
+ Stable tag: 2.1.34
8
+ License: GPLv2 or later
9
+ License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ The best WordPress gallery plugin. Create stunning galleries in minutes, with advanced settings for complete customization and control.
12
+
13
+ == Description ==
14
+
15
+ = WordPress Gallery Plugin =
16
+
17
+ Make galleries in WordPress great again with FooGallery! Add a stunning gallery to your website in under 1 minute using our beautiful pre-built templates, or if you want more control, then take advantage of all our advanced settings to customsize your galleries to look exactly the way you want.
18
+
19
+ FooGallery is an easy-to-use image gallery plugin, with stunning pre-built gallery layouts and a focus on performance and SEO.
20
+ It is also responsive, retina-ready and supports lazy loading for lightning fast photo galleries.
21
+
22
+ Live previews are available while creating an image gallery, and also within the Gutenberg block editor with our FooGallery Block.
23
+
24
+ FooGallery was built to be highly configurable and extendable for developers or freelancers.
25
+
26
+ That is why we think FooGallery is the best WordPress gallery plugin. After using it, we hope you will agree.
27
+
28
+ [Visit the FooGallery Homepage](https://fooplugins.com/foogallery-wordpress-gallery-plugin/)
29
+
30
+ = Performance Updates for Google's Core Web Vitals =
31
+
32
+ A faster gallery now means a more favourable ranking in Google!
33
+ FooGallery has been specifically optimized to score better for Google's Core Web Vitals update in 2021.
34
+ We have focused on the speed of our javascript code, and also improved the visual stability of all gallery layouts.
35
+ This has led to dramatically better scores for the 3 key lighthouse factors including:
36
+
37
+ * Largest Contentful Paint - galleries load and appear quicker for your visitors
38
+ * First Input Delay - you can interact with the gallery sooner
39
+ * Cumulative Layout Shift - gallery images shift around a lot less than before!
40
+
41
+ = WordPress Gallery Plugin Features =
42
+
43
+ The following free features make FooGallery the **best gallery plugin** on the market!
44
+
45
+ * 7 Beautiful Image Gallery templates
46
+ * Responsive Image Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/responsive-image-gallery/)
47
+ * Image Viewer Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/image-viewer-gallery/)
48
+ * Masonry Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/masonry-gallery/)
49
+ * Simple Portfolio - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-portfolio-gallery/)
50
+ * Justified Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/justified-gallery/)
51
+ * Single Thumbnail Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/single-thumbnail-gallery/)
52
+ * Carousel Gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-carousel/)
53
+ * Easy to customize!
54
+ * Adjust thumbnail size, spacing & alignment
55
+ * Adjust border size, rounded corners, drop shadows, inner shadows
56
+ * Choose from a selection of loading icons
57
+ * Animated loaded effects - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/animated-loaded-effects/)
58
+ * Awesome hover effects - adjust colors, scaling and icons
59
+ * Complete control over captions
60
+ * Focus on Performance
61
+ * Lazy Loading options
62
+ * Simple pagination [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/gallery-pagination/)
63
+ * Optimized code
64
+ * Reduced content layout shift
65
+ * Focus on SEO
66
+ * ALT and title attributes on all images
67
+ * Yoast SEO sitemap integration
68
+ * Rank Math SEO sitemap integration
69
+ * AIOSEO sitemap integration
70
+ * Albums built-in! (just activate the albums extension)
71
+ * Responsive album layout - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-album-gallery/)
72
+ * All-in-one Stack album - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-album-gallery/#all-in-one)
73
+ * Gutenberg ready (Gallery previews inside the new editor!)
74
+ * Live previews as you make changes!
75
+ * Retina thumbnail support
76
+ * Gallery Widget
77
+ * Use built-in media library to manage images
78
+ * Drag n Drop reordering of images and galleries
79
+ * Custom CSS for both galleries and albums
80
+ * Copy to clipboard shortcodes
81
+ * One-click gallery page creation
82
+ * NextGen importer tool (albums and galleries and shortcodes)
83
+ * Multisite Support
84
+
85
+ = PRO Gallery Features =
86
+
87
+ There are 3 PRO plans available, that will work with any budget:
88
+
89
+ [PRO Starter](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-starter-features) | [PRO Expert](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-expert-features) | [PRO Commerce](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-commerce-features)
90
+
91
+ **PRO Starter Features**
92
+
93
+ * 3 more beautiful PRO responsive gallery templates:
94
+ * Polaroid gallery template - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/polaroid-gallery/)
95
+ * Grid gallery template - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/grid-gallery/)
96
+ * Slider gallery template - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/slider-gallery/)
97
+ * PRO image and media lightbox built in! [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pro-lightbox/)
98
+ * 11 beautiful hover effect presets - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/hover-presets/)
99
+ * 12 CSS thumbnail filters (Instagram) - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/filter-effects/)
100
+
101
+ **PRO Expert Features**
102
+
103
+ * Video Support - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/video-gallery/)
104
+ * Import video from Youtube, Vimeo and others
105
+ * Self-hosted videos
106
+ * Filtering
107
+ * Add filters using Media Tags or Categories - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/filtering/)
108
+ * Multi-level filtering for galleries [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/filtering/#multi-level)
109
+ * Bulk media tags and category management for attachments
110
+ * Dynamic Galleries (load images from other sources):
111
+ * Load from a folder on the server
112
+ * Load from a collection from Adobe Lightroom (using WP/LR Sync)
113
+ * Load all attachments with Media Tags
114
+ * Load all attachments with Media Categories
115
+ * Load from a folder in Real Media Library
116
+ * Load featured images from a post/page/custom post type - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/post-query-gallery/)
117
+ * Advanced Pagination
118
+ * Numbered pagination - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pagination/#numbered)
119
+ * "Load More" pagination - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pagination/#load-more)
120
+ * Infinite scroll image gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pagination/#infinite-scroll)
121
+ * Advanced Custom Captions - [demo](hhttps://fooplugins.com/foogallery-wordpress-gallery-plugin/custom-captions/)
122
+ * EXIF metadata gallery - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/exif-data/)
123
+ * Bulk Copy Gallery Settings - [more info](https://fooplugins.com/bulk-copy-foogallery-pro/)
124
+ * Deeplinking support for pages and filters
125
+
126
+ **PRO Commerce Features**
127
+
128
+ * Image Protection
129
+ * Photo watermarking - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/photo-watermark/)
130
+ * No right-click protection - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/photo-watermark/)
131
+ * Deep WooCommerce integration - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/woocommerce-integration/#product-gallery)
132
+ * Create a dynamic gallery from your WooCommerce products in seconds!
133
+ * Filter using WooCommerce product categories
134
+ * Show sales ribbons for products on sale
135
+ * Add-to-cart buttons on thumbnails
136
+ * Support for product variations
137
+ * Show product details (including variations) in Lightbox
138
+ * Sell your images online - [demo](https://footest.tastewp.com/)
139
+ * Link all your gallery items to a single master product
140
+ * Supports variations
141
+ * Master Galleries
142
+ * Set a gallery as a master and then all galleries who use that master will inherit all settings from the master - [docs](https://fooplugins.com/documentation/foogallery/pro-commerce/use-master-gallery/)
143
+
144
+ [See More Demos](https://fooplugins.com/foogallery-wordpress-gallery-plugin/demos/)
145
+
146
+ **Test Drive**
147
+
148
+ Take FooGallery for a test drive! Spin up your very own WP instance with FooGallery pre-installed:
149
+
150
+ [Start FooGallery Test Drive!](https://tastewp.com/new/?pre-installed-plugin-slug=foogallery)
151
+
152
+ **Documentation**
153
+
154
+ * [FooGallery Documentation](https://fooplugins.com/documentation/foogallery/)
155
+
156
+ **Gutenberg**
157
+
158
+ FooGallery includes a really simple-to-use Gutenberg block to add your existing FooGallery image galleries in seconds. And it includes live previews of the image gallery too!
159
+
160
+ **GDPR**
161
+
162
+ When you install FooGallery for the first time, the plugin asks you (the website admin) to opt-in so that we can track your usage of the plugin and provide a better service (send you update emails for new version releases and security updates etc). *This is optional and not required in order to use the plugin.*
163
+
164
+ From your website point of view, FooGallery never collects or stores any visitor information at all, when someone visits your website.
165
+
166
+ **PHP 8 Compatible**
167
+
168
+ FooGallery has been tried and tested on servers running up to PHP 8
169
+
170
+ **Retina Support**
171
+
172
+ FooGallery is a responsive gallery with built-in support for higher quality thumbnails on retina-enabled displays. No more blurry thumbnails, just crisp thumbnails so that your image galleries look amazing on all devices.
173
+
174
+ **Video Gallery**
175
+
176
+ FooGallery PRO Expert allows you to create a video gallery in seconds! Import from YouTube, Vimeo, Facebook, TED and Dailymotion, or import a self-hosted video from any online source (eg. S3 bucket).
177
+ You can also easily create mixed galleries with both images and videos!
178
+
179
+ **WooCommerce**
180
+
181
+ Sell your photographs online with our full WooCommerce integration, available in PRO Commerce. You can either create a dyanmic gallery from your existing products, or you can sell images in a gallery by linking them to a single master product. With full support for variations. Highlight products for sale with ribbons. Add call-to-action buttons to your items, for example AJAX Add to Cart buttons.
182
+
183
+ **Albums Built In**
184
+
185
+ Albums are built in as an extension. Simply head over to the extensions page and activate the albums extension. A new menu item will appear that allows you to add albums just as easily as galleries.
186
+
187
+ **Built For Developers**
188
+
189
+ FooGallery was designed to be the most developer-friendly image gallery plugin available for WordPress. It was also built on top of a solid extension framework, which means different functionality is separated out into different areas in the codebase. It also means the core plugin is lightweight, but still allowing for the most flexibility.
190
+
191
+ **Special Thanks**
192
+
193
+ Thanks to Fortinet FortiGuard Labs for the security testing conducted on the plugin. FooGallery is a safer plugin thanks to them.
194
+
195
+ == Best Wordpress Gallery Plugin ==
196
+
197
+ We did the research. FooGallery has the best performance and has the most features out of any free WordPress gallery plugin. Read our blog post about it:
198
+
199
+ [What is the Best WordPress Gallery Plugin?](https://fooplugins.com/best-wordpress-gallery-plugin/)
200
+
201
+ == Installation ==
202
+
203
+ 1. Upload `foogallery` folder to the `/wp-content/plugins/` directory
204
+ 2. Activate the plugin through the 'Plugins' menu in WordPress
205
+ 3. You will be redirected to the FooGallery Help page to get started with the best gallery plugin
206
+
207
+ == Frequently Asked Questions ==
208
+
209
+ = My galleries are not working. Thumbnails are greyed out and not loading when I scroll down the page. =
210
+
211
+ Lazy loading is not working on your gallery. This could be due to a conflict between our plugin and your theme.
212
+ You can test this theory by testing a different theme (if possible).
213
+ We can help you get it working, by contacting our support.
214
+
215
+ = I have created a gallery in the backend, but when I look at it on the frontend, it does not show correctly. =
216
+
217
+ Sometimes, there are issues when the theme does not follow WordPress best practices.
218
+ In order for FooGallery to function properly, the theme needs to have:
219
+ * A call to wp_head(); in the header.php file.
220
+ * A call to wp_footer(); in the footer.php file.
221
+
222
+ One way to check if the theme is the problem, is by switching to one of the built-in WordPress themes, and then see if the gallery loads.
223
+
224
+ = After updating, my galleries no longer work! What should I do? =
225
+
226
+ Do you have any WordPress caching or optimization plugins? If so, then clear/purge your caches.
227
+ Do you have any caching setup at your website host? If so, clear/purge those caches.
228
+
229
+ = After installing the plugin, my site is broken! Help! =
230
+
231
+ First thing to do is restore your site to it's previous working state.
232
+ 1. Get access to your site via FTP, or SFTP.
233
+ 2. Navigate to the wp-content/plugins folder.
234
+ 3. Rename the foogallery folder to foogallery1 in order to deactivate the plugin.
235
+ 4. At this point, your site should be working again.
236
+ 5. Please contact our support and provide the following info:
237
+ * What version of WordPress you are running.
238
+ * What version of PHP you are using.
239
+ * What version of FooGallery you installed.
240
+ * What error was shown when your site was broken?
241
+ * What plugins and theme are you using?
242
+
243
+ = I purchased a PRO license, but the Free version is still running. =
244
+
245
+ Make sure you are running the PRO version. You can check this by visiting the FooGallery -> Account page within the WordPress admin.
246
+ If you do not have the PRO version, you can download it by visiting your account page at https://fooplugins.com/account
247
+ If you have the PRO version, then clear any caches on your site or for your host. Also clear CSS Optimiztion Cache from FooGallery Settings.
248
+ If it still does not work, then please contact our support to help further.
249
+
250
+ = Why are my thumbnails so blurry? =
251
+
252
+ Have you enabled retina support for your galleries? To enable retina support, edit the gallery and locate the Retina Support metabox.
253
+
254
+ = Can I add videos to my galleries? =
255
+
256
+ Yes, video is supported in [FooGallery PRO Expert](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-expert-features)!
257
+
258
+ = Can I sell photographs from a gallery? =
259
+
260
+ Yes, that is why we built [FooGallery PRO Commerce](https://fooplugins.com/foogallery-wordpress-gallery-plugin/#pro-commerce-features)!
261
+ You can choose to create a gallery based of your products, or you can link all images in a gallery to a master product. This allows you complete control over how you want to run your image store and how they are sold on your website.
262
+
263
+ = Do I need to install a separate plugin to show a lightbox? =
264
+
265
+ For the Free version of FooGallery - Yes, you will need to install FooBox Image Lightbox.
266
+ For the PRO version of FooGallery - No, we have built in a uniquely beautiful lightbox!
267
+
268
+ = How do I get albums working? =
269
+
270
+ Simply go to the FooGallery extensions page and activate the Albums extension. If you do not see a button to activate the albums extension, reload the extensions list by clicking the reload button.
271
+
272
+ = Can I add a watermark to my images? =
273
+
274
+ Yes, our PRO Commerce plan includes image watermarking.
275
+
276
+ = Can I add external links to items in the gallery? =
277
+
278
+ Yes, you can link to any external website by choosing "Custom URL" for the Thumbnail Link setting. You also then need to set a custom URL for the items in your gallery, which is done by editing the attachment.
279
+
280
+ = How do I turn off all the PRO Promotions in the admin? =
281
+
282
+ Goto FooGallery Settings -> Advanced Tab and check "Disable PRO Promotions" and then save your settings.
283
+
284
+ = How can you claim that FooGallery is the best WordPress gallery plugin? =
285
+
286
+ We did the research and comparison. See our findings : [What is the Best WordPress Gallery Plugin?](https://fooplugins.com/best-wordpress-gallery-plugin/)
287
+
288
+ == Screenshots ==
289
+
290
+ 1. Gallery Edit Page
291
+ 2. Visual Shortcodes
292
+ 3. Gallery Picker
293
+ 4. Frontend example with default template
294
+ 5. Album Edit Page
295
+
296
+ == Upgrade Notice ==
297
+
298
+ Please update in order to for FooGallery to work in WP 5.5+!
299
+
300
+ == Changelog ==
301
+
302
+ = 2.2.6 =
303
+ * Date Updated : 2022-03-31
304
+ * New : Added new gallery template : Carousel
305
+ * Fix : Fixed bug with captions showing alternatives when using paging
306
+ * Fix : Fixed conflict with image lazy loading in Safari 15.4, by adding loading=eager
307
+ * Update : FooGallery client side 2.0.30
308
+
309
+
310
+ = 2.1.35 =
311
+ * Date Updated : 2022-03-08
312
+ * Fix : Fixed PHP warning on Widget Editor page in admin
313
+
314
+
315
+ = 2.1.34 =
316
+ * Date Updated : 2022-03-01
317
+ * Fix : Fixed bug where WebP images could not be uploaded when using the GD image editor
318
+ * Fix : Security Fix in wp-admin
319
+ * Update : Update to Freemius SDK
320
+
321
+ = 2.1.33 =
322
+ * Date Updated : 2022-01-15
323
+ * Update : FooGallery client side 2.0.24
324
+ * Fix : Ensure gallery layout is triggered in certain scenarios.
325
+ * Fix : Updated the hover effects and presets to trigger on focus for better accessibility.
326
+ * Fix : il8n bug where il8n script was not being included in page in some scenarios.
327
+ * Fix : Removed Gutenberg editor warnings when using the FooGallery block.
328
+
329
+
330
+ = 2.1.28 =
331
+ * Date Updated : 2021-10-27
332
+ * Fix : Fixed issue when no attachments being saved when updating gallery, in some scenarios.
333
+ * Update : Updated features on help page. Updated links to correct URL's.
334
+
335
+
336
+ = 2.1.24 =
337
+ * Date Updated : 2021-10-16
338
+
339
+
340
+ = 2.1.18 =
341
+ * Date Updated : 2021-09-01
342
+ * Update : FooGallery client side 2.0.20
343
+ * Update : Updated FooGallery Help page in admin to match new branding
344
+ * Update : Updated internal promotions to match plans
345
+ * Fix : fixed bug in WP 5.8 when not all attachments showing in media modal
346
+ * Fix : Added custom CSS for 3 gallery templates, to avoid incorrect thumb widths with certain themes and SVG thumbnails.
347
+ * Fix : Added logic to generate unique ID's for the gallery container if the gallery is included more than once on a page.
348
+ * New : Added custom pagination theme
349
+
350
+
351
+ = 2.0.39 =
352
+ * Date Updated : 2021-06-12
353
+ * Fix : Changed how attachment full size image details are determined, when there are issues in certain setups
354
+ * Fix : jQuery backwards compatibility
355
+ * Fix : Fixed issues with thumb widths for certain theme css
356
+ * Fix : Updated lazyload placeholder SVG to include width and height attributes
357
+ * Fix : Updated help page demo's to use correct placeholders
358
+ * Update : FooGallery client side 2.0.16
359
+
360
+
361
+ = 2.0.35 =
362
+ * Date Updated : 2021-05-20
363
+ * New : Added lazyload compatibility for Imagify (replace img tags with picture tags)
364
+ * Fix : updated how gallery usage is determined
365
+ * Fix : sanitised gallery custom CSS and global custom CSS & JS admin settings
366
+ * Fix : only show rating admin message after 5 galleries have been created (was showing always!)
367
+ * Update : FooGallery client side 2.0.13
368
+
369
+ = 2.0.30 =
370
+ * Date Updated : 2021-05-03
371
+ * New : Added lazyload compatibility for Jetpack, Jetpack Boost, WPMU Smush, EWWW Image Optimizer, W3 Total Cache, WP Optimize
372
+ * New : Added "Enable Gallery Descriptions" setting for Albums
373
+ * New : Galleries used in albums will now show a link to the album in the Usage column on the gallery listing page
374
+ * New : output gallery debug info when debugging setting is enable
375
+ * Update : FooGallery client side 2.0.12
376
+ * Update : Updated the thumbnail generation test image to use a local image within the plugin
377
+ * Update : Added "Last Row" gallery setting back for Justified Galleries
378
+ * Fix : Fixed bug with custom URL's not working for Single Thumbnail galleries
379
+
380
+
381
+ = 2.0.24 =
382
+ * Date Updated : 2021-18-04
383
+ * Update : FooGallery client side 2.0.11
384
+ * Fix : Fixed compatibility with WPRocket and rendering inline script of gallery items json
385
+
386
+
387
+ = 2.0.20 =
388
+ * Date Updated : 2021-11-04
389
+ * New : Major performance improvements for all gallery templates (improving scores for Core Web Vitals)
390
+ * New : Added "Mobile Columns" gallery setting for Responsive Galleries
391
+ * New : Added 6 Columns option for Masonry gallery layout
392
+ * New : Added "Horizontal Layout" gallery setting for Masonry galleries, to try maintain left-to-right order of images
393
+ * New : Made all image loaded effects in PRO now available in free!!
394
+ * New : Added first-class support for ShortPixel Adaptive Images as a thumbnail engine. (can be changed from settings)
395
+ * New : Added "Alignment" gallery setting under "Captions" tab for changing horizontal alignment of thumbnail captions
396
+ * New : Added "Image Title Attribute" gallery setting under "Advanced" tab for disabling the title attribute added to thumbnail img tags
397
+ * New : Added gallery settings to change the lightbox captions when FooBox is the selected lightbox
398
+ * New : Added ability to refresh gallery preview when editing by clicking preview button again
399
+ * New : Added lazyload support to stack album, giving a major performance boost to very large albums!
400
+ * New : Overhauled Help page when plugin is activated, including the ability create demo gallery content and view inline demos
401
+ * New : Added ability to override captions for FooBox
402
+ * Update : FooGallery client side 2.0.9
403
+ * Update : Simplified extensions admin page and removed all build-your-own logic
404
+ * Update : Updated the Justified gallery template. Removed "Max Row Height" and "Last Row" settings.
405
+ * Update : Updated the Thumbnail gallery template. Removed "Thumbnail Crop" setting.
406
+ * Fix : Updated styling for FooGallery Block to look correct in latest version of Gutenberg
407
+ * Fix : JSON objects get built using all attributes needed
408
+ * Fix : Could not add images to the gallery for some installs, due to no thumbnail sizes being returned. Made the logic more resilient.
409
+ * Fix : Compatible with WP Rocket Lazy loading
410
+ * Fix : Javascript error with Masonry related to script dependencies when using script minifiers
411
+
412
+
413
+ = 1.10.4 =
414
+ * Date Updated : 2021-02-03
415
+ * Fix : fix for fatal error running pre WP5 : Fatal error: Uncaught ArgumentCountError: Too few arguments to function FooGallery_Thumb_Engine_Default::delete_cache_folder_for_attachment()
416
+
417
+ = 1.10.3 =
418
+ * Date Updated : 2021-20-02
419
+ * Fix : fixed a fatal PHP error on some installs
420
+
421
+ = 1.10.1 =
422
+ * Date Updated : 2021-18-02
423
+ * Fix : fixed a fatal PHP error with PHP 5.6
424
+
425
+ = 1.10.0 =
426
+ * Date Updated : 2021-18-02
427
+ * Update : Removed WPThumb library completely
428
+ * Update : Updated to Freemius SDK 2.4.2
429
+ * Fix : updated FooGallery block category to 'media'
430
+
431
+
432
+ = 1.9.53 =
433
+ * Date Updated : 2021-23-01
434
+ * Update : FooGallery client side 1.4.26
435
+
436
+ = 1.9.52 =
437
+ * Date Updated : 2021-22-01
438
+
439
+
440
+ = 1.9.50 =
441
+ * Date Updated : 2021-21-01
442
+
443
+ * Fix : fixed incorrect settings showing for certain gallery templates
444
+
445
+ = 1.9.49 =
446
+ * Date Updated : 2021-13-01
447
+ * Fix : Advanced settings for a gallery to properly override settings rather than merge
448
+
449
+
450
+ = 1.9.48 =
451
+ * Date Updated : 2021-11-01
452
+ * New : Added global Custom JS & CSS settings which are included for all galleries
453
+ * New : Added global language settings which apply to all galleries
454
+ * Update : Updated All-in-one SEO support to work with AIOSEO v4
455
+ * Update : FooGallery client side 1.4.25
456
+ * Update : updated WPML compatibility to account for new language settings
457
+ * Fix : image URL's with spaces - always ensure image URL's are escaped
458
+ * Fix : fixed PHP warning on activation
459
+ * Test : tested PHP8 support!
460
+
461
+
462
+ = 1.9.47 =
463
+ * Date Updated : 2020-16-10
464
+
465
+
466
+ = 1.9.46 =
467
+ * Date Updated : 2020-15-10
468
+
469
+
470
+ = 1.9.45 =
471
+ * Date Updated : 2020-15-10
472
+ * Fix : Updated albums to use FooGallery stylesheet enqueue function
473
+
474
+
475
+ = 1.9.44 =
476
+ * Date Updated : 2020-12-06
477
+ * New : Allow thumb width and height to be overridden with shortcode arguments override_width and override_height
478
+ * Fix : fixed caption bugs where FooBox was not picking up custom/override captions
479
+ * Fix : removed use of deprecated functions in jQuery for WP 5.6
480
+ * Fix : removed localStorage checks, so that browser does not say that cookies are in use
481
+ * Update : FooGallery client side 1.4.24
482
+ * Update : Frontend gallery initialization now uses custom ready event by default, to avoid jQuery errors
483
+
484
+
485
+ = 1.9.40 =
486
+ * Date Updated : 2020-11-29
487
+ * Fix : rewrite of All-in-one Stack album fixing many bugs
488
+ * Fix : fixed some styling issues with album edit page and gallery select modal
489
+ * New : Added setting 'Force Hide Trial Notice' to never show the trail upsell message again
490
+ * Update : FooGallery client side 1.4.22
491
+
492
+ = 1.9.39 =
493
+ * Date Updated : 2020-11-24
494
+ * Fix : Allow gallery thumb order to be overridden when using foogallery_attachment_get_posts_args filter
495
+
496
+ = 1.9.38 =
497
+ * Date Updated : 2020-11-02
498
+ * Fix : Fixed PHP warning within thumbnail generation code when deleting attachments
499
+ * New : Added function to render an album : foogallery_render_album
500
+
501
+ = 1.9.37 =
502
+ * Date Updated : 2020-10-29
503
+ * Update : Ensure Gallery Items and Settings metaboxes are always visible when editing a gallery
504
+
505
+ = 1.9.36 =
506
+ * Date Updated : 2020-10-27
507
+ * Update : Freemius SDK 2.4.1
508
+
509
+ = 1.9.35 =
510
+ * Date Updated : 2020-10-12
511
+ * Fix : Fix for thumbnail generation not working when upload folder is not HTTPS
512
+
513
+
514
+ = 1.9.34 =
515
+ * Date Updated : 2020-08-30
516
+ * Fix : Fix for incorrect captions in some scenarios
517
+ * Fix : Compatibility with Owl Carousel Extension and others
518
+ * Update : FooGallery client side 1.4.18
519
+
520
+ = 1.9.31 =
521
+ * Date Updated : 2020-08-07
522
+ * Fix : IMPORTANT fix for WP 5.5 compatibility when editing galleries (gallery preview button was not showing)
523
+
524
+
525
+ = 1.9.30 =
526
+ * Date Updated : 2020-08-03
527
+ * Fix : IMPORTANT fix for WP 5.5 compatibility when editing galleries (gallery template selector was not showing)
528
+ * New : Support for All in One SEO Pack sitemaps
529
+ * Update : improved lightbox messages when no lightboxes are installed
530
+ * Update : Freemius SDK 2.4.0.1
531
+
532
+
533
+ = 1.9.28 =
534
+ * Date Updated : 2020-07-18
535
+ * Fix : Fix for some installs showing thumbnail generation error
536
+ * Update : better mobile support for admin settings tabs
537
+ * Update : FooGallery client side 1.4.16
538
+
539
+
540
+ = 1.9.26 =
541
+ * Date Updated : 2020-06-29
542
+ * Fix : Fix for All-In-One album hidden items still clickable
543
+ * Fix : Fix for fatal error on some versions of PHP
544
+ * Update : FooGallery client side 1.4.15
545
+
546
+
547
+ = 1.9.25 =
548
+ * Date Updated : 2020-06-04
549
+ * Fix : Fixed bug to prevent infinite loop with ResizeObserver in some themes
550
+ * Fix : Fixed possible text-domain issue
551
+ * Update : FooGallery client side 1.4.13
552
+
553
+
554
+ = 1.9.24 =
555
+ * Date Updated : 2020-05-04
556
+ * Fix : Fixed bug where thumbs were not loading on mobile in Justified and Portfolio galleries
557
+ * Update : FooGallery client side 1.4.12
558
+
559
+ = 1.9.23 =
560
+ * Date Updated : 2020-05-02
561
+ * New : Reworked hover effect settings to allow none
562
+ * New : Added new zoomed hover effect
563
+ * New : Added new transparent theme hover effect
564
+ * New : Added new advanced setting to add custom class to the gallery container
565
+ * New : Added global settings for upscaling small images when using larger thumbnail dimensions
566
+ * New : Added Pro feature promotions in gallery settings
567
+ * New : Added setting to force GD Image editor as the default
568
+ * New : Added info for active image editor to Settings -> Images tab
569
+ * New : Improved caption sanitization
570
+ * Fix : Fixed bug with Safari when editing a gallery, not loading thumbs
571
+ * Fix : Fixed gallery previews in certain situations
572
+ * Update : Freemius SDK 2.3.2
573
+ * Update : FooGallery client side 1.4.11
574
+
575
+
576
+ = 1.9.11 =
577
+ * Date Updated : 2020-03-29
578
+ * Fix : Fix for Simple Portfolio template not saving "None" for captions.
579
+ * Fix : Fixed albums when adding incorrect markup target="default"
580
+ * Fix : Updated thumbnail generation test logic to be more resilient, and improved admin message.
581
+ * Fix : Updated RankMath compatibility to work with pre PHP 5.4
582
+ * New : Added filter "foogallery_build_dynamic_gallery" for dynamic gallery creation
583
+ * New : Added WPML config file for better translations. (Also improves Polylang compatibility.)
584
+
585
+ * Update : FooGallery client side 1.4.6 (including multiple bug fixes)
586
+
587
+ = 1.9.8 =
588
+ * Date Updated : 2020-03-08
589
+ * New : Added RankMath compatibility - sitemap image indexing.
590
+ * New : Added new setting under Hover Effects : Invert Color. Invert the caption icon colors from dark to light.
591
+ * New : All hover and loading icons converted to SVG format.
592
+ * New : Lazy load gallery images when editing a gallery (improved performance for large galleries in the admin).
593
+
594
+ * Fix : Previews not updating in some cases.
595
+ * Update : FooGallery client side 1.4.0 (MAJOR UPDATE).
596
+
597
+ = 1.8.20 =
598
+ * Date Updated : 2019-11-22
599
+ * Fix : Fix for Masonry template layout issue in Firefox
600
+
601
+ * Update : FooGallery client side 1.3.6
602
+
603
+ = 1.8.18 =
604
+ * Date Updated : 2019-10-23
605
+ * New : Elementor compatibility - gallery previews in Elementor editor work, and added a FooGallery widget to the Elementor editor
606
+
607
+ * Fix : Images in Yoast SEO sitemaps pull correctly for all types of gallery embedding
608
+ * Fix : Lazy-load issues on certain browsers (reverted back to old logic)
609
+ * Fix : Updated WPThumb so that images with querystrings in the URL will work
610
+ * Fix : Minor security issue fixed on the FooGallery settings page (only exploitable by administrators)
611
+
612
+ = 1.8.14 =
613
+
614
+ * New : Added setting to move "Add Media" button to front of attachment listing (Advanced tab in FooGallery Settings)
615
+
616
+ * Fix : Lazy-load issues with Gutenberg Editor
617
+ * Fix : Simple portfolio layout issue with certain themes
618
+ * Update : FooGallery client side 1.3.4
619
+
620
+ = 1.8.12 =
621
+ * Fix : Previews not working on new galleries
622
+
623
+ = 1.8.11 =
624
+ * New : Added advanced gallery settings for custom settings and custom attributes
625
+ * Fix : Rewrite of Simple Portfolio to incorrect thumb heights
626
+ * Fix : Lazy-load issues for certain themes
627
+ * Update : FooGallery client side 1.3.3
628
+
629
+ = 1.8.8 =
630
+ * New : Implemented the Datasource architecture within the plugin
631
+ * Fix : PHP Warnings when previewing galleries
632
+ * Fix : Simple Portfolio thumbnails cut off in certain scenarios
633
+ * Fix : Updated Gutenberg block to work in latest Gutengerg release
634
+ * Update : FooGallery client side 1.2.10
635
+
636
+ = 1.7.8 =
637
+ * New : Added filter to override content when creating a gallery page 'foogallery_create_gallery_page_content'
638
+ * Fix : Fixed bug for Justified gallery, when last row was set to hidden
639
+ * Update : FooGallery client side 1.2.8
640
+ * Update : Freemius SDK 2.3.0
641
+
642
+ = 1.7.7 =
643
+ * New : Added slider navigation buttons in Slider PRO template
644
+ * Fix : Fixed gallery usage with custom post types
645
+ * Fix : Captions being cut off in portfolio template
646
+ * Fix : Multiple small bugs and tweaks
647
+ * Update : Updated to handle Chrome's new allow attribute in videos
648
+ * Update : FooGallery client side 1.2.7
649
+
650
+ = 1.7.6 =
651
+ * Fix : Fixed issues with paging introduced in 1.7.4
652
+ * Fix : Fixed conflicts with other lazy loading plugins
653
+ * Update : FooGallery client side 1.2.3
654
+
655
+ = 1.7.4 =
656
+ * New : Major performance enhancements for all galleries
657
+ * New : Performance enhancements with FooBox
658
+ * New : Force HTTPS setting for migrated sites
659
+ * New : FooGallery Gutenberg block gallery search
660
+ * Fix : fixed scroll blocking violation warnings in dev tools
661
+ * Fix : fixed Wistia video import issues
662
+ * Update : FooGallery client side 1.2.2
663
+
664
+ = 1.6.17 =
665
+ * IMPORTANT : Please update to address a security vulnerability.
666
+ * Fix : Security vulnerability
667
+ * Fix : Images caching in certain browsers, not loading
668
+ * Update : Freemius SDK 2.2.4
669
+ * Update : FooGallery client side 1.1.13
670
+
671
+ = 1.6.15 =
672
+ * Fix : fixed logo path in admin
673
+ * Update : changed the paging default output to HTML
674
+
675
+ = 1.6.14 =
676
+ * New : Added free trial tab to landing page
677
+ * New : Added demo tab to landing page
678
+ * New : Added support tab to landing page
679
+ * New : Added help with FooBox lightbox in gallery templates
680
+ * New : New setting to override thumb generation test URL
681
+ * New : New setting to output gallery JSON to script block
682
+ * New : Added rating admin notice after 5 galleries has been created
683
+ * Fix : Fixed issues with video support in All-In-One stack album
684
+ * Fix : Support for galleries loading in FooBox
685
+ * Update : updated plugin generator
686
+ * Update : FooGallery client side 1.1.10
687
+ * Update : Freemius SDK 2.2.3
688
+
689
+ = 1.6.13 =
690
+ * New : Added setting to render JSON data to script block (fix for some caching plugins)
691
+ * Fix : Compatibility with WPML Media
692
+
693
+ = 1.6.11 =
694
+ * Fix : Random thumbnails not loading in FireFox
695
+ * Update : FooGallery client side 1.1.8
696
+
697
+ = 1.6.10 =
698
+ * Fix : Safari bug with lazy loading
699
+ * Fix : Thumbs not loading with paging
700
+ * Fix : duplicate caption title in some scenarios
701
+ * Fix : clicking html in caption was not loading lightbox
702
+ * Update : FooGallery client side 1.1.7
703
+
704
+ = 1.6.7 =
705
+ * New : added new filter for allowed post types that foogallery can be attached to
706
+ * New : added loop setting for image viewer gallery template
707
+ * New : override sorting in shortcode by providing "sort" attribute
708
+ * Fix : Beaver Builder javascript error while editing a page
709
+ * Fix : album shortcodes not working in some page builders
710
+ * Fix : attach gallery to post when gutenberg block is included
711
+ * Fix : filtering + paging bugs corrected in some scenarios
712
+ * Fix : multiple small bugs and tweaks
713
+ * Fix : Thumbnail generation tries to use first image in media library
714
+ * Update : FooGallery client side 1.1.5
715
+ * Update : Freemius SDK 2.2.2
716
+
717
+ = 1.6.1 =
718
+ * New : Gutenberg FooGallery block (including live gallery previews!)
719
+ * Fix : foogallery shortcode not rendering in certain cases
720
+ * Fix : disabling lazy loading via settings was being ignored
721
+ * Update : Freemius SDK 2.1.3 (which fixes fatal Multisite bug)
722
+
723
+ = 1.5.9 =
724
+ * Fix : Theme customizer not loading for some theme/plugin combinations
725
+
726
+ = 1.5.8 =
727
+ * Major version bump to correspond with FooGallery PRO which includes video support
728
+ * New : Upgrade offer to FooGallery PRO for FooVideo customers
729
+ * New : Language setting for load more pagination
730
+ * Update : FooGallery client side 1.1.2
731
+ * Update : Freemius SDK 2.1.1
732
+ * Fix : Pagination + Filtering bugs
733
+ * Fix : PHP 7.1 compatibility tests failing for clone
734
+ * Fix : better paging + filtering support
735
+ * Fix : better RTL support in media modal
736
+ * Multiple bug fixes and improvements
737
+
738
+ = 1.4.31 =
739
+
740
+ * New : GDPR notice in readme
741
+ * New : Update to Freemius SDK 2.0.1
742
+ * Fix : Default captions bug introduced in 1.4.30
743
+
744
+ = 1.4.30 =
745
+
746
+ * Fix : Album 404 issues when used on homepage
747
+ * Fix : Dimension attributes missing for upscaling small images
748
+ * Fix : Issue when galleries cannot be added to an album
749
+ * Fix : Lightbox caption mismatch
750
+ * New : Setting for legacy thumb cropping in Simple Portfolio gallery
751
+ * Update : FooGallery client side 1.0.26
752
+
753
+ = 1.4.29 =
754
+
755
+ * New : Added an album setting to set the gallery title size (h2,h3,h4,h5,h6)
756
+ * Fix : media modal issues with Elementor
757
+ * Fix : media modal issues with Thrive Architect
758
+ * Fix : caption override fix for single thumbnail galleries
759
+ * Update : media modal improvements
760
+
761
+ = 1.4.27 =
762
+
763
+ * Fix : Justified gallery issues in certain browsers / devices
764
+ * Fix : Portfolio gallery issues in certain browsers / devices
765
+ * Fix : Use of correct rel attribute for better lightbox compatibility and W3 validation
766
+ * Fix : Removed local translations that were incomplete and outdated
767
+ * Update : FooGallery client side 1.0.24
768
+ * Update : language files
769
+
770
+ = 1.4.26 =
771
+
772
+ * Fix : Filtering introduced an array initialization construct not working for older versions of php
773
+
774
+ = 1.4.25 =
775
+
776
+ * New : Retina support for albums!
777
+ * New : Default crop position setting for attachments
778
+ * New : Speed up gallery previews in wp-admin
779
+ * New : Caption support for Responsive Lightbox by dFactory
780
+ * Fix : Extension loading issues on certain installs
781
+ * Fix : Shortcode copy-to-clipboard metabox works again
782
+ * Fix : Bugs fixes for paging, filtering, FooBox and more
783
+ * Fix : Ensure jquery-ui-sortable is loaded on edit page for some installs
784
+ * Fix : All-In-One Stack Album layout bugs
785
+ * Fix : Reworked extensions listing page logic
786
+ * Update : FooGallery client side 1.0.23
787
+ * Update : Freemius SDK 1.2.4
788
+
789
+ = 1.4.15 =
790
+
791
+ * Fix : All-In-One stack album fatal error when 2 albums on same page
792
+
793
+ = 1.4.14 =
794
+
795
+ * Fix : All-In-One stack album now uses the gallery featured image
796
+ * Added more position options for Single Thumbnail Gallery
797
+ * Added paging output setting
798
+ * Update to latest client side JS 1.0.20
799
+
800
+ = 1.4.12 =
801
+
802
+ * New : NextGen importer now includes shortcode replacement
803
+ * New : Masonry gallery supports captions below thumbnails
804
+ * New : Performance improvements for very large galleries (1000+ images)
805
+ * Fix : Bugs fixes for paging, FooBox and more
806
+ * Update to latest client side JS 1.0.18
807
+
808
+ = 1.4.8 =
809
+
810
+ * New : added custom ready event setting for overcoming 3rd party jQuery exceptions
811
+ * New : added crop thumbnail option to 'Single Thumbnail' and 'Image Viewer' templates
812
+ * Update to latest client side JS
813
+
814
+ = 1.4.7 =
815
+
816
+ * Fix : conflicts with WP Rocket CDN features
817
+ * Fix : conflicts with themes or plugins deferring script loading
818
+ * New : Auto-loading of default templates
819
+ * Update to latest client side JS
820
+
821
+ = 1.4.6 =
822
+
823
+ * Fix : conflicts with other scripts or plugins using data-src attributes
824
+ * Fix : script moved back to use jQuery ready event, to avoid some conflicts
825
+ * New : Global setting to disable lazy loading for all galleries
826
+ * New : FooGallery Widget!
827
+ * New : Admin notice for Autoptomize users to delete cache on updates
828
+ * Update to latest client side JS
829
+
830
+ = 1.4.5 =
831
+
832
+ * Fix : Lazy loading - scrolling galleries in certain scenarios were not loading thumbs
833
+ * Fix : Galleries that were hidden on page load were not displaying correctly when shown
834
+ * Fix : Default gallery settings were not being applied to new galleries
835
+ * New : shortcode arguments applied to gallery for common fields
836
+ * New : HTML caching is disabled by default now!
837
+ * Updated to latest client side JS and CSS
838
+
839
+ = 1.4.4 =
840
+
841
+ * Fix : upgrade was calling underfined function
842
+
843
+ = 1.4.3 =
844
+
845
+ * Fix : Justify gallery template issues
846
+ * Fix : Masonry gallery template issues
847
+ * Fix : Caption description not hidden when supposed to
848
+ * Fix : Complete rework of thumbnail dimension logic!
849
+ * Fix : Redirection bug on activation
850
+ * Fix : Added checks for galleries causing PHP warnings
851
+ * Fix : Multisite warnings on activation
852
+ * New : Last Row setting in Justify gallery template
853
+ * New : Alignment setting in Simple Portfolio gallery template
854
+ * New : Added more checks after load to ensure gallery layout is correct
855
+ * New : Added lazy loading advanced setting
856
+ * Updated to Freemius SDK 1.2.2.10
857
+ * Updated to latest client side JS and CSS
858
+
859
+ = 1.3.28 =
860
+
861
+ * Complete rewrite of the built-in gallery templates
862
+ * New : lazy loading
863
+ * New : simple pagination
864
+ * New : Live Previews when editing a gallery
865
+ * 260+ updates, changes and bug fixes
866
+
867
+ = 1.3.8 =
868
+
869
+ * New : Built in support for FooBox, fixing a lot of issues where FooBox option is not available
870
+ * Fix : More reliable extension active status on extensions listing
871
+ * Fix : More obvious wording for 3rd party plugins when they are not installed
872
+
873
+ = 1.3.7 =
874
+
875
+ * Fix : Activation redirect bug showing "Sorry, you are not allowed to access this page."
876
+
877
+ = 1.3.6 =
878
+
879
+ * New : Freemius integration!
880
+ * New : Added support for the Responsive Lightbox by dFactory
881
+ * New : New custom class field for an attachment
882
+ * New : Added more system info for better debugging when there are server issues
883
+ * Fix : Visual editor FooGallery edit button
884
+ * Fix : Image Viewer hover effect none now works as expected
885
+ * Fix : Disable HTML caching for randomly ordered galleries
886
+
887
+ = 1.2.20 =
888
+
889
+ * New : Force Use Original thumb setting on gallery edit page
890
+ * Fix : PHP warning from thumbnail class since 1.2.19
891
+
892
+ = 1.2.19 =
893
+
894
+ * New : Gallery output caching! Saves database requests improving load time
895
+ * New : Gallery usage column in admin gallery listing
896
+ * New : Better support for animated gifs
897
+ * New : Hover icons retina support
898
+ * New : Uninstall button on settings
899
+ * New : Save thumb dimensions per attachment. (needed in future versions)
900
+ * Fix : Extensions refactor and many issues resolved
901
+ * Fix : Better retina support for all templates
902
+ * Fix : Colorize / Greyscale CSS filters
903
+ * Fix : Even better wpthumb compatibility
904
+
905
+ = 1.2.18 =
906
+
907
+ * Fix : Handle no settings in retina metabox
908
+
909
+ = 1.2.17 =
910
+
911
+ * New : Retina support - metabox per gallery and default settings
912
+ * New : Attachment datasources - backend changes for how images are used in a gallery. (This will allow for new external sources in the future)
913
+ * New : Caption color settings in Simple portfolio gallery template
914
+ * New : Updated to latest Justified Gallery
915
+ * Fix : Better wpthumb compatibility
916
+
917
+ = 1.2.16 =
918
+
919
+ * Fix : Yoast SEO Sitemaps fatal error with deleted galleries
920
+ * Fix : Updating pages with deleted galleries throws php warnings
921
+
922
+ = 1.2.15 =
923
+
924
+ * Fix : Album admin CSS issues in WP 4.6
925
+ * Fix : Masonry layout issues in WP 4.6
926
+ * Fix : Media attachment fields not updating
927
+ * Fix : Better support for IE10
928
+ * New : Thumbnail generation test admin notice and settings
929
+
930
+ = 1.2.13 =
931
+
932
+ * Fix : Shortcode replacing content in visual editor
933
+ * Fix : Gallery hover effect of None being ignored
934
+ * New : ImageViewer language settings for 'Prev', 'Next' & 'of'
935
+ * New : Setting to use original thumbnails if available
936
+
937
+ = 1.2.12 =
938
+
939
+ * Fix : Simple Portfolio missing captions fix
940
+
941
+ = 1.2.11 =
942
+
943
+ * Fix : Simple Portfolio undefined function fix
944
+
945
+ = 1.2.10 =
946
+
947
+ * New : support for multiple admin JS and CSS assets for gallery templates
948
+ * New : Added setting to choose Caption Description source
949
+ * New : Crop position can be chosen for attachments
950
+ * New : Albums gallery details modal for setting a gallery URL
951
+ * New : Better shortcode preview in editor
952
+ * New : Editor button now supported if multiple editors exist
953
+ * Fix : Better No-Link support for gallery templates
954
+ * Fix : Compatible with Unyson plugin
955
+ * Fix : Compatible with Advanced Custom Fields
956
+ * Fix : Simple Portfolio fixes and tweaks
957
+ * Fix : ImageViewer fixes and better browser compatibility
958
+ * Fix : Changed assets enqueue version to rather use extension version
959
+ * Fix : Album URL fix for permalinks with no trailing slashes
960
+
961
+ = 1.2.9 =
962
+ * New : Added Image Viewer gallery template
963
+ * New : Caption support for default template
964
+ * New : Yoast SEO gallery image support!
965
+ * New : Responsive options for Masonry gallery
966
+ * New : change gallery URL slug for albums
967
+ * New : setting to turn off loading animation in default gallery
968
+ * New : French translation
969
+ * Fix : Support for WP 4.4
970
+ * Fix : All templates - moved all jQuery ready events to vanilla JS
971
+ * Fix : Many gallery template tweaks
972
+ * Fix : allow no default to be chosen in settings
973
+
974
+ = 1.2.8 =
975
+ * Works now with Polylang translation plugin
976
+ * CSS Updates & enhancements to all gallery templates
977
+ * Password protected galleries now work as expected
978
+ * Ability to hide WYSIWYG editor button
979
+ * Updated WPThumb
980
+ * Multiple bug fixes and improvements
981
+
982
+ = 1.2.7 =
983
+ * Bug fixes for 1.2.6 release
984
+ * Added 2 new settings to Justified Gallery template (maxRowHeight + Caption Source)
985
+
986
+ = 1.2.6 =
987
+ * CSS load optimizations
988
+ * Updates and tweaks on all built-in gallery templates
989
+ * More robust extension loading
990
+ * More robust upgrades to FooBox PRO
991
+ * Improved copy-to-clipboard
992
+ * Added more hover effects
993
+ * Support for FooVideo
994
+
995
+ = 1.2.5 =
996
+ * Fix for extensions being empty
997
+ * Added support for Multi-site
998
+ * Added esc_url to all places where url is rendered
999
+ * Updated to latest Justified Gallery v3.5.4
1000
+
1001
+ = 1.2.4 =
1002
+ * Many album template updates, enhancements and fixes
1003
+ * Many gallery template tweaks and fixes
1004
+ * Sort order settings for galleries and albums
1005
+ * Added new Single Thumbnail Gallery template
1006
+
1007
+ = 1.2.1 =
1008
+ * Added setting to choose default gallery to copy settings from
1009
+ * Fixed bug #45 - gallery fields not showing onload
1010
+ * replaced minicolors with spectrum colorpicker
1011
+ * Allow gallery fields to have a suffix
1012
+ * Added function to render galleries "foogallery_render_gallery( $gallery_id )"
1013
+
1014
+ = 1.2.0 =
1015
+ * Added albums extension
1016
+ * Added custom CSS metaboxes
1017
+ * Updated Nextgen importer
1018
+ * Fixed many bugs
1019
+
1020
+ = 1.1.8.2 =
1021
+ * Fixed "edit gallery" CSS with WP 4.0
1022
+
1023
+ = 1.1.8.1 =
1024
+ * Fixed "insert gallery" CSS with WP 4.0
1025
+
1026
+ = 1.1.8 =
1027
+ * Added 2 new gallery templates
1028
+ * Added 10+ actions and filters for more customization
1029
+ * Countless bug fixes and enhancements
1030
+
1031
+ = 1.1.7 =
1032
  * first version!
changelog.txt CHANGED
@@ -1,4 +1,4 @@
1
- FooGallery Changelog
2
- ====================
3
-
4
  See changelog in readme.txt
1
+ FooGallery Changelog
2
+ ====================
3
+
4
  See changelog in readme.txt
css/admin-foogallery-gallery-piles.css CHANGED
@@ -1,93 +1,93 @@
1
- .foogallery-pile {
2
- position: relative;
3
- z-index: 10;
4
- float: left;
5
- margin: 10px 15px 15px 10px !important;
6
- }
7
-
8
- /* Image styles */
9
- .foogallery-pile .foogallery-gallery-select {
10
- width: 150px;
11
- height: 150px;
12
- position: relative;
13
- box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.05);
14
- background: #eee;
15
- vertical-align: bottom;
16
- border: 8px solid #fff;
17
- overflow: hidden;
18
- cursor: pointer;
19
- }
20
-
21
- /* Stacks creted by the use of generated content */
22
- .foogallery-pile:before, .foogallery-pile:after {
23
- content: "";
24
- width: 100%;
25
- height: 100%;
26
- position: absolute;
27
- border: 8px solid #fff;
28
- left: 0;
29
- -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
30
- -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
31
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
32
- -webkit-box-sizing: border-box;
33
- -moz-box-sizing: border-box;
34
- box-sizing: border-box;
35
- }
36
- /* 1st element in stack (behind image) */
37
- .foogallery-pile:before {
38
- top: -3px; z-index: -10;
39
- -webkit-transform: rotate(2deg);
40
- -moz-transform: rotate(2deg);
41
- transform: rotate(2deg);
42
- }
43
- /* 2nd element in stack (behind image) */
44
- .foogallery-pile:after {
45
- top: -2px; z-index: -20;
46
- -webkit-transform: rotate(-2deg);
47
- -moz-transform: rotate(-2deg);
48
- transform: rotate(-2deg);
49
- }
50
-
51
- .foogallery-pile img {
52
- width: 150px;
53
- }
54
-
55
- .foogallery-pile h3 {
56
- background: #fff;
57
- position: absolute;
58
- display: block;
59
- bottom: 0px;
60
- padding: 5px;
61
- width: 100%;
62
- box-sizing: border-box;
63
- margin: 0;
64
- opacity: 0.8;
65
- }
66
-
67
- .foogallery-pile h3 span {
68
- display: block;
69
- font-size: 0.6em;
70
- }
71
-
72
- .foogallery-gallery-select.selected {
73
- border-color: #1E8CBE;
74
- }
75
-
76
- .foogallery-gallery-select.selected::before {
77
- content: "\f147" !important;
78
- display: inline-block !important;
79
- font: normal 60px/70px 'dashicons';
80
- position: absolute;
81
- color: #FFF;
82
- top: 40%;
83
- left: 50%;
84
- margin-left: -30px;
85
- margin-top: -30px;
86
- -webkit-font-smoothing: antialiased;
87
- background: #1E8CBE;
88
- border-radius: 50%;
89
- width: 60px;
90
- height: 60px;
91
- z-index: 4;
92
- padding-top:0 !important;
93
  }
1
+ .foogallery-pile {
2
+ position: relative;
3
+ z-index: 10;
4
+ float: left;
5
+ margin: 10px 15px 15px 10px !important;
6
+ }
7
+
8
+ /* Image styles */
9
+ .foogallery-pile .foogallery-gallery-select {
10
+ width: 150px;
11
+ height: 150px;
12
+ position: relative;
13
+ box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.05);
14
+ background: #eee;
15
+ vertical-align: bottom;
16
+ border: 8px solid #fff;
17
+ overflow: hidden;
18
+ cursor: pointer;
19
+ }
20
+
21
+ /* Stacks creted by the use of generated content */
22
+ .foogallery-pile:before, .foogallery-pile:after {
23
+ content: "";
24
+ width: 100%;
25
+ height: 100%;
26
+ position: absolute;
27
+ border: 8px solid #fff;
28
+ left: 0;
29
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
30
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
31
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
32
+ -webkit-box-sizing: border-box;
33
+ -moz-box-sizing: border-box;
34
+ box-sizing: border-box;
35
+ }
36
+ /* 1st element in stack (behind image) */
37
+ .foogallery-pile:before {
38
+ top: -3px; z-index: -10;
39
+ -webkit-transform: rotate(2deg);
40
+ -moz-transform: rotate(2deg);
41
+ transform: rotate(2deg);
42
+ }
43
+ /* 2nd element in stack (behind image) */
44
+ .foogallery-pile:after {
45
+ top: -2px; z-index: -20;
46
+ -webkit-transform: rotate(-2deg);
47
+ -moz-transform: rotate(-2deg);
48
+ transform: rotate(-2deg);
49
+ }
50
+
51
+ .foogallery-pile img {
52
+ width: 150px;
53
+ }
54
+
55
+ .foogallery-pile h3 {
56
+ background: #fff;
57
+ position: absolute;
58
+ display: block;
59
+ bottom: 0px;
60
+ padding: 5px;
61
+ width: 100%;
62
+ box-sizing: border-box;
63
+ margin: 0;
64
+ opacity: 0.8;
65
+ }
66
+
67
+ .foogallery-pile h3 span {
68
+ display: block;
69
+ font-size: 0.6em;
70
+ }
71
+
72
+ .foogallery-gallery-select.selected {
73
+ border-color: #1E8CBE;
74
+ }
75
+
76
+ .foogallery-gallery-select.selected::before {
77
+ content: "\f147" !important;
78
+ display: inline-block !important;
79
+ font: normal 60px/70px 'dashicons';
80
+ position: absolute;
81
+ color: #FFF;
82
+ top: 40%;
83
+ left: 50%;
84
+ margin-left: -30px;
85
+ margin-top: -30px;
86
+ -webkit-font-smoothing: antialiased;
87
+ background: #1E8CBE;
88
+ border-radius: 50%;
89
+ width: 60px;
90
+ height: 60px;
91
+ z-index: 4;
92
+ padding-top:0 !important;
93
  }
css/admin-foogallery.css CHANGED
@@ -1,680 +1,680 @@
1
- .foogallery-attachments-list .add-attachment {
2
- background: #ddd;
3
- border: #888 1px dashed;
4
- position: relative;
5
- float: left;
6
- padding: 0;
7
- color: #464646;
8
- list-style: none;
9
- text-align: center;
10
- -webkit-user-select: none;
11
- -moz-user-select: none;
12
- -ms-user-select: none;
13
- -o-user-select: none;
14
- user-select: none;
15
- }
16
-
17
- .foogallery-attachments-list .add-attachment a {
18
- display: table-cell;
19
- vertical-align: middle;
20
- height: 150px;
21
- text-align: center;
22
- width: 150px;
23
- color:#666;
24
- font-weight: bold;
25
- text-decoration: none;
26
- }
27
-
28
- .foogallery-attachments-list .add-attachment a:hover {
29
- color:#444;
30
- }
31
-
32
- .foogallery-attachments-list .add-attachment a div.dashicons {
33
- font-size:50px;
34
- width: 50px;
35
- height: 50px;
36
- }
37
-
38
- .foogallery-attachments-list .add-attachment a span {
39
- display: block;
40
- }
41
-
42
-
43
- .foogallery-attachments-list .attachment-preview,
44
- .foogallery-attachments-list .attachment-preview .thumbnail {
45
- width: 150px;
46
- height: 150px;
47
- cursor:move;
48
- }
49
-
50
- .foogallery-attachments-list .attachment {
51
- border: transparent 1px solid;
52
- box-shadow: none !important;
53
- width: auto !important;
54
- padding: 0 !important;
55
- }
56
-
57
- .foogallery-attachments-list .attachment.placeholder {
58
- width: 150px !important;
59
- height: 150px;
60
- border: #1e8cbe 1px dashed;
61
- background: #eee;
62
- }
63
-
64
- .foogallery-attachments-list li {
65
- margin: 0px 10px 10px 0px !important;
66
- }
67
-
68
- .foogallery-attachments-list .attachment.ui-sortable-helper {
69
- opacity: 0.5;
70
- }
71
-
72
- .foogallery-attachments-list .attachment.ui-sortable-helper:hover .close {
73
- display: none;
74
- }
75
-
76
- .foogallery-attachments-list input.describe {
77
- margin:0;
78
- width: 150px;
79
- font-size: 12px;
80
- }
81
-
82
- .foogallery-attachments-list .attachment .attachment-preview a {
83
- display: none;
84
- position: absolute;
85
- padding: 0;
86
- font-size: 20px;
87
- line-height: 20px;
88
- text-align: center;
89
- text-decoration: none;
90
- background-color: #444;
91
- border-top-right-radius: 50%;
92
- border-top-left-radius: 50%;
93
- border-bottom-right-radius: 50%;
94
- border-bottom-left-radius: 50%;
95
- }
96
-
97
- .foogallery-attachments-list .attachment .attachment-preview:hover a {
98
- display: block;
99
- }
100
-
101
- .foogallery-attachments-list .attachment .attachment-preview a span {
102
- color:#fff;
103
- }
104
-
105
- .foogallery-attachments-list .attachment .attachment-preview a:hover span {
106
- color:#ddd;
107
- }
108
-
109
- .foogallery-attachments-list .attachment .attachment-preview a.remove {
110
- top: 5px;
111
- right: 5px;
112
- }
113
-
114
- .foogallery-attachments-list .attachment .attachment-preview a.info {
115
- top: 5px;
116
- left: 5px;
117
- }
118
-
119
- .spacer {
120
- display: inline-block;
121
- width:30px;
122
- }
123
-
124
- .foogallery_template_field td {
125
- padding-bottom: 20px;
126
- }
127
-
128
- .foogallery_template_field th {
129
- vertical-align: top;
130
- text-align: left;
131
- padding-top: 0.3em;
132
- padding-right: 10px;
133
- }
134
-
135
- .foogallery_template_field textarea {
136
- min-width: 500px;
137
- min-height: 100px;
138
- }
139
-
140
- .foogallery_template_field.foogallery_template_field_type-help {
141
- border-bottom: none;
142
- }
143
-
144
- .foogallery_template_field.foogallery_template_field_type-help td {
145
- padding-bottom: 0;
146
- }
147
-
148
- .foogallery_template_field.foogallery_template_field_type-icon td {
149
- padding-bottom: 0;
150
- }
151
-
152
- .foogallery_metabox_field-icon label {
153
- display:inline-block;
154
- margin-right:10px;
155
- border:solid 3px transparent;
156
- background:#aaa;
157
- border-radius: 3px;
158
- -moz-border-radius: 3px;
159
- -webkit-border-radius: 3px;
160
- padding:5px;
161
- line-height: 0;
162
- margin-bottom: 10px;
163
- }
164
-
165
- .foogallery_metabox_field-icon input:checked + label {
166
- border:solid 3px #444;
167
- background: #888;
168
- }
169
-
170
- .foogallery_metabox_field-icon label:hover {
171
- border:solid 3px #444;
172
- }
173
-
174
- .foogallery_template_field.foogallery_template_field_type-htmlicon td {
175
- padding-bottom: 0;
176
- }
177
-
178
- .foogallery_metabox_field-htmlicon label {
179
- display:inline-block;
180
- margin-right:10px;
181
- border:solid 3px transparent;
182
- background:#aaa;
183
- border-radius: 3px;
184
- -moz-border-radius: 3px;
185
- -webkit-border-radius: 3px;
186
- padding:5px;
187
- line-height: 0;
188
- margin-bottom: 10px;
189
- }
190
-
191
- .foogallery_template_field_id-lightbox_custom_button_theme .foogallery_metabox_field-htmlicon label,
192
- .foogallery_template_field_id-lightbox_custom_button_highlight .foogallery_metabox_field-htmlicon label
193
- {
194
- padding:0px;
195
- }
196
-
197
- .foogallery_metabox_field-htmlicon input:checked + label {
198
- border:solid 3px #444;
199
- background: #888;
200
- }
201
-
202
- .foogallery_metabox_field-htmlicon label:hover {
203
- border:solid 3px #444;
204
- }
205
-
206
- .foogallery_metabox_field-thumb_size label {
207
- vertical-align: baseline;
208
- }
209
-
210
- .foogallery_metabox_field-thumb_size input[type="number"] {
211
- margin-right: 10px;
212
- margin-left: 10px;
213
- }
214
-
215
- .foogallery_template_field_type-text input.small-text {
216
- width: 65px;
217
- height: 28px;
218
- line-height: 1;
219
- }
220
-
221
- #foogallery_pages ul li:hover .row-actions { visibility: visible; }
222
-
223
- .foogallery-shortcode {
224
- text-align: center;
225
- }
226
-
227
- .foogallery-shortcode input {
228
- cursor: pointer;
229
- text-align: center;
230
- padding: 10px;
231
- font-family: "courier new", courier;
232
- border: none;
233
- box-shadow: none;
234
- background: #efefef;
235
- }
236
-
237
- .wp-list-table .foogallery-shortcode {
238
- cursor: pointer;
239
- font-size: 1em;
240
- border: none;
241
- box-shadow: none;
242
- background: #efefef;
243
- font-family: "courier new", courier;
244
- }
245
-
246
- .foogallery-shortcode-message {
247
- font-style: italic;
248
- color: #2EA2CC !important;
249
- }
250
-
251
- .foogallery-help {
252
- position: relative;
253
- display: block;
254
- line-height: 19px;
255
- padding: 11px 10px 11px 40px;
256
- font-size: 14px;
257
- text-align: left;
258
- margin: 5px 0 0 2px;
259
- background-color: #F4F4FF;
260
- border-left: 4px solid #1e8cbe;
261
- -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
262
- box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
263
- }
264
-
265
- .foogallery-help:before {
266
- content: "\f223";
267
- font: 400 30px/1 dashicons !important;
268
- speak: none;
269
- color: #1e8cbe;
270
- display: inline-block;
271
- -webkit-font-smoothing: antialiased;
272
- -moz-osx-font-smoothing: grayscale;
273
- vertical-align: bottom;
274
- position: absolute;
275
- left: 5px;
276
- margin-top: -15px;
277
- top: 50%;
278
- height: 1em;
279
- }
280
-
281
- #post-body.columns-2 #postbox-container-1 .foogallery-help {
282
- padding-left: 11px;
283
- margin-left: 5px;
284
- }
285
-
286
- #post-body.columns-2 #postbox-container-1 .foogallery-help:before {
287
- content: '';
288
- }
289
-
290
- tr.foogallery_template_field[data-foogallery-hidden] {
291
- display: none;
292
- }
293
-
294
- tr.foogallery_template_field[data-foogallery-invisible] {
295
- display: none;
296
- }
297
-
298
- .foogallery_template_field_type-promo .foogallery-promo {
299
- position: relative;
300
- display: block;
301
- line-height: 19px;
302
- padding: 11px 10px 11px 40px;
303
- font-size: 14px;
304
- text-align: left;
305
- margin: 5px 0 0 2px;
306
- background-color: #f7fff6;
307
- border-left: 4px solid #31be4d;
308
- -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
309
- box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
310
- }
311
-
312
- .foogallery_template_field_type-promo.foogallery_promo_prostarter .foogallery-promo {
313
- border-color: #3397C1;
314
- background-color: #f6fffe;
315
- }
316
-
317
- .foogallery_template_field_type-promo.foogallery_promo_commerce .foogallery-promo {
318
- border-color: #B0459D;
319
- background-color: #fdf6ff;
320
- }
321
-
322
- .foogallery_template_field_type-promo .foogallery-promo:before {
323
- /* content: "\f313"; award */
324
- content: "\f155"; /* star */
325
- font: 400 30px/1 dashicons !important;
326
- speak: none;
327
- color: #31be4d;
328
- display: inline-block;
329
- -webkit-font-smoothing: antialiased;
330
- -moz-osx-font-smoothing: grayscale;
331
- position: absolute;
332
- left: 5px;
333
- margin-top: -5px;
334
- height: 1em;
335
- }
336
-
337
- .foogallery_template_field_type-promo.foogallery_promo_prostarter .foogallery-promo:before {
338
- color: #3397C1;
339
- }
340
-
341
- .foogallery_template_field_type-promo.foogallery_promo_commerce .foogallery-promo:before {
342
- color: #B0459D;
343
- }
344
-
345
- #post-body.columns-2 #postbox-container-1 .foogallery-promo {
346
- padding-left: 11px;
347
- margin-left: 5px;
348
- }
349
-
350
- #post-body.columns-2 #postbox-container-1 .foogallery-promo:before {
351
- content: '';
352
- }
353
-
354
- .foogallery_template_field_type-promo .foogallery-promo .button-primary {
355
- background: #1d7b30;
356
- border-color: #1d7b30;
357
- margin-right: 10px;
358
- }
359
-
360
- .foogallery_template_field_type-promo .foogallery-promo .button-secondary {
361
- border-color: #1d7b30;
362
- color: #1d7b30;
363
- }
364
-
365
- .foogallery_template_field_type-promo.foogallery_promo_prostarter .foogallery-promo .button-primary {
366
- background: #3397C1;
367
- border-color: #3397C1;
368
- }
369
-
370
- .foogallery_template_field_type-promo.foogallery_promo_prostarter .foogallery-promo .button-secondary {
371
- border-color: #3397C1;
372
- color: #3397C1;
373
- }
374
-
375
- .foogallery_template_field_type-promo.foogallery_promo_commerce .foogallery-promo .button-primary {
376
- background: #B0459D;
377
- border-color: #B0459D;
378
- }
379
-
380
- .foogallery_template_field_type-promo.foogallery_promo_commerce .foogallery-promo .button-secondary {
381
- border-color: #B0459D;
382
- color: #B0459D;
383
- }
384
-
385
- .foogallery_template_field_promo th .dashicons {
386
- color: #31be4d;
387
- }
388
-
389
- .foogallery_metabox_field-radio label.foogallery-promo i {
390
- font: 400 15px/1 dashicons !important;
391
- speak: none;
392
- color: #31be4d;
393
- vertical-align: inherit;
394
- padding-left: 2px;
395
- }
396
-
397
- .foogallery_metabox_field-radio label.foogallery-promo-prostarter i {
398
- font: 400 15px/1 dashicons !important;
399
- speak: none;
400
- color: #3397C1;
401
- vertical-align: inherit;
402
- padding-left: 2px;
403
- }
404
-
405
- .foogallery_metabox_field-radio label.foogallery_promo_commerce i {
406
- font: 400 15px/1 dashicons !important;
407
- speak: none;
408
- color: #B0459D;
409
- vertical-align: inherit;
410
- padding-left: 2px;
411
- }
412
-
413
- /** <gallery settings styling overrides> **/
414
-
415
- .foogallery-metabox-settings {
416
- width: 100%;
417
- border-collapse: collapse;
418
- }
419
-
420
- .foogallery-metabox-settings th {
421
- font-weight: normal;
422
- padding: 10px;
423
- width: 200px;
424
- }
425
-
426
- .foogallery-metabox-settings tr {
427
- border-bottom: solid 1px #EEE;
428
- }
429
-
430
- .foogallery-metabox-settings td {
431
- padding: 10px;
432
- }
433
-
434
- .foogallery_metabox_field-radio > input,
435
- .foogallery_metabox_field-radio > label {
436
- margin-bottom: 10px;
437
- display: inline-block;
438
- }
439
-
440
- .foogallery_metabox_field-radio input[type="checkbox"],
441
- .foogallery_metabox_field-radio input[type="radio"] {
442
- margin: 0 0 10px 0;
443
- }
444
-
445
- .foogallery_metabox_field-select select {
446
- min-width: 250px;
447
- }
448
-
449
- .foogallery-thumbsize-crop {
450
- margin-top: 10px;
451
- }
452
-
453
- .foogallery_metabox_field-checkboxlist > input,
454
- .foogallery_metabox_field-checkboxlist > label {
455
- margin-bottom: 10px;
456
- display: inline-block;
457
- }
458
-
459
- .foogallery_metabox_field-checkboxlist input[type="checkbox"] {
460
- margin: 0 0 10px 0;
461
- }
462
-
463
- /** </gallery settings styling overrides> **/
464
-
465
- .foogallery_metabox_custom_css {
466
- width: 100%;
467
- height: 10em;
468
- }
469
-
470
- .foo-nav-tabs a:focus {
471
- box-shadow: none;
472
- outline: 0;
473
- }
474
-
475
- .foogallery-thumbnail-preview {
476
- display: inline-block;
477
- }
478
-
479
- #foogallery_apply_retina_support_container {
480
- margin-top: 5px;
481
- }
482
-
483
- .widefat th.column-icon {
484
- width: 60px;
485
- }
486
-
487
- #foogallery_settings .inside {
488
- margin: 0;
489
- padding: 0;
490
- }
491
- /** Balloon.css **/
492
- button[data-balloon]{overflow:visible}[data-balloon]{position:relative}[data-balloon]:after,[data-balloon]:before{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-khtml-opacity:0;-moz-opacity:0;opacity:0;pointer-events:none;-webkit-transition:all .18s ease-out .18s;transition:all .18s ease-out .18s;bottom:100%;left:50%;position:absolute;z-index:10;-webkit-transform:translate(-50%,10px);-ms-transform:translate(-50%,10px);transform:translate(-50%,10px);-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top}[data-balloon]:after{background:rgba(17,17,17,.9);border-radius:4px;color:#fff;content:attr(data-balloon);font-size:12px;padding:.5em 1em;white-space:nowrap;margin-bottom:11px}[data-balloon]:before{background:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%280%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E') no-repeat;background-size:100% auto;height:6px;width:18px;content:"";margin-bottom:5px}[data-balloon]:hover:after,[data-balloon]:hover:before,[data-balloon][data-balloon-visible]:after,[data-balloon][data-balloon-visible]:before{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;pointer-events:auto;-webkit-transform:translate(-50%,0);-ms-transform:translate(-50%,0);transform:translate(-50%,0)}[data-balloon].font-awesome:after{font-family:FontAwesome}[data-balloon][data-balloon-break]:after{white-space:pre}[data-balloon-pos=down]:after,[data-balloon-pos=down]:before{bottom:auto;left:50%;top:100%;-webkit-transform:translate(-50%,-10px);-ms-transform:translate(-50%,-10px);transform:translate(-50%,-10px)}[data-balloon-pos=down]:after{margin-top:11px}[data-balloon-pos=down]:before{background:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28180%2018%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E') no-repeat;background-size:100% auto;height:6px;width:18px;margin-top:5px;margin-bottom:0}[data-balloon-pos=down]:hover:after,[data-balloon-pos=down]:hover:before,[data-balloon-pos=down][data-balloon-visible]:after,[data-balloon-pos=down][data-balloon-visible]:before{-webkit-transform:translate(-50%,0);-ms-transform:translate(-50%,0);transform:translate(-50%,0)}[data-balloon-pos=left]:after,[data-balloon-pos=left]:before{bottom:auto;left:auto;right:100%;top:50%;-webkit-transform:translate(10px,-50%);-ms-transform:translate(10px,-50%);transform:translate(10px,-50%)}[data-balloon-pos=left]:after{margin-right:11px}[data-balloon-pos=left]:before{background:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28-90%2018%2018%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E') no-repeat;background-size:100% auto;height:18px;width:6px;margin-right:5px;margin-bottom:0}[data-balloon-pos=left]:hover:after,[data-balloon-pos=left]:hover:before,[data-balloon-pos=left][data-balloon-visible]:after,[data-balloon-pos=left][data-balloon-visible]:before{-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}[data-balloon-pos=right]:after,[data-balloon-pos=right]:before{bottom:auto;left:100%;top:50%;-webkit-transform:translate(-10px,-50%);-ms-transform:translate(-10px,-50%);transform:translate(-10px,-50%)}[data-balloon-pos=right]:after{margin-left:11px}[data-balloon-pos=right]:before{background:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%2890%206%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E') no-repeat;background-size:100% auto;height:18px;width:6px;margin-bottom:0;margin-left:5px}[data-balloon-pos=right]:hover:after,[data-balloon-pos=right]:hover:before,[data-balloon-pos=right][data-balloon-visible]:after,[data-balloon-pos=right][data-balloon-visible]:before{-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}[data-balloon-length]:after{white-space:normal}[data-balloon-length=small]:after{width:80px}[data-balloon-length=medium]:after{width:150px}[data-balloon-length=large]:after{width:260px}[data-balloon-length=xlarge]:after{width:90vw}@media screen and (min-width:768px){[data-balloon-length=xlarge]:after{width:380px}}[data-balloon-length=fit]:after{width:100%}
493
-
494
- /** Balloon.css overrides **/
495
- [data-balloon]:after,
496
- [data-balloon]:before {
497
- text-align: center;
498
- line-height: 1.2em;
499
- }
500
-
501
- .foogallery-items-view-switch-container.hidden {
502
- display: none;
503
- }
504
-
505
- .foogallery-items-view-switch-container {
506
- display: inline-block;
507
- margin-left: 10px;
508
- }
509
-
510
- .foogallery-items-view-switch-container .spinner {
511
- margin: 2px 10px 0;
512
- }
513
-
514
- .foogallery-items-view-switch {
515
- vertical-align: middle;
516
- display: inline-block;
517
- }
518
-
519
- .foogallery-items-view-switch a {
520
- font-size: 11px;
521
- padding: 4px 10px;
522
- line-height: 12px;
523
- border: 1px solid #2271b1;
524
- float: left;
525
- display: inline-block;
526
- text-decoration: none;
527
- margin: 0;
528
- border-radius: 3px;
529
- text-align: center;
530
- white-space: nowrap;
531
- vertical-align: middle;
532
- -ms-touch-action: manipulation;
533
- touch-action: manipulation;
534
- cursor: pointer;
535
- -webkit-user-select: none;
536
- -moz-user-select: none;
537
- -ms-user-select: none;
538
- user-select: none;
539
- /*background: #f7f7f7;*/
540
- /*color: #555;*/
541
-
542
- color: #2271b1;
543
- background: #f6f7f7;
544
- }
545
- .foogallery-items-view-switch a:hover {
546
- background: #f0f0f1;
547
- border-color: #0a4b78;
548
- color: #0a4b78;
549
- }
550
- .foogallery-items-view-switch a:focus {
551
- box-shadow: none;
552
- outline: none;
553
- }
554
-
555
- .foogallery-items-view-switch a:first-child:not(:last-child) {
556
- border-top-right-radius: 0;
557
- border-bottom-right-radius: 0;
558
- border-right: none;
559
- }
560
-
561
- .foogallery-items-view-switch a:last-child:not(:first-child) {
562
- border-top-left-radius: 0;
563
- border-bottom-left-radius: 0;
564
- border-left: none;
565
- }
566
-
567
- .foogallery-items-view-switch a:first-child {
568
- margin-right: 0;
569
- }
570
-
571
- .foogallery-items-view-switch a.current {
572
- background: #2271b1;
573
- border-color: #2271b1;
574
- color: #fff;
575
- }
576
-
577
- .foogallery-items-view-switch a.current:hover {
578
- background: #135e96;
579
- border-color: #135e96;
580
- color: #fff;
581
- }
582
-
583
- .foogallery-items-view-switch a+a {
584
- margin-left: -1px;
585
- }
586
-
587
- .foogallery-gallery-items-metabox-title {
588
- float:none;
589
- }
590
-
591
- .foogallery_preview_container {
592
- position: relative;
593
- padding: 10px;
594
- }
595
-
596
- .foogallery-items-add {
597
- padding:20px;
598
- text-align: center
599
- }
600
- .foogallery-items-view-preview {
601
- overflow: hidden;
602
- }
603
-
604
- .foogallery-items-view .button-hero .dashicons {
605
- vertical-align: middle;
606
- padding-right: 10px;
607
- width: 24px;
608
- height: 24px;
609
- font-size: 24px;
610
- font-weight: normal;
611
- }
612
-
613
- .foogallery_preview_container.loading:after {
614
- content: '';
615
- position: absolute;
616
- top: 0;
617
- left: 0;
618
- right: 0;
619
- bottom: 0;
620
- background: #fff;
621
- opacity: 0.8;
622
- z-index: 159900;
623
- }
624
-
625
- .fs-submenu-item.foogallery {
626
- font-size: 13px;
627
- line-height: 1.2;
628
- }
629
-
630
- .foogallery_template_field_type-thumb_size_no_crop input.small-text+label {
631
- margin-left: 10px;
632
- }
633
-
634
- .foogallery_template_field_type-thumb_size_no_crop label+input {
635
- margin-left: 5px;
636
- }
637
-
638
- /* changes to the media modal */
639
- .compat-item .compat-attachment-fields th.label label span {
640
- text-align: left;
641
- }
642
-
643
- .compat-item .compat-attachment-fields td.field {
644
- width: 100%;
645
- margin: 0;
646
- }
647
-
648
- .foogallery-attachments-list {
649
- max-height: 486px;
650
- /*max-height: 324px;*/
651
- /*max-height: 162px;*/
652
- overflow: scroll;
653
- overflow-x: hidden;
654
- list-style: none;
655
- border: 1px solid #ccd0d4;
656
- padding: 10px;
657
- }
658
- .foogallery-attachments-list:after,
659
- .foogallery-attachments-list-bar:after {
660
- content: '';
661
- display: block;
662
- clear: both;
663
- }
664
-
665
- .foogallery-attachments-list-bar button.alignright {
666
- margin-left: 5px;
667
- }
668
-
669
- .foogallery-custom-metabox-header {
670
- justify-content: flex-start !important;
671
- }
672
-
673
- .foogallery-custom-metabox-header .foogallery-template-selector {
674
- margin-left: 10px;
675
- }
676
-
677
- .foogallery-custom-metabox-header .foogallery-template-selector select {
678
- font-size: 13px;
679
- margin-left: 6px;
680
  }
1
+ .foogallery-attachments-list .add-attachment {
2
+ background: #ddd;
3
+ border: #888 1px dashed;
4
+ position: relative;
5
+ float: left;
6
+ padding: 0;
7
+ color: #464646;
8
+ list-style: none;
9
+ text-align: center;
10
+ -webkit-user-select: none;
11
+ -moz-user-select: none;
12
+ -ms-user-select: none;
13
+ -o-user-select: none;
14
+ user-select: none;
15
+ }
16
+
17
+ .foogallery-attachments-list .add-attachment a {
18
+ display: table-cell;
19
+ vertical-align: middle;
20
+ height: 150px;
21
+ text-align: center;
22
+ width: 150px;
23
+ color:#666;
24
+ font-weight: bold;
25
+ text-decoration: none;
26
+ }
27
+
28
+ .foogallery-attachments-list .add-attachment a:hover {
29
+ color:#444;
30
+ }
31
+
32
+ .foogallery-attachments-list .add-attachment a div.dashicons {
33
+ font-size:50px;
34
+ width: 50px;
35
+ height: 50px;
36
+ }
37
+
38
+ .foogallery-attachments-list .add-attachment a span {
39
+ display: block;
40
+ }
41
+
42
+
43
+ .foogallery-attachments-list .attachment-preview,
44
+ .foogallery-attachments-list .attachment-preview .thumbnail {
45
+ width: 150px;
46
+ height: 150px;
47
+ cursor:move;
48
+ }
49
+
50
+ .foogallery-attachments-list .attachment {
51
+ border: transparent 1px solid;
52
+ box-shadow: none !important;
53
+ width: auto !important;
54
+ padding: 0 !important;
55
+ }
56
+
57
+ .foogallery-attachments-list .attachment.placeholder {
58
+ width: 150px !important;
59
+ height: 150px;
60
+ border: #1e8cbe 1px dashed;
61
+ background: #eee;
62
+ }
63
+
64
+ .foogallery-attachments-list li {
65
+ margin: 0px 10px 10px 0px !important;
66
+ }
67
+
68
+ .foogallery-attachments-list .attachment.ui-sortable-helper {
69
+ opacity: 0.5;
70
+ }
71
+
72
+ .foogallery-attachments-list .attachment.ui-sortable-helper:hover .close {
73
+ display: none;
74
+ }
75
+
76
+ .foogallery-attachments-list input.describe {
77
+ margin:0;
78
+ width: 150px;
79
+ font-size: 12px;
80
+ }
81
+
82
+ .foogallery-attachments-list .attachment .attachment-preview a {
83
+ display: none;
84
+ position: absolute;
85
+ padding: 0;
86
+ font-size: 20px;
87
+ line-height: 20px;
88
+ text-align: center;
89
+ text-decoration: none;
90
+ background-color: #444;
91
+ border-top-right-radius: 50%;
92
+ border-top-left-radius: 50%;
93
+ border-bottom-right-radius: 50%;
94
+ border-bottom-left-radius: 50%;
95
+ }
96
+
97
+ .foogallery-attachments-list .attachment .attachment-preview:hover a {
98
+ display: block;
99
+ }
100
+
101
+ .foogallery-attachments-list .attachment .attachment-preview a span {
102
+ color:#fff;
103
+ }
104
+
105
+ .foogallery-attachments-list .attachment .attachment-preview a:hover span {
106
+ color:#ddd;
107
+ }
108
+
109
+ .foogallery-attachments-list .attachment .attachment-preview a.remove {
110
+ top: 5px;
111
+ right: 5px;
112
+ }
113
+
114
+ .foogallery-attachments-list .attachment .attachment-preview a.info {
115
+ top: 5px;
116
+ left: 5px;
117
+ }
118
+
119
+ .spacer {
120
+ display: inline-block;
121
+ width:30px;
122
+ }
123
+
124
+ .foogallery_template_field td {
125
+ padding-bottom: 20px;
126
+ }
127
+
128
+ .foogallery_template_field th {
129
+ vertical-align: top;
130
+ text-align: left;
131
+ padding-top: 0.3em;
132
+ padding-right: 10px;
133
+ }
134
+
135
+ .foogallery_template_field textarea {
136
+ min-width: 500px;
137
+ min-height: 100px;
138
+ }
139
+
140
+ .foogallery_template_field.foogallery_template_field_type-help {
141
+ border-bottom: none;
142
+ }
143
+
144
+ .foogallery_template_field.foogallery_template_field_type-help td {
145
+ padding-bottom: 0;
146
+ }
147
+
148
+ .foogallery_template_field.foogallery_template_field_type-icon td {
149
+ padding-bottom: 0;
150
+ }
151
+
152
+ .foogallery_metabox_field-icon label {
153
+ display:inline-block;
154
+ margin-right:10px;
155
+ border:solid 3px transparent;
156
+ background:#aaa;
157
+ border-radius: 3px;
158
+ -moz-border-radius: 3px;
159
+ -webkit-border-radius: 3px;
160
+ padding:5px;
161
+ line-height: 0;
162
+ margin-bottom: 10px;
163
+ }
164
+
165
+ .foogallery_metabox_field-icon input:checked + label {
166
+ border:solid 3px #444;
167
+ background: #888;
168
+ }
169
+
170
+ .foogallery_metabox_field-icon label:hover {
171
+ border:solid 3px #444;
172
+ }
173
+
174
+ .foogallery_template_field.foogallery_template_field_type-htmlicon td {
175
+ padding-bottom: 0;
176
+ }
177
+
178
+ .foogallery_metabox_field-htmlicon label {
179
+ display:inline-block;
180
+ margin-right:10px;
181
+ border:solid 3px transparent;
182
+ background:#aaa;
183
+ border-radius: 3px;
184
+ -moz-border-radius: 3px;
185
+ -webkit-border-radius: 3px;
186
+ padding:5px;
187
+ line-height: 0;
188
+ margin-bottom: 10px;
189
+ }
190
+
191
+ .foogallery_template_field_id-lightbox_custom_button_theme .foogallery_metabox_field-htmlicon label,
192
+ .foogallery_template_field_id-lightbox_custom_button_highlight .foogallery_metabox_field-htmlicon label
193
+ {
194
+ padding:0px;
195
+ }
196
+
197
+ .foogallery_metabox_field-htmlicon input:checked + label {
198
+ border:solid 3px #444;
199
+ background: #888;
200
+ }
201
+
202
+ .foogallery_metabox_field-htmlicon label:hover {
203
+ border:solid 3px #444;
204
+ }
205
+
206
+ .foogallery_metabox_field-thumb_size label {
207
+ vertical-align: baseline;
208
+ }
209
+
210
+ .foogallery_metabox_field-thumb_size input[type="number"] {
211
+ margin-right: 10px;
212
+ margin-left: 10px;
213
+ }
214
+
215
+ .foogallery_template_field_type-text input.small-text {
216
+ width: 65px;
217
+ height: 28px;
218
+ line-height: 1;
219
+ }
220
+
221
+ #foogallery_pages ul li:hover .row-actions { visibility: visible; }
222
+
223
+ .foogallery-shortcode {
224
+ text-align: center;
225
+ }
226
+
227
+ .foogallery-shortcode input {
228
+ cursor: pointer;
229
+ text-align: center;
230
+ padding: 10px;
231
+ font-family: "courier new", courier;
232
+ border: none;
233
+ box-shadow: none;
234
+ background: #efefef;
235
+ }
236
+
237
+ .wp-list-table .foogallery-shortcode {
238
+ cursor: pointer;
239
+ font-size: 1em;
240
+ border: none;
241
+ box-shadow: none;
242
+ background: #efefef;
243
+ font-family: "courier new", courier;
244
+ }
245
+
246
+ .foogallery-shortcode-message {
247
+ font-style: italic;
248
+ color: #2EA2CC !important;
249
+ }
250
+
251
+ .foogallery-help {
252
+ position: relative;
253
+ display: block;
254
+ line-height: 19px;
255
+ padding: 11px 10px 11px 40px;
256
+ font-size: 14px;
257
+ text-align: left;
258
+ margin: 5px 0 0 2px;
259
+ background-color: #F4F4FF;
260
+ border-left: 4px solid #1e8cbe;
261
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
262
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
263
+ }
264
+
265
+ .foogallery-help:before {
266
+ content: "\f223";
267
+ font: 400 30px/1 dashicons !important;
268
+ speak: none;
269
+ color: #1e8cbe;
270
+ display: inline-block;
271
+ -webkit-font-smoothing: antialiased;
272
+ -moz-osx-font-smoothing: grayscale;
273
+ vertical-align: bottom;
274
+ position: absolute;
275
+ left: 5px;
276
+ margin-top: -15px;
277
+ top: 50%;
278
+ height: 1em;
279
+ }
280
+
281
+ #post-body.columns-2 #postbox-container-1 .foogallery-help {
282
+ padding-left: 11px;
283
+ margin-left: 5px;
284
+ }
285
+
286
+ #post-body.columns-2 #postbox-container-1 .foogallery-help:before {
287
+ content: '';
288
+ }
289
+
290
+ tr.foogallery_template_field[data-foogallery-hidden] {
291
+ display: none;
292
+ }
293
+
294
+ tr.foogallery_template_field[data-foogallery-invisible] {
295
+ display: none;
296
+ }
297
+
298
+ .foogallery_template_field_type-promo .foogallery-promo {
299
+ position: relative;
300
+ display: block;
301
+ line-height: 19px;
302
+ padding: 11px 10px 11px 40px;
303
+ font-size: 14px;
304
+ text-align: left;
305
+ margin: 5px 0 0 2px;
306
+ background-color: #f7fff6;
307
+ border-left: 4px solid #31be4d;
308
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
309
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
310
+ }
311
+
312
+ .foogallery_template_field_type-promo.foogallery_promo_prostarter .foogallery-promo {
313
+ border-color: #3397C1;
314
+ background-color: #f6fffe;
315
+ }
316
+
317
+ .foogallery_template_field_type-promo.foogallery_promo_commerce .foogallery-promo {
318
+ border-color: #B0459D;
319
+ background-color: #fdf6ff;
320
+ }
321
+
322
+ .foogallery_template_field_type-promo .foogallery-promo:before {
323
+ /* content: "\f313"; award */
324
+ content: "\f155"; /* star */
325
+ font: 400 30px/1 dashicons !important;
326
+ speak: none;
327
+ color: #31be4d;
328
+ display: inline-block;
329
+ -webkit-font-smoothing: antialiased;
330
+ -moz-osx-font-smoothing: grayscale;
331
+ position: absolute;
332
+ left: 5px;
333
+ margin-top: -5px;
334
+ height: 1em;
335
+ }
336
+
337
+ .foogallery_template_field_type-promo.foogallery_promo_prostarter .foogallery-promo:before {
338
+ color: #3397C1;
339
+ }
340
+
341
+ .foogallery_template_field_type-promo.foogallery_promo_commerce .foogallery-promo:before {
342
+ color: #B0459D;
343
+ }
344
+
345
+ #post-body.columns-2 #postbox-container-1 .foogallery-promo {
346
+ padding-left: 11px;
347
+ margin-left: 5px;
348
+ }
349
+
350
+ #post-body.columns-2 #postbox-container-1 .foogallery-promo:before {
351
+ content: '';
352
+ }
353
+
354
+ .foogallery_template_field_type-promo .foogallery-promo .button-primary {
355
+ background: #1d7b30;
356
+ border-color: #1d7b30;
357
+ margin-right: 10px;
358
+ }
359
+
360
+ .foogallery_template_field_type-promo .foogallery-promo .button-secondary {
361
+ border-color: #1d7b30;
362
+ color: #1d7b30;
363
+ }
364
+
365
+ .foogallery_template_field_type-promo.foogallery_promo_prostarter .foogallery-promo .button-primary {
366
+ background: #3397C1;
367
+ border-color: #3397C1;
368
+ }
369
+
370
+ .foogallery_template_field_type-promo.foogallery_promo_prostarter .foogallery-promo .button-secondary {
371
+ border-color: #3397C1;
372
+ color: #3397C1;
373
+ }
374
+
375
+ .foogallery_template_field_type-promo.foogallery_promo_commerce .foogallery-promo .button-primary {
376
+ background: #B0459D;
377
+ border-color: #B0459D;
378
+ }
379
+
380
+ .foogallery_template_field_type-promo.foogallery_promo_commerce .foogallery-promo .button-secondary {
381
+ border-color: #B0459D;
382
+ color: #B0459D;
383
+ }
384
+
385
+ .foogallery_template_field_promo th .dashicons {
386
+ color: #31be4d;
387
+ }
388
+
389
+ .foogallery_metabox_field-radio label.foogallery-promo i {
390
+ font: 400 15px/1 dashicons !important;
391
+ speak: none;
392
+ color: #31be4d;
393
+ vertical-align: inherit;
394
+ padding-left: 2px;
395
+ }
396
+
397
+ .foogallery_metabox_field-radio label.foogallery-promo-prostarter i {
398
+ font: 400 15px/1 dashicons !important;
399
+ speak: none;
400
+ color: #3397C1;
401
+ vertical-align: inherit;
402
+ padding-left: 2px;
403
+ }
404
+
405
+ .foogallery_metabox_field-radio label.foogallery_promo_commerce i {
406
+ font: 400 15px/1 dashicons !important;
407
+ speak: none;
408
+ color: #B0459D;
409
+ vertical-align: inherit;
410
+ padding-left: 2px;
411
+ }
412
+
413
+ /** <gallery settings styling overrides> **/
414
+
415
+ .foogallery-metabox-settings {
416
+ width: 100%;
417
+ border-collapse: collapse;
418
+ }
419
+
420
+ .foogallery-metabox-settings th {
421
+ font-weight: normal;
422
+ padding: 10px;
423
+ width: 200px;
424
+ }
425
+
426
+ .foogallery-metabox-settings tr {
427
+ border-bottom: solid 1px #EEE;
428
+ }
429
+
430
+ .foogallery-metabox-settings td {
431
+ padding: 10px;
432
+ }
433
+
434
+ .foogallery_metabox_field-radio > input,
435
+ .foogallery_metabox_field-radio > label {
436
+ margin-bottom: 10px;
437
+ display: inline-block;
438
+ }
439
+
440
+ .foogallery_metabox_field-radio input[type="checkbox"],
441
+ .foogallery_metabox_field-radio input[type="radio"] {
442
+ margin: 0 0 10px 0;
443
+ }
444
+
445
+ .foogallery_metabox_field-select select {
446
+ min-width: 250px;
447
+ }
448
+
449
+ .foogallery-thumbsize-crop {
450
+ margin-top: 10px;
451
+ }
452
+
453
+ .foogallery_metabox_field-checkboxlist > input,
454
+ .foogallery_metabox_field-checkboxlist > label {
455
+ margin-bottom: 10px;
456
+ display: inline-block;
457
+ }
458
+
459
+ .foogallery_metabox_field-checkboxlist input[type="checkbox"] {
460
+ margin: 0 0 10px 0;
461
+ }
462
+
463
+ /** </gallery settings styling overrides> **/
464
+
465
+ .foogallery_metabox_custom_css {
466
+ width: 100%;
467
+ height: 10em;
468
+ }
469
+
470
+ .foo-nav-tabs a:focus {
471
+ box-shadow: none;
472
+ outline: 0;
473
+ }
474
+
475
+ .foogallery-thumbnail-preview {
476
+ display: inline-block;
477
+ }
478
+
479
+ #foogallery_apply_retina_support_container {
480
+ margin-top: 5px;
481
+ }
482
+
483
+ .widefat th.column-icon {
484
+ width: 60px;
485
+ }
486
+
487
+ #foogallery_settings .inside {
488
+ margin: 0;
489
+ padding: 0;
490
+ }
491
+ /** Balloon.css **/
492
+ button[data-balloon]{overflow:visible}[data-balloon]{position:relative}[data-balloon]:after,[data-balloon]:before{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-khtml-opacity:0;-moz-opacity:0;opacity:0;pointer-events:none;-webkit-transition:all .18s ease-out .18s;transition:all .18s ease-out .18s;bottom:100%;left:50%;position:absolute;z-index:10;-webkit-transform:translate(-50%,10px);-ms-transform:translate(-50%,10px);transform:translate(-50%,10px);-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top}[data-balloon]:after{background:rgba(17,17,17,.9);border-radius:4px;color:#fff;content:attr(data-balloon);font-size:12px;padding:.5em 1em;white-space:nowrap;margin-bottom:11px}[data-balloon]:before{background:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%280%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E') no-repeat;background-size:100% auto;height:6px;width:18px;content:"";margin-bottom:5px}[data-balloon]:hover:after,[data-balloon]:hover:before,[data-balloon][data-balloon-visible]:after,[data-balloon][data-balloon-visible]:before{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;pointer-events:auto;-webkit-transform:translate(-50%,0);-ms-transform:translate(-50%,0);transform:translate(-50%,0)}[data-balloon].font-awesome:after{font-family:FontAwesome}[data-balloon][data-balloon-break]:after{white-space:pre}[data-balloon-pos=down]:after,[data-balloon-pos=down]:before{bottom:auto;left:50%;top:100%;-webkit-transform:translate(-50%,-10px);-ms-transform:translate(-50%,-10px);transform:translate(-50%,-10px)}[data-balloon-pos=down]:after{margin-top:11px}[data-balloon-pos=down]:before{background:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28180%2018%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E') no-repeat;background-size:100% auto;height:6px;width:18px;margin-top:5px;margin-bottom:0}[data-balloon-pos=down]:hover:after,[data-balloon-pos=down]:hover:before,[data-balloon-pos=down][data-balloon-visible]:after,[data-balloon-pos=down][data-balloon-visible]:before{-webkit-transform:translate(-50%,0);-ms-transform:translate(-50%,0);transform:translate(-50%,0)}[data-balloon-pos=left]:after,[data-balloon-pos=left]:before{bottom:auto;left:auto;right:100%;top:50%;-webkit-transform:translate(10px,-50%);-ms-transform:translate(10px,-50%);transform:translate(10px,-50%)}[data-balloon-pos=left]:after{margin-right:11px}[data-balloon-pos=left]:before{background:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28-90%2018%2018%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E') no-repeat;background-size:100% auto;height:18px;width:6px;margin-right:5px;margin-bottom:0}[data-balloon-pos=left]:hover:after,[data-balloon-pos=left]:hover:before,[data-balloon-pos=left][data-balloon-visible]:after,[data-balloon-pos=left][data-balloon-visible]:before{-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}[data-balloon-pos=right]:after,[data-balloon-pos=right]:before{bottom:auto;left:100%;top:50%;-webkit-transform:translate(-10px,-50%);-ms-transform:translate(-10px,-50%);transform:translate(-10px,-50%)}[data-balloon-pos=right]:after{margin-left:11px}[data-balloon-pos=right]:before{background:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%2890%206%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E') no-repeat;background-size:100% auto;height:18px;width:6px;margin-bottom:0;margin-left:5px}[data-balloon-pos=right]:hover:after,[data-balloon-pos=right]:hover:before,[data-balloon-pos=right][data-balloon-visible]:after,[data-balloon-pos=right][data-balloon-visible]:before{-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}[data-balloon-length]:after{white-space:normal}[data-balloon-length=small]:after{width:80px}[data-balloon-length=medium]:after{width:150px}[data-balloon-length=large]:after{width:260px}[data-balloon-length=xlarge]:after{width:90vw}@media screen and (min-width:768px){[data-balloon-length=xlarge]:after{width:380px}}[data-balloon-length=fit]:after{width:100%}
493
+
494
+ /** Balloon.css overrides **/
495
+ [data-balloon]:after,
496
+ [data-balloon]:before {
497
+ text-align: center;
498
+ line-height: 1.2em;
499
+ }
500
+
501
+ .foogallery-items-view-switch-container.hidden {
502
+ display: none;
503
+ }
504
+
505
+ .foogallery-items-view-switch-container {
506
+ display: inline-block;
507
+ margin-left: 10px;
508
+ }
509
+
510
+ .foogallery-items-view-switch-container .spinner {
511
+ margin: 2px 10px 0;
512
+ }
513
+
514
+ .foogallery-items-view-switch {
515
+ vertical-align: middle;
516
+ display: inline-block;
517
+ }
518
+
519
+ .foogallery-items-view-switch a {
520
+ font-size: 11px;
521
+ padding: 4px 10px;
522
+ line-height: 12px;
523
+ border: 1px solid #2271b1;
524
+ float: left;
525
+ display: inline-block;
526
+ text-decoration: none;
527
+ margin: 0;
528
+ border-radius: 3px;
529
+ text-align: center;
530
+ white-space: nowrap;
531
+ vertical-align: middle;
532
+ -ms-touch-action: manipulation;
533
+ touch-action: manipulation;
534
+ cursor: pointer;
535
+ -webkit-user-select: none;
536
+ -moz-user-select: none;
537
+ -ms-user-select: none;
538
+ user-select: none;
539
+ /*background: #f7f7f7;*/
540
+ /*color: #555;*/
541
+
542
+ color: #2271b1;
543
+ background: #f6f7f7;
544
+ }
545
+ .foogallery-items-view-switch a:hover {
546
+ background: #f0f0f1;
547
+ border-color: #0a4b78;
548
+ color: #0a4b78;
549
+ }
550
+ .foogallery-items-view-switch a:focus {
551
+ box-shadow: none;
552
+ outline: none;
553
+ }
554
+
555
+ .foogallery-items-view-switch a:first-child:not(:last-child) {
556
+ border-top-right-radius: 0;
557
+ border-bottom-right-radius: 0;
558
+ border-right: none;
559
+ }
560
+
561
+ .foogallery-items-view-switch a:last-child:not(:first-child) {
562
+ border-top-left-radius: 0;
563
+ border-bottom-left-radius: 0;
564
+ border-left: none;
565
+ }
566
+
567
+ .foogallery-items-view-switch a:first-child {
568
+ margin-right: 0;
569
+ }
570
+
571
+ .foogallery-items-view-switch a.current {
572
+ background: #2271b1;
573
+ border-color: #2271b1;
574
+ color: #fff;
575
+ }
576
+
577
+ .foogallery-items-view-switch a.current:hover {
578
+ background: #135e96;
579
+ border-color: #135e96;
580
+ color: #fff;
581
+ }
582
+
583
+ .foogallery-items-view-switch a+a {
584
+ margin-left: -1px;
585
+ }
586
+
587
+ .foogallery-gallery-items-metabox-title {
588
+ float:none;
589
+ }
590
+
591
+ .foogallery_preview_container {
592
+ position: relative;
593
+ padding: 10px;
594
+ }
595
+
596
+ .foogallery-items-add {
597
+ padding:20px;
598
+ text-align: center
599
+ }
600
+ .foogallery-items-view-preview {
601
+ overflow: hidden;
602
+ }
603
+
604
+ .foogallery-items-view .button-hero .dashicons {
605
+ vertical-align: middle;
606
+ padding-right: 10px;
607
+ width: 24px;
608
+ height: 24px;
609
+ font-size: 24px;
610
+ font-weight: normal;
611
+ }
612
+
613
+ .foogallery_preview_container.loading:after {
614
+ content: '';
615
+ position: absolute;
616
+ top: 0;
617
+ left: 0;
618
+ right: 0;
619
+ bottom: 0;
620
+ background: #fff;
621
+ opacity: 0.8;
622
+ z-index: 159900;
623
+ }
624
+
625
+ .fs-submenu-item.foogallery {
626
+ font-size: 13px;
627
+ line-height: 1.2;
628
+ }
629
+
630
+ .foogallery_template_field_type-thumb_size_no_crop input.small-text+label {
631
+ margin-left: 10px;
632
+ }
633
+
634
+ .foogallery_template_field_type-thumb_size_no_crop label+input {
635
+ margin-left: 5px;
636
+ }
637
+
638
+ /* changes to the media modal */
639
+ .compat-item .compat-attachment-fields th.label label span {
640
+ text-align: left;
641
+ }
642
+
643
+ .compat-item .compat-attachment-fields td.field {
644
+ width: 100%;
645
+ margin: 0;
646
+ }
647
+
648
+ .foogallery-attachments-list {
649
+ max-height: 486px;
650
+ /*max-height: 324px;*/
651
+ /*max-height: 162px;*/
652
+ overflow: scroll;
653
+ overflow-x: hidden;
654
+ list-style: none;
655
+ border: 1px solid #ccd0d4;
656
+ padding: 10px;
657
+ }
658
+ .foogallery-attachments-list:after,
659
+ .foogallery-attachments-list-bar:after {
660
+ content: '';
661
+ display: block;
662
+ clear: both;
663
+ }
664
+
665
+ .foogallery-attachments-list-bar button.alignright {
666
+ margin-left: 5px;
667
+ }
668
+
669
+ .foogallery-custom-metabox-header {
670
+ justify-content: flex-start !important;
671
+ }
672
+
673
+ .foogallery-custom-metabox-header .foogallery-template-selector {
674
+ margin-left: 10px;
675
+ }
676
+
677
+ .foogallery-custom-metabox-header .foogallery-template-selector select {
678
+ font-size: 13px;
679
+ margin-left: 6px;
680
  }
css/admin-page-foogallery-extensions.css CHANGED
@@ -1,270 +1,270 @@
1
-
2
- .foogallery-extension-browser .extension-controls {
3
- margin-bottom: 10px;
4
- }
5
-
6
- .foogallery-extension-browser .extension-controls .subsubsub {
7
- margin:0;
8
- }
9
-
10
- .extension-reload {
11
- display: inline-block;
12
- vertical-align: middle;
13
- }
14
-
15
- .extension-reload .button {
16
- padding: 3px 5px 0 5px;
17
- line-height: 0;
18
- }
19
-
20
- .extension-reload .button.disabled span.dashicons {
21
- -webkit-animation: rotation 2s infinite linear;
22
- animation: rotation 2s infinite linear;
23
- }
24
-
25
- div.foogallery-message-success {
26
- border-left: 4px solid #7ad03a;
27
- padding: 1px 12px;
28
- background-color: #fff;
29
- -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
30
- box-shadow: 0 1px 1px 0 rgba(0,0,0,.1)
31
- }
32
-
33
- div.foogallery-message-error {
34
- border-left: 4px solid #dd3d36;
35
- background: #fff;
36
- -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
37
- box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
38
- padding: 1px 12px
39
- }
40
-
41
- .spinner {
42
- position: absolute;
43
- margin-top: 15px;
44
- }
45
-
46
- .foogallery-extension-browser {
47
- margin-top: 10px;
48
- width: 100%;
49
- position: relative;
50
- }
51
-
52
- .foogallery-extension-browser * {
53
- box-sizing: border-box;
54
- }
55
-
56
- .foogallery-extension-browser .extensions .extension {
57
- float: left;
58
- margin: 0 20px 20px 0;
59
- position: relative;
60
- width: 400px;
61
- height: 300px;
62
- border: 1px solid #DEDEDE;
63
- -webkit-box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
64
- box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
65
- -webkit-box-sizing: border-box;
66
- -moz-box-sizing: border-box;
67
- box-sizing: border-box;
68
- background: #fff;
69
- }
70
-
71
- .foogallery-extension-browser .extensions .extension h3 {
72
- position: absolute;
73
- bottom: 0;
74
- width: 100%;
75
- font-size: 15px;
76
- font-weight: bold;
77
- height: 50px;
78
- line-height: 50px;
79
- margin: 0;
80
- padding-left: 15px;
81
- -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1);
82
- box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1);
83
- overflow: hidden;
84
- white-space: nowrap;
85
- text-overflow: ellipsis;
86
- background: #000;
87
- opacity: 0.9;
88
- color:#fff;
89
- }
90
-
91
- .foogallery-extension-browser .extensions .extension h3 .new {
92
- background: #D54E21;
93
- background: rgba(213, 78, 33, 0.95);
94
- -webkit-border-radius: 3px;
95
- border-radius: 3px;
96
- padding:2px 5px;
97
- color:#fff;
98
- font-size: 10px;
99
- margin-left: 5px;
100
- margin-bottom: 3px;
101
- }
102
-
103
- .foogallery-extension-browser .extensions .extension h3 .tag {
104
- background: #888;
105
- -webkit-border-radius: 3px;
106
- border-radius: 3px;
107
- padding:2px 5px;
108
- color:#000;
109
- font-size: 9px;
110
- margin-left: 5px;
111
- vertical-align:top;
112
- }
113
-
114
- .foogallery-extension-browser .extensions .extension h3 .tag.functionality {
115
- background: #8a5cc9;
116
- }
117
-
118
- .foogallery-extension-browser .extensions .extension h3 .tag.premium {
119
- background: #080;
120
- }
121
-
122
- .foogallery-extension-browser .extensions .extension h3 .tag.lightbox {
123
- background: #ff7f00;
124
- }
125
-
126
- .foogallery-extension-browser .extensions .extension h3 .tag.template {
127
- background: #369;
128
- }
129
-
130
- .foogallery-extension-browser .extensions .extension h3 .tag.new {
131
- background: #F00;
132
- }
133
-
134
- .foogallery-extension-browser .extensions .extension .screenshot {
135
- height: 100%;
136
- position: absolute;
137
- left: 0;
138
- top: 0;
139
- width: 100%;
140
- -webkit-transform: translateZ(0);
141
- -webkit-transition: opacity .2s ease-in-out;
142
- transition: opacity .2s ease-in-out;
143
- }
144
-
145
- .foogallery-extension-browser .extensions .extension:hover .screenshot {
146
- opacity: .4;
147
- }
148
-
149
- .foogallery-extension-browser .extensions .extension .extension-actions {
150
- -webkit-transition: opacity .1s ease-in-out;
151
- transition: opacity .1s ease-in-out;
152
- position: absolute;
153
- bottom: 0;
154
- right: 0;
155
- height: 50px;
156
- padding: 9px 10px 0;
157
- }
158
-
159
- .foogallery-extension-browser .extensions .extension .extension-details {
160
- -ms-filter: "alpha(Opacity=0)";
161
- opacity: 0;
162
- position: absolute;
163
- top: 25%;
164
- right: 20%;
165
- left: 20%;
166
- background: #222;
167
- background: rgba(0, 0, 0, 0.7);
168
- color: #FFF;
169
- font-size: 15px;
170
- text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6);
171
- -webkit-font-smoothing: antialiased;
172
- font-weight: 600;
173
- padding: 15px 12px;
174
- text-align: center;
175
- -webkit-border-radius: 3px;
176
- border-radius: 3px;
177
- -webkit-transition: opacity .1s ease-in-out;
178
- transition: opacity .1s ease-in-out;
179
- }
180
-
181
- .foogallery-extension-browser .extensions .extension:hover .extension-details {
182
- -ms-filter: "alpha(Opacity=1)";
183
- opacity: 1;
184
- }
185
-
186
- .foogallery-extension-browser .extensions .extension .banner {
187
- background: #888;
188
- color: #FFF;
189
- display: block;
190
- font-size: 13px;
191
- font-weight: 400;
192
- height: 48px;
193
- line-height: 48px;
194
- padding: 0 10px 0 40px;
195
- position: absolute;
196
- top: 0;
197
- right: 0;
198
- left: 0;
199
- border-bottom: 1px solid rgba(0, 0, 0, 0.25);
200
- overflow: hidden;
201
- }
202
-
203
- .foogallery-extension-browser .extensions .extension .banner:empty {
204
- display: none;
205
- }
206
-
207
- .foogallery-extension-browser .extensions .extension .banner:before {
208
- display: inline-block;
209
- font: 400 30px/1 dashicons;
210
- top: 10px;
211
- left: 10px;
212
- position: absolute;
213
- speak: none;
214
- -webkit-font-smoothing: antialiased;
215
- }
216
-
217
- .foogallery-extension-browser .extensions .extension.activated .banner {
218
- background: #080;
219
- }
220
-
221
- .foogallery-extension-browser .extensions .extension.activated .banner:before {
222
- content: "\f147";
223
- }
224
-
225
- .foogallery-extension-browser .extensions .extension.has_error .banner {
226
- background: #800;
227
- }
228
-
229
- .foogallery-extension-browser .extensions .extension.has_error .banner:before {
230
- content: "\f158";
231
- }
232
-
233
- .foogallery-extension-browser .extensions .extension.updating .banner {
234
- background: #888;
235
- }
236
-
237
- .foogallery-extension-browser .extensions .extension.updating .banner:before {
238
- content: "\f463";
239
- -webkit-animation: rotation 2s infinite linear;
240
- animation: rotation 2s infinite linear;
241
- }
242
-
243
- .foogallery-extension-browser .extensions .extension .activate,
244
- .foogallery-extension-browser .extensions .extension .deactivate {
245
- display: none;
246
- }
247
-
248
- .foogallery-extension-browser .extensions .extension.downloaded .activate {
249
- display: block;
250
- }
251
-
252
- .foogallery-extension-browser .extensions .extension.downloaded .download {
253
- display: none;
254
- }
255
-
256
- .foogallery-extension-browser .extensions .extension.activated .activate {
257
- display: none;
258
- }
259
-
260
- .foogallery-extension-browser .extensions .extension.activated .deactivate {
261
- display: block;
262
- }
263
-
264
- .foogallery-extension-browser .extensions .extension.activated .updating {
265
- display: block;
266
- }
267
-
268
- .foogallery-extension-browser .extension-page {
269
- display: none;
270
  }
1
+
2
+ .foogallery-extension-browser .extension-controls {
3
+ margin-bottom: 10px;
4
+ }
5
+
6
+ .foogallery-extension-browser .extension-controls .subsubsub {
7
+ margin:0;
8
+ }
9
+
10
+ .extension-reload {
11
+ display: inline-block;
12
+ vertical-align: middle;
13
+ }
14
+
15
+ .extension-reload .button {
16
+ padding: 3px 5px 0 5px;
17
+ line-height: 0;
18
+ }
19
+
20
+ .extension-reload .button.disabled span.dashicons {
21
+ -webkit-animation: rotation 2s infinite linear;
22
+ animation: rotation 2s infinite linear;
23
+ }
24
+
25
+ div.foogallery-message-success {
26
+ border-left: 4px solid #7ad03a;
27
+ padding: 1px 12px;
28
+ background-color: #fff;
29
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
30
+ box-shadow: 0 1px 1px 0 rgba(0,0,0,.1)
31
+ }
32
+
33
+ div.foogallery-message-error {
34
+ border-left: 4px solid #dd3d36;
35
+ background: #fff;
36
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
37
+ box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
38
+ padding: 1px 12px
39
+ }
40
+
41
+ .spinner {
42
+ position: absolute;
43
+ margin-top: 15px;
44
+ }
45
+
46
+ .foogallery-extension-browser {
47
+ margin-top: 10px;
48
+ width: 100%;
49
+ position: relative;
50
+ }
51
+
52
+ .foogallery-extension-browser * {
53
+ box-sizing: border-box;
54
+ }
55
+
56
+ .foogallery-extension-browser .extensions .extension {
57
+ float: left;
58
+ margin: 0 20px 20px 0;
59
+ position: relative;
60
+ width: 400px;
61
+ height: 300px;
62
+ border: 1px solid #DEDEDE;
63
+ -webkit-box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
64
+ box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
65
+ -webkit-box-sizing: border-box;
66
+ -moz-box-sizing: border-box;
67
+ box-sizing: border-box;
68
+ background: #fff;
69
+ }
70
+
71
+ .foogallery-extension-browser .extensions .extension h3 {
72
+ position: absolute;
73
+ bottom: 0;
74
+ width: 100%;
75
+ font-size: 15px;
76
+ font-weight: bold;
77
+ height: 50px;
78
+ line-height: 50px;
79
+ margin: 0;
80
+ padding-left: 15px;
81
+ -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1);
82
+ box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1);
83
+ overflow: hidden;
84
+ white-space: nowrap;
85
+ text-overflow: ellipsis;
86
+ background: #000;
87
+ opacity: 0.9;
88
+ color:#fff;
89
+ }
90
+
91
+ .foogallery-extension-browser .extensions .extension h3 .new {
92
+ background: #D54E21;
93
+ background: rgba(213, 78, 33, 0.95);
94
+ -webkit-border-radius: 3px;
95
+ border-radius: 3px;
96
+ padding:2px 5px;
97
+ color:#fff;
98
+ font-size: 10px;
99
+ margin-left: 5px;
100
+ margin-bottom: 3px;
101
+ }
102
+
103
+ .foogallery-extension-browser .extensions .extension h3 .tag {
104
+ background: #888;
105
+ -webkit-border-radius: 3px;
106
+ border-radius: 3px;
107
+ padding:2px 5px;
108
+ color:#000;
109
+ font-size: 9px;
110
+ margin-left: 5px;
111
+ vertical-align:top;
112
+ }
113
+
114
+ .foogallery-extension-browser .extensions .extension h3 .tag.functionality {
115
+ background: #8a5cc9;
116
+ }
117
+
118
+ .foogallery-extension-browser .extensions .extension h3 .tag.premium {
119
+ background: #080;
120
+ }
121
+
122
+ .foogallery-extension-browser .extensions .extension h3 .tag.lightbox {
123
+ background: #ff7f00;
124
+ }
125
+
126
+ .foogallery-extension-browser .extensions .extension h3 .tag.template {
127
+ background: #369;
128
+ }
129
+
130
+ .foogallery-extension-browser .extensions .extension h3 .tag.new {
131
+ background: #F00;
132
+ }
133
+
134
+ .foogallery-extension-browser .extensions .extension .screenshot {
135
+ height: 100%;
136
+ position: absolute;
137
+ left: 0;
138
+ top: 0;
139
+ width: 100%;
140
+ -webkit-transform: translateZ(0);
141
+ -webkit-transition: opacity .2s ease-in-out;
142
+ transition: opacity .2s ease-in-out;
143
+ }
144
+
145
+ .foogallery-extension-browser .extensions .extension:hover .screenshot {
146
+ opacity: .4;
147
+ }
148
+
149
+ .foogallery-extension-browser .extensions .extension .extension-actions {
150
+ -webkit-transition: opacity .1s ease-in-out;
151
+ transition: opacity .1s ease-in-out;
152
+ position: absolute;
153
+ bottom: 0;
154
+ right: 0;
155
+ height: 50px;
156
+ padding: 9px 10px 0;
157
+ }
158
+
159
+ .foogallery-extension-browser .extensions .extension .extension-details {
160
+ -ms-filter: "alpha(Opacity=0)";
161
+ opacity: 0;
162
+ position: absolute;
163
+ top: 25%;
164
+ right: 20%;
165
+ left: 20%;
166
+ background: #222;
167
+ background: rgba(0, 0, 0, 0.7);
168
+ color: #FFF;
169
+ font-size: 15px;
170
+ text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6);
171
+ -webkit-font-smoothing: antialiased;
172
+ font-weight: 600;
173
+ padding: 15px 12px;
174
+ text-align: center;
175
+ -webkit-border-radius: 3px;
176
+ border-radius: 3px;
177
+ -webkit-transition: opacity .1s ease-in-out;
178
+ transition: opacity .1s ease-in-out;
179
+ }
180
+
181
+ .foogallery-extension-browser .extensions .extension:hover .extension-details {
182
+ -ms-filter: "alpha(Opacity=1)";
183
+ opacity: 1;
184
+ }
185
+
186
+ .foogallery-extension-browser .extensions .extension .banner {
187
+ background: #888;
188
+ color: #FFF;
189
+ display: block;
190
+ font-size: 13px;
191
+ font-weight: 400;
192
+ height: 48px;
193
+ line-height: 48px;
194
+ padding: 0 10px 0 40px;
195
+ position: absolute;
196
+ top: 0;
197
+ right: 0;
198
+ left: 0;
199
+ border-bottom: 1px solid rgba(0, 0, 0, 0.25);
200
+ overflow: hidden;
201
+ }
202
+
203
+ .foogallery-extension-browser .extensions .extension .banner:empty {
204
+ display: none;
205
+ }
206
+
207
+ .foogallery-extension-browser .extensions .extension .banner:before {
208
+ display: inline-block;
209
+ font: 400 30px/1 dashicons;
210
+ top: 10px;
211
+ left: 10px;
212
+ position: absolute;
213
+ speak: none;
214
+ -webkit-font-smoothing: antialiased;
215
+ }
216
+
217
+ .foogallery-extension-browser .extensions .extension.activated .banner {
218
+ background: #080;
219
+ }
220
+
221
+ .foogallery-extension-browser .extensions .extension.activated .banner:before {
222
+ content: "\f147";
223
+ }
224
+
225
+ .foogallery-extension-browser .extensions .extension.has_error .banner {
226
+ background: #800;
227
+ }
228
+
229
+ .foogallery-extension-browser .extensions .extension.has_error .banner:before {
230
+ content: "\f158";
231
+ }
232
+
233
+ .foogallery-extension-browser .extensions .extension.updating .banner {
234
+ background: #888;
235
+ }
236
+
237
+ .foogallery-extension-browser .extensions .extension.updating .banner:before {
238
+ content: "\f463";
239
+ -webkit-animation: rotation 2s infinite linear;
240
+ animation: rotation 2s infinite linear;
241
+ }
242
+
243
+ .foogallery-extension-browser .extensions .extension .activate,
244
+ .foogallery-extension-browser .extensions .extension .deactivate {
245
+ display: none;
246
+ }
247
+
248
+ .foogallery-extension-browser .extensions .extension.downloaded .activate {
249
+ display: block;
250
+ }
251
+
252
+ .foogallery-extension-browser .extensions .extension.downloaded .download {
253
+ display: none;
254
+ }
255
+
256
+ .foogallery-extension-browser .extensions .extension.activated .activate {
257
+ display: none;
258
+ }
259
+
260
+ .foogallery-extension-browser .extensions .extension.activated .deactivate {
261
+ display: block;
262
+ }
263
+
264
+ .foogallery-extension-browser .extensions .extension.activated .updating {
265
+ display: block;
266
+ }
267
+
268
+ .foogallery-extension-browser .extension-page {
269
+ display: none;
270
  }
css/admin-page-foogallery-help.css CHANGED
@@ -1,565 +1,565 @@
1
- .foogallery_page_foogallery-help .fs-notice {
2
- margin-right: 200px !important;
3
- }
4
-
5
-
6
- body {
7
- background-color: #646970;/*#484c50;*/
8
- }
9
- #wpcontent {
10
- padding-right: 20px;
11
- box-sizing: border-box;
12
- }
13
- @media screen and (max-width: 782px){
14
- .auto-fold #wpcontent {
15
- padding-right: 10px;
16
- }
17
- }
18
-
19
- .foogallery-admin-help,
20
- .foogallery-admin-help * {
21
- box-sizing: border-box;
22
- }
23
-
24
- .foogallery-admin-help {
25
- max-width: 1000px;
26
- margin: 24px auto;
27
- clear: both;
28
- background-color: #101517;
29
- border-radius: 20px;
30
- color: #ffffff;
31
- font-size: 14px;
32
- line-height: 1.4;
33
- }
34
-
35
- .foogallery-admin-help img {
36
- display: block;
37
- max-width: 100%;
38
- height: auto;
39
- box-sizing: border-box;
40
- margin: 0 auto;
41
- }
42
- .foogallery-admin-help p {
43
- margin: 0.8em 0;
44
- font-size: 14px;
45
- line-height: 1.4;
46
- }
47
- .foogallery-admin-help h2,
48
- .foogallery-admin-help h3,
49
- .foogallery-admin-help h4 {
50
- color: inherit;
51
- }
52
-
53
- .foogallery-admin-help a {
54
- color: #3582c4;
55
- text-decoration: none;
56
- }
57
- .foogallery-admin-help a:focus {
58
- box-shadow: none;
59
- }
60
- .foogallery-admin-help a:hover {
61
- color: #4f94d4;
62
- }
63
-
64
- .foogallery-admin-help-header {
65
- margin: 0;
66
- color: #FFFFFF;
67
- position: relative;
68
- text-align: center;
69
- padding: 20px;
70
- }
71
- .foogallery-admin-help-header > img {
72
- margin: 3em auto;
73
- }
74
-
75
- .foogallery-admin-help-tagline {
76
- margin: 0;
77
- padding: 10px;
78
- font-size: 1.5em;
79
- }
80
-
81
- .foogallery-admin-help-ribbon {
82
- position: absolute;
83
- right: -5px;
84
- top: -5px;
85
- z-index: 1;
86
- overflow: hidden;
87
- width: 75px;
88
- height: 75px;
89
- text-align: right;
90
- }
91
- .foogallery-admin-help-ribbon span {
92
- font-size: 10px;
93
- font-weight: bold;
94
- color: #2b2400;
95
- text-transform: uppercase;
96
- text-align: center;
97
- line-height: 20px;
98
- transform: rotate(45deg);
99
- width: 100px;
100
- display: block;
101
- background: #b04cff;
102
- box-shadow: 0 3px 10px -5px rgba(0, 0, 0, 1);
103
- position: absolute;
104
- top: 19px; right: -21px;
105
- }
106
- .foogallery-admin-help-ribbon span::before {
107
- content: "";
108
- position: absolute;
109
- left: 0;
110
- top: 100%;
111
- z-index: -1;
112
- border-left: 3px solid #6a00b8;
113
- border-right: 3px solid transparent;
114
- border-bottom: 3px solid transparent;
115
- border-top: 3px solid #6a00b8;
116
- }
117
- .foogallery-admin-help-ribbon span::after {
118
- content: "";
119
- position: absolute;
120
- right: 0;
121
- top: 100%;
122
- z-index: -1;
123
- border-left: 3px solid transparent;
124
- border-right: 3px solid #6a00b8;
125
- border-bottom: 3px solid transparent;
126
- border-top: 3px solid #6a00b8;
127
- }
128
-
129
- .foogallery-admin-help nav {
130
- background: #101517;/*#1d2327*/;
131
- clear: both;
132
- padding-top: 0;
133
- color: #9ca2a7;
134
- display: flex;
135
- width: 100%;
136
- max-width: 100%;
137
- justify-content: stretch;
138
- align-items: stretch;
139
- flex-wrap: nowrap;
140
- padding-left: 10px;
141
- padding-right: 10px;
142
- border-bottom: 3px solid #fff;
143
- }
144
-
145
- .foogallery-admin-help nav a {
146
- display: block;
147
- flex-grow: 1;
148
- margin-left: 0;
149
- padding: 24px 32px 18px 32px;
150
- font-size: 1.3em;
151
- line-height: 1.4;
152
- border: 3px solid transparent;
153
- border-top-left-radius: .6rem;
154
- border-top-right-radius: .6rem;
155
- background: transparent;
156
- color: inherit;
157
- text-decoration: none;
158
- font-weight: 600;
159
- box-shadow: none;
160
- text-align: center;
161
- }
162
-
163
- .foogallery-admin-help nav a.foogallery-admin-help-tab-active {
164
- background-color: #2c3338;
165
- color: #ffffff;
166
- border-color: #ffffff;
167
- border-bottom: none;
168
- border-bottom-color: #2c3338;
169
- margin-bottom: -3px;
170
- }
171
-
172
- .fgah-feature {
173
- display: block;
174
- position: relative;
175
- max-width: 100%;
176
- margin: 0;
177
- padding: 16px;
178
- font-size: 14px;
179
- background-color: #1d2327;
180
- }
181
- .fgah-feature:nth-child(odd) {
182
- background-color: #2c3338;
183
- }
184
-
185
- .fgah-feature > * {
186
- margin: 16px;
187
- }
188
- .fgah-feature > header + * {
189
- margin-top: 32px;
190
- }
191
- .fgah-feature > * + footer {
192
- margin-top: 32px;
193
- }
194
-
195
- .fgah-feature > header {
196
- text-align: left;
197
- }
198
-
199
- .fgah-feature > header > h3 {
200
- font-size: 1.5em;
201
- margin: 0;
202
- padding: 0;
203
- font-weight: 600;
204
- }
205
- .fgah-feature > header > h3 + p {
206
- margin-top: 24px;
207
- }
208
-
209
- .fgah-feature > footer {
210
- text-align: center;
211
- padding: 0;
212
- }
213
-
214
- .fgah-feature > footer > small {
215
- display: block;
216
- margin: 16px 0;
217
- color: #c3c4c7;
218
- }
219
-
220
- .fgah-feature > footer > *:last-child {
221
- margin-bottom: 0;
222
- }
223
-
224
- .fgah-feature > div {
225
- display: flex;
226
- flex-direction: row;
227
- justify-content: center;
228
- align-items: flex-start;
229
- max-width: 100%;
230
- }
231
- .fgah-feature-right > div {
232
- flex-direction: row-reverse;
233
- }
234
- .fgah-feature > div > * {
235
- padding: 0;
236
- margin: 0;
237
- width: 33.33%;
238
- }
239
- .fgah-feature > div > figure {
240
- width: 66.66%;
241
- text-align: center;
242
- padding-right: 32px;
243
- }
244
- .fgah-feature-right > div > figure {
245
- padding-right: 0;
246
- padding-left: 32px;
247
- }
248
-
249
- .fgah-feature > div > ol {
250
-
251
- }
252
- .fgah-feature > div > ol > li {
253
- list-style-type: decimal;
254
- margin: 0 2em;
255
- padding: 0;
256
- }
257
-
258
- .fgah-feature > div > dl {
259
-
260
- }
261
- .fgah-feature > div > dl > dt {
262
- font-size: large;
263
- margin: 0 0 16px 0;
264
- font-weight: 600;
265
- }
266
- .fgah-feature > div > dl > dt > code {
267
- background-color: transparent;
268
- font-size: inherit;
269
- padding: 0;
270
- margin: 0;
271
- }
272
- .fgah-feature > div > dl > dd {
273
- font-size: inherit;
274
- margin: 16px 0;
275
- }
276
- .fgah-feature > div > dl > dd + dt {
277
- margin: 32px 0 16px 0;
278
- }
279
-
280
- .fgah-feature-pro {
281
- counter-increment: number-counter;
282
- }
283
-
284
- .fgah-feature-pro > div > dl > dd > p > a {
285
- text-decoration: underline;
286
- }
287
-
288
- .fgah-feature-pro > div > dl > dt::before {
289
- content: counters(number-counter, ".") " ";
290
- line-height: 30px;
291
- display: inline-block;
292
- min-width: 20px;
293
- margin: 0 8px 0 0;
294
- padding: 0 5px;
295
- text-align: center;
296
- vertical-align: 1px;
297
- color: #fff;
298
- border-radius: 3px;
299
- background: #4098D7;
300
- background: linear-gradient(45deg, #6638b8 0%, #4098D7 100%);
301
- }
302
-
303
- span.fgah-plan-prostarter {
304
- color: #4098D7;
305
- font-weight: bold;
306
- }
307
-
308
- .fgah-feature-pro.fgah-feature-plan-pro > div > dl > dt::before {
309
- background: #2CA03D;
310
- background: linear-gradient(45deg, #6638b8 0%, #2CA03D 100%);
311
- }
312
-
313
- span.fgah-plan-pro {
314
- color: #2CA03D;
315
- font-weight: bold;
316
- }
317
-
318
- .fgah-feature-pro.fgah-feature-plan-commerce > div > dl > dt::before {
319
- background: #B0459D;
320
- background: linear-gradient(45deg, #6638b8 0%, #B0459D 100%);
321
- }
322
-
323
- span.fgah-plan-commerce {
324
- color: #B0459D;
325
- font-weight: bold;
326
- }
327
-
328
- .fgah-feature-sub-title {
329
- margin-bottom: 16px;
330
- }
331
-
332
- .fgah-feature-sub-title h4 {
333
- margin: 0px 0px 5px 0;
334
- }
335
-
336
- .fgah-feature-sub-title span {
337
- background: #6d6d6d;
338
- color: #191a1f;
339
- padding: 1px 6px;
340
- border-radius: 3px;
341
- margin-right: 3px;
342
- font-weight: 500;
343
- }
344
-
345
- .fgah-feature-sub-title span.fgah-plan-prostarter {
346
- background: #3397C1;
347
- }
348
-
349
- .fgah-feature-sub-title span.fgah-plan-pro {
350
- background: #2CA03D;
351
- }
352
-
353
- .fgah-feature-sub-title span.fgah-plan-commerce {
354
- background: #B0459D;
355
- }
356
-
357
- .fgah-help-list {
358
- list-style-type: none;
359
- }
360
- .fgah-help-list li {
361
- list-style-type: none;
362
- margin: 0 0 16px 0;
363
- padding: 0;
364
- }
365
- .fgah-help-list li:last-child {
366
- margin-bottom: 0;
367
- }
368
- .fgah-help-list li::before {
369
- content: "\003F";
370
- display: inline-block;
371
- background-color: #1897ff;
372
- color: #FFFFFF;
373
- border-radius: 50%;
374
- line-height: 1;
375
- width: 1em;
376
- height: 1em;
377
- padding: 0.14em;
378
- text-align: center;
379
- margin-right: 0.4em;
380
- border: solid 2px #FFFFFF;
381
- float: left;
382
- }
383
-
384
- .fgah-demo {
385
- display: block;
386
- position: relative;
387
- max-width: 100%;
388
- margin: 0;
389
- padding: 16px;
390
- font-size: 14px;
391
- background-color: #2c3338;
392
- }
393
- .fgah-demo > header {
394
- text-align: left;
395
- margin: 16px;
396
- }
397
- .fgah-demo > header + * {
398
- margin-top: 32px;
399
- }
400
- .fgah-demo > header > h3 {
401
- font-size: 1.5em;
402
- margin: 0;
403
- padding: 0;
404
- font-weight: 600;
405
- }
406
- .fgah-demo > header > h3 + p {
407
- margin-top: 24px;
408
- }
409
- .fgah-demo > div.foogallery {
410
- margin-bottom: 15px;
411
- }
412
-
413
- .foogallery-admin-help-button {
414
- position: relative;
415
- background-color: #7d4fff;
416
- color: #ffffff !important;
417
- padding: 10px 20px;
418
- font-size: 1em;
419
- border-radius: 3px;
420
- text-decoration: none;
421
- font-weight: 400;
422
- display: inline-block;
423
- text-align: center;
424
- line-height: 1.2;
425
- border: none;
426
- box-shadow: none;
427
- outline: none;
428
- cursor: pointer;
429
- transition: background-color .1s ease-in-out;
430
- }
431
-
432
- .foogallery-admin-help-button-active {
433
- background-color: #1897ff;
434
- }
435
-
436
- .foogallery-admin-help-button-cta {
437
- position: relative;
438
- background-color: #7d4fff;
439
- color: #ffffff !important;
440
- padding: 12px 36px;
441
- font-size: 1.3em;
442
- border-radius: 5px;
443
- text-decoration: none;
444
- font-weight: 600;
445
- display: inline-block;
446
- min-width: 250px;
447
- text-align: center;
448
- line-height: 1.4;
449
- border: none;
450
- box-shadow: none;
451
- outline: none;
452
- cursor: pointer;
453
- transition: background-color .1s ease-in-out;
454
- }
455
-
456
- .foogallery-admin-help-button-cta:hover,
457
- .foogallery-admin-help-button-cta:focus {
458
- background-color: #5234a7;
459
- }
460
-
461
- .foogallery-admin-help-button-cta.foogallery-admin-help-loading {
462
- position: relative;
463
- cursor: wait;
464
- }
465
-
466
- .foogallery-admin-help-button-cta .progress {
467
- border-radius: 5px;
468
- width: 0;
469
- background: #1897ff;
470
- opacity: 0;
471
- transition: all 0.3s ease;
472
- position: absolute;
473
- left: 0;
474
- top: 0;
475
- right: 0;
476
- bottom: 0;
477
- }
478
- .foogallery-admin-help-button-cta.foogallery-admin-help-loading .progress {
479
- opacity: 1;
480
- animation: progress-anim 5s ease 0s;
481
- animation-fill-mode: both;
482
- }
483
-
484
- @keyframes progress-anim {
485
- 0% {
486
- width: 0%;
487
- }
488
- 5% {
489
- width: 0%;
490
- }
491
- 10% {
492
- width: 15%;
493
- }
494
- 30% {
495
- width: 40%;
496
- }
497
- 50% {
498
- width: 55%;
499
- }
500
- 80% {
501
- width: 70%;
502
- }
503
- 90% {
504
- width: 80%;
505
- }
506
- 100% {
507
- width: 95%;
508
- }
509
- }
510
-
511
- .foogallery-admin-help-footer {
512
- margin: 0;
513
- color: #ffffff;
514
- text-align: center;
515
- padding: 20px;
516
- font-size: 1.3em;
517
- }
518
-
519
- .foogallery-admin-help-column .foogallery-admin-help-button-cta {
520
- min-width: auto;
521
- padding: 12px 24px;
522
- }
523
-
524
-
525
- @media screen and (max-width: 782px){
526
- .foogallery-admin-help nav {
527
- flex-wrap: wrap;
528
- }
529
- .foogallery-admin-help nav a {
530
- padding: 24px 24px 18px 24px;
531
- width: 50%;
532
- }
533
- }
534
-
535
- @media screen and (max-width: 600px){
536
- .fgah-feature > div,
537
- .fgah-feature-right > div {
538
- flex-direction: column;
539
- }
540
- .fgah-feature > div > *,
541
- .fgah-feature > div > figure {
542
- width: 100%;
543
- }
544
- .fgah-feature > div > figure + * {
545
- margin-top: 32px;
546
- }
547
- .fgah-feature > div > figure,
548
- .fgah-feature-right > div > figure {
549
- padding-right: 0;
550
- padding-left: 0;
551
- }
552
- }
553
-
554
- @media screen and (max-width: 400px){
555
- .foogallery-admin-help-button-cta {
556
- min-width: 150px;
557
- }
558
- }
559
-
560
-
561
- @media (hover: hover){
562
- .foogallery-admin-help a:hover {
563
- color: #0097de;
564
- }
565
  }
1
+ .foogallery_page_foogallery-help .fs-notice {
2
+ margin-right: 200px !important;
3
+ }
4
+
5
+
6
+ body {
7
+ background-color: #646970;/*#484c50;*/
8
+ }
9
+ #wpcontent {
10
+ padding-right: 20px;
11
+ box-sizing: border-box;
12
+ }
13
+ @media screen and (max-width: 782px){
14
+ .auto-fold #wpcontent {
15
+ padding-right: 10px;
16
+ }
17
+ }
18
+
19
+ .foogallery-admin-help,
20
+ .foogallery-admin-help * {
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ .foogallery-admin-help {
25
+ max-width: 1000px;
26
+ margin: 24px auto;
27
+ clear: both;
28
+ background-color: #101517;
29
+ border-radius: 20px;
30
+ color: #ffffff;
31
+ font-size: 14px;
32
+ line-height: 1.4;
33
+ }
34
+
35
+ .foogallery-admin-help img {
36
+ display: block;
37
+ max-width: 100%;
38
+ height: auto;
39
+ box-sizing: border-box;
40
+ margin: 0 auto;
41
+ }
42
+ .foogallery-admin-help p {
43
+ margin: 0.8em 0;
44
+ font-size: 14px;
45
+ line-height: 1.4;
46
+ }
47
+ .foogallery-admin-help h2,
48
+ .foogallery-admin-help h3,
49
+ .foogallery-admin-help h4 {
50
+ color: inherit;
51
+ }
52
+
53
+ .foogallery-admin-help a {
54
+ color: #3582c4;
55
+ text-decoration: none;
56
+ }
57
+ .foogallery-admin-help a:focus {
58
+ box-shadow: none;
59
+ }
60
+ .foogallery-admin-help a:hover {
61
+ color: #4f94d4;
62
+ }
63
+
64
+ .foogallery-admin-help-header {
65
+ margin: 0;
66
+ color: #FFFFFF;
67
+ position: relative;
68
+ text-align: center;
69
+ padding: 20px;
70
+ }
71
+ .foogallery-admin-help-header > img {
72
+ margin: 3em auto;
73
+ }
74
+
75
+ .foogallery-admin-help-tagline {
76
+ margin: 0;
77
+ padding: 10px;
78
+ font-size: 1.5em;
79
+ }
80
+
81
+ .foogallery-admin-help-ribbon {
82
+ position: absolute;
83
+ right: -5px;
84
+ top: -5px;
85
+ z-index: 1;
86
+ overflow: hidden;
87
+ width: 75px;
88
+ height: 75px;
89
+ text-align: right;
90
+ }
91
+ .foogallery-admin-help-ribbon span {
92
+ font-size: 10px;
93
+ font-weight: bold;
94
+ color: #2b2400;
95
+ text-transform: uppercase;
96
+ text-align: center;
97
+ line-height: 20px;
98
+ transform: rotate(45deg);
99
+ width: 100px;
100
+ display: block;
101
+ background: #b04cff;
102
+ box-shadow: 0 3px 10px -5px rgba(0, 0, 0, 1);
103
+ position: absolute;
104
+ top: 19px; right: -21px;
105
+ }
106
+ .foogallery-admin-help-ribbon span::before {
107
+ content: "";
108
+ position: absolute;
109
+ left: 0;
110
+ top: 100%;
111
+ z-index: -1;
112
+ border-left: 3px solid #6a00b8;
113
+ border-right: 3px solid transparent;
114
+ border-bottom: 3px solid transparent;
115
+ border-top: 3px solid #6a00b8;
116
+ }
117
+ .foogallery-admin-help-ribbon span::after {
118
+ content: "";
119
+ position: absolute;
120
+ right: 0;
121
+ top: 100%;
122
+ z-index: -1;
123
+ border-left: 3px solid transparent;
124
+ border-right: 3px solid #6a00b8;
125
+ border-bottom: 3px solid transparent;
126
+ border-top: 3px solid #6a00b8;
127
+ }
128
+
129
+ .foogallery-admin-help nav {
130
+ background: #101517;/*#1d2327*/;
131
+ clear: both;
132
+ padding-top: 0;
133
+ color: #9ca2a7;
134
+ display: flex;
135
+ width: 100%;
136
+ max-width: 100%;
137
+ justify-content: stretch;
138
+ align-items: stretch;
139
+ flex-wrap: nowrap;
140
+ padding-left: 10px;
141
+ padding-right: 10px;
142
+ border-bottom: 3px solid #fff;
143
+ }
144
+
145
+ .foogallery-admin-help nav a {
146
+ display: block;
147
+ flex-grow: 1;
148
+ margin-left: 0;
149
+ padding: 24px 32px 18px 32px;
150
+ font-size: 1.3em;
151
+ line-height: 1.4;
152
+ border: 3px solid transparent;
153
+ border-top-left-radius: .6rem;
154
+ border-top-right-radius: .6rem;
155
+ background: transparent;
156
+ color: inherit;
157
+ text-decoration: none;
158
+ font-weight: 600;
159
+ box-shadow: none;
160
+ text-align: center;
161
+ }
162
+
163
+ .foogallery-admin-help nav a.foogallery-admin-help-tab-active {
164
+ background-color: #2c3338;
165
+ color: #ffffff;
166
+ border-color: #ffffff;
167
+ border-bottom: none;
168
+ border-bottom-color: #2c3338;
169
+ margin-bottom: -3px;
170
+ }
171
+
172
+ .fgah-feature {
173
+ display: block;
174
+ position: relative;
175
+ max-width: 100%;
176
+ margin: 0;
177
+ padding: 16px;
178
+ font-size: 14px;
179
+ background-color: #1d2327;
180
+ }
181
+ .fgah-feature:nth-child(odd) {
182
+ background-color: #2c3338;
183
+ }
184
+
185
+ .fgah-feature > * {
186
+ margin: 16px;
187
+ }
188
+ .fgah-feature > header + * {
189
+ margin-top: 32px;
190
+ }
191
+ .fgah-feature > * + footer {
192
+ margin-top: 32px;
193
+ }
194
+
195
+ .fgah-feature > header {
196
+ text-align: left;
197
+ }
198
+
199
+ .fgah-feature > header > h3 {
200
+ font-size: 1.5em;
201
+ margin: 0;
202
+ padding: 0;
203
+ font-weight: 600;
204
+ }
205
+ .fgah-feature > header > h3 + p {
206
+ margin-top: 24px;
207
+ }
208
+
209
+ .fgah-feature > footer {
210
+ text-align: center;
211
+ padding: 0;
212
+ }
213
+
214
+ .fgah-feature > footer > small {
215
+ display: block;
216
+ margin: 16px 0;
217
+ color: #c3c4c7;
218
+ }
219
+
220
+ .fgah-feature > footer > *:last-child {
221
+ margin-bottom: 0;
222
+ }
223
+
224
+ .fgah-feature > div {
225
+ display: flex;
226
+ flex-direction: row;
227
+ justify-content: center;
228
+ align-items: flex-start;
229
+ max-width: 100%;
230
+ }
231
+ .fgah-feature-right > div {
232
+ flex-direction: row-reverse;
233
+ }
234
+ .fgah-feature > div > * {
235
+ padding: 0;
236
+ margin: 0;
237
+ width: 33.33%;
238
+ }
239
+ .fgah-feature > div > figure {
240
+ width: 66.66%;
241
+ text-align: center;
242
+ padding-right: 32px;
243
+ }
244
+ .fgah-feature-right > div > figure {
245
+ padding-right: 0;
246
+ padding-left: 32px;
247
+ }
248
+
249
+ .fgah-feature > div > ol {
250
+
251
+ }
252
+ .fgah-feature > div > ol > li {
253
+ list-style-type: decimal;
254
+ margin: 0 2em;
255
+ padding: 0;
256
+ }
257
+
258
+ .fgah-feature > div > dl {
259
+
260
+ }
261
+ .fgah-feature > div > dl > dt {
262
+ font-size: large;
263
+ margin: 0 0 16px 0;
264
+ font-weight: 600;
265
+ }
266
+ .fgah-feature > div > dl > dt > code {
267
+ background-color: transparent;
268
+ font-size: inherit;
269
+ padding: 0;
270
+ margin: 0;
271
+ }
272
+ .fgah-feature > div > dl > dd {
273
+ font-size: inherit;
274
+ margin: 16px 0;
275
+ }
276
+ .fgah-feature > div > dl > dd + dt {
277
+ margin: 32px 0 16px 0;
278
+ }
279
+
280
+ .fgah-feature-pro {
281
+ counter-increment: number-counter;
282
+ }
283
+
284
+ .fgah-feature-pro > div > dl > dd > p > a {
285
+ text-decoration: underline;
286
+ }
287
+
288
+ .fgah-feature-pro > div > dl > dt::before {
289
+ content: counters(number-counter, ".") " ";
290
+ line-height: 30px;
291
+ display: inline-block;
292
+ min-width: 20px;
293
+ margin: 0 8px 0 0;
294
+ padding: 0 5px;
295
+ text-align: center;
296
+ vertical-align: 1px;
297
+ color: #fff;
298
+ border-radius: 3px;
299
+ background: #4098D7;
300
+ background: linear-gradient(45deg, #6638b8 0%, #4098D7 100%);
301
+ }
302
+
303
+ span.fgah-plan-prostarter {
304
+ color: #4098D7;
305
+ font-weight: bold;
306
+ }
307
+
308
+ .fgah-feature-pro.fgah-feature-plan-pro > div > dl > dt::before {
309
+ background: #2CA03D;
310
+ background: linear-gradient(45deg, #6638b8 0%, #2CA03D 100%);
311
+ }
312
+
313
+ span.fgah-plan-pro {
314
+ color: #2CA03D;
315
+ font-weight: bold;
316
+ }
317
+
318
+ .fgah-feature-pro.fgah-feature-plan-commerce > div > dl > dt::before {
319
+ background: #B0459D;
320
+ background: linear-gradient(45deg, #6638b8 0%, #B0459D 100%);
321
+ }
322
+
323
+ span.fgah-plan-commerce {
324
+ color: #B0459D;
325
+ font-weight: bold;
326
+ }
327
+
328
+ .fgah-feature-sub-title {
329
+ margin-bottom: 16px;
330
+ }
331
+
332
+ .fgah-feature-sub-title h4 {
333
+ margin: 0px 0px 5px 0;
334
+ }
335
+
336
+ .fgah-feature-sub-title span {
337
+ background: #6d6d6d;
338
+ color: #191a1f;
339
+ padding: 1px 6px;
340
+ border-radius: 3px;
341
+ margin-right: 3px;
342
+ font-weight: 500;
343
+ }
344
+
345
+ .fgah-feature-sub-title span.fgah-plan-prostarter {
346
+ background: #3397C1;
347
+ }
348
+
349
+ .fgah-feature-sub-title span.fgah-plan-pro {
350
+ background: #2CA03D;
351
+ }
352
+
353
+ .fgah-feature-sub-title span.fgah-plan-commerce {
354
+ background: #B0459D;
355
+ }
356
+
357
+ .fgah-help-list {
358
+ list-style-type: none;
359
+ }
360
+ .fgah-help-list li {
361
+ list-style-type: none;
362
+ margin: 0 0 16px 0;
363
+ padding: 0;
364
+ }
365
+ .fgah-help-list li:last-child {
366
+ margin-bottom: 0;
367
+ }
368
+ .fgah-help-list li::before {
369
+ content: "\003F";
370
+ display: inline-block;
371
+ background-color: #1897ff;
372
+ color: #FFFFFF;
373
+ border-radius: 50%;
374
+ line-height: 1;
375
+ width: 1em;
376
+ height: 1em;
377
+ padding: 0.14em;
378
+ text-align: center;
379
+ margin-right: 0.4em;
380
+ border: solid 2px #FFFFFF;
381
+ float: left;
382
+ }
383
+
384
+ .fgah-demo {
385
+ display: block;
386
+ position: relative;
387
+ max-width: 100%;
388
+ margin: 0;
389
+ padding: 16px;
390
+ font-size: 14px;
391
+ background-color: #2c3338;
392
+ }
393
+ .fgah-demo > header {
394
+ text-align: left;
395
+ margin: 16px;
396
+ }
397
+ .fgah-demo > header + * {
398
+ margin-top: 32px;
399
+ }
400
+ .fgah-demo > header > h3 {
401
+ font-size: 1.5em;
402
+ margin: 0;
403
+ padding: 0;
404
+ font-weight: 600;
405
+ }
406
+ .fgah-demo > header > h3 + p {
407
+ margin-top: 24px;
408
+ }
409
+ .fgah-demo > div.foogallery {
410
+ margin-bottom: 15px;
411
+ }
412
+
413
+ .foogallery-admin-help-button {
414
+ position: relative;
415
+ background-color: #7d4fff;
416
+ color: #ffffff !important;
417
+ padding: 10px 20px;
418
+ font-size: 1em;
419
+ border-radius: 3px;
420
+ text-decoration: none;
421
+ font-weight: 400;
422
+ display: inline-block;
423
+ text-align: center;
424
+ line-height: 1.2;
425
+ border: none;
426
+ box-shadow: none;
427
+ outline: none;
428
+ cursor: pointer;
429
+ transition: background-color .1s ease-in-out;
430
+ }
431
+
432
+ .foogallery-admin-help-button-active {
433
+ background-color: #1897ff;
434
+ }
435
+
436
+ .foogallery-admin-help-button-cta {
437
+ position: relative;
438
+ background-color: #7d4fff;
439
+ color: #ffffff !important;
440
+ padding: 12px 36px;
441
+ font-size: 1.3em;
442
+ border-radius: 5px;
443
+ text-decoration: none;
444
+ font-weight: 600;
445
+ display: inline-block;
446
+ min-width: 250px;
447
+ text-align: center;
448
+ line-height: 1.4;
449
+ border: none;
450
+ box-shadow: none;
451
+ outline: none;
452
+ cursor: pointer;
453
+ transition: background-color .1s ease-in-out;
454
+ }
455
+
456
+ .foogallery-admin-help-button-cta:hover,
457
+ .foogallery-admin-help-button-cta:focus {
458
+ background-color: #5234a7;
459
+ }
460
+
461
+ .foogallery-admin-help-button-cta.foogallery-admin-help-loading {
462
+ position: relative;
463
+ cursor: wait;
464
+ }
465
+
466
+ .foogallery-admin-help-button-cta .progress {
467
+ border-radius: 5px;
468
+ width: 0;
469
+ background: #1897ff;
470
+ opacity: 0;
471
+ transition: all 0.3s ease;
472
+ position: absolute;
473
+ left: 0;
474
+ top: 0;
475
+ right: 0;
476
+ bottom: 0;
477
+ }
478
+ .foogallery-admin-help-button-cta.foogallery-admin-help-loading .progress {
479
+ opacity: 1;
480
+ animation: progress-anim 5s ease 0s;
481
+ animation-fill-mode: both;
482
+ }
483
+
484
+ @keyframes progress-anim {
485
+ 0% {
486
+ width: 0%;
487
+ }
488
+ 5% {
489
+ width: 0%;
490
+ }
491
+ 10% {
492
+ width: 15%;
493
+ }
494
+ 30% {
495
+ width: 40%;
496
+ }
497
+ 50% {
498
+ width: 55%;
499
+ }
500
+ 80% {
501
+ width: 70%;
502
+ }
503
+ 90% {
504
+ width: 80%;
505
+ }
506
+ 100% {
507
+ width: 95%;
508
+ }
509
+ }
510
+
511
+ .foogallery-admin-help-footer {
512
+ margin: 0;
513
+ color: #ffffff;
514
+ text-align: center;
515
+ padding: 20px;
516
+ font-size: 1.3em;
517
+ }
518
+
519
+ .foogallery-admin-help-column .foogallery-admin-help-button-cta {
520
+ min-width: auto;
521
+ padding: 12px 24px;
522
+ }
523
+
524
+
525
+ @media screen and (max-width: 782px){
526
+ .foogallery-admin-help nav {
527
+ flex-wrap: wrap;
528
+ }
529
+ .foogallery-admin-help nav a {
530
+ padding: 24px 24px 18px 24px;
531
+ width: 50%;
532
+ }
533
+ }
534
+
535
+ @media screen and (max-width: 600px){
536
+ .fgah-feature > div,
537
+ .fgah-feature-right > div {
538
+ flex-direction: column;
539
+ }
540
+ .fgah-feature > div > *,
541
+ .fgah-feature > div > figure {
542
+ width: 100%;
543
+ }
544
+ .fgah-feature > div > figure + * {
545
+ margin-top: 32px;
546
+ }
547
+ .fgah-feature > div > figure,
548
+ .fgah-feature-right > div > figure {
549
+ padding-right: 0;
550
+ padding-left: 0;
551
+ }
552
+ }
553
+
554
+ @media screen and (max-width: 400px){
555
+ .foogallery-admin-help-button-cta {
556
+ min-width: 150px;
557
+ }
558
+ }
559
+
560
+
561
+ @media (hover: hover){
562
+ .foogallery-admin-help a:hover {
563
+ color: #0097de;
564
+ }
565
  }
css/admin-page-foogallery-settings.css CHANGED
@@ -1,45 +1,45 @@
1
- #foogallery-settings-main div+br {
2
- display: none;
3
- }
4
-
5
- #custom_assets_tab textarea {
6
- width: 500px;
7
- height: 300px;
8
- }
9
-
10
- .foogallery_settings_radioicon label {
11
- display:inline-block;
12
- margin-right:10px;
13
- border:solid 3px transparent;
14
- background:#aaa;
15
- border-radius: 3px;
16
- -moz-border-radius: 3px;
17
- -webkit-border-radius: 3px;
18
- padding:5px;
19
- line-height: 0;
20
- margin-bottom: 10px;
21
- }
22
-
23
- .foogallery_settings_radioicon input:checked + label {
24
- border:solid 3px #444;
25
- background: #888;
26
- }
27
-
28
- .foogallery_settings_radioicon label:hover {
29
- border:solid 3px #444;
30
- }
31
-
32
- .foogallery_settings_short_text {
33
- width: 5em;
34
- }
35
-
36
- .foogallery_settings_long_text {
37
- width: 50em;
38
- }
39
-
40
- tr.foogallery_settings_radio td input[type="radio"] {
41
- margin: 0.25rem 0.25rem 0.5rem 0;
42
- }
43
- tr.foogallery_settings_radio td input[type="radio"] + label {
44
- vertical-align: text-top;
45
  }
1
+ #foogallery-settings-main div+br {
2
+ display: none;
3
+ }
4
+
5
+ #custom_assets_tab textarea {
6
+ width: 500px;
7
+ height: 300px;
8
+ }
9
+
10
+ .foogallery_settings_radioicon label {
11
+ display:inline-block;
12
+ margin-right:10px;
13
+ border:solid 3px transparent;
14
+ background:#aaa;
15
+ border-radius: 3px;
16
+ -moz-border-radius: 3px;
17
+ -webkit-border-radius: 3px;
18
+ padding:5px;
19
+ line-height: 0;
20
+ margin-bottom: 10px;
21
+ }
22
+
23
+ .foogallery_settings_radioicon input:checked + label {
24
+ border:solid 3px #444;
25
+ background: #888;
26
+ }
27
+
28
+ .foogallery_settings_radioicon label:hover {
29
+ border:solid 3px #444;
30
+ }
31
+
32
+ .foogallery_settings_short_text {
33
+ width: 5em;
34
+ }
35
+
36
+ .foogallery_settings_long_text {
37
+ width: 50em;
38
+ }
39
+
40
+ tr.foogallery_settings_radio td input[type="radio"] {
41
+ margin: 0.25rem 0.25rem 0.5rem 0;
42
+ }
43
+ tr.foogallery_settings_radio td input[type="radio"] + label {
44
+ vertical-align: text-top;
45
  }
css/admin-tinymce.css CHANGED
@@ -1,115 +1,115 @@
1
- .mce-content-body div.foogallery-tinymce-view {
2
- background-color: rgba(0, 0, 0, 0.1);
3
- position: relative;
4
- margin-bottom: 16px;
5
- border: 1px solid rgba(0, 0, 0, 0);
6
- width: 99.99%;
7
- clear: both;
8
- height: 250px;
9
- text-align: center;
10
- }
11
-
12
- .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-toolbar {
13
- display: none;
14
- position: absolute;
15
- top: 0;
16
- left: 0;
17
- z-index: 100;
18
- }
19
-
20
- .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-toolbar .dashicons {
21
- margin-top: 7px;
22
- margin-left: 7px;
23
- padding: 2px;
24
- width: 30px;
25
- height: 30px;
26
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
27
- background-color: #000;
28
- background-color: rgba(0, 0, 0, 0.9);
29
- cursor: pointer;
30
- color: #FFF;
31
- font-size: 30px;
32
- }
33
-
34
- .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-toolbar .dashicons:hover {
35
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8);
36
- background-color: #000;
37
- color: #2EA2CC;
38
- }
39
-
40
- .mce-content-body div.foogallery-tinymce-view.foogallery-tinymce-selected {
41
- border-color: rgba(0, 0, 0, 0.3);
42
- }
43
-
44
- .mce-content-body div.foogallery-tinymce-view.foogallery-tinymce-selected .foogallery-tinymce-toolbar {
45
- display: block;
46
- }
47
-
48
- .mce-content-body div.foogallery-tinymce-view .foogallery-pile {
49
- position: absolute;
50
- z-index: 10;
51
- left: 50%;
52
- top: 50%;
53
- margin-left: -83px;
54
- margin-top: -95px;
55
- }
56
-
57
- /* Image styles */
58
- .mce-content-body div.foogallery-tinymce-view .foogallery-pile .foogallery-pile-inner { max-width: 100%; height: auto; vertical-align: bottom; border: 8px solid #fff;
59
- -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
60
- -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
61
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
62
- overflow: hidden;
63
- background: #CCC;
64
- font-size: 0;
65
- }
66
-
67
- /* Stacks creted by the use of generated content */
68
- .mce-content-body div.foogallery-tinymce-view .foogallery-pile:before, .foogallery-pile:after { content: ""; width: 100%; height: 100%; position: absolute; border: 8px solid #fff; left: 0;
69
- -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
70
- -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
71
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
72
- -webkit-box-sizing: border-box;
73
- -moz-box-sizing: border-box;
74
- box-sizing: border-box;
75
- }
76
- /* 1st element in stack (behind image) */
77
- .mce-content-body div.foogallery-tinymce-view .foogallery-pile:before {
78
- top: 0;
79
- z-index: -10;
80
- -webkit-transform: rotate(-3deg);
81
- -moz-transform: rotate(-3deg);
82
- transform: rotate(-3deg);
83
- }
84
- /* 2nd element in stack (behind image) */
85
- .mce-content-body div.foogallery-tinymce-view .foogallery-pile:after {
86
- top: 1px;
87
- z-index: -20;
88
- -webkit-transform: rotate(4deg);
89
- -moz-transform: rotate(4deg);
90
- transform: rotate(4deg);
91
- }
92
-
93
- .mce-content-body div.foogallery-tinymce-view .foogallery-pile-inner img {
94
- max-width: 150px;
95
- }
96
-
97
- .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-title {
98
- font-family: "Open Sans", sans-serif;
99
- font-size: 1.2em;
100
- color: #666;
101
- position: absolute;
102
- bottom: 1em;
103
- width: 100%;
104
- left: 0;
105
- }
106
-
107
- .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-count {
108
- font-family: "Open Sans", sans-serif;
109
- font-size: 0.7em;
110
- color: #888;
111
- position: absolute;
112
- bottom: 0.5em;
113
- width: 100%;
114
- left: 0;
115
  }
1
+ .mce-content-body div.foogallery-tinymce-view {
2
+ background-color: rgba(0, 0, 0, 0.1);
3
+ position: relative;
4
+ margin-bottom: 16px;
5
+ border: 1px solid rgba(0, 0, 0, 0);
6
+ width: 99.99%;
7
+ clear: both;
8
+ height: 250px;
9
+ text-align: center;
10
+ }
11
+
12
+ .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-toolbar {
13
+ display: none;
14
+ position: absolute;
15
+ top: 0;
16
+ left: 0;
17
+ z-index: 100;
18
+ }
19
+
20
+ .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-toolbar .dashicons {
21
+ margin-top: 7px;
22
+ margin-left: 7px;
23
+ padding: 2px;
24
+ width: 30px;
25
+ height: 30px;
26
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
27
+ background-color: #000;
28
+ background-color: rgba(0, 0, 0, 0.9);
29
+ cursor: pointer;
30
+ color: #FFF;
31
+ font-size: 30px;
32
+ }
33
+
34
+ .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-toolbar .dashicons:hover {
35
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8);
36
+ background-color: #000;
37
+ color: #2EA2CC;
38
+ }
39
+
40
+ .mce-content-body div.foogallery-tinymce-view.foogallery-tinymce-selected {
41
+ border-color: rgba(0, 0, 0, 0.3);
42
+ }
43
+
44
+ .mce-content-body div.foogallery-tinymce-view.foogallery-tinymce-selected .foogallery-tinymce-toolbar {
45
+ display: block;
46
+ }
47
+
48
+ .mce-content-body div.foogallery-tinymce-view .foogallery-pile {
49
+ position: absolute;
50
+ z-index: 10;
51
+ left: 50%;
52
+ top: 50%;
53
+ margin-left: -83px;
54
+ margin-top: -95px;
55
+ }
56
+
57
+ /* Image styles */
58
+ .mce-content-body div.foogallery-tinymce-view .foogallery-pile .foogallery-pile-inner { max-width: 100%; height: auto; vertical-align: bottom; border: 8px solid #fff;
59
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
60
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
61
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
62
+ overflow: hidden;
63
+ background: #CCC;
64
+ font-size: 0;
65
+ }
66
+
67
+ /* Stacks creted by the use of generated content */
68
+ .mce-content-body div.foogallery-tinymce-view .foogallery-pile:before, .foogallery-pile:after { content: ""; width: 100%; height: 100%; position: absolute; border: 8px solid #fff; left: 0;
69
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
70
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
71
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
72
+ -webkit-box-sizing: border-box;
73
+ -moz-box-sizing: border-box;
74
+ box-sizing: border-box;
75
+ }
76
+ /* 1st element in stack (behind image) */
77
+ .mce-content-body div.foogallery-tinymce-view .foogallery-pile:before {
78
+ top: 0;
79
+ z-index: -10;
80
+ -webkit-transform: rotate(-3deg);
81
+ -moz-transform: rotate(-3deg);
82
+ transform: rotate(-3deg);
83
+ }
84
+ /* 2nd element in stack (behind image) */
85
+ .mce-content-body div.foogallery-tinymce-view .foogallery-pile:after {
86
+ top: 1px;
87
+ z-index: -20;
88
+ -webkit-transform: rotate(4deg);
89
+ -moz-transform: rotate(4deg);
90
+ transform: rotate(4deg);
91
+ }
92
+
93
+ .mce-content-body div.foogallery-tinymce-view .foogallery-pile-inner img {
94
+ max-width: 150px;
95
+ }
96
+
97
+ .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-title {
98
+ font-family: "Open Sans", sans-serif;
99
+ font-size: 1.2em;
100
+ color: #666;
101
+ position: absolute;
102
+ bottom: 1em;
103
+ width: 100%;
104
+ left: 0;
105
+ }
106
+
107
+ .mce-content-body div.foogallery-tinymce-view .foogallery-tinymce-count {
108
+ font-family: "Open Sans", sans-serif;
109
+ font-size: 0.7em;
110
+ color: #888;
111
+ position: absolute;
112
+ bottom: 0.5em;
113
+ width: 100%;
114
+ left: 0;
115
  }
css/foogallery-foovideo-overrides.css CHANGED
@@ -1,96 +1,96 @@
1
- /* sticky video icon states */
2
- .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-thumb,
3
- .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-thumb,
4
- .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-thumb,
5
- .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-thumb,
6
- .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-thumb {
7
- transform: translateY(0) translateX(0) translateZ(0);
8
- }
9
- .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-item-inner:hover .fg-thumb,
10
- .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-item-inner:hover .fg-thumb,
11
- .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-item-inner:hover .fg-thumb,
12
- .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-item-inner:hover .fg-thumb,
13
- .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-item-inner:hover .fg-thumb {
14
- transform: translateY(0) translateX(0) translateZ(0);
15
- }
16
- .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-thumb:before,
17
- .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-thumb:before,
18
- .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-thumb:before,
19
- .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-thumb:before,
20
- .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-thumb:before {
21
- content: '';
22
- display: block;
23
- top: 0;
24
- left: 0;
25
- bottom: 0;
26
- right: 0;
27
- visibility: visible;
28
- opacity: 1;
29
- background-color: rgba(0,0,0,0);
30
- transition-timing-function: ease;
31
- transition-duration: 300ms;
32
- transition-property: opacity,visibility,background-color;
33
- transform: translateY(0) translateX(0) translateZ(0);
34
- z-index: 8;
35
- }
36
- .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-item-inner:hover .fg-thumb:before,
37
- .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-item-inner:hover .fg-thumb:before,
38
- .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-item-inner:hover .fg-thumb:before,
39
- .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-item-inner:hover .fg-thumb:before,
40
- .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-item-inner:hover .fg-thumb:before {
41
- background-color: rgba(0,0,0,0.5);
42
- }
43
- .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-caption-inner:before,
44
- .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-caption-inner:before,
45
- .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-caption-inner:before,
46
- .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-caption-inner:before,
47
- .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-caption-inner:before {
48
- display: none;
49
- }
50
-
51
- /* The icons */
52
- .foogallery-container.video-icon-default .fg-video .fg-thumb:before,
53
- .foogallery-container.video-icon-1 .fg-video .fg-thumb:before,
54
- .foogallery-container.video-icon-2 .fg-video .fg-thumb:before,
55
- .foogallery-container.video-icon-3 .fg-video .fg-thumb:before,
56
- .foogallery-container.video-icon-4 .fg-video .fg-thumb:before,
57
- .foogallery-container.video-icon-default .fg-video .fg-caption-inner:before,
58
- .foogallery-container.video-icon-1 .fg-video .fg-caption-inner:before,
59
- .foogallery-container.video-icon-2 .fg-video .fg-caption-inner:before,
60
- .foogallery-container.video-icon-3 .fg-video .fg-caption-inner:before,
61
- .foogallery-container.video-icon-4 .fg-video .fg-caption-inner:before {
62
- background-size: 60px 60px;
63
- }
64
- .foogallery-container.video-icon-default .fg-video .fg-caption-inner:before,
65
- .foogallery-container.video-icon-1 .fg-video .fg-caption-inner:before,
66
- .foogallery-container.video-icon-2 .fg-video .fg-caption-inner:before,
67
- .foogallery-container.video-icon-3 .fg-video .fg-caption-inner:before,
68
- .foogallery-container.video-icon-4 .fg-video .fg-caption-inner:before {
69
- width: 60px;
70
- height: 60px;
71
- }
72
-
73
- .foogallery-container.video-icon-default .fg-video .fg-thumb:before,
74
- .foogallery-container.video-icon-default .fg-video .fg-caption-inner:before {
75
- background-image: url('data:image/png;base64,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')!important;
76
- }
77
-
78
- .foogallery-container.video-icon-1 .fg-video .fg-thumb:before,
79
- .foogallery-container.video-icon-1 .fg-video .fg-caption-inner:before {
80
- background-image: url('data:image/png;base64,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')!important;
81
- }
82
-
83
- .foogallery-container.video-icon-2 .fg-video .fg-thumb:before,
84
- .foogallery-container.video-icon-2 .fg-video .fg-caption-inner:before {
85
- background-image: url('data:image/png;base64,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')!important;
86
- }
87
-
88
- .foogallery-container.video-icon-3 .fg-video .fg-thumb:before,
89
- .foogallery-container.video-icon-3 .fg-video .fg-caption-inner:before {
90
- background-image: url('data:image/png;base64,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')!important;
91
- }
92
-
93
- .foogallery-container.video-icon-4 .fg-video .fg-thumb:before,
94
- .foogallery-container.video-icon-4 .fg-video .fg-caption-inner:before {
95
- background-image: url(data:image/png;base64,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)!important;
96
  }
1
+ /* sticky video icon states */
2
+ .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-thumb,
3
+ .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-thumb,
4
+ .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-thumb,
5
+ .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-thumb,
6
+ .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-thumb {
7
+ transform: translateY(0) translateX(0) translateZ(0);
8
+ }
9
+ .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-item-inner:hover .fg-thumb,
10
+ .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-item-inner:hover .fg-thumb,
11
+ .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-item-inner:hover .fg-thumb,
12
+ .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-item-inner:hover .fg-thumb,
13
+ .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-item-inner:hover .fg-thumb {
14
+ transform: translateY(0) translateX(0) translateZ(0);
15
+ }
16
+ .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-thumb:before,
17
+ .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-thumb:before,
18
+ .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-thumb:before,
19
+ .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-thumb:before,
20
+ .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-thumb:before {
21
+ content: '';
22
+ display: block;
23
+ top: 0;
24
+ left: 0;
25
+ bottom: 0;
26
+ right: 0;
27
+ visibility: visible;
28
+ opacity: 1;
29
+ background-color: rgba(0,0,0,0);
30
+ transition-timing-function: ease;
31
+ transition-duration: 300ms;
32
+ transition-property: opacity,visibility,background-color;
33
+ transform: translateY(0) translateX(0) translateZ(0);
34
+ z-index: 8;
35
+ }
36
+ .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-item-inner:hover .fg-thumb:before,
37
+ .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-item-inner:hover .fg-thumb:before,
38
+ .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-item-inner:hover .fg-thumb:before,
39
+ .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-item-inner:hover .fg-thumb:before,
40
+ .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-item-inner:hover .fg-thumb:before {
41
+ background-color: rgba(0,0,0,0.5);
42
+ }
43
+ .video-icon-sticky.foogallery-container.video-icon-default .fg-video .fg-caption-inner:before,
44
+ .video-icon-sticky.foogallery-container.video-icon-1 .fg-video .fg-caption-inner:before,
45
+ .video-icon-sticky.foogallery-container.video-icon-2 .fg-video .fg-caption-inner:before,
46
+ .video-icon-sticky.foogallery-container.video-icon-3 .fg-video .fg-caption-inner:before,
47
+ .video-icon-sticky.foogallery-container.video-icon-4 .fg-video .fg-caption-inner:before {
48
+ display: none;
49
+ }
50
+
51
+ /* The icons */
52
+ .foogallery-container.video-icon-default .fg-video .fg-thumb:before,
53
+ .foogallery-container.video-icon-1 .fg-video .fg-thumb:before,
54
+ .foogallery-container.video-icon-2 .fg-video .fg-thumb:before,
55
+ .foogallery-container.video-icon-3 .fg-video .fg-thumb:before,
56
+ .foogallery-container.video-icon-4 .fg-video .fg-thumb:before,
57
+ .foogallery-container.video-icon-default .fg-video .fg-caption-inner:before,
58
+ .foogallery-container.video-icon-1 .fg-video .fg-caption-inner:before,
59
+ .foogallery-container.video-icon-2 .fg-video .fg-caption-inner:before,
60
+ .foogallery-container.video-icon-3 .fg-video .fg-caption-inner:before,
61
+ .foogallery-container.video-icon-4 .fg-video .fg-caption-inner:before {
62
+ background-size: 60px 60px;
63
+ }
64
+ .foogallery-container.video-icon-default .fg-video .fg-caption-inner:before,
65
+ .foogallery-container.video-icon-1 .fg-video .fg-caption-inner:before,
66
+ .foogallery-container.video-icon-2 .fg-video .fg-caption-inner:before,
67
+ .foogallery-container.video-icon-3 .fg-video .fg-caption-inner:before,
68
+ .foogallery-container.video-icon-4 .fg-video .fg-caption-inner:before {
69
+ width: 60px;
70
+ height: 60px;
71
+ }
72
+
73
+ .foogallery-container.video-icon-default .fg-video .fg-thumb:before,
74
+ .foogallery-container.video-icon-default .fg-video .fg-caption-inner:before {
75
+ background-image: url('data:image/png;base64,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')!important;
76
+ }
77
+
78
+ .foogallery-container.video-icon-1 .fg-video .fg-thumb:before,
79
+ .foogallery-container.video-icon-1 .fg-video .fg-caption-inner:before {
80
+ background-image: url('data:image/png;base64,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')!important;
81
+ }
82
+
83
+ .foogallery-container.video-icon-2 .fg-video .fg-thumb:before,
84
+ .foogallery-container.video-icon-2 .fg-video .fg-caption-inner:before {
85
+ background-image: url('data:image/png;base64,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')!important;
86
+ }
87
+
88
+ .foogallery-container.video-icon-3 .fg-video .fg-thumb:before,
89
+ .foogallery-container.video-icon-3 .fg-video .fg-caption-inner:before {
90
+ background-image: url('data:image/png;base64,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')!important;
91
+ }
92
+
93
+ .foogallery-container.video-icon-4 .fg-video .fg-thumb:before,
94
+ .foogallery-container.video-icon-4 .fg-video .fg-caption-inner:before {
95
+ background-image: url(data:image/png;base64,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)!important;
96
  }
css/foogallery.admin.datasources.css CHANGED
@@ -1,123 +1,123 @@
1
- .foogallery-datasource-modal-title {
2
- position: absolute;
3
- top: 0;
4
- left: 0;
5
- right: 0;
6
- height: 50px;
7
- z-index: 200;
8
- padding-left: 16px;
9
- border-bottom: 1px solid #ddd;
10
- }
11
-
12
- .foogallery-datasource-modal-sidebar {
13
- position: absolute;
14
- top: 51px;
15
- left: 0;
16
- bottom: 0;
17
- width: 200px;
18
- z-index: 75;
19
- background: #f3f3f3;
20
- overflow: auto;
21
- -webkit-overflow-scrolling: touch;
22
- }
23
-
24
- .foogallery-datasource-modal-sidebar-menu {
25
- position: absolute;
26
- top: 0;
27
- left: 0;
28
- right: 0;
29
- bottom: 0;
30
- margin: 0;
31
- padding: 10px 0;
32
- background: #f3f3f3;
33
- border-right-width: 1px;
34
- border-right-style: solid;
35
- border-right-color: #ccc;
36
- -webkit-user-select: none;
37
- -moz-user-select: none;
38
- -ms-user-select: none;
39
- user-select: none
40
- }
41
-
42
- .foogallery-datasource-modal-sidebar-menu>a {
43
- display: block;
44
- position: relative;
45
- padding: 8px 20px;
46
- margin: 0;
47
- line-height: 18px;
48
- font-size: 14px;
49
- color: #0073aa;
50
- text-decoration: none;
51
- }
52
-
53
- .foogallery-datasource-modal-sidebar-menu>a:hover {
54
- color: #0073aa;
55
- background: rgba(0,0,0,.04)
56
- }
57
-
58
- .foogallery-datasource-modal-sidebar-menu .active,
59
- .foogallery-datasource-modal-sidebar-menu .active:hover{
60
- color: #23282d;
61
- font-weight: 600;
62
- background: rgba(0,0,0,.04);
63
- }
64
-
65
- .foogallery-datasource-modal-sidebar-menu>a,
66
- .foogallery-datasource-modal-sidebar-menu>a:active,
67
- .foogallery-datasource-modal-sidebar-menu>a:hover,
68
- .foogallery-datasource-modal-sidebar-menu>a:focus {
69
- box-shadow: none;
70
- outline: 0
71
- }
72
-
73
- .media-menu .separator {
74
- height: 0;
75
- margin: 12px 20px;
76
- padding: 0;
77
- border-top: 1px solid #ddd
78
- }
79
-
80
- .foogallery-datasource-modal-container {
81
- position: absolute;
82
- top: 51px;
83
- padding: 16px;
84
- left: 200px;
85
- right: 0;
86
- bottom: 60px;
87
- overflow: auto;
88
- outline: 0;
89
- }
90
-
91
- .foogallery-datasource-modal-toolbar {
92
- position: absolute;
93
- left: 200px;
94
- right: 0;
95
- z-index: 100;
96
- bottom: 60px;
97
- height: auto;
98
- border-top: 1px solid #ddd;
99
- }
100
-
101
- .foogallery-datasource-modal-toolbar-inner {
102
- position: absolute;
103
- top: 0;
104
- left: 0;
105
- right: 0;
106
- bottom: -45px;
107
- height: 60px;
108
- padding: 0 16px;
109
- overflow: hidden;
110
- }
111
-
112
- .foogallery-datasource-modal-container-inner .spinner {
113
- float: left;
114
- }
115
-
116
- .foogallery-datasource-modal-insert {
117
- float: right;
118
- }
119
-
120
- .foogallery-datasource-item {
121
- padding: 20px;
122
- text-align: center;
123
  }
1
+ .foogallery-datasource-modal-title {
2
+ position: absolute;
3
+ top: 0;
4
+ left: 0;
5
+ right: 0;
6
+ height: 50px;
7
+ z-index: 200;
8
+ padding-left: 16px;
9
+ border-bottom: 1px solid #ddd;
10
+ }
11
+
12
+ .foogallery-datasource-modal-sidebar {
13
+ position: absolute;
14
+ top: 51px;
15
+ left: 0;
16
+ bottom: 0;
17
+ width: 200px;
18
+ z-index: 75;
19
+ background: #f3f3f3;
20
+ overflow: auto;
21
+ -webkit-overflow-scrolling: touch;
22
+ }
23
+
24
+ .foogallery-datasource-modal-sidebar-menu {
25
+ position: absolute;
26
+ top: 0;
27
+ left: 0;
28
+ right: 0;
29
+ bottom: 0;
30
+ margin: 0;
31
+ padding: 10px 0;
32
+ background: #f3f3f3;
33
+ border-right-width: 1px;
34
+ border-right-style: solid;
35
+ border-right-color: #ccc;
36
+ -webkit-user-select: none;
37
+ -moz-user-select: none;
38
+ -ms-user-select: none;
39
+ user-select: none
40
+ }
41
+
42
+ .foogallery-datasource-modal-sidebar-menu>a {
43
+ display: block;
44
+ position: relative;
45
+ padding: 8px 20px;
46
+ margin: 0;
47
+ line-height: 18px;
48
+ font-size: 14px;
49
+ color: #0073aa;
50
+ text-decoration: none;
51
+ }
52
+
53
+ .foogallery-datasource-modal-sidebar-menu>a:hover {
54
+ color: #0073aa;
55
+ background: rgba(0,0,0,.04)
56
+ }
57
+
58
+ .foogallery-datasource-modal-sidebar-menu .active,
59
+ .foogallery-datasource-modal-sidebar-menu .active:hover{
60
+ color: #23282d;
61
+ font-weight: 600;
62
+ background: rgba(0,0,0,.04);
63
+ }
64
+
65
+ .foogallery-datasource-modal-sidebar-menu>a,
66
+ .foogallery-datasource-modal-sidebar-menu>a:active,
67
+ .foogallery-datasource-modal-sidebar-menu>a:hover,
68
+ .foogallery-datasource-modal-sidebar-menu>a:focus {
69
+ box-shadow: none;
70
+ outline: 0
71
+ }
72
+
73
+ .media-menu .separator {
74
+ height: 0;
75
+ margin: 12px 20px;
76
+ padding: 0;
77
+ border-top: 1px solid #ddd
78
+ }
79
+
80
+ .foogallery-datasource-modal-container {
81
+ position: absolute;
82
+ top: 51px;
83
+ padding: 16px;
84
+ left: 200px;
85
+ right: 0;
86
+ bottom: 60px;
87
+ overflow: auto;
88
+ outline: 0;
89
+ }
90
+
91
+ .foogallery-datasource-modal-toolbar {
92
+ position: absolute;
93
+ left: 200px;
94
+ right: 0;
95
+ z-index: 100;
96
+ bottom: 60px;
97
+ height: auto;
98
+ border-top: 1px solid #ddd;
99
+ }
100
+
101
+ .foogallery-datasource-modal-toolbar-inner {
102
+ position: absolute;
103
+ top: 0;
104
+ left: 0;
105
+ right: 0;
106
+ bottom: -45px;
107
+ height: 60px;
108
+ padding: 0 16px;
109
+ overflow: hidden;
110
+ }
111
+
112
+ .foogallery-datasource-modal-container-inner .spinner {
113
+ float: left;
114
+ }
115
+
116
+ .foogallery-datasource-modal-insert {
117
+ float: right;
118
+ }
119
+
120
+ .foogallery-datasource-item {
121
+ padding: 20px;
122
+ text-align: center;
123
  }
extensions/albums/admin/class-columns.php CHANGED
@@ -1,73 +1,73 @@
1
- <?php
2
- /*
3
- * FooGallery Admin Columns class
4
- */
5
-
6
- if ( ! class_exists( 'FooGallery_Albums_Admin_Columns' ) ) {
7
-
8
- class FooGallery_Albums_Admin_Columns {
9
-
10
- private $include_clipboard_script = false;
11
-
12
- function __construct() {
13
- add_filter( 'manage_edit-' . FOOGALLERY_CPT_ALBUM . '_columns', array( $this, 'album_custom_columns' ) );
14
- add_action( 'manage_posts_custom_column', array( $this, 'album_custom_column_content' ) );
15
- add_action( 'admin_footer', array( $this, 'include_clipboard_script' ) );
16
- }
17
-
18
- function album_custom_columns( $columns ) {
19
- $columns[FOOGALLERY_CPT_ALBUM . '_template'] = __( 'Template', 'foogallery' );
20
- $columns[FOOGALLERY_CPT_ALBUM . '_galleries'] = __( 'Galleries', 'foogallery' );
21
- $columns[FOOGALLERY_CPT_ALBUM . '_shortcode'] = __( 'Shortcode', 'foogallery' );
22
-
23
- return $columns;
24
- }
25
-
26
- function album_custom_column_content( $column ) {
27
- global $post;
28
-
29
- switch ( $column ) {
30
- case FOOGALLERY_CPT_ALBUM . '_template':
31
- $album = FooGalleryAlbum::get( $post );
32
- $template = $album->album_template_details();
33
- if ( false !== $template ) {
34
- echo $template['name'];
35
- }
36
- break;
37
- case FOOGALLERY_CPT_ALBUM . '_galleries':
38
- $album = FooGalleryAlbum::get( $post );
39
- echo $album->gallery_count();
40
- break;
41
- case FOOGALLERY_CPT_ALBUM . '_shortcode':
42
- $album = FooGalleryAlbum::get( $post );
43
- $shortcode = $album->shortcode();
44
- echo '<input type="text" readonly="readonly" size="' . strlen( $shortcode ) . '" value="' . esc_attr( $shortcode ) . '" class="foogallery-shortcode" />';
45
- $this->include_clipboard_script = true;
46
- break;
47
- }
48
- }
49
-
50
- function include_clipboard_script() {
51
- if ( $this->include_clipboard_script ) { ?>
52
- <script>
53
- jQuery(function($) {
54
- $('.foogallery-shortcode').on('click', function () {
55
- try {
56
- //select the contents
57
- this.select();
58
- //copy the selection
59
- document.execCommand('copy');
60
- //show the copied message
61
- $('.foogallery-shortcode-message').remove();
62
- $(this).after('<p class="foogallery-shortcode-message"><?php _e( 'Shortcode copied to clipboard :)','foogallery' ); ?></p>');
63
- } catch(err) {
64
- console.log('Oops, unable to copy!');
65
- }
66
- });
67
- });
68
- </script>
69
- <?php
70
- }
71
- }
72
- }
73
- }
1
+ <?php
2
+ /*
3
+ * FooGallery Admin Columns class
4
+ */
5
+
6
+ if ( ! class_exists( 'FooGallery_Albums_Admin_Columns' ) ) {
7
+
8
+ class FooGallery_Albums_Admin_Columns {
9
+
10
+ private $include_clipboard_script = false;
11
+
12
+ function __construct() {
13
+ add_filter( 'manage_edit-' . FOOGALLERY_CPT_ALBUM . '_columns', array( $this, 'album_custom_columns' ) );
14
+ add_action( 'manage_posts_custom_column', array( $this, 'album_custom_column_content' ) );
15
+ add_action( 'admin_footer', array( $this, 'include_clipboard_script' ) );
16
+ }
17
+
18
+ function album_custom_columns( $columns ) {
19
+ $columns[FOOGALLERY_CPT_ALBUM . '_template'] = __( 'Template', 'foogallery' );
20
+ $columns[FOOGALLERY_CPT_ALBUM . '_galleries'] = __( 'Galleries', 'foogallery' );
21
+ $columns[FOOGALLERY_CPT_ALBUM . '_shortcode'] = __( 'Shortcode', 'foogallery' );
22
+
23
+ return $columns;
24
+ }
25
+
26
+ function album_custom_column_content( $column ) {
27
+ global $post;
28
+
29
+ switch ( $column ) {
30
+ case FOOGALLERY_CPT_ALBUM . '_template':
31
+ $album = FooGalleryAlbum::get( $post );
32
+ $template = $album->album_template_details();
33
+ if ( false !== $template ) {
34
+ echo $template['name'];
35
+ }
36
+ break;
37
+ case FOOGALLERY_CPT_ALBUM . '_galleries':
38
+ $album = FooGalleryAlbum::get( $post );
39
+ echo $album->gallery_count();
40
+ break;
41
+ case FOOGALLERY_CPT_ALBUM . '_shortcode':
42
+ $album = FooGalleryAlbum::get( $post );
43
+ $shortcode = $album->shortcode();
44
+ echo '<input type="text" readonly="readonly" size="' . strlen( $shortcode ) . '" value="' . esc_attr( $shortcode ) . '" class="foogallery-shortcode" />';
45
+ $this->include_clipboard_script = true;
46
+ break;
47
+ }
48
+ }
49
+
50
+ function include_clipboard_script() {
51
+ if ( $this->include_clipboard_script ) { ?>
52
+ <script>
53
+ jQuery(function($) {
54
+ $('.foogallery-shortcode').on('click', function () {
55
+ try {
56
+ //select the contents
57
+ this.select();
58
+ //copy the selection
59
+ document.execCommand('copy');
60
+ //show the copied message
61
+ $('.foogallery-shortcode-message').remove();
62
+ $(this).after('<p class="foogallery-shortcode-message"><?php _e( 'Shortcode copied to clipboard :)','foogallery' ); ?></p>');
63
+ } catch(err) {
64
+ console.log('Oops, unable to copy!');
65
+ }
66
+ });
67
+ });
68
+ </script>
69
+ <?php
70
+ }
71
+ }
72
+ }
73
+ }
extensions/albums/admin/class-metaboxes.php CHANGED
@@ -1,577 +1,577 @@
1
- <?php
2
-
3
- /*
4
- * FooGallery Admin Album MetaBoxes class
5
- */
6
-
7
- if ( ! class_exists( 'FooGallery_Admin_Album_MetaBoxes' ) ) {
8
-
9
- class FooGallery_Admin_Album_MetaBoxes {
10
-
11
- private $_album;
12
-
13
- public function __construct() {
14
- //add our foogallery metaboxes
15
- add_action( 'add_meta_boxes_' . FOOGALLERY_CPT_ALBUM, array( $this, 'add_meta_boxes' ) );
16
-
17
- //save extra post data for a gallery
18
- add_action( 'save_post', array( $this, 'save_album' ) );
19
-
20
- //add scripts used by metaboxes
21
- add_action( 'admin_enqueue_scripts', array( $this, 'include_required_scripts' ) );
22
-
23
- // Ajax call for getting gallery details
24
- add_action( 'wp_ajax_foogallery_get_gallery_details', array( $this, 'ajax_get_gallery_details' ) );
25
-
26
- // Ajax call for saving gallery details
27
- add_action( 'wp_ajax_foogallery_save_gallery_details', array( $this, 'ajax_save_gallery_details' ) );
28
-
29
- // Save details for the gallery
30
- add_action( 'foogallery_album_gallery_details_save', array( $this, 'gallery_details_save' ), 10, 3 );
31
- }
32
-
33
- public function add_meta_boxes( $post ) {
34
- add_meta_box(
35
- 'foogalleryalbum_galleries',
36
- __( 'Galleries - click a gallery to add it to your album.', 'foogallery' ),
37
- array( $this, 'render_gallery_metabox' ),
38
- FOOGALLERY_CPT_ALBUM,
39
- 'normal',
40
- 'high'
41
- );
42
-
43
- add_meta_box(
44
- 'foogalleryalbum_settings',
45
- __( 'Settings', 'foogallery' ),
46
- array( $this, 'render_settings_metabox' ),
47
- FOOGALLERY_CPT_ALBUM,
48
- 'normal',
49
- 'high'
50
- );
51
-
52
- add_meta_box(
53
- 'foogalleryalbum_customcss',
54
- __( 'Custom CSS', 'foogallery' ),
55
- array( $this, 'render_customcss_metabox' ),
56
- FOOGALLERY_CPT_ALBUM,
57
- 'normal',
58
- 'low'
59
- );
60
-
61
- add_meta_box(
62
- 'foogalleryalbum_shortcode',
63
- __( 'Album Shortcode', 'foogallery' ),
64
- array( $this, 'render_shortcode_metabox' ),
65
- FOOGALLERY_CPT_ALBUM,
66
- 'side',
67
- 'default'
68
- );
69
-
70
- add_meta_box(
71
- 'foogalleryalbum_sorting',
72
- __( 'Album Sorting', 'foogallery' ),
73
- array( $this, 'render_sorting_metabox' ),
74
- FOOGALLERY_CPT_ALBUM,
75
- 'side',
76
- 'default'
77
- );
78
- }
79
-
80
- public function get_album( $post ) {
81
- if ( ! isset( $this->_album ) ) {
82
- $this->_album = FooGalleryAlbum::get( $post );
83
- }
84
-
85
- return $this->_album;
86
- }
87
-
88
- public function save_album( $post_id ) {
89
- // check autosave
90
- if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
91
- return $post_id;
92
- }
93
-
94
- // verify nonce
95
- if ( array_key_exists( FOOGALLERY_CPT_ALBUM . '_nonce', $_POST ) &&
96
- wp_verify_nonce( $_POST[ FOOGALLERY_CPT_ALBUM . '_nonce' ], plugin_basename( FOOGALLERY_FILE ) )
97
- ) {
98
- //if we get here, we are dealing with the Album custom post type
99
-
100
- $galleries = apply_filters( 'foogallery_save_album_galleries', explode( ',', $_POST[ FOOGALLERY_ALBUM_META_GALLERIES ] ) );
101
- update_post_meta( $post_id, FOOGALLERY_ALBUM_META_GALLERIES, $galleries );
102
-
103
- if ( !empty( $_POST[FOOGALLERY_ALBUM_META_TEMPLATE] ) ) {
104
- update_post_meta( $post_id, FOOGALLERY_ALBUM_META_TEMPLATE, $_POST[FOOGALLERY_ALBUM_META_TEMPLATE] );
105
- }
106
-
107
- if ( isset( $_POST[FOOGALLERY_ALBUM_META_SORT] ) ) {
108
- update_post_meta( $post_id, FOOGALLERY_ALBUM_META_SORT, $_POST[FOOGALLERY_ALBUM_META_SORT] );
109
- }
110
-
111
- $settings = isset($_POST['_foogallery_settings']) ?
112
- $_POST['_foogallery_settings'] : array();
113
-
114
- $settings = apply_filters( 'foogallery_save_album_settings', $settings );
115
-
116
- if ( !empty( $settings ) ) {
117
- update_post_meta( $post_id, FOOGALLERY_META_SETTINGS_OLD, $settings );
118
- } else {
119
- delete_post_meta( $post_id, FOOGALLERY_META_SETTINGS_OLD );
120
- }
121
-
122
- $custom_css = foogallery_sanitize_html( isset( $_POST[FOOGALLERY_META_CUSTOM_CSS] ) ?
123
- $_POST[FOOGALLERY_META_CUSTOM_CSS] : '' );
124
-
125
- if ( empty( $custom_css ) ) {
126
- delete_post_meta( $post_id, FOOGALLERY_META_CUSTOM_CSS );
127
- } else {
128
- update_post_meta( $post_id, FOOGALLERY_META_CUSTOM_CSS, $custom_css );
129
- }
130
-
131
- // update usage for each of the galleries.
132
- foreach ( $galleries as $gallery_id ) {
133
- add_post_meta( $post_id, FOOGALLERY_META_POST_USAGE, $gallery_id, false );
134
- }
135
-
136
- do_action( 'foogallery_after_save_album', $post_id, $_POST );
137
- }
138
- }
139
-
140
- public function get_ordered_galleries( $album ) {
141
- //exclude the galleries already added to the album
142
- $excluded_galleries = $album->gallery_ids;
143
-
144
- //allow more galleries to be excluded
145
- $excluded_galleries = apply_filters( 'foogallery_album_exlcuded_galleries', $excluded_galleries, $album );
146
-
147
- //get all other galleries
148
- $galleries = foogallery_get_all_galleries( $excluded_galleries );
149
-
150
- $album_galleries = $album->galleries();
151
-
152
- return array_merge( $album_galleries, $galleries );
153
- }
154
-
155
- public function render_gallery_metabox( $post ) {
156
- $album = $this->get_album( $post );
157
-
158
- $galleries = $this->get_ordered_galleries( $album );
159
-
160
- wp_enqueue_style( 'media-views' );
161
-
162
- ?>
163
- <input type="hidden" name="<?php echo FOOGALLERY_CPT_ALBUM; ?>_nonce"
164
- id="<?php echo FOOGALLERY_CPT_ALBUM; ?>_nonce"
165
- value="<?php echo wp_create_nonce( plugin_basename( FOOGALLERY_FILE ) ); ?>"/>
166
- <input type="hidden" name='foogallery_album_galleries' id="foogallery_album_galleries"
167
- value="<?php echo $album->gallery_id_csv(); ?>"/>
168
- <div>
169
- <?php if ( !$album->has_galleries() ) { ?>
170
- <div class="foogallery-album-error">
171
- <?php _e( 'There are no galleries selected for your album yet! Click any gallery to add it to your album.', 'foogallery' ); ?>
172
- </div>
173
- <?php } ?>
174
-
175
- <div class="foogallery-album-info-modal media-modal">
176
- <div class="media-modal-content">
177
- <div class="media-frame mode-select">
178
- <div class="media-frame-title">
179
- <h1><?php _e('Edit Gallery Details', 'foogallery'); ?></h1>
180
- <span class="spinner is-active"></span>
181
- </div>
182
- <div class="modal-content">
183
- <?php wp_nonce_field( 'foogallery_album_gallery_details', 'foogallery_album_gallery_details_nonce', false ); ?>
184
- <div class="gallery-details" data-loading="<?php _e( 'Loading details for ', 'foogallery' ); ?>"></div>
185
- </div>
186
- </div>
187
- <div class="media-frame-toolbar">
188
- <div class="media-toolbar">
189
- <div class="media-toolbar-secondary"></div>
190
- <div class="media-toolbar-primary search-form">
191
- <button type="button" class="button media-button button-primary button-large media-button-select gallery-details-save"><?php _e('Save Gallery Details', 'foogallery'); ?></button>
192
- <span class="spinner"></span>
193
- </div>
194
- </div>
195
- </div>
196
- </div>
197
- <button type="button" class="button-link media-modal-close">
198
- <span class="media-modal-icon"><span class="screen-reader-text"><?php _e('Close media panel', 'foogallery'); ?></span></span>
199
- </button>
200
-
201
- </div>
202
- <div class="foogallery-album-info-modal-backdrop media-modal-backdrop"></div>
203
-
204
-
205
- <ul class="foogallery-album-gallery-list">
206
- <?php
207
- foreach ( $galleries as $gallery ) {
208
- $img_src = foogallery_find_featured_attachment_thumbnail_src( $gallery );
209
- $images = $gallery->image_count();
210
- $selected = $album->includes_gallery( $gallery->ID ) ? ' selected' : '';
211
- $title = $gallery->safe_name();
212
- ?>
213
- <li class="foogallery-pile">
214
- <div class="foogallery-gallery-select landscape<?php echo $selected; ?>" data-foogallery-id="<?php echo $gallery->ID; ?>">
215
- <div style="display: table;">
216
- <div style="display: table-cell; vertical-align: middle; text-align: center;">
217
- <img src="<?php echo $img_src; ?>"/>
218
- <h3>
219
- <?php echo esc_html( $title ); ?>
220
- <span><?php echo $images; ?></span>
221
- </h3>
222
- </div>
223
- </div>
224
- <a class="info foogallery-album-info" href="#"
225
- title="<?php _e( 'Edit Album Info', 'foogallery' ); ?>"
226
- data-gallery-title="<?php echo $title; ?>"
227
- data-gallery-id="<?php echo $gallery->ID; ?>"><span class="dashicons dashicons-info"></span>
228
- </a>
229
- </div>
230
- </li>
231
- <?php } ?>
232
- </ul>
233
- <div style="clear: both;"></div>
234
- </div>
235
- <?php
236
- }
237
-
238
- public function render_shortcode_metabox( $post ) {
239
- $album = $this->get_album( $post );
240
- $shortcode = $album->shortcode();
241
- ?>
242
- <p class="foogallery-shortcode">
243
- <input type="text" id="foogallery_copy_shortcode" size="<?php echo strlen( $shortcode ); ?>" value="<?php echo htmlspecialchars( $shortcode ); ?>" readonly="readonly" />
244
- </p>
245
- <p>
246
- <?php _e( 'Paste the above shortcode into a post or page to show the album.', 'foogallery' ); ?>
247
- </p>
248
- <script>
249
- jQuery(function($) {
250
- var shortcodeInput = document.querySelector('#foogallery_copy_shortcode');
251
- shortcodeInput.addEventListener('click', function () {
252
- try {
253
- // select the contents
254
- shortcodeInput.select();
255
- //copy the selection
256
- document.execCommand('copy');
257
- //show the copied message
258
- $('.foogallery-shortcode-message').remove();
259
- $(shortcodeInput).after('<p class="foogallery-shortcode-message"><?php _e( 'Shortcode copied to clipboard :)','foogallery' ); ?></p>');
260
- } catch(err) {
261
- console.log('Oops, unable to copy!');
262
- }
263
- }, false);
264
- });
265
- </script>
266
- <?php
267
- }
268
-
269
- public function render_sorting_metabox( $post ) {
270
- $album = $this->get_album( $post );
271
- $sorting_options = foogallery_sorting_options(); ?>
272
- <p>
273
- <?php _e('Change the way galleries are sorted within your album. By default, they are sorted in the order you see them.', 'foogallery'); ?>
274
- </p>
275
- <?php
276
- foreach ( $sorting_options as $sorting_key => $sorting_label ) { ?>
277
- <p>
278
- <input type="radio" value="<?php echo $sorting_key; ?>" <?php checked( $sorting_key === $album->sorting ); ?> id="FooGallerySettings_AlbumSort_<?php echo $sorting_key; ?>" name="<?php echo FOOGALLERY_ALBUM_META_SORT; ?>" />
279
- <label for="FooGallerySettings_AlbumSort_<?php echo $sorting_key; ?>"><?php echo $sorting_label; ?></label>
280
- </p><?php
281
- }
282
- }
283
-
284
- public function render_settings_metabox( $post ) {
285
- $album = $this->get_album( $post );
286
- $available_templates = foogallery_album_templates();
287
- $album_template = foogallery_default_album_template();
288
- if ( ! empty($album->album_template) ) {
289
- $album_template = $album->album_template;
290
- }
291
- if ( false === $album_template ) {
292
- $album_template = $available_templates[0]['slug'];
293
- }
294
- $hide_help = 'on' == foogallery_get_setting( 'hide_gallery_template_help' );
295
- ?>
296
- <table class="foogallery-album-metabox-settings">
297
- <tbody>
298
- <tr class="foogallery_template_field foogallery_template_field_selector">
299
- <th>
300
- <label for="FooGallerySettings_AlbumTemplate"><?php _e( 'Album Template', 'foogallery' ); ?></label>
301
- </th>
302
- <td>
303
- <select id="FooGallerySettings_AlbumTemplate" name="<?php echo FOOGALLERY_ALBUM_META_TEMPLATE; ?>">
304
- <?php
305
- foreach ( $available_templates as $template ) {
306
- $selected = ($album_template === $template['slug']) ? 'selected' : '';
307
- echo "<option {$selected} value=\"{$template['slug']}\">{$template['name']}</option>";
308
- }
309
- ?>
310
- </select>
311
- <br />
312
- <small><?php _e( 'The album template that will be used when the album is output to the frontend.', 'foogallery' ); ?></small>
313
- </td>
314
- </tr>
315
- <?php
316
- foreach ( $available_templates as $template ) {
317
- $field_visibility = ($album_template !== $template['slug']) ? 'style="display:none"' : '';
318
- $section = '';
319
- $fields = isset( $template['fields'] ) ? $template['fields'] : array();
320
- foreach ( $fields as $field ) {
321
- //allow for the field to be altered by extensions.
322
- $field = apply_filters( 'foogallery_alter_gallery_template_field', $field, $album );
323
-
324
- $class ="foogallery_template_field foogallery_template_field-{$template['slug']} foogallery_template_field-{$template['slug']}-{$field['id']}";
325
-
326
- if ( isset($field['section']) && $field['section'] !== $section ) {
327
- $section = $field['section'];
328
- ?>
329
- <tr class="<?php echo $class; ?>" <?php echo $field_visibility; ?>>
330
- <td colspan="2"><h4><?php echo $section; ?></h4></td>
331
- </tr>
332
- <?php }
333
- if (isset($field['type']) && 'help' == $field['type'] && $hide_help) {
334
- continue; //skip help if the 'hide help' setting is turned on
335
- }
336
- ?>
337
- <tr class="<?php echo $class; ?>" <?php echo $field_visibility; ?>>
338
- <?php if ( isset($field['type']) && 'help' == $field['type'] ) { ?>
339
- <td colspan="2">
340
- <div class="foogallery-help">
341
- <?php echo $field['desc']; ?>
342
- </div>
343
- </td>
344
- <?php } else { ?>
345
- <th>
346
- <label for="FooGallerySettings_<?php echo $template['slug'] . '_' . $field['id']; ?>"><?php echo $field['title']; ?></label>
347
- </th>
348
- <td>
349
- <?php do_action( 'foogallery_render_gallery_template_field', $field, $album, $template ); ?>
350
- </td>
351
- <?php } ?>
352
- </tr>
353
- <?php
354
- }
355
- }
356
- ?>
357
- </tbody>
358
- </table>
359
- <?php
360
- }
361
-
362
- public function render_customcss_metabox( $post ) {
363
- $album = $this->get_album( $post );
364
- $custom_css = $album->custom_css;
365
- $example = '<code>#foogallery-album-' . $post->ID . ' { }</code>';
366
- ?>
367
- <p>
368
- <?php printf( __( 'Add any custom CSS to target this specific album. For example %s', 'foogallery' ), $example ); ?>
369
- </p>
370
- <table id="table_styling" class="form-table">
371
- <tbody>
372
- <tr>
373
- <td>
374
- <textarea class="foogallery_metabox_custom_css" name="<?php echo FOOGALLERY_META_CUSTOM_CSS; ?>" type="text"><?php echo $custom_css; ?></textarea>
375
- </td>
376
- </tr>
377
- </tbody>
378
- </table>
379
- <?php
380
- }
381
-
382
- public function include_required_scripts() {
383
- if ( FOOGALLERY_CPT_ALBUM === foo_current_screen_post_type() ) {
384
- //include album selection script
385
- $url = FOOGALLERY_ALBUM_URL . 'js/admin-foogallery-album.js';
386
- wp_enqueue_script( 'admin-foogallery-album', $url, array( 'jquery', 'jquery-ui-core','jquery-ui-sortable' ), FOOGALLERY_VERSION );
387
-
388
- //include album selection css
389
- $url = FOOGALLERY_ALBUM_URL . 'css/admin-foogallery-album.css';
390
- wp_enqueue_style( 'admin-foogallery-album', $url, array(), FOOGALLERY_VERSION );
391
- $url = FOOGALLERY_URL . 'css/admin-foogallery-gallery-piles.css';
392
- wp_enqueue_style( 'admin-foogallery-gallery-piles', $url, array(), FOOGALLERY_VERSION );
393
-
394
- //spectrum needed for the colorpicker field
395
- $url = FOOGALLERY_URL . 'lib/spectrum/spectrum.js';
396
- wp_enqueue_script( 'foogallery-spectrum', $url, array('jquery'), FOOGALLERY_VERSION );
397
- $url = FOOGALLERY_URL . 'lib/spectrum/spectrum.css';
398
- wp_enqueue_style( 'foogallery-spectrum', $url, array(), FOOGALLERY_VERSION );
399
- }
400
- }
401
-
402
- public function ajax_get_gallery_details() {
403
- if ( check_admin_referer( 'foogallery_album_gallery_details' ) ) {
404
- $foogallery_id = $_POST['foogallery_id'];
405
- $gallery = FooGallery::get_by_id( $foogallery_id );
406
-
407
- if ( false !== $gallery ) {
408
- $fields = $this->get_gallery_detail_fields( $gallery ); ?>
409
- <form name="foogallery_gallery_details">
410
- <input type="hidden" name="foogallery_id" id="foogallery_id" value="<?php echo $foogallery_id; ?>" />
411
- <table class="gallery-detail-fields">
412
- <tbody>
413
- <?php foreach ( $fields as $field => $values ) {
414
- $value = get_post_meta( $gallery->ID, $field, true );
415
- $input_id = 'foogallery-gallery-detail-fields-' . $field;
416
- switch ( $values['input'] ) {
417
- case 'text':
418
- $values['html'] = '<input type="text" id="' . $input_id . '" name="' . $field . '" value="' . $value . '" />';
419
- break;
420
-
421
- case 'textarea':
422
- $values['html'] = '<textarea id="' . $input_id . '" name="' . $field . '">' . $value . '</textarea>';
423
- break;
424
-
425
- case 'select':
426
- $html = '<select id="' . $input_id . '" name="' . $field . '">';
427
-
428
- // If options array is passed
429
- if ( isset( $values['options'] ) ) {
430
- // Browse and add the options
431
- foreach ( $values['options'] as $k => $v ) {
432
- // Set the option selected or not
433
- if ( $value == $k )
434
- $selected = ' selected="selected"';
435
- else
436
- $selected = '';
437
-
438
- $html .= '<option' . $selected . ' value="' . $k . '">' . $v . '</option>';
439
- }
440
- }
441
-
442
- $html .= '</select>';
443
-
444
- // Set the html content
445
- $values['html'] = $html;
446
-
447
- break;
448
-
449
- case 'checkbox':
450
- // Set the checkbox checked or not
451
- if ( $value == 'on' )
452
- $checked = ' checked="checked"';
453
- else
454
- $checked = '';
455
-
456
- $html = '<input' . $checked . ' type="checkbox" name="' . $field . ']" id="' . $input_id . '" />';
457
-
458
- $values['html'] = $html;
459
-
460
- break;
461
-
462
- case 'radio':
463
- $html = '';
464
-
465
- if ( ! empty( $values['options'] ) ) {
466
- $i = 0;
467
-
468
- foreach ( $values['options'] as $k => $v ) {
469
- if ( $value == $k )
470
- $checked = ' checked="checked"';
471
- else
472
- $checked = '';
473
-
474
- $html .= '<input' . $checked . ' value="' . $k . '" type="radio" name="' . $field . ']" id="' . sanitize_key( $field . '_' . $i ) . '" /> <label for="' . sanitize_key( $field . '_' . $i ) . '">' . $v . '</label><br />';
475
- $i++;
476
- }
477
- }
478
-
479
- $values['html'] = $html;
480
-
481
- break;
482
- } ?>
483
- <tr class="foogallery-gallery-detail-fields-<?php echo $field; ?>">
484
- <th scope="row" class="label">
485
- <label for="foogallery-gallery-detail-fields-<?php echo $field; ?>"><?php echo $values['label']; ?></label>
486
- </th>
487
- <td>
488
- <?php echo $values['html']; ?>
489
- <?php if ( !empty( $values['help'] ) ) { ?><p class="help"><?php echo $values['help']; ?></p><?php } ?>
490
- </td>
491
- </tr>
492
- <?php } ?>
493
- </tbody>
494
- </table>
495
- </form><?php
496
- } else {
497
- echo '<h2>' . __( 'Invalid Gallery!', 'foogallery' ) . '</h2>';
498
- }
499
- }
500
- die();
501
- }
502
-
503
- public function ajax_save_gallery_details() {
504
- if ( check_admin_referer( 'foogallery_album_gallery_details' ) ) {
505
- $foogallery_id = $_POST['foogallery_id'];
506
- $gallery = FooGallery::get_by_id( $foogallery_id );
507
- if ( false !== $gallery ) {
508
- $fields = $this->get_gallery_detail_fields( $gallery );
509
-
510
- foreach ( $fields as $field => $values ) {
511
- //for every field, save some info
512
- do_action( 'foogallery_album_gallery_details_save', $field, $values, $gallery );
513
- }
514
- }
515
- }
516
- }
517
-
518
- public function gallery_details_save($field, $field_args, $gallery) {
519
- if ( 'custom_url' === $field || 'custom_target' === $field ) {
520
- $value = $_POST[$field];
521
- update_post_meta( $gallery->ID, $field, $value );
522
- }
523
- }
524
-
525
- /**
526
- * Get the fields that we want to edit for a gallery from the album management page
527
- * @param $gallery FooGallery
528
- *
529
- * @return mixed|void
530
- */
531
- public function get_gallery_detail_fields($gallery) {
532
-
533
- $target_options = apply_filters( 'foogallery_gallery_detail_fields_custom_target_options', array(
534
- 'default' => __( 'Default', 'foogallery' ),
535
- '_blank' => __( 'New tab (_blank)', 'foogallery' ),
536
- '_self' => __( 'Same tab (_self)', 'foogallery' )
537
- ) );
538
-
539
- $edit_url = get_edit_post_link( $gallery->ID );
540
-
541
- $fields = array(
542
- 'gallery_title' => array(
543
- 'label' => __( 'Gallery Title', 'foogallery' ),
544
- 'input' => 'html',
545
- 'html' => '<strong>' . $gallery->safe_name() . ' <a href="' . $edit_url . '" target="_blank">' . __( 'Edit Gallery', 'foogallery' ) . '</a></strong>',
546
- ),
547
-
548
- 'gallery_template' => array(
549
- 'label' => __( 'Gallery Template', 'foogallery' ),
550
- 'input' => 'html',
551
- 'html' => '<strong>' . $gallery->gallery_template_name() . '</strong>',
552
- ),
553
-
554
- 'gallery_media' => array(
555
- 'label' => __( 'Media', 'foogallery' ),
556
- 'input' => 'html',
557
- 'html' => '<strong>' . $gallery->image_count() . '</strong>'
558
- ),
559
-
560
- 'custom_url' => array(
561
- 'label' => __( 'Custom URL', 'foogallery' ),
562
- 'input' => 'text',
563
- 'help' => __( 'Point your gallery to a custom URL', 'foogallery' )
564
- ),
565
-
566
- 'custom_target' => array(
567
- 'label' => __( 'Custom Target', 'foogallery' ),
568
- 'input' => 'select',
569
- 'help' => __( 'Set a custom target for your gallery', 'foogallery' ),
570
- 'options' => $target_options
571
- )
572
- );
573
-
574
- return apply_filters( 'foogallery_gallery_detail_fields', $fields );
575
- }
576
- }
577
- }
1
+ <?php
2
+
3
+ /*
4
+ * FooGallery Admin Album MetaBoxes class
5
+ */
6
+
7
+ if ( ! class_exists( 'FooGallery_Admin_Album_MetaBoxes' ) ) {
8
+
9
+ class FooGallery_Admin_Album_MetaBoxes {
10
+
11
+ private $_album;
12
+
13
+ public function __construct() {
14
+ //add our foogallery metaboxes
15
+ add_action( 'add_meta_boxes_' . FOOGALLERY_CPT_ALBUM, array( $this, 'add_meta_boxes' ) );
16
+
17
+ //save extra post data for a gallery
18
+ add_action( 'save_post', array( $this, 'save_album' ) );
19
+
20
+ //add scripts used by metaboxes
21
+ add_action( 'admin_enqueue_scripts', array( $this, 'include_required_scripts' ) );
22
+
23
+ // Ajax call for getting gallery details
24
+ add_action( 'wp_ajax_foogallery_get_gallery_details', array( $this, 'ajax_get_gallery_details' ) );
25
+
26
+ // Ajax call for saving gallery details
27
+ add_action( 'wp_ajax_foogallery_save_gallery_details', array( $this, 'ajax_save_gallery_details' ) );
28
+
29
+ // Save details for the gallery
30
+ add_action( 'foogallery_album_gallery_details_save', array( $this, 'gallery_details_save' ), 10, 3 );
31
+ }
32
+
33
+ public function add_meta_boxes( $post ) {
34
+ add_meta_box(
35
+ 'foogalleryalbum_galleries',
36
+ __( 'Galleries - click a gallery to add it to your album.', 'foogallery' ),
37
+ array( $this, 'render_gallery_metabox' ),
38
+ FOOGALLERY_CPT_ALBUM,
39
+ 'normal',
40
+ 'high'
41
+ );
42
+
43
+ add_meta_box(
44
+ 'foogalleryalbum_settings',
45
+ __( 'Settings', 'foogallery' ),
46
+ array( $this, 'render_settings_metabox' ),
47
+ FOOGALLERY_CPT_ALBUM,
48
+ 'normal',
49
+ 'high'
50
+ );
51
+
52
+ add_meta_box(
53
+ 'foogalleryalbum_customcss',
54
+ __( 'Custom CSS', 'foogallery' ),
55
+ array( $this, 'render_customcss_metabox' ),
56
+ FOOGALLERY_CPT_ALBUM,
57
+ 'normal',
58
+ 'low'
59
+ );
60
+
61
+ add_meta_box(
62
+ 'foogalleryalbum_shortcode',
63
+ __( 'Album Shortcode', 'foogallery' ),
64
+ array( $this, 'render_shortcode_metabox' ),
65
+ FOOGALLERY_CPT_ALBUM,
66
+ 'side',
67
+ 'default'
68
+ );
69
+
70
+ add_meta_box(
71
+ 'foogalleryalbum_sorting',
72
+ __( 'Album Sorting', 'foogallery' ),
73
+ array( $this, 'render_sorting_metabox' ),
74
+ FOOGALLERY_CPT_ALBUM,
75
+ 'side',
76
+ 'default'
77
+ );
78
+ }
79
+
80
+ public function get_album( $post ) {
81
+ if ( ! isset( $this->_album ) ) {
82
+ $this->_album = FooGalleryAlbum::get( $post );
83
+ }
84
+
85
+ return $this->_album;
86
+ }
87
+
88
+ public function save_album( $post_id ) {
89
+ // check autosave
90
+ if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
91
+ return $post_id;
92
+ }
93
+
94
+ // verify nonce
95
+ if ( array_key_exists( FOOGALLERY_CPT_ALBUM . '_nonce', $_POST ) &&
96
+ wp_verify_nonce( $_POST[ FOOGALLERY_CPT_ALBUM . '_nonce' ], plugin_basename( FOOGALLERY_FILE ) )
97
+ ) {
98
+ //if we get here, we are dealing with the Album custom post type
99
+
100
+ $galleries = apply_filters( 'foogallery_save_album_galleries', explode( ',', $_POST[ FOOGALLERY_ALBUM_META_GALLERIES ] ) );
101
+ update_post_meta( $post_id, FOOGALLERY_ALBUM_META_GALLERIES, $galleries );
102
+
103
+ if ( !empty( $_POST[FOOGALLERY_ALBUM_META_TEMPLATE] ) ) {
104
+ update_post_meta( $post_id, FOOGALLERY_ALBUM_META_TEMPLATE, $_POST[FOOGALLERY_ALBUM_META_TEMPLATE] );
105
+ }
106
+
107
+ if ( isset( $_POST[FOOGALLERY_ALBUM_META_SORT] ) ) {
108
+ update_post_meta( $post_id, FOOGALLERY_ALBUM_META_SORT, $_POST[FOOGALLERY_ALBUM_META_SORT] );
109
+ }
110
+
111
+ $settings = isset($_POST['_foogallery_settings']) ?
112
+ $_POST['_foogallery_settings'] : array();
113
+
114
+ $settings = apply_filters( 'foogallery_save_album_settings', $settings );
115
+
116
+ if ( !empty( $settings ) ) {
117
+ update_post_meta( $post_id, FOOGALLERY_META_SETTINGS_OLD, $settings );
118
+ } else {
119
+ delete_post_meta( $post_id, FOOGALLERY_META_SETTINGS_OLD );
120
+ }
121
+
122
+ $custom_css = foogallery_sanitize_html( isset( $_POST[FOOGALLERY_META_CUSTOM_CSS] ) ?
123
+ $_POST[FOOGALLERY_META_CUSTOM_CSS] : '' );
124
+
125
+ if ( empty( $custom_css ) ) {
126
+ delete_post_meta( $post_id, FOOGALLERY_META_CUSTOM_CSS );
127
+ } else {
128
+ update_post_meta( $post_id, FOOGALLERY_META_CUSTOM_CSS, $custom_css );
129
+ }
130
+
131
+ // update usage for each of the galleries.
132
+ foreach ( $galleries as $gallery_id ) {
133
+ add_post_meta( $post_id, FOOGALLERY_META_POST_USAGE, $gallery_id, false );
134
+ }
135
+
136
+ do_action( 'foogallery_after_save_album', $post_id, $_POST );
137
+ }
138
+ }
139
+
140
+ public function get_ordered_galleries( $album ) {
141
+ //exclude the galleries already added to the album
142
+ $excluded_galleries = $album->gallery_ids;
143
+
144
+ //allow more galleries to be excluded
145
+ $excluded_galleries = apply_filters( 'foogallery_album_exlcuded_galleries', $excluded_galleries, $album );
146
+
147
+ //get all other galleries
148
+ $galleries = foogallery_get_all_galleries( $excluded_galleries );
149
+
150
+ $album_galleries = $album->galleries();
151
+
152
+ return array_merge( $album_galleries, $galleries );
153
+ }
154
+
155
+ public function render_gallery_metabox( $post ) {
156
+ $album = $this->get_album( $post );
157
+
158
+ $galleries = $this->get_ordered_galleries( $album );
159
+
160
+ wp_enqueue_style( 'media-views' );
161
+
162
+ ?>
163
+ <input type="hidden" name="<?php echo FOOGALLERY_CPT_ALBUM; ?>_nonce"
164
+ id="<?php echo FOOGALLERY_CPT_ALBUM; ?>_nonce"
165
+ value="<?php echo wp_create_nonce( plugin_basename( FOOGALLERY_FILE ) ); ?>"/>
166
+ <input type="hidden" name='foogallery_album_galleries' id="foogallery_album_galleries"
167
+ value="<?php echo $album->gallery_id_csv(); ?>"/>
168
+ <div>
169
+ <?php if ( !$album->has_galleries() ) { ?>
170
+ <div class="foogallery-album-error">
171
+ <?php _e( 'There are no galleries selected for your album yet! Click any gallery to add it to your album.', 'foogallery' ); ?>
172
+ </div>
173
+ <?php } ?>
174
+
175
+ <div class="foogallery-album-info-modal media-modal">
176
+ <div class="media-modal-content">
177
+ <div class="media-frame mode-select">
178
+ <div class="media-frame-title">
179
+ <h1><?php _e('Edit Gallery Details', 'foogallery'); ?></h1>
180
+ <span class="spinner is-active"></span>
181
+ </div>
182
+ <div class="modal-content">
183
+ <?php wp_nonce_field( 'foogallery_album_gallery_details', 'foogallery_album_gallery_details_nonce', false ); ?>
184
+ <div class="gallery-details" data-loading="<?php _e( 'Loading details for ', 'foogallery' ); ?>"></div>
185
+ </div>
186
+ </div>
187
+ <div class="media-frame-toolbar">
188
+ <div class="media-toolbar">
189
+ <div class="media-toolbar-secondary"></div>
190
+ <div class="media-toolbar-primary search-form">
191
+ <button type="button" class="button media-button button-primary button-large media-button-select gallery-details-save"><?php _e('Save Gallery Details', 'foogallery'); ?></button>
192
+ <span class="spinner"></span>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </div>
197
+ <button type="button" class="button-link media-modal-close">
198
+ <span class="media-modal-icon"><span class="screen-reader-text"><?php _e('Close media panel', 'foogallery'); ?></span></span>
199
+ </button>
200
+
201
+ </div>
202
+ <div class="foogallery-album-info-modal-backdrop media-modal-backdrop"></div>
203
+
204
+
205
+ <ul class="foogallery-album-gallery-list">
206
+ <?php
207
+ foreach ( $galleries as $gallery ) {
208
+ $img_src = foogallery_find_featured_attachment_thumbnail_src( $gallery );
209
+ $images = $gallery->image_count();
210
+ $selected = $album->includes_gallery( $gallery->ID ) ? ' selected' : '';
211
+ $title = $gallery->safe_name();
212
+ ?>
213
+ <li class="foogallery-pile">
214
+ <div class="foogallery-gallery-select landscape<?php echo $selected; ?>" data-foogallery-id="<?php echo $gallery->ID; ?>">
215
+ <div style="display: table;">
216
+ <div style="display: table-cell; vertical-align: middle; text-align: center;">
217
+ <img src="<?php echo $img_src; ?>"/>
218
+ <h3>
219
+ <?php echo esc_html( $title ); ?>
220
+ <span><?php echo $images; ?></span>
221
+ </h3>
222
+ </div>
223
+ </div>
224
+ <a class="info foogallery-album-info" href="#"
225
+ title="<?php _e( 'Edit Album Info', 'foogallery' ); ?>"
226
+ data-gallery-title="<?php echo $title; ?>"
227
+ data-gallery-id="<?php echo $gallery->ID; ?>"><span class="dashicons dashicons-info"></span>
228
+ </a>
229
+ </div>
230
+ </li>
231
+ <?php } ?>
232
+ </ul>
233
+ <div style="clear: both;"></div>
234
+ </div>
235
+ <?php
236
+ }
237
+
238
+ public function render_shortcode_metabox( $post ) {
239
+ $album = $this->get_album( $post );
240
+ $shortcode = $album->shortcode();
241
+ ?>
242
+ <p class="foogallery-shortcode">
243
+ <input type="text" id="foogallery_copy_shortcode" size="<?php echo strlen( $shortcode ); ?>" value="<?php echo htmlspecialchars( $shortcode ); ?>" readonly="readonly" />
244
+ </p>
245
+ <p>
246
+ <?php _e( 'Paste the above shortcode into a post or page to show the album.', 'foogallery' ); ?>
247
+ </p>
248
+ <script>
249
+ jQuery(function($) {
250
+ var shortcodeInput = document.querySelector('#foogallery_copy_shortcode');
251
+ shortcodeInput.addEventListener('click', function () {
252
+ try {
253
+ // select the contents
254
+ shortcodeInput.select();
255
+ //copy the selection
256
+ document.execCommand('copy');
257
+ //show the copied message
258
+ $('.foogallery-shortcode-message').remove();
259
+ $(shortcodeInput).after('<p class="foogallery-shortcode-message"><?php _e( 'Shortcode copied to clipboard :)','foogallery' ); ?></p>');
260
+ } catch(err) {
261
+ console.log('Oops, unable to copy!');
262
+ }
263
+ }, false);
264
+ });
265
+ </script>
266
+ <?php
267
+ }
268
+
269
+ public function render_sorting_metabox( $post ) {
270
+ $album = $this->get_album( $post );
271
+ $sorting_options = foogallery_sorting_options(); ?>
272
+ <p>
273
+ <?php _e('Change the way galleries are sorted within your album. By default, they are sorted in the order you see them.', 'foogallery'); ?>
274
+ </p>
275
+ <?php
276
+ foreach ( $sorting_options as $sorting_key => $sorting_label ) { ?>
277
+ <p>
278
+ <input type="radio" value="<?php echo $sorting_key; ?>" <?php checked( $sorting_key === $album->sorting ); ?> id="FooGallerySettings_AlbumSort_<?php echo $sorting_key; ?>" name="<?php echo FOOGALLERY_ALBUM_META_SORT; ?>" />
279
+ <label for="FooGallerySettings_AlbumSort_<?php echo $sorting_key; ?>"><?php echo $sorting_label; ?></label>
280
+ </p><?php
281
+ }
282
+ }
283
+
284
+ public function render_settings_metabox( $post ) {
285
+ $album = $this->get_album( $post );
286
+ $available_templates = foogallery_album_templates();
287
+ $album_template = foogallery_default_album_template();
288
+ if ( ! empty($album->album_template) ) {
289
+ $album_template = $album->album_template;
290
+ }
291
+ if ( false === $album_template ) {
292
+ $album_template = $available_templates[0]['slug'];
293
+ }
294
+ $hide_help = 'on' == foogallery_get_setting( 'hide_gallery_template_help' );
295
+ ?>
296
+ <table class="foogallery-album-metabox-settings">
297
+ <tbody>
298
+ <tr class="foogallery_template_field foogallery_template_field_selector">
299
+ <th>
300
+ <label for="FooGallerySettings_AlbumTemplate"><?php _e( 'Album Template', 'foogallery' ); ?></label>
301
+ </th>
302
+ <td>
303
+ <select id="FooGallerySettings_AlbumTemplate" name="<?php echo FOOGALLERY_ALBUM_META_TEMPLATE; ?>">
304
+ <?php
305
+ foreach ( $available_templates as $template ) {
306
+ $selected = ($album_template === $template['slug']) ? 'selected' : '';
307
+ echo "<option {$selected} value=\"{$template['slug']}\">{$template['name']}</option>";
308
+ }
309
+ ?>
310
+ </select>
311
+ <br />
312
+ <small><?php _e( 'The album template that will be used when the album is output to the frontend.', 'foogallery' ); ?></small>
313
+ </td>
314
+ </tr>
315
+ <?php
316
+ foreach ( $available_templates as $template ) {
317
+ $field_visibility = ($album_template !== $template['slug']) ? 'style="display:none"' : '';
318
+ $section = '';
319
+ $fields = isset( $template['fields'] ) ? $template['fields'] : array();
320
+ foreach ( $fields as $field ) {
321
+ //allow for the field to be altered by extensions.
322
+ $field = apply_filters( 'foogallery_alter_gallery_template_field', $field, $album );
323
+
324
+ $class ="foogallery_template_field foogallery_template_field-{$template['slug']} foogallery_template_field-{$template['slug']}-{$field['id']}";
325
+
326
+ if ( isset($field['section']) && $field['section'] !== $section ) {
327
+ $section = $field['section'];
328
+ ?>
329
+ <tr class="<?php echo $class; ?>" <?php echo $field_visibility; ?>>
330
+ <td colspan="2"><h4><?php echo $section; ?></h4></td>
331
+ </tr>
332
+ <?php }
333
+ if (isset($field['type']) && 'help' == $field['type'] && $hide_help) {
334
+ continue; //skip help if the 'hide help' setting is turned on
335
+ }
336
+ ?>
337
+ <tr class="<?php echo $class; ?>" <?php echo $field_visibility; ?>>
338
+ <?php if ( isset($field['type']) && 'help' == $field['type'] ) { ?>
339
+ <td colspan="2">
340
+ <div class="foogallery-help">
341
+ <?php echo $field['desc']; ?>
342
+ </div>
343
+ </td>
344
+ <?php } else { ?>
345
+ <th>
346
+ <label for="FooGallerySettings_<?php echo $template['slug'] . '_' . $field['id']; ?>"><?php echo $field['title']; ?></label>
347
+ </th>
348
+ <td>
349
+ <?php do_action( 'foogallery_render_gallery_template_field', $field, $album, $template ); ?>
350
+ </td>
351
+ <?php } ?>
352
+ </tr>
353
+ <?php
354
+ }
355
+ }
356
+ ?>
357
+ </tbody>
358
+ </table>
359
+ <?php
360
+ }
361
+
362
+ public function render_customcss_metabox( $post ) {
363
+ $album = $this->get_album( $post );
364
+ $custom_css = $album->custom_css;
365
+ $example = '<code>#foogallery-album-' . $post->ID . ' { }</code>';
366
+ ?>
367
+ <p>
368
+ <?php printf( __( 'Add any custom CSS to target this specific album. For example %s', 'foogallery' ), $example ); ?>
369
+ </p>
370
+ <table id="table_styling" class="form-table">
371
+ <tbody>
372
+ <tr>
373
+ <td>
374
+ <textarea class="foogallery_metabox_custom_css" name="<?php echo FOOGALLERY_META_CUSTOM_CSS; ?>" type="text"><?php echo $custom_css; ?></textarea>
375
+ </td>
376
+ </tr>
377
+ </tbody>
378
+ </table>
379
+ <?php
380
+ }
381
+
382
+ public function include_required_scripts() {
383
+ if ( FOOGALLERY_CPT_ALBUM === foo_current_screen_post_type() ) {
384
+ //include album selection script
385
+ $url = FOOGALLERY_ALBUM_URL . 'js/admin-foogallery-album.js';
386
+ wp_enqueue_script( 'admin-foogallery-album', $url, array( 'jquery', 'jquery-ui-core','jquery-ui-sortable' ), FOOGALLERY_VERSION );
387
+
388
+ //include album selection css
389
+ $url = FOOGALLERY_ALBUM_URL . 'css/admin-foogallery-album.css';
390
+ wp_enqueue_style( 'admin-foogallery-album', $url, array(), FOOGALLERY_VERSION );
391
+ $url = FOOGALLERY_URL . 'css/admin-foogallery-gallery-piles.css';
392
+ wp_enqueue_style( 'admin-foogallery-gallery-piles', $url, array(), FOOGALLERY_VERSION );
393
+
394
+ //spectrum needed for the colorpicker field
395
+ $url = FOOGALLERY_URL . 'lib/spectrum/spectrum.js';
396
+ wp_enqueue_script( 'foogallery-spectrum', $url, array('jquery'), FOOGALLERY_VERSION );
397
+ $url = FOOGALLERY_URL . 'lib/spectrum/spectrum.css';
398
+ wp_enqueue_style( 'foogallery-spectrum', $url, array(), FOOGALLERY_VERSION );
399
+ }
400
+ }
401
+
402
+ public function ajax_get_gallery_details() {
403
+ if ( check_admin_referer( 'foogallery_album_gallery_details' ) ) {
404
+ $foogallery_id = $_POST['foogallery_id'];
405
+ $gallery = FooGallery::get_by_id( $foogallery_id );
406
+
407
+ if ( false !== $gallery ) {
408
+ $fields = $this->get_gallery_detail_fields( $gallery ); ?>
409
+ <form name="foogallery_gallery_details">
410
+ <input type="hidden" name="foogallery_id" id="foogallery_id" value="<?php echo $foogallery_id; ?>" />
411
+ <table class="gallery-detail-fields">
412
+ <tbody>
413
+ <?php foreach ( $fields as $field => $values ) {
414
+ $value = get_post_meta( $gallery->ID, $field, true );
415
+ $input_id = 'foogallery-gallery-detail-fields-' . $field;
416
+ switch ( $values['input'] ) {
417
+ case 'text':
418
+ $values['html'] = '<input type="text" id="' . $input_id . '" name="' . $field . '" value="' . $value . '" />';
419
+ break;
420
+
421
+ case 'textarea':
422
+ $values['html'] = '<textarea id="' . $input_id . '" name="' . $field . '">' . $value . '</textarea>';
423
+ break;
424
+
425
+ case 'select':
426
+ $html = '<select id="' . $input_id . '" name="' . $field . '">';
427
+
428
+ // If options array is passed
429
+ if ( isset( $values['options'] ) ) {
430
+ // Browse and add the options
431
+ foreach ( $values['options'] as $k => $v ) {
432
+ // Set the option selected or not
433
+ if ( $value == $k )
434
+ $selected = ' selected="selected"';
435
+ else
436
+ $selected = '';
437
+
438
+ $html .= '<option' . $selected . ' value="' . $k . '">' . $v . '</option>';
439
+ }
440
+ }
441
+
442
+ $html .= '</select>';
443
+
444
+ // Set the html content
445
+ $values['html'] = $html;
446
+
447
+ break;
448
+
449
+ case 'checkbox':
450
+ // Set the checkbox checked or not
451
+ if ( $value == 'on' )
452
+ $checked = ' checked="checked"';
453
+ else
454
+ $checked = '';
455
+
456
+ $html = '<input' . $checked . ' type="checkbox" name="' . $field . ']" id="' . $input_id . '" />';
457
+
458
+ $values['html'] = $html;
459
+
460
+ break;
461
+
462
+ case 'radio':
463
+ $html = '';
464
+
465
+ if ( ! empty( $values['options'] ) ) {
466
+ $i = 0;
467
+
468
+ foreach ( $values['options'] as $k => $v ) {
469
+ if ( $value == $k )
470
+ $checked = ' checked="checked"';
471
+ else
472
+ $checked = '';
473
+
474
+ $html .= '<input' . $checked . ' value="' . $k . '" type="radio" name="' . $field . ']" id="' . sanitize_key( $field . '_' . $i ) . '" /> <label for="' . sanitize_key( $field . '_' . $i ) . '">' . $v . '</label><br />';
475
+ $i++;
476
+ }
477
+ }
478
+
479
+ $values['html'] = $html;
480
+
481
+ break;
482
+ } ?>
483
+ <tr class="foogallery-gallery-detail-fields-<?php echo $field; ?>">
484
+ <th scope="row" class="label">
485
+ <label for="foogallery-gallery-detail-fields-<?php echo $field; ?>"><?php echo $values['label']; ?></label>
486
+ </th>
487
+ <td>
488
+ <?php echo $values['html']; ?>
489
+ <?php if ( !empty( $values['help'] ) ) { ?><p class="help"><?php echo $values['help']; ?></p><?php } ?>
490
+ </td>
491
+ </tr>
492
+ <?php } ?>
493
+ </tbody>
494
+ </table>
495
+ </form><?php
496
+ } else {
497
+ echo '<h2>' . __( 'Invalid Gallery!', 'foogallery' ) . '</h2>';
498
+ }
499
+ }
500
+ die();
501
+ }
502
+
503
+ public function ajax_save_gallery_details() {
504
+ if ( check_admin_referer( 'foogallery_album_gallery_details' ) ) {
505
+ $foogallery_id = $_POST['foogallery_id'];
506
+ $gallery = FooGallery::get_by_id( $foogallery_id );
507
+ if ( false !== $gallery ) {
508
+ $fields = $this->get_gallery_detail_fields( $gallery );
509
+
510
+ foreach ( $fields as $field => $values ) {
511
+ //for every field, save some info
512
+ do_action( 'foogallery_album_gallery_details_save', $field, $values, $gallery );
513
+ }
514
+ }
515
+ }
516
+ }
517
+
518
+ public function gallery_details_save($field, $field_args, $gallery) {
519
+ if ( 'custom_url' === $field || 'custom_target' === $field ) {
520
+ $value = $_POST[$field];
521
+ update_post_meta( $gallery->ID, $field, $value );
522
+ }
523
+ }
524
+
525
+ /**
526
+ * Get the fields that we want to edit for a gallery from the album management page
527
+ * @param $gallery FooGallery
528
+ *
529
+ * @return mixed|void
530
+ */
531
+ public function get_gallery_detail_fields($gallery) {
532
+
533
+ $target_options = apply_filters( 'foogallery_gallery_detail_fields_custom_target_options', array(
534
+ 'default' => __( 'Default', 'foogallery' ),
535
+ '_blank' => __( 'New tab (_blank)', 'foogallery' ),
536
+ '_self' => __( 'Same tab (_self)', 'foogallery' )
537
+ ) );
538
+
539
+ $edit_url = get_edit_post_link( $gallery->ID );
540
+
541
+ $fields = array(
542
+ 'gallery_title' => array(
543
+ 'label' => __( 'Gallery Title', 'foogallery' ),
544
+ 'input' => 'html',
545
+ 'html' => '<strong>' . $gallery->safe_name() . ' <a href="' . $edit_url . '" target="_blank">' . __( 'Edit Gallery', 'foogallery' ) . '</a></strong>',
546
+ ),
547
+
548
+ 'gallery_template' => array(
549
+ 'label' => __( 'Gallery Template', 'foogallery' ),
550
+ 'input' => 'html',
551
+ 'html' => '<strong>' . $gallery->gallery_template_name() . '</strong>',
552
+ ),
553
+
554
+ 'gallery_media' => array(
555
+ 'label' => __( 'Media', 'foogallery' ),
556
+ 'input' => 'html',
557
+ 'html' => '<strong>' . $gallery->image_count() . '</strong>'
558
+ ),
559
+
560
+ 'custom_url' => array(
561
+ 'label' => __( 'Custom URL', 'foogallery' ),
562
+ 'input' => 'text',
563
+ 'help' => __( 'Point your gallery to a custom URL', 'foogallery' )
564
+ ),
565
+
566
+ 'custom_target' => array(
567
+ 'label' => __( 'Custom Target', 'foogallery' ),
568
+ 'input' => 'select',
569
+ 'help' => __( 'Set a custom target for your gallery', 'foogallery' ),
570
+ 'options' => $target_options
571
+ )
572
+ );
573
+
574
+ return apply_filters( 'foogallery_gallery_detail_fields', $fields );
575
+ }
576
+ }
577
+ }
extensions/albums/album-default.php CHANGED
@@ -1,84 +1,84 @@
1
- <?php
2
- /**
3
- * FooGallery default responsive album template
4
- */
5
- global $current_foogallery_album;
6
- global $current_foogallery_album_arguments;
7
- global $current_foogallery;
8
- $gallery = foogallery_album_get_current_gallery();
9
- $alignment = foogallery_album_template_setting( 'alignment', 'alignment-left' );
10
- $foogallery = false;
11
-
12
- if ( !empty( $gallery ) ) {
13
- $foogallery = FooGallery::get_by_slug( $gallery );
14
-
15
- //check to see if the gallery belongs to the album
16
- if ( !$current_foogallery_album->includes_gallery( $foogallery->ID ) ) {
17
- $foogallery = false;
18
- }
19
- }
20
-
21
- if ( false !== $foogallery ) {
22
- $album_url = trailingslashit( foogallery_album_remove_gallery_from_link() );
23
- $gallery_title_size = foogallery_album_template_setting('gallery_title_size', 'h2');
24
- echo '<div id="' . $current_foogallery_album->slug . '" class="foogallery-album-header">';
25
- echo '<p><a href="' . esc_url( $album_url ) . '">' . foogallery_get_setting( 'language_back_to_album_text', __( '&laquo; back to album', 'foogallery' ) ) . '</a></p>';
26
- echo '<' . $gallery_title_size . '>' . $foogallery->name . '</'. $gallery_title_size . '>';
27
- echo apply_filters('foogallery_album_default_gallery_content', '', $foogallery);
28
- echo '</div>';
29
- echo do_shortcode('[foogallery id="' . $foogallery->ID . '"]');
30
- } else {
31
- $title_bg = foogallery_album_template_setting( 'title_bg', '#ffffff' );
32
- $title_font_color = foogallery_album_template_setting( 'title_font_color', '#000000' );
33
- $args = foogallery_album_template_setting( 'thumbnail_dimensions', array() );
34
- if ( !empty( $title_bg ) || !empty( $title_font_color ) ) {
35
- echo '<style type="text/css">';
36
- if ( !empty( $title_bg ) ) {
37
- echo '.foogallery-album-gallery-list .foogallery-pile h3 { background: ' . $title_bg . ' !important; }';
38
- }
39
- if ( !empty( $title_font_color ) ) {
40
- echo '.foogallery-album-gallery-list .foogallery-pile h3 { color: ' . $title_font_color . ' !important; }';
41
- }
42
- echo '</style>';
43
- }
44
- ?>
45
- <div id="foogallery-album-<?php echo $current_foogallery_album->ID; ?>">
46
- <ul class="foogallery-album-gallery-list <?php echo $alignment; ?>">
47
- <?php
48
- foreach ( $current_foogallery_album->galleries() as $gallery ) {
49
- $current_foogallery = $gallery;
50
- if (!empty($gallery->has_items())) {
51
- $attachment = $gallery->featured_attachment();
52
-
53
- if ( false === $attachment ) continue;
54
-
55
- $img_html = $attachment->html_img( $args );
56
- $images = $gallery->image_count();
57
- $gallery_link = foogallery_album_build_gallery_link( $current_foogallery_album, $gallery );
58
- $gallery_link_target = foogallery_album_build_gallery_link_target( $current_foogallery_album, $gallery );
59
- ?>
60
- <li>
61
- <div class="foogallery-pile">
62
- <div class="foogallery-pile-inner">
63
- <a href="<?php echo esc_url( $gallery_link ); ?>" target="<?php echo $gallery_link_target; ?>">
64
- <?php echo $img_html; ?>
65
- <?php
66
-
67
- $title = empty( $gallery->name ) ?
68
- sprintf( __( '%s #%s', 'foogallery' ), foogallery_plugin_name(), $gallery->ID ) :
69
- $gallery->name;
70
-
71
- ?>
72
- <h3><?php echo $title; ?>
73
- <span><?php echo $images; ?></span>
74
- </h3>
75
- </a>
76
- </div>
77
- </div>
78
- </li>
79
- <?php } ?>
80
- <?php } ?>
81
- </ul>
82
- <div style="clear: both;"></div>
83
- </div>
84
- <?php }
1
+ <?php
2
+ /**
3
+ * FooGallery default responsive album template
4
+ */
5
+ global $current_foogallery_album;
6
+ global $current_foogallery_album_arguments;
7
+ global $current_foogallery;
8
+ $gallery = foogallery_album_get_current_gallery();
9
+ $alignment = foogallery_album_template_setting( 'alignment', 'alignment-left' );
10
+ $foogallery = false;
11
+
12
+ if ( !empty( $gallery ) ) {
13
+ $foogallery = FooGallery::get_by_slug( $gallery );
14
+
15
+ //check to see if the gallery belongs to the album
16
+ if ( !$current_foogallery_album->includes_gallery( $foogallery->ID ) ) {
17
+ $foogallery = false;
18
+ }
19
+ }
20
+
21
+ if ( false !== $foogallery ) {
22
+ $album_url = trailingslashit( foogallery_album_remove_gallery_from_link() );
23
+ $gallery_title_size = foogallery_album_template_setting('gallery_title_size', 'h2');
24
+ echo '<div id="' . $current_foogallery_album->slug . '" class="foogallery-album-header">';
25
+ echo '<p><a href="' . esc_url( $album_url ) . '">' . foogallery_get_setting( 'language_back_to_album_text', __( '&laquo; back to album', 'foogallery' ) ) . '</a></p>';
26
+ echo '<' . $gallery_title_size . '>' . $foogallery->name . '</'. $gallery_title_size . '>';
27
+ echo apply_filters('foogallery_album_default_gallery_content', '', $foogallery);
28
+ echo '</div>';
29
+ echo do_shortcode('[foogallery id="' . $foogallery->ID . '"]');
30
+ } else {
31
+ $title_bg = foogallery_album_template_setting( 'title_bg', '#ffffff' );
32
+ $title_font_color = foogallery_album_template_setting( 'title_font_color', '#000000' );
33
+ $args = foogallery_album_template_setting( 'thumbnail_dimensions', array() );
34
+ if ( !empty( $title_bg ) || !empty( $title_font_color ) ) {
35
+ echo '<style type="text/css">';
36
+ if ( !empty( $title_bg ) ) {
37
+ echo '.foogallery-album-gallery-list .foogallery-pile h3 { background: ' . $title_bg . ' !important; }';
38
+ }
39
+ if ( !empty( $title_font_color ) ) {
40
+ echo '.foogallery-album-gallery-list .foogallery-pile h3 { color: ' . $title_font_color . ' !important; }';
41
+ }
42
+ echo '</style>';
43
+ }
44
+ ?>
45
+ <div id="foogallery-album-<?php echo $current_foogallery_album->ID; ?>">
46
+ <ul class="foogallery-album-gallery-list <?php echo $alignment; ?>">
47
+ <?php
48
+ foreach ( $current_foogallery_album->galleries() as $gallery ) {
49
+ $current_foogallery = $gallery;
50
+ if (!empty($gallery->has_items())) {
51
+ $attachment = $gallery->featured_attachment();
52
+
53
+ if ( false === $attachment ) continue;
54
+
55
+ $img_html = $attachment->html_img( $args );
56
+ $images = $gallery->image_count();
57
+ $gallery_link = foogallery_album_build_gallery_link( $current_foogallery_album, $gallery );
58
+ $gallery_link_target = foogallery_album_build_gallery_link_target( $current_foogallery_album, $gallery );
59
+ ?>
60
+ <li>
61
+ <div class="foogallery-pile">
62
+ <div class="foogallery-pile-inner">
63
+ <a href="<?php echo esc_url( $gallery_link ); ?>" target="<?php echo $gallery_link_target; ?>">
64
+ <?php echo $img_html; ?>
65
+ <?php
66
+
67
+ $title = empty( $gallery->name ) ?
68
+ sprintf( __( '%s #%s', 'foogallery' ), foogallery_plugin_name(), $gallery->ID ) :
69
+ $gallery->name;
70
+
71
+ ?>
72
+ <h3><?php echo $title; ?>
73
+ <span><?php echo $images; ?></span>
74
+ </h3>
75
+ </a>
76
+ </div>
77
+ </div>
78
+ </li>
79
+ <?php } ?>
80
+ <?php } ?>
81
+ </ul>
82
+ <div style="clear: both;"></div>
83
+ </div>
84
+ <?php }
extensions/albums/album-stack.php CHANGED
@@ -1,86 +1,86 @@
1
- <?php
2
- /**
3
- * FooGallery All-In-One Stack Album template
4
- */
5
- global $current_foogallery_album;
6
- global $current_foogallery_album_arguments;
7
- global $current_foogallery;
8
-
9
-
10
- $args = foogallery_album_template_setting( 'thumbnail_dimensions', array() );
11
- $args['crop'] = true;
12
- $lightbox = foogallery_album_template_setting( 'lightbox', 'unknown' );
13
- if ( $lightbox === 'foogallery' ) {
14
- $lightbox = 'unknown';
15
- }
16
- $random_angle = foogallery_album_template_setting( 'random_angle', 'false' );
17
- $gutter = foogallery_album_template_setting( 'gutter', '40' );
18
- $pile_angles = foogallery_album_template_setting( 'pile_angles', '2' );
19
-
20
- $data_options = array(
21
- 'itemWidth' => intval( $args['width'] ),
22
- 'itemHeight' => intval( $args['height'] ),
23
- 'gutter' => intval( $gutter ),
24
- 'angleStep' => intval( $pile_angles ),
25
- 'randomAngle' => 'true' === $random_angle
26
- );
27
-
28
- $data_options = foogallery_json_encode( $data_options );
29
-
30
- if ( !function_exists( 'foogallery_album_all_in_one_stack_render_gallery_attachment2' ) ) {
31
- function foogallery_album_all_in_one_stack_render_gallery_attachment2( $gallery, $attachment, $args ) {
32
- echo '<li class="fg-pile-item">';
33
- $args['link_attributes']['class'] = apply_filters( 'foogallery_album_stack_link_class_name', 'fg-pile-item-thumb' );
34
-
35
- $anchor_html = foogallery_attachment_html_anchor_opening( $attachment, $args );
36
- $anchor_html = str_replace( 'fg-thumb', '', $anchor_html );
37
- echo $anchor_html;
38
-
39
- $image_html = foogallery_attachment_html_image( $attachment, $args );
40
- $image_html = str_replace( 'fg-image', 'fg-pile-item-image', $image_html );
41
- echo $image_html;
42
-
43
- $captions = foogallery_build_attachment_html_caption( $attachment, $args );
44
- if ( $captions !== false ) {
45
- echo '<span class="fg-pile-item-caption">';
46
- if ( array_key_exists( 'title', $captions ) ) {
47
- echo '<span class="fg-pile-item-title">' . $captions['title'] . '</span>';
48
- }
49
- if ( array_key_exists( 'desc', $captions ) ) {
50
- echo '<span class="fg-pile-item-desc">' . $captions['desc'] . '</span>';
51
- }
52
- echo '</span>';
53
- }
54
-
55
- echo '</a>';
56
- echo '</li>';
57
- }
58
- }
59
- ?>
60
- <div id="foogallery-album-<?php echo $current_foogallery_album->ID; ?>" class="foogallery-container foogallery-stack-album" data-foogallery="<?php echo esc_attr( $data_options ); ?>">
61
- <div class="fg-header">
62
- <h2 class="fg-header-title"><?php echo $current_foogallery_album->name; ?></h2>
63
- <span class="fg-header-back">&larr;</span>
64
- <h3 class="fg-header-active"></h3>
65
- </div>
66
- <div class="fg-piles">
67
- <?php
68
- foreach ( $current_foogallery_album->galleries() as $gallery ) {
69
- ?><ul class="fg-pile <?php echo $lightbox; ?>" data-title="<?php echo esc_attr( $gallery->name ); ?>"><?php
70
- $current_foogallery = $gallery;
71
- $featured_attachment = $gallery->featured_attachment();
72
- //render the featured attachment first
73
- foogallery_album_all_in_one_stack_render_gallery_attachment2( $gallery, $featured_attachment, $args, $lightbox );
74
-
75
- foreach ( $gallery->attachments() as $attachment ) {
76
- if ( $featured_attachment->ID !== $attachment->ID ) {
77
- //render all but the featured attachment
78
- foogallery_album_all_in_one_stack_render_gallery_attachment2( $gallery, $attachment, $args, $lightbox );
79
- }
80
- }
81
- ?></ul><?php
82
- }
83
- ?>
84
- </div>
85
- </div>
86
-
1
+ <?php
2
+ /**
3
+ * FooGallery All-In-One Stack Album template
4
+ */
5
+ global $current_foogallery_album;
6
+ global $current_foogallery_album_arguments;
7
+ global $current_foogallery;
8
+
9
+
10
+ $args = foogallery_album_template_setting( 'thumbnail_dimensions', array() );
11
+ $args['crop'] = true;
12
+ $lightbox = foogallery_album_template_setting( 'lightbox', 'unknown' );
13
+ if ( $lightbox === 'foogallery' ) {
14
+ $lightbox = 'unknown';
15
+ }
16
+ $random_angle = foogallery_album_template_setting( 'random_angle', 'false' );
17
+ $gutter = foogallery_album_template_setting( 'gutter', '40' );
18
+ $pile_angles = foogallery_album_template_setting( 'pile_angles', '2' );
19
+
20
+ $data_options = array(
21
+ 'itemWidth' => intval( $args['width'] ),
22
+ 'itemHeight' => intval( $args['height'] ),
23
+ 'gutter' => intval( $gutter ),
24
+ 'angleStep' => intval( $pile_angles ),
25
+ 'randomAngle' => 'true' === $random_angle
26
+ );
27
+
28
+ $data_options = foogallery_json_encode( $data_options );
29
+
30
+ if ( !function_exists( 'foogallery_album_all_in_one_stack_render_gallery_attachment2' ) ) {
31
+ function foogallery_album_all_in_one_stack_render_gallery_attachment2( $gallery, $attachment, $args ) {
32
+ echo '<li class="fg-pile-item">';
33
+ $args['link_attributes']['class'] = apply_filters( 'foogallery_album_stack_link_class_name', 'fg-pile-item-thumb' );
34
+
35
+ $anchor_html = foogallery_attachment_html_anchor_opening( $attachment, $args );
36
+ $anchor_html = str_replace( 'fg-thumb', '', $anchor_html );
37
+ echo $anchor_html;
38
+
39
+ $image_html = foogallery_attachment_html_image( $attachment, $args );
40
+ $image_html = str_replace( 'fg-image', 'fg-pile-item-image', $image_html );
41
+ echo $image_html;
42
+
43
+ $captions = foogallery_build_attachment_html_caption( $attachment, $args );
44
+ if ( $captions !== false ) {
45
+ echo '<span class="fg-pile-item-caption">';
46
+ if ( array_key_exists( 'title', $captions ) ) {
47
+ echo '<span class="fg-pile-item-title">' . $captions['title'] . '</span>';
48
+ }
49
+ if ( array_key_exists( 'desc', $captions ) ) {
50
+ echo '<span class="fg-pile-item-desc">' . $captions['desc'] . '</span>';
51
+ }
52
+ echo '</span>';
53
+ }
54
+
55
+ echo '</a>';
56
+ echo '</li>';
57
+ }
58
+ }
59
+ ?>
60
+ <div id="foogallery-album-<?php echo $current_foogallery_album->ID; ?>" class="foogallery-container foogallery-stack-album" data-foogallery="<?php echo esc_attr( $data_options ); ?>">
61
+ <div class="fg-header">
62
+ <h2 class="fg-header-title"><?php echo $current_foogallery_album->name; ?></h2>
63
+ <span class="fg-header-back">&larr;</span>
64
+ <h3 class="fg-header-active"></h3>
65
+ </div>
66
+ <div class="fg-piles">
67
+ <?php
68
+ foreach ( $current_foogallery_album->galleries() as $gallery ) {
69
+ ?><ul class="fg-pile <?php echo $lightbox; ?>" data-title="<?php echo esc_attr( $gallery->name ); ?>"><?php
70
+ $current_foogallery = $gallery;
71
+ $featured_attachment = $gallery->featured_attachment();
72
+ //render the featured attachment first
73
+ foogallery_album_all_in_one_stack_render_gallery_attachment2( $gallery, $featured_attachment, $args, $lightbox );
74
+
75
+ foreach ( $gallery->attachments() as $attachment ) {
76
+ if ( $featured_attachment->ID !== $attachment->ID ) {
77
+ //render all but the featured attachment
78
+ foogallery_album_all_in_one_stack_render_gallery_attachment2( $gallery, $attachment, $args, $lightbox );
79
+ }
80
+ }
81
+ ?></ul><?php
82
+ }
83
+ ?>
84
+ </div>
85
+ </div>
86
+
extensions/albums/class-albums-extension.php CHANGED
@@ -1,175 +1,175 @@
1
- <?php
2
- if ( ! class_exists( 'FooGallery_Albums_Extension' ) ) {
3
-
4
- define( 'FOOGALLERY_ALBUM_PATH', plugin_dir_path( __FILE__ ) );
5
- define( 'FOOGALLERY_ALBUM_URL', plugin_dir_url( __FILE__ ) );
6
- define( 'FOOGALLERY_CPT_ALBUM', 'foogallery-album' );
7
- define( 'FOOGALLERY_ALBUM_META_GALLERIES', 'foogallery_album_galleries' );
8
- define( 'FOOGALLERY_ALBUM_META_TEMPLATE', 'foogallery_album_template' );
9
- define( 'FOOGALLERY_ALBUM_META_SORT', 'foogallery_album_sort' );
10
-
11
- class FooGallery_Albums_Extension {
12
-
13
- function __construct() {
14
- $this->includes();
15
-
16
- new FooGallery_Album_Rewrite_Rules();
17
- new FooGallery_Albums_PostTypes();
18
- new FooGallery_Album_Shortcodes();
19
-
20
- if ( is_admin() ) {
21
- new FooGallery_Albums_Admin_Columns();
22
- new FooGallery_Admin_Album_MetaBoxes();
23
-
24
- //add some global settings for albums
25
- add_filter( 'foogallery_admin_settings_override', array($this, 'add_album_settings' ) );
26
-
27
- add_action( 'foogallery_uninstall', array($this, 'uninstall' ) );
28
- }
29
- add_filter( 'foogallery_album_templates_files', array( $this, 'register_myself' ) );
30
- add_filter( 'foogallery_defaults', array( $this, 'apply_album_defaults' ) );
31
- add_action( 'foogallery_extension_activated-albums', array( $this, 'flush_rewrite_rules' ) );
32
- add_filter( 'foogallery_albums_supports_video-stack', '__return_true' );
33
-
34
- add_filter( 'fooboxshare_use_permalink', array( $this, 'check_for_albums_for_fooboxshare' ) );
35
-
36
- add_action( 'foogallery_located_album_template-stack', array( $this, 'load_stack_assets' ) );
37
-
38
- add_filter( 'foogallery_album_default_gallery_content', array( $this, 'render_gallery_description' ), 10, 2 );
39
-
40
- add_filter( 'foogallery_gallery_posttype_register_args', array( $this, 'override_gallery_posttype_register_args' ) );
41
-
42
- add_filter( 'foogallery_allowed_post_types_for_attachment', array( $this, 'allow_albums' ) );
43
- }
44
-
45
- /**
46
- * Add the album post type to the allowed list of post types that galleries can be attached to.
47
- * This will then show albums in the Usage column for the galleries
48
- *
49
- * @param array $allowed The allowed list of post types.
50
- *
51
- * @return array
52
- */
53
- public function allow_albums( $allowed ) {
54
- $allowed[] = FOOGALLERY_CPT_ALBUM;
55
- return $allowed;
56
- }
57
-
58
- /**
59
- * Overrides the gallery posttype register args
60
- *
61
- * @param array $args The arguments.
62
- *
63
- * @return array
64
- */
65
- public function override_gallery_posttype_register_args( $args ) {
66
- if ( 'on' === foogallery_get_setting( 'enable_gallery_descriptions' ) ) {
67
- $args['supports'][] = 'editor';
68
- }
69
- return $args;
70
- }
71
-
72
- /**
73
- * Render the gallery description
74
- *
75
- * @param string $content The default content to be rendered.
76
- * @param FooGallery $foogallery The gallery we are showing.
77
- *
78
- * @return string
79
- */
80
- public function render_gallery_description( $content, $foogallery ) {
81
- if ( 'on' === foogallery_get_setting( 'enable_gallery_descriptions' ) ) {
82
- if ( isset( $foogallery->_post ) && ! empty( $foogallery->_post->post_content ) ) {
83
- $content = apply_filters( 'the_content', $foogallery->_post->post_content );
84
- }
85
- }
86
-
87
- return $content;
88
- }
89
-
90
- function load_stack_assets( $current_foogallery_album ) {
91
- foogallery_enqueue_core_gallery_template_script();
92
- foogallery_enqueue_core_gallery_template_style();
93
- }
94
-
95
- function check_for_albums_for_fooboxshare( $default ) {
96
-
97
- $album_gallery = foogallery_album_get_current_gallery();
98
-
99
- if ( !empty( $album_gallery) ) {
100
- return false;
101
- }
102
-
103
- return $default;
104
- }
105
-
106
- function includes() {
107
- require_once FOOGALLERY_ALBUM_PATH . 'functions.php';
108
- require_once FOOGALLERY_ALBUM_PATH . 'class-posttypes.php';
109
- require_once FOOGALLERY_ALBUM_PATH . 'class-foogallery-album.php';
110
- require_once FOOGALLERY_ALBUM_PATH . 'public/class-rewrite-rules.php';
111
- require_once FOOGALLERY_ALBUM_PATH . 'public/class-shortcodes.php';
112
- require_once FOOGALLERY_ALBUM_PATH . 'public/class-foogallery-album-template-loader.php';
113
-
114
- if ( is_admin() ) {
115
- // only admin.
116
- require_once FOOGALLERY_ALBUM_PATH . 'admin/class-metaboxes.php';
117
- require_once FOOGALLERY_ALBUM_PATH . 'admin/class-columns.php';
118
- }
119
- }
120
-
121
- function apply_album_defaults( $defaults ) {
122
- $defaults['album_template'] = 'default';
123
-
124
- return $defaults;
125
- }
126
-
127
- function register_myself( $extensions ) {
128
- $extensions[] = __FILE__;
129
- return $extensions;
130
- }
131
-
132
- function flush_rewrite_rules() {
133
- $rewrite = new FooGallery_Album_Rewrite_Rules();
134
- $rewrite->add_gallery_endpoint();
135
-
136
- flush_rewrite_rules();
137
- }
138
-
139
- function add_album_settings( $settings ) {
140
-
141
- $settings['tabs']['albums'] = __( 'Albums', 'foogallery' );
142
-
143
- $settings['settings'][] = array(
144
- 'id' => 'album_gallery_slug',
145
- 'title' => __( 'Gallery Slug', 'foogallery' ),
146
- 'type' => 'text',
147
- 'default' => 'gallery',
148
- 'desc' => __( 'The slug that is used when generating gallery URL\'s for albums. PLEASE NOTE : if you change this value, you might need to save your Permalinks again.', 'foogallery' ),
149
- 'tab' => 'albums',
150
- );
151
-
152
- $settings['settings'][] = array(
153
- 'id' => 'language_back_to_album_text',
154
- 'title' => __( 'Back To Album Text', 'foogallery' ),
155
- 'type' => 'text',
156
- 'default' => __( '&laquo; back to album', 'foogallery' ),
157
- 'tab' => 'albums',
158
- );
159
-
160
- $settings['settings'][] = array(
161
- 'id' => 'enable_gallery_descriptions',
162
- 'title' => __( 'Enable Gallery Descriptions', 'foogallery' ),
163
- 'desc' => __( 'Enable descriptions for galleries. These descriptions will be displayed under the gallery title within the Responsive Album Layout.', 'foogallery' ),
164
- 'type' => 'checkbox',
165
- 'tab' => 'albums',
166
- );
167
-
168
- return $settings;
169
- }
170
-
171
- function uninstall() {
172
- foogallery_album_uninstall();
173
- }
174
- }
175
- }
1
+ <?php
2
+ if ( ! class_exists( 'FooGallery_Albums_Extension' ) ) {
3
+
4
+ define( 'FOOGALLERY_ALBUM_PATH', plugin_dir_path( __FILE__ ) );
5
+ define( 'FOOGALLERY_ALBUM_URL', plugin_dir_url( __FILE__ ) );
6
+ define( 'FOOGALLERY_CPT_ALBUM', 'foogallery-album' );
7
+ define( 'FOOGALLERY_ALBUM_META_GALLERIES', 'foogallery_album_galleries' );
8
+ define( 'FOOGALLERY_ALBUM_META_TEMPLATE', 'foogallery_album_template' );
9
+ define( 'FOOGALLERY_ALBUM_META_SORT', 'foogallery_album_sort' );
10
+
11
+ class FooGallery_Albums_Extension {
12
+
13
+ function __construct() {
14
+ $this->includes();
15
+
16
+ new FooGallery_Album_Rewrite_Rules();
17
+ new FooGallery_Albums_PostTypes();
18
+ new FooGallery_Album_Shortcodes();
19
+
20
+ if ( is_admin() ) {
21
+ new FooGallery_Albums_Admin_Columns();
22
+ new FooGallery_Admin_Album_MetaBoxes();
23
+
24
+ //add some global settings for albums
25
+ add_filter( 'foogallery_admin_settings_override', array($this, 'add_album_settings' ) );
26
+
27
+ add_action( 'foogallery_uninstall', array($this, 'uninstall' ) );
28
+ }
29
+ add_filter( 'foogallery_album_templates_files', array( $this, 'register_myself' ) );
30
+ add_filter( 'foogallery_defaults', array( $this, 'apply_album_defaults' ) );
31
+ add_action( 'foogallery_extension_activated-albums', array( $this, 'flush_rewrite_rules' ) );
32
+ add_filter( 'foogallery_albums_supports_video-stack', '__return_true' );
33
+
34
+ add_filter( 'fooboxshare_use_permalink', array( $this, 'check_for_albums_for_fooboxshare' ) );
35
+
36
+ add_action( 'foogallery_located_album_template-stack', array( $this, 'load_stack_assets' ) );
37
+
38
+ add_filter( 'foogallery_album_default_gallery_content', array( $this, 'render_gallery_description' ), 10, 2 );
39
+
40
+ add_filter( 'foogallery_gallery_posttype_register_args', array( $this, 'override_gallery_posttype_register_args' ) );
41
+
42
+ add_filter( 'foogallery_allowed_post_types_for_attachment', array( $this, 'allow_albums' ) );
43
+ }
44
+
45
+ /**
46
+ * Add the album post type to the allowed list of post types that galleries can be attached to.
47
+ * This will then show albums in the Usage column for the galleries
48
+ *
49
+ * @param array $allowed The allowed list of post types.
50
+ *
51
+ * @return array
52
+ */
53
+ public function allow_albums( $allowed ) {
54
+ $allowed[] = FOOGALLERY_CPT_ALBUM;
55
+ return $allowed;
56
+ }
57
+
58
+ /**
59
+ * Overrides the gallery posttype register args
60
+ *
61
+ * @param array $args The arguments.
62
+ *
63
+ * @return array
64
+ */
65
+ public function override_gallery_posttype_register_args( $args ) {
66
+ if ( 'on' === foogallery_get_setting( 'enable_gallery_descriptions' ) ) {
67
+ $args['supports'][] = 'editor';
68
+ }
69
+ return $args;
70
+ }
71
+
72
+ /**
73
+ * Render the gallery description
74
+ *
75
+ * @param string $content The default content to be rendered.
76
+ * @param FooGallery $foogallery The gallery we are showing.
77
+ *
78
+ * @return string
79
+ */
80
+ public function render_gallery_description( $content, $foogallery ) {
81
+ if ( 'on' === foogallery_get_setting( 'enable_gallery_descriptions' ) ) {
82
+ if ( isset( $foogallery->_post ) && ! empty( $foogallery->_post->post_content ) ) {
83
+ $content = apply_filters( 'the_content', $foogallery->_post->post_content );
84
+ }
85
+ }
86
+
87
+ return $content;
88
+ }
89
+
90
+ function load_stack_assets( $current_foogallery_album ) {
91
+ foogallery_enqueue_core_gallery_template_script();
92
+ foogallery_enqueue_core_gallery_template_style();
93
+ }
94
+
95
+ function check_for_albums_for_fooboxshare( $default ) {
96
+
97
+ $album_gallery = foogallery_album_get_current_gallery();
98
+
99
+ if ( !empty( $album_gallery) ) {
100
+ return false;
101
+ }
102
+
103
+ return $default;
104
+ }
105
+
106
+ function includes() {
107
+ require_once FOOGALLERY_ALBUM_PATH . 'functions.php';
108
+ require_once FOOGALLERY_ALBUM_PATH . 'class-posttypes.php';
109
+ require_once FOOGALLERY_ALBUM_PATH . 'class-foogallery-album.php';
110
+ require_once FOOGALLERY_ALBUM_PATH . 'public/class-rewrite-rules.php';
111
+ require_once FOOGALLERY_ALBUM_PATH . 'public/class-shortcodes.php';
112
+ require_once FOOGALLERY_ALBUM_PATH . 'public/class-foogallery-album-template-loader.php';
113
+
114
+ if ( is_admin() ) {
115
+ // only admin.
116
+ require_once FOOGALLERY_ALBUM_PATH . 'admin/class-metaboxes.php';
117
+ require_once FOOGALLERY_ALBUM_PATH . 'admin/class-columns.php';
118
+ }
119
+ }
120
+
121
+ function apply_album_defaults( $defaults ) {
122
+ $defaults['album_template'] = 'default';
123
+
124
+ return $defaults;
125
+ }
126
+
127
+ function register_myself( $extensions ) {
128
+ $extensions[] = __FILE__;
129
+ return $extensions;
130
+ }
131
+
132
+ function flush_rewrite_rules() {
133
+ $rewrite = new FooGallery_Album_Rewrite_Rules();
134
+ $rewrite->add_gallery_endpoint();
135
+
136
+ flush_rewrite_rules();
137
+ }
138
+
139
+ function add_album_settings( $settings ) {
140
+
141
+ $settings['tabs']['albums'] = __( 'Albums', 'foogallery' );
142
+
143
+ $settings['settings'][] = array(
144
+ 'id' => 'album_gallery_slug',
145
+ 'title' => __( 'Gallery Slug', 'foogallery' ),
146
+ 'type' => 'text',
147
+ 'default' => 'gallery',
148
+ 'desc' => __( 'The slug that is used when generating gallery URL\'s for albums. PLEASE NOTE : if you change this value, you might need to save your Permalinks again.', 'foogallery' ),
149
+ 'tab' => 'albums',
150
+ );
151
+
152
+ $settings['settings'][] = array(
153
+ 'id' => 'language_back_to_album_text',
154
+ 'title' => __( 'Back To Album Text', 'foogallery' ),
155
+ 'type' => 'text',
156
+ 'default' => __( '&laquo; back to album', 'foogallery' ),
157
+ 'tab' => 'albums',
158
+ );
159
+
160
+ $settings['settings'][] = array(
161
+ 'id' => 'enable_gallery_descriptions',
162
+ 'title' => __( 'Enable Gallery Descriptions', 'foogallery' ),
163
+ 'desc' => __( 'Enable descriptions for galleries. These descriptions will be displayed under the gallery title within the Responsive Album Layout.', 'foogallery' ),
164
+ 'type' => 'checkbox',
165
+ 'tab' => 'albums',
166
+ );
167
+
168
+ return $settings;
169
+ }
170
+
171
+ function uninstall() {
172
+ foogallery_album_uninstall();
173
+ }
174
+ }
175
+ }
extensions/albums/class-foogallery-album.php CHANGED
@@ -1,256 +1,256 @@
1
- <?php
2
-
3
- /**
4
- * Class FooGalleryAlbum
5
- *
6
- * An easy to use wrapper class for a FooGallery Album post
7
- */
8
- class FooGalleryAlbum extends stdClass {
9
-
10
- /**
11
- * private constructor
12
- *
13
- * @param null $post
14
- */
15
- private function __construct( $post = null ) {
16
- $this->set_defaults();
17
-
18
- if ( $post !== null ) {
19
- $this->load( $post );
20
- }
21
- }
22
-
23
- /**
24
- * Sets the default when a new album is instantiated
25
- */
26
- private function set_defaults() {
27
- $this->_post = null;
28
- $this->ID = 0;
29
- $this->gallery_ids = array();
30
- $this->_galleries = false;
31
- }
32
-
33
- /**
34
- * private gallery load function
35
- * @param $post
36
- */
37
- private function load( $post ) {
38
- $this->_post = $post;
39
- $this->ID = $post->ID;
40
- $this->slug = $post->post_name;
41
- $this->name = $post->post_title;
42
- $this->author = $post->post_author;
43
- $this->post_status = $post->post_status;
44
- $album_meta = get_post_meta( $this->ID, FOOGALLERY_ALBUM_META_GALLERIES, true );
45
- $this->gallery_ids = is_array( $album_meta ) ? array_filter( $album_meta ) : array();
46
- $this->album_template = get_post_meta( $post->ID, FOOGALLERY_ALBUM_META_TEMPLATE, true );
47
- $this->settings = get_post_meta( $post->ID, FOOGALLERY_META_SETTINGS_OLD, true );
48
- $this->custom_css = get_post_meta( $post->ID, FOOGALLERY_META_CUSTOM_CSS, true );
49
- $this->sorting = get_post_meta( $post->ID, FOOGALLERY_ALBUM_META_SORT, true );
50
- do_action( 'foogallery_foogallery-album_instance_after_load', $this, $post );
51
- }
52
-
53
- /**
54
- * private function to load a album by an id
55
- * @param $post_id
56
- */
57
- private function load_by_id( $post_id ) {
58
- $post = get_post( $post_id );
59
- if ( $post ) {
60
- $this->load( $post );
61
- }
62
- }
63
-
64
- /**
65
- * private function to load a album by the slug.
66
- * Will be used when loading album shortcodes
67
- * @param $slug
68
- */
69
- private function load_by_slug( $slug ) {
70
- if ( ! empty( $slug ) ) {
71
- $args = array(
72
- 'name' => $slug,
73
- 'numberposts' => 1,
74
- 'post_type' => FOOGALLERY_CPT_ALBUM,
75
- );
76
-
77
- $albums = get_posts( $args );
78
-
79
- if ( $albums ) {
80
- $this->load( $albums[0] );
81
- }
82
- }
83
- }
84
-
85
- /**
86
- * Static function to load a Album instance by passing in a post object
87
- * @static
88
- *
89
- * @param $post
90
- *
91
- * @return FooGalleryAlbum
92
- */
93
- public static function get( $post ) {
94
- return new self( $post );
95
- }
96
-
97
- /**
98
- * Static function to load an Album instance by post id
99
- *
100
- * @param $post_id
101
- *
102
- * @return FooGalleryAlbum
103
- */
104
- public static function get_by_id( $post_id ) {
105
- $album = new self();
106
- $album->load_by_id( $post_id );
107
- if ( ! $album->does_exist() ) {
108
- return false;
109
- }
110
- return $album;
111
- }
112
-
113
- /**
114
- * Static function to load a album instance by passing in a album slug
115
- *
116
- * @param string $slug
117
- *
118
- * @return FooGalleryAlbum
119
- */
120
- public static function get_by_slug( $slug ) {
121
- $album = new self();
122
- $album->load_by_slug( $slug );
123
- if ( ! $album->does_exist() ) {
124
- return false;
125
- }
126
- return $album;
127
- }
128
-
129
- /**
130
- * Checks if the album has galleries
131
- * @return bool
132
- */
133
- public function has_galleries() {
134
- return sizeof( $this->gallery_ids ) > 0;
135
- }
136
-
137
- /**
138
- * Checks if the album exists
139
- * @return bool
140
- */
141
- public function does_exist() {
142
- return $this->ID > 0;
143
- }
144
-
145
- /**
146
- * Returns true if the album is published
147
- * @return bool
148
- */
149
- public function is_published() {
150
- return $this->post_status === 'publish';
151
- }
152
-
153
- /**
154
- * Get a comma separated list of gallery ids
155
- * @return string
156
- */
157
- public function gallery_id_csv() {
158
- if ( is_array( $this->gallery_ids ) ) {
159
- return implode( ',', $this->gallery_ids );
160
- }
161
-
162
- return '';
163
- }
164
-
165
- /**
166
- * Lazy load the attachments for the gallery
167
- *
168
- * @return array
169
- */
170
- public function galleries() {
171
- //lazy load the attachments for performance
172
- if ( $this->_galleries === false ) {
173
- $this->_galleries = array();
174
-
175
- if ( ! empty( $this->gallery_ids ) ) {
176
-
177
- $gallery_query_args = apply_filters( 'foogallery_album_gallery_get_posts_args', array(
178
- 'post_type' => FOOGALLERY_CPT_GALLERY,
179
- 'posts_per_page' => -1,
180
- 'post__in' => $this->gallery_ids,
181
- 'orderby' => foogallery_sorting_get_posts_orderby_arg( $this->sorting ),
182
- 'order' => foogallery_sorting_get_posts_order_arg( $this->sorting )
183
- ) );
184
-
185
- $galleries = get_posts( $gallery_query_args );
186
-
187
- $this->_galleries = array_map( array( 'FooGallery', 'get' ), $galleries );
188
- }
189
- }
190
-
191
- return $this->_galleries;
192
- }
193
-
194
- function includes_gallery( $gallery_id ) {
195
- if ( $this->has_galleries() ) {
196
- return in_array( $gallery_id, $this->gallery_ids );
197
- }
198
- return false;
199
- }
200
-
201
- public function gallery_count() {
202
- $count = sizeof( $this->gallery_ids );
203
- switch ( $count ) {
204
- case 0:
205
- return __( 'No galleries', 'foogallery' );
206
- case 1:
207
- return __( '1 gallery', 'foogallery' );
208
- default:
209
- return sprintf( __( '%s galleries', 'foogallery' ), $count );
210
- }
211
- }
212
-
213
- /**
214
- * Output the shortcode for the gallery
215
- *
216
- * @return string
217
- */
218
- public function shortcode() {
219
- return foogallery_build_album_shortcode( $this->ID );
220
- }
221
-
222
- function get_meta( $key, $default ) {
223
- if ( ! is_array( $this->settings ) ) {
224
- return $default;
225
- }
226
-
227
- $value = array_key_exists( $key, $this->settings ) ? $this->settings[ $key ] : null;
228
-
229
- if ( $value === null ) {
230
- return $default;
231
- }
232
-
233
- return $value;
234
- }
235
-
236
- function is_checked( $key, $default = false ) {
237
- if ( ! is_array( $this->settings ) ) {
238
- return $default;
239
- }
240
-
241
- return array_key_exists( $key, $this->settings );
242
- }
243
-
244
- public function album_template_details() {
245
- if ( ! empty( $this->album_template ) ) {
246
-
247
- foreach ( foogallery_album_templates() as $template ) {
248
- if ( $this->album_template == $template['slug'] ) {
249
- return $template;
250
- }
251
- }
252
- }
253
-
254
- return false;
255
- }
256
- }
1
+ <?php
2
+
3
+ /**
4
+ * Class FooGalleryAlbum
5
+ *
6
+ * An easy to use wrapper class for a FooGallery Album post
7
+ */
8
+ class FooGalleryAlbum extends stdClass {
9
+
10
+ /**
11
+ * private constructor
12
+ *
13
+ * @param null $post
14
+ */
15
+ private function __construct( $post = null ) {
16
+ $this->set_defaults();
17
+
18
+ if ( $post !== null ) {
19
+ $this->load( $post );
20
+ }
21
+ }
22
+
23
+ /**
24
+ * Sets the default when a new album is instantiated
25
+ */
26
+ private function set_defaults() {
27
+ $this->_post = null;
28
+ $this->ID = 0;
29
+ $this->gallery_ids = array();
30
+ $this->_galleries = false;
31
+ }
32
+
33
+ /**
34
+ * private gallery load function
35
+ * @param $post
36
+ */
37
+ private function load( $post ) {
38
+ $this->_post = $post;
39
+ $this->ID = $post->ID;
40
+ $this->slug = $post->post_name;
41
+ $this->name = $post->post_title;
42
+ $this->author = $post->post_author;
43
+ $this->post_status = $post->post_status;
44
+ $album_meta = get_post_meta( $this->ID, FOOGALLERY_ALBUM_META_GALLERIES, true );
45
+ $this->gallery_ids = is_array( $album_meta ) ? array_filter( $album_meta ) : array();
46
+ $this->album_template = get_post_meta( $post->ID, FOOGALLERY_ALBUM_META_TEMPLATE, true );
47
+ $this->settings = get_post_meta( $post->ID, FOOGALLERY_META_SETTINGS_OLD, true );
48
+ $this->custom_css = get_post_meta( $post->ID, FOOGALLERY_META_CUSTOM_CSS, true );
49
+ $this->sorting = get_post_meta( $post->ID, FOOGALLERY_ALBUM_META_SORT, true );
50
+ do_action( 'foogallery_foogallery-album_instance_after_load', $this, $post );
51
+ }
52
+
53
+ /**
54
+ * private function to load a album by an id
55
+ * @param $post_id
56
+ */
57
+ private function load_by_id( $post_id ) {
58
+ $post = get_post( $post_id );
59
+ if ( $post ) {
60
+ $this->load( $post );
61
+ }
62
+ }
63
+
64
+ /**
65
+ * private function to load a album by the slug.
66
+ * Will be used when loading album shortcodes
67
+ * @param $slug
68
+ */
69
+ private function load_by_slug( $slug ) {
70
+ if ( ! empty( $slug ) ) {
71
+ $args = array(
72
+ 'name' => $slug,
73
+ 'numberposts' => 1,
74
+ 'post_type' => FOOGALLERY_CPT_ALBUM,
75
+ );
76
+
77
+ $albums = get_posts( $args );
78
+
79
+ if ( $albums ) {
80
+ $this->load( $albums[0] );
81
+ }
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Static function to load a Album instance by passing in a post object
87
+ * @static
88
+ *
89
+ * @param $post
90
+ *
91
+ * @return FooGalleryAlbum
92
+ */
93
+ public static function get( $post ) {
94
+ return new self( $post );
95
+ }
96
+
97
+ /**
98
+ * Static function to load an Album instance by post id
99
+ *
100
+ * @param $post_id
101
+ *
102
+ * @return FooGalleryAlbum
103
+ */
104
+ public static function get_by_id( $post_id ) {
105
+ $album = new self();
106
+ $album->load_by_id( $post_id );
107
+ if ( ! $album->does_exist() ) {
108
+ return false;
109
+ }
110
+ return $album;
111
+ }
112
+
113
+ /**
114
+ * Static function to load a album instance by passing in a album slug
115
+ *
116
+ * @param string $slug
117
+ *
118
+ * @return FooGalleryAlbum
119
+ */
120
+ public static function get_by_slug( $slug ) {
121
+ $album = new self();
122
+ $album->load_by_slug( $slug );
123
+ if ( ! $album->does_exist() ) {
124
+ return false;
125
+ }
126
+ return $album;
127
+ }
128
+
129
+ /**
130
+ * Checks if the album has galleries
131
+ * @return bool
132
+ */
133
+ public function has_galleries() {
134
+ return sizeof( $this->gallery_ids ) > 0;
135
+ }
136
+
137
+ /**
138
+ * Checks if the album exists
139
+ * @return bool
140
+ */
141
+ public function does_exist() {
142
+ return $this->ID > 0;
143
+ }
144
+
145
+ /**
146
+ * Returns true if the album is published
147
+ * @return bool
148
+ */
149
+ public function is_published() {
150
+ return $this->post_status === 'publish';
151
+ }
152
+
153
+ /**
154
+ * Get a comma separated list of gallery ids
155
+ * @return string
156
+ */
157
+ public function gallery_id_csv() {
158
+ if ( is_array( $this->gallery_ids ) ) {
159
+ return implode( ',', $this->gallery_ids );
160
+ }
161
+
162
+ return '';
163
+ }
164
+
165
+ /**
166
+ * Lazy load the attachments for the gallery
167
+ *
168
+ * @return array
169
+ */
170
+ public function galleries() {
171
+ //lazy load the attachments for performance
172
+ if ( $this->_galleries === false ) {
173
+ $this->_galleries = array();
174
+
175
+ if ( ! empty( $this->gallery_ids ) ) {
176
+
177
+ $gallery_query_args = apply_filters( 'foogallery_album_gallery_get_posts_args', array(
178
+ 'post_type' => FOOGALLERY_CPT_GALLERY,
179
+ 'posts_per_page' => -1,
180
+ 'post__in' => $this->gallery_ids,
181
+ 'orderby' => foogallery_sorting_get_posts_orderby_arg( $this->sorting ),
182
+ 'order' => foogallery_sorting_get_posts_order_arg( $this->sorting )
183
+ ) );
184
+
185
+ $galleries = get_posts( $gallery_query_args );
186
+
187
+ $this->_galleries = array_map( array( 'FooGallery', 'get' ), $galleries );
188
+ }
189
+ }
190
+
191
+ return $this->_galleries;
192
+ }
193
+
194
+ function includes_gallery( $gallery_id ) {
195
+ if ( $this->has_galleries() ) {
196
+ return in_array( $gallery_id, $this->gallery_ids );
197
+ }
198
+ return false;
199
+ }
200
+
201
+ public function gallery_count() {
202
+ $count = sizeof( $this->gallery_ids );
203
+ switch ( $count ) {
204
+ case 0:
205
+ return __( 'No galleries', 'foogallery' );
206
+ case 1:
207
+ return __( '1 gallery', 'foogallery' );
208
+ default:
209
+ return sprintf( __( '%s galleries', 'foogallery' ), $count );
210
+ }
211
+ }
212
+
213
+ /**
214
+ * Output the shortcode for the gallery
215
+ *
216
+ * @return string
217
+ */
218
+ public function shortcode() {
219
+ return foogallery_build_album_shortcode( $this->ID );
220
+ }
221
+
222
+ function get_meta( $key, $default ) {
223
+ if ( ! is_array( $this->settings ) ) {
224
+ return $default;
225
+ }
226
+
227
+ $value = array_key_exists( $key, $this->settings ) ? $this->settings[ $key ] : null;
228
+
229
+ if ( $value === null ) {
230
+ return $default;
231
+ }
232
+
233
+ return $value;
234
+ }
235
+
236
+ function is_checked( $key, $default = false ) {
237
+ if ( ! is_array( $this->settings ) ) {
238
+ return $default;
239
+ }
240
+
241
+ return array_key_exists( $key, $this->settings );
242
+ }
243
+
244
+ public function album_template_details() {
245
+ if ( ! empty( $this->album_template ) ) {
246
+
247
+ foreach ( foogallery_album_templates() as $template ) {
248
+ if ( $this->album_template == $template['slug'] ) {
249
+ return $template;
250
+ }
251
+ }
252
+ }
253
+
254
+ return false;
255
+ }
256
+ }
extensions/albums/class-posttypes.php CHANGED
@@ -1,108 +1,108 @@
1
- <?php
2
- /*
3
- * FooGallery Album Custom Post Types
4
- */
5
-
6
- if ( ! class_exists( 'FooGallery_Albums_PostTypes' ) ) {
7
-
8
- class FooGallery_Albums_PostTypes {
9
-
10
- function __construct() {
11
- //register the post types
12
- add_action( 'init', array( $this, 'register_posttype' ) );
13
-
14
- //update post type messages
15
- add_filter( 'post_updated_messages', array( $this, 'update_messages' ) );
16
-
17
- //update post bulk messages
18
- add_filter( 'bulk_post_updated_messages', array( $this, 'update_bulk_messages' ), 10, 2 );
19
- }
20
-
21
- function register_posttype() {
22
- //allow extensions to override the album post type
23
- $args = apply_filters( 'foogallery_album_posttype_register_args',
24
- array(
25
- 'labels' => array(
26
- 'name' => __( 'Albums', 'foogallery' ),
27
- 'singular_name' => __( 'Album', 'foogallery' ),
28
- 'add_new' => __( 'Add Album', 'foogallery' ),
29
- 'add_new_item' => __( 'Add New Album', 'foogallery' ),
30
- 'edit_item' => __( 'Edit Album', 'foogallery' ),
31
- 'new_item' => __( 'New Album', 'foogallery' ),
32
- 'view_item' => __( 'View Album', 'foogallery' ),
33
- 'search_items' => __( 'Search Albums', 'foogallery' ),
34
- 'not_found' => __( 'No Albums found', 'foogallery' ),
35
- 'not_found_in_trash' => __( 'No Albums found in Trash', 'foogallery' ),
36
- 'menu_name' => __( 'Albums', 'foogallery' ),
37
- 'all_items' => __( 'Albums', 'foogallery' )
38
- ),
39
- 'hierarchical' => false,
40
- 'public' => false,
41
- 'rewrite' => false,
42
- 'show_ui' => true,
43
- 'show_in_menu' => foogallery_admin_menu_parent_slug(),
44
- 'supports' => array( 'title' ),
45
- )
46
- );
47
-
48
- register_post_type( FOOGALLERY_CPT_ALBUM, $args );
49
- }
50
-
51
- /**
52
- * Customize the update messages for a album
53
- *
54
- * @global object $post The current post object.
55
- *
56
- * @param array $messages Array of default post updated messages.
57
- *
58
- * @return array $messages Amended array of post updated messages.
59
- */
60
- public function update_messages( $messages ) {
61
-
62
- global $post;
63
-
64
- // Add our album messages
65
- $messages[FOOGALLERY_CPT_ALBUM] = apply_filters( 'foogallery_album_posttype_update_messages',
66
- array(
67
- 0 => '',
68
- 1 => __( 'Album updated.', 'foogallery' ),
69
- 2 => __( 'Album custom field updated.', 'foogallery' ),
70
- 3 => __( 'Album custom field deleted.', 'foogallery' ),
71
- 4 => __( 'Album updated.', 'foogallery' ),
72
- 5 => isset($_GET['revision']) ? sprintf( __( 'Album restored to revision from %s.', 'foogallery' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
73
- 6 => __( 'Album published.', 'foogallery' ),
74
- 7 => __( 'Album saved.', 'foogallery' ),
75
- 8 => __( 'Album submitted.', 'foogallery' ),
76
- 9 => sprintf( __( 'Album scheduled for: <strong>%1$s</strong>.', 'foogallery' ), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ) ),
77
- 10 => __( 'Album draft updated.', 'foogallery' )
78
- )
79
- );
80
-
81
- return $messages;
82
-
83
- }
84
-
85
- /**
86
- * Customize the bulk update messages for a album
87
- *
88
- * @param array $bulk_messages Array of default bulk updated messages.
89
- * @param array $bulk_counts Array containing count of posts involved in the action.
90
- *
91
- * @return array mixed Amended array of bulk updated messages.
92
- */
93
- function update_bulk_messages( $bulk_messages, $bulk_counts ) {
94
-
95
- $bulk_messages[FOOGALLERY_CPT_ALBUM] = apply_filters( 'foogallery_album_posttype_bulk_update_messages',
96
- array(
97
- 'updated' => _n( '%s Album updated.', '%s Albums updated.', $bulk_counts['updated'], 'foogallery' ),
98
- 'locked' => _n( '%s Album not updated, somebody is editing it.', '%s Albums not updated, somebody is editing them.', $bulk_counts['locked'], 'foogallery' ),
99
- 'deleted' => _n( '%s Album permanently deleted.', '%s Albums permanently deleted.', $bulk_counts['deleted'], 'foogallery' ),
100
- 'trashed' => _n( '%s Album moved to the Trash.', '%s Albums moved to the Trash.', $bulk_counts['trashed'], 'foogallery' ),
101
- 'untrashed' => _n( '%s Album restored from the Trash.', '%s Albums restored from the Trash.', $bulk_counts['untrashed'], 'foogallery' ),
102
- )
103
- );
104
-
105
- return $bulk_messages;
106
- }
107
- }
108
- }
1
+ <?php
2
+ /*
3
+ * FooGallery Album Custom Post Types
4
+ */
5
+
6
+ if ( ! class_exists( 'FooGallery_Albums_PostTypes' ) ) {
7
+
8
+ class FooGallery_Albums_PostTypes {
9
+
10
+ function __construct() {
11
+ //register the post types
12
+ add_action( 'init', array( $this, 'register_posttype' ) );
13
+
14
+ //update post type messages
15
+ add_filter( 'post_updated_messages', array( $this, 'update_messages' ) );
16
+
17
+ //update post bulk messages
18
+ add_filter( 'bulk_post_updated_messages', array( $this, 'update_bulk_messages' ), 10, 2 );
19
+ }
20
+
21
+ function register_posttype() {
22
+ //allow extensions to override the album post type
23
+ $args = apply_filters( 'foogallery_album_posttype_register_args',
24
+ array(
25
+ 'labels' => array(
26
+ 'name' => __( 'Albums', 'foogallery' ),
27
+ 'singular_name' => __( 'Album', 'foogallery' ),
28
+ 'add_new' => __( 'Add Album', 'foogallery' ),
29
+ 'add_new_item' => __( 'Add New Album', 'foogallery' ),
30
+ 'edit_item' => __( 'Edit Album', 'foogallery' ),
31
+ 'new_item' => __( 'New Album', 'foogallery' ),
32
+ 'view_item' => __( 'View Album', 'foogallery' ),
33
+ 'search_items' => __( 'Search Albums', 'foogallery' ),
34
+ 'not_found' => __( 'No Albums found', 'foogallery' ),
35
+ 'not_found_in_trash' => __( 'No Albums found in Trash', 'foogallery' ),
36
+ 'menu_name' => __( 'Albums', 'foogallery' ),
37
+ 'all_items' => __( 'Albums', 'foogallery' )
38
+ ),
39
+ 'hierarchical' => false,
40
+ 'public' => false,
41
+ 'rewrite' => false,
42
+ 'show_ui' => true,
43
+ 'show_in_menu' => foogallery_admin_menu_parent_slug(),
44
+ 'supports' => array( 'title' ),
45
+ )
46
+ );
47
+
48
+ register_post_type( FOOGALLERY_CPT_ALBUM, $args );
49
+ }
50
+
51
+ /**
52
+ * Customize the update messages for a album
53
+ *
54
+ * @global object $post The current post object.
55
+ *
56
+ * @param array $messages Array of default post updated messages.
57
+ *
58
+ * @return array $messages Amended array of post updated messages.
59
+ */
60
+ public function update_messages( $messages ) {
61
+
62
+ global $post;
63
+
64
+ // Add our album messages
65
+ $messages[FOOGALLERY_CPT_ALBUM] = apply_filters( 'foogallery_album_posttype_update_messages',
66
+ array(
67
+ 0 => '',
68
+ 1 => __( 'Album updated.', 'foogallery' ),
69
+ 2 => __( 'Album custom field updated.', 'foogallery' ),
70
+ 3 => __( 'Album custom field deleted.', 'foogallery' ),
71
+ 4 => __( 'Album updated.', 'foogallery' ),
72
+ 5 => isset($_GET['revision']) ? sprintf( __( 'Album restored to revision from %s.', 'foogallery' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
73
+ 6 => __( 'Album published.', 'foogallery' ),
74
+ 7 => __( 'Album saved.', 'foogallery' ),
75
+ 8 => __( 'Album submitted.', 'foogallery' ),
76
+ 9 => sprintf( __( 'Album scheduled for: <strong>%1$s</strong>.', 'foogallery' ), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ) ),
77
+ 10 => __( 'Album draft updated.', 'foogallery' )
78
+ )
79
+ );
80
+
81
+ return $messages;
82
+
83
+ }
84
+
85
+ /**
86
+ * Customize the bulk update messages for a album
87
+ *
88
+ * @param array $bulk_messages Array of default bulk updated messages.
89
+ * @param array $bulk_counts Array containing count of posts involved in the action.
90
+ *
91
+ * @return array mixed Amended array of bulk updated messages.
92
+ */
93
+ function update_bulk_messages( $bulk_messages, $bulk_counts ) {
94
+
95
+ $bulk_messages[FOOGALLERY_CPT_ALBUM] = apply_filters( 'foogallery_album_posttype_bulk_update_messages',
96
+ array(
97
+ 'updated' => _n( '%s Album updated.', '%s Albums updated.', $bulk_counts['updated'], 'foogallery' ),
98
+ 'locked' => _n( '%s Album not updated, somebody is editing it.', '%s Albums not updated, somebody is editing them.', $bulk_counts['locked'], 'foogallery' ),
99
+ 'deleted' => _n( '%s Album permanently deleted.', '%s Albums permanently deleted.', $bulk_counts['deleted'], 'foogallery' ),
100
+ 'trashed' => _n( '%s Album moved to the Trash.', '%s Albums moved to the Trash.', $bulk_counts['trashed'], 'foogallery' ),
101
+ 'untrashed' => _n( '%s Album restored from the Trash.', '%s Albums restored from the Trash.', $bulk_counts['untrashed'], 'foogallery' ),
102
+ )
103
+ );
104
+
105
+ return $bulk_messages;
106
+ }
107
+ }
108
+ }
extensions/albums/css/admin-foogallery-album.css CHANGED
@@ -1,273 +1,273 @@
1
-
2
- .foogallery-shortcode {
3
- text-align: center;
4
- }
5
-
6
- .foogallery-shortcode input {
7
- cursor: pointer;
8
- text-align: center;
9
- padding: 10px;
10
- font-family: "courier new", courier;
11
- border: none;
12
- box-shadow: none;
13
- background: #efefef;
14
- }
15
-
16
- .wp-list-table .foogallery-shortcode {
17
- cursor: pointer;
18
- font-size: 1em;
19
- border: none;
20
- box-shadow: none;
21
- background: #efefef;
22
- font-family: "courier new", courier;
23
- }
24
-
25
- .foogallery-shortcode-message {
26
- font-style: italic;
27
- color: #2EA2CC !important;
28
- }
29
-
30
- .foogallery-album-gallery-list .attachment.placeholder {
31
- position: relative;
32
- z-index: 10;
33
- float: left;
34
- margin: 10px 15px 15px 10px !important;
35
- width: 164px;
36
- height: 164px;
37
- border: #1e8cbe 1px dashed;
38
- background: #eee;
39
- }
40
-
41
- .foogallery-album-gallery-list .foogallery-pile.ui-sortable-helper {
42
- opacity: 0.5;
43
- }
44
-
45
- .foogallery-album-gallery-list .foogallery-pile.ui-sortable-helper:hover .close {
46
- display: none;
47
- }
48
-
49
- .foogallery_template_field td {
50
- padding-bottom: 20px;
51
- }
52
-
53
- .foogallery_template_field th {
54
- vertical-align: top;
55
- text-align: left;
56
- padding-top: 0.3em;
57
- padding-right: 10px;
58
- }
59
-
60
- .foogallery_metabox_field-icon label {
61
- display:inline-block;
62
- margin-right:10px;
63
- border:solid 3px transparent;
64
- background:#aaa;
65
- border-radius: 3px;
66
- -moz-border-radius: 3px;
67
- -webkit-border-radius: 3px;
68
- padding:5px;
69
- line-height: 0;
70
- }
71
-
72
- .foogallery_metabox_field-icon input:checked + label {
73
- border:solid 3px #444;
74
- background: #888;
75
- }
76
-
77
- .foogallery_metabox_field-icon label:hover {
78
- border:solid 3px #444;
79
- }
80
-
81
- .foogallery_metabox_field-thumb_size label {
82
- vertical-align: baseline;
83
- }
84
-
85
- .foogallery_metabox_field-thumb_size input[type="number"] {
86
- margin-right: 10px;
87
- }
88
-
89
- .foogallery_template_field h4 {
90
- font-size: 1.2em;
91
- border-bottom: solid 1px #EEE;
92
- padding-bottom: 5px;
93
- margin: 0;
94
- }
95
-
96
- .foogallery_metabox_field-number input[type="number"] {
97
- width: 10em;
98
- }
99
-
100
- .foogallery_metabox_custom_css {
101
- width: 100%;
102
- height: 10em;
103
- }
104
-
105
- .foogallery_metabox_field-radio > input, .foogallery_metabox_field-radio > label {
106
- margin-bottom: 10px;
107
- display: inline-block;
108
- }
109
-
110
- .foogallery_template_field th {
111
- width: 180px;
112
- }
113
-
114
- .foogallery-help {
115
- position: relative;
116
- display: block;
117
- line-height: 19px;
118
- padding: 11px 15px 11px 40px;
119
- font-size: 14px;
120
- text-align: left;
121
- margin: 5px 0 20px 2px;
122
- background-color: #F4F4FF;
123
- border-left: 4px solid #1e8cbe;
124
- -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
125
- box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
126
- }
127
-
128
- .foogallery-help:before {
129
- content: "\f223";
130
- font: 400 30px/1 dashicons !important;
131
- speak: none;
132
- color: #1e8cbe;
133
- display: inline-block;
134
- -webkit-font-smoothing: antialiased;
135
- -moz-osx-font-smoothing: grayscale;
136
- vertical-align: bottom;
137
- position: absolute;
138
- left: 5px;
139
- height: 100%;
140
- margin-top: -15px;
141
- top: 50%;
142
- }
143
-
144
- .foogallery-album-error {
145
- padding: 11px 15px;
146
- font-size: 14px;
147
- text-align: left;
148
- border-left: 4px solid #dc3232;
149
- -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
150
- box-shadow: 1px 1px 1px 1px rgba(0,0,0,.1);
151
- }
152
-
153
- .foogallery-album-gallery-list a.info {
154
- display: none;
155
- position: absolute;
156
- padding: 0;
157
- font-size: 20px;
158
- line-height: 20px;
159
- text-align: center;
160
- text-decoration: none;
161
- background-color: #444;
162
- border-radius: 50%;
163
- color: #fff;
164
- top: 5px;
165
- left: 5px;
166
- }
167
-
168
- .foogallery-album-gallery-list .foogallery-gallery-select:hover a.info {
169
- display: block;
170
- }
171
-
172
- .foogallery-album-info-modal {
173
- display: none;
174
- top: 20%;
175
- bottom: 20%;
176
- left: 30%;
177
- right: 30%;
178
- }
179
-
180
- .foogallery-album-info-modal .media-frame-title {
181
- left:0;
182
- }
183
-
184
- .foogallery-album-info-modal .media-frame-title h1 {
185
- float: left;
186
- }
187
-
188
- .foogallery-album-info-modal .media-frame-title .spinner {
189
- float:left;
190
- margin: 15px 0;
191
- }
192
-
193
- .foogallery-album-info-modal .close {
194
- position: absolute;
195
- top: 20px;
196
- right: 20px;
197
- cursor: pointer;
198
- font-size: 20px;
199
- }
200
-
201
- .foogallery-album-info-modal .modal-content {
202
- position: absolute;
203
- top: 50px;
204
- left: 0;
205
- right: 0;
206
- bottom: 61px;
207
- height: auto;
208
- width: auto;
209
- margin: 0;
210
- overflow: auto;
211
- background: #fff;
212
- border-top: 1px solid #ddd;
213
- border-bottom: 1px solid #ddd;
214
- padding: 20px;
215
- min-width: 400px;
216
- }
217
-
218
- .foogallery-album-info-modal .gallery-details,
219
- .foogallery-album-info-modal .gallery-details table {
220
- width: 100%;
221
- }
222
-
223
- .foogallery-album-info-modal .gallery-details th {
224
- vertical-align: top;
225
- }
226
-
227
- .foogallery-album-info-modal .gallery-details th label {
228
- box-sizing: border-box;
229
- float: right;
230
- padding: 6px 0px;
231
- margin-right: 20px;
232
- font-weight: normal;
233
- }
234
-
235
- .foogallery-album-info-modal .gallery-details td input,
236
- .foogallery-album-info-modal .gallery-details td textarea,
237
- .foogallery-album-info-modal .gallery-details td select {
238
- width: 100%;
239
- }
240
-
241
- .foogallery-album-info-modal .gallery-details td select {
242
- line-height: inherit;
243
- padding: 6px 8px;
244
- height: inherit;
245
- }
246
-
247
- .foogallery-album-info-modal .gallery-details td .help {
248
- margin-top: 0;
249
- font-size: 0.8em;
250
- }
251
-
252
- .foogallery-album-info-modal .media-toolbar .spinner {
253
- margin-top: 20px;
254
- margin-right: 0;
255
- }
256
-
257
- .foogallery-album-info-modal .media-frame-toolbar {
258
- left: 0;
259
- }
260
-
261
- .foogallery-album-info-modal .media-frame-toolbar .media-toolbar-secondary {
262
- line-height: 60px;
263
- font-weight: bold;
264
- }
265
-
266
- .foogallery-album-info-modal-backdrop {
267
- display: none;
268
- }
269
-
270
- .spacer {
271
- display: inline-block;
272
- width:30px;
273
  }
1
+
2
+ .foogallery-shortcode {
3
+ text-align: center;
4
+ }
5
+
6
+ .foogallery-shortcode input {
7
+ cursor: pointer;
8
+ text-align: center;
9
+ padding: 10px;
10
+ font-family: "courier new", courier;
11
+ border: none;
12
+ box-shadow: none;
13
+ background: #efefef;
14
+ }
15
+
16
+ .wp-list-table .foogallery-shortcode {
17
+ cursor: pointer;
18
+ font-size: 1em;
19
+ border: none;
20
+ box-shadow: none;
21
+ background: #efefef;
22
+ font-family: "courier new", courier;
23
+ }
24
+
25
+ .foogallery-shortcode-message {
26
+ font-style: italic;
27
+ color: #2EA2CC !important;
28
+ }
29
+
30
+ .foogallery-album-gallery-list .attachment.placeholder {
31
+ position: relative;
32
+ z-index: 10;
33
+ float: left;
34
+ margin: 10px 15px 15px 10px !important;
35
+ width: 164px;
36
+ height: 164px;
37
+ border: #1e8cbe 1px dashed;
38
+ background: #eee;
39
+ }
40
+
41
+ .foogallery-album-gallery-list .foogallery-pile.ui-sortable-helper {
42
+ opacity: 0.5;
43
+ }
44
+
45
+ .foogallery-album-gallery-list .foogallery-pile.ui-sortable-helper:hover .close {
46
+ display: none;
47
+ }
48
+
49
+ .foogallery_template_field td {
50
+ padding-bottom: 20px;
51
+ }
52
+
53
+ .foogallery_template_field th {
54
+ vertical-align: top;
55
+ text-align: left;
56
+ padding-top: 0.3em;
57
+ padding-right: 10px;
58
+ }
59
+
60
+ .foogallery_metabox_field-icon label {
61
+ display:inline-block;
62
+ margin-right:10px;
63
+ border:solid 3px transparent;
64
+ background:#aaa;
65
+ border-radius: 3px;
66
+ -moz-border-radius: 3px;
67
+ -webkit-border-radius: 3px;
68
+ padding:5px;
69
+ line-height: 0;
70
+ }
71
+
72
+ .foogallery_metabox_field-icon input:checked + label {
73
+ border:solid 3px #444;
74
+ background: #888;
75
+ }
76
+
77
+ .foogallery_metabox_field-icon label:hover {
78
+ border:solid 3px #444;
79
+ }
80
+
81
+ .foogallery_metabox_field-thumb_size label {
82
+ vertical-align: baseline;
83
+ }
84
+
85
+ .foogallery_metabox_field-thumb_size input[type="number"] {
86
+ margin-right: 10px;
87
+ }
88
+
89
+ .foogallery_template_field h4 {
90
+ font-size: 1.2em;
91
+ border-bottom: solid 1px #EEE;
92
+ padding-bottom: 5px;
93
+ margin: 0;
94
+ }
95
+
96
+ .foogallery_metabox_field-number input[type="number"] {
97
+ width: 10em;
98
+ }
99
+
100
+ .foogallery_metabox_custom_css {
101
+ width: 100%;
102
+ height: 10em;
103
+ }
104
+
105
+ .foogallery_metabox_field-radio > input, .foogallery_metabox_field-radio > label {
106
+ margin-bottom: 10px;
107
+ display: inline-block;
108
+ }
109
+
110
+ .foogallery_template_field th {
111
+ width: 180px;
112
+ }
113
+
114
+ .foogallery-help {
115
+ position: relative;
116
+ display: block;
117
+ line-height: 19px;
118
+ padding: 11px 15px 11px 40px;
119
+ font-size: 14px;
120
+ text-align: left;
121
+ margin: 5px 0 20px 2px;
122
+ background-color: #F4F4FF;
123
+ border-left: 4px solid #1e8cbe;
124
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
125
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
126
+ }
127
+
128
+ .foogallery-help:before {
129
+ content: "\f223";
130
+ font: 400 30px/1 dashicons !important;
131
+ speak: none;
132
+ color: #1e8cbe;
133
+ display: inline-block;
134
+ -webkit-font-smoothing: antialiased;
135
+ -moz-osx-font-smoothing: grayscale;
136
+ vertical-align: bottom;
137
+ position: absolute;
138
+ left: 5px;
139
+ height: 100%;
140
+ margin-top: -15px;
141
+ top: 50%;
142
+ }
143
+
144
+ .foogallery-album-error {
145
+ padding: 11px 15px;
146
+ font-size: 14px;
147
+ text-align: left;
148
+ border-left: 4px solid #dc3232;
149
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
150
+ box-shadow: 1px 1px 1px 1px rgba(0,0,0,.1);
151
+ }
152
+
153
+ .foogallery-album-gallery-list a.info {
154
+ display: none;
155
+ position: absolute;
156
+ padding: 0;
157
+ font-size: 20px;
158
+ line-height: 20px;
159
+ text-align: center;
160
+ text-decoration: none;
161
+ background-color: #444;
162
+ border-radius: 50%;
163
+ color: #fff;
164
+ top: 5px;
165
+ left: 5px;
166
+ }
167
+
168
+ .foogallery-album-gallery-list .foogallery-gallery-select:hover a.info {
169
+ display: block;
170
+ }
171
+
172
+ .foogallery-album-info-modal {
173
+ display: none;
174
+ top: 20%;
175
+ bottom: 20%;
176
+ left: 30%;
177
+ right: 30%;
178
+ }
179
+
180
+ .foogallery-album-info-modal .media-frame-title {
181
+ left:0;
182
+ }
183
+
184
+ .foogallery-album-info-modal .media-frame-title h1 {
185
+ float: left;
186
+ }
187
+
188
+ .foogallery-album-info-modal .media-frame-title .spinner {
189
+ float:left;
190
+ margin: 15px 0;
191
+ }
192
+
193
+ .foogallery-album-info-modal .close {
194
+ position: absolute;
195
+ top: 20px;
196
+ right: 20px;
197
+ cursor: pointer;
198
+ font-size: 20px;
199
+ }
200
+
201
+ .foogallery-album-info-modal .modal-content {
202
+ position: absolute;
203
+ top: 50px;
204
+ left: 0;
205
+ right: 0;
206
+ bottom: 61px;
207
+ height: auto;
208
+ width: auto;
209
+ margin: 0;
210
+ overflow: auto;
211
+ background: #fff;
212
+ border-top: 1px solid #ddd;
213
+ border-bottom: 1px solid #ddd;
214
+ padding: 20px;
215
+ min-width: 400px;
216
+ }
217
+
218
+ .foogallery-album-info-modal .gallery-details,
219
+ .foogallery-album-info-modal .gallery-details table {
220
+ width: 100%;
221
+ }
222
+
223
+ .foogallery-album-info-modal .gallery-details th {
224
+ vertical-align: top;
225
+ }
226
+
227
+ .foogallery-album-info-modal .gallery-details th label {
228
+ box-sizing: border-box;
229
+ float: right;
230
+ padding: 6px 0px;
231
+ margin-right: 20px;
232
+ font-weight: normal;
233
+ }
234
+
235
+ .foogallery-album-info-modal .gallery-details td input,
236
+ .foogallery-album-info-modal .gallery-details td textarea,
237
+ .foogallery-album-info-modal .gallery-details td select {
238
+ width: 100%;
239
+ }
240
+
241
+ .foogallery-album-info-modal .gallery-details td select {
242
+ line-height: inherit;
243
+ padding: 6px 8px;
244
+ height: inherit;
245
+ }
246
+
247
+ .foogallery-album-info-modal .gallery-details td .help {
248
+ margin-top: 0;
249
+ font-size: 0.8em;
250
+ }
251
+
252
+ .foogallery-album-info-modal .media-toolbar .spinner {
253
+ margin-top: 20px;
254
+ margin-right: 0;
255
+ }
256
+
257
+ .foogallery-album-info-modal .media-frame-toolbar {
258
+ left: 0;
259
+ }
260
+
261
+ .foogallery-album-info-modal .media-frame-toolbar .media-toolbar-secondary {
262
+ line-height: 60px;
263
+ font-weight: bold;
264
+ }
265
+
266
+ .foogallery-album-info-modal-backdrop {
267
+ display: none;
268
+ }
269
+
270
+ .spacer {
271
+ display: inline-block;
272
+ width:30px;
273
  }
extensions/albums/css/album-default.css CHANGED
@@ -1,103 +1,103 @@
1
- .foogallery-album-gallery-list {
2
- list-style: none !important;
3
- padding: 0 !important;
4
- }
5
-
6
- .foogallery-album-gallery-list li {
7
- list-style-type: none !important;
8
- display: inline-block;
9
- }
10
-
11
- .foogallery-album-gallery-list .foogallery-pile {
12
- position: relative;
13
- z-index: 10;
14
- float: left;
15
- margin: 10px 15px 15px 10px !important;
16
- }
17
-
18
- /* Stacks created by the use of generated content */
19
- .foogallery-album-gallery-list .foogallery-pile:before,
20
- .foogallery-album-gallery-list .foogallery-pile:after {
21
- content: "";
22
- width: 100%;
23
- height: 100%;
24
- position: absolute;
25
- border: 8px solid #fff;
26
- left: 0;
27
- -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
28
- -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
29
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
30
- -webkit-box-sizing: border-box;
31
- -moz-box-sizing: border-box;
32
- box-sizing: border-box;
33
- }
34
- /* 1st element in stack (behind image) */
35
- .foogallery-album-gallery-list .foogallery-pile:before {
36
- top: -3px; z-index: -10;
37
- -webkit-transform: rotate(2deg);
38
- -moz-transform: rotate(2deg);
39
- transform: rotate(2deg);
40
- }
41
- /* 2nd element in stack (behind image) */
42
- .foogallery-album-gallery-list .foogallery-pile:after {
43
- top: -2px; z-index: -20;
44
- -webkit-transform: rotate(-2deg);
45
- -moz-transform: rotate(-2deg);
46
- transform: rotate(-2deg);
47
- }
48
-
49
- .foogallery-album-gallery-list .foogallery-pile .foogallery-pile-inner {
50
- border: 8px solid #fff;
51
- -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
52
- -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
53
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
54
- overflow: hidden;
55
- line-height: 0;
56
- }
57
-
58
- .foogallery-album-gallery-list .foogallery-pile .foogallery-pile-inner a {
59
- display: inline-block;
60
- }
61
-
62
- .foogallery-album-gallery-list .foogallery-pile img {
63
- }
64
-
65
- .foogallery-album-gallery-list .foogallery-pile h3 {
66
- background: #FFF;
67
- position: absolute;
68
- display: block;
69
- bottom: 0px;
70
- padding: 5px 5px 0 5px;
71
- width: 100%;
72
- box-sizing: border-box;
73
- margin: 0;
74
- opacity: 0.6;
75
- line-height: 1em;
76
- }
77
-
78
- .foogallery-album-gallery-list .foogallery-pile h3 span {
79
- display: block;
80
- font-size: 0.6em;
81
- }
82
-
83
- .foogallery-album-gallery-list .foogallery-pile a {
84
- position: relative;
85
- }
86
-
87
- .foogallery-album-gallery-list.alignment-left {
88
- text-align: left;
89
- }
90
-
91
- .foogallery-album-gallery-list.alignment-center {
92
- text-align: center;
93
- }
94
-
95
- .foogallery-album-gallery-list.alignment-right {
96
- text-align: right;
97
- }
98
-
99
- /* force no borders */
100
- .foogallery-album-gallery-list .foogallery-pile a,
101
- .foogallery-album-gallery-list .foogallery-pile a:hover {
102
- border: none !important;
103
  }
1
+ .foogallery-album-gallery-list {
2
+ list-style: none !important;
3
+ padding: 0 !important;
4
+ }
5
+
6
+ .foogallery-album-gallery-list li {
7
+ list-style-type: none !important;
8
+ display: inline-block;
9
+ }
10
+
11
+ .foogallery-album-gallery-list .foogallery-pile {
12
+ position: relative;
13
+ z-index: 10;
14
+ float: left;
15
+ margin: 10px 15px 15px 10px !important;
16
+ }
17
+
18
+ /* Stacks created by the use of generated content */
19
+ .foogallery-album-gallery-list .foogallery-pile:before,
20
+ .foogallery-album-gallery-list .foogallery-pile:after {
21
+ content: "";
22
+ width: 100%;
23
+ height: 100%;
24
+ position: absolute;
25
+ border: 8px solid #fff;
26
+ left: 0;
27
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
28
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
29
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
30
+ -webkit-box-sizing: border-box;
31
+ -moz-box-sizing: border-box;
32
+ box-sizing: border-box;
33
+ }
34
+ /* 1st element in stack (behind image) */
35
+ .foogallery-album-gallery-list .foogallery-pile:before {
36
+ top: -3px; z-index: -10;
37
+ -webkit-transform: rotate(2deg);
38
+ -moz-transform: rotate(2deg);
39
+ transform: rotate(2deg);
40
+ }
41
+ /* 2nd element in stack (behind image) */
42
+ .foogallery-album-gallery-list .foogallery-pile:after {
43
+ top: -2px; z-index: -20;
44
+ -webkit-transform: rotate(-2deg);
45
+ -moz-transform: rotate(-2deg);
46
+ transform: rotate(-2deg);
47
+ }
48
+
49
+ .foogallery-album-gallery-list .foogallery-pile .foogallery-pile-inner {
50
+ border: 8px solid #fff;
51
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
52
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
53
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
54
+ overflow: hidden;
55
+ line-height: 0;
56
+ }
57
+
58
+ .foogallery-album-gallery-list .foogallery-pile .foogallery-pile-inner a {
59
+ display: inline-block;
60
+ }
61
+
62
+ .foogallery-album-gallery-list .foogallery-pile img {
63
+ }
64
+
65
+ .foogallery-album-gallery-list .foogallery-pile h3 {
66
+ background: #FFF;
67
+ position: absolute;
68
+ display: block;
69
+ bottom: 0px;
70
+ padding: 5px 5px 0 5px;
71
+ width: 100%;
72
+ box-sizing: border-box;
73
+ margin: 0;
74
+ opacity: 0.6;
75
+ line-height: 1em;
76
+ }
77
+
78
+ .foogallery-album-gallery-list .foogallery-pile h3 span {
79
+ display: block;
80
+ font-size: 0.6em;
81
+ }
82
+
83
+ .foogallery-album-gallery-list .foogallery-pile a {
84
+ position: relative;
85
+ }
86
+
87
+ .foogallery-album-gallery-list.alignment-left {
88
+ text-align: left;
89
+ }
90
+
91
+ .foogallery-album-gallery-list.alignment-center {
92
+ text-align: center;
93
+ }
94
+
95
+ .foogallery-album-gallery-list.alignment-right {
96
+ text-align: right;
97
+ }
98
+
99
+ /* force no borders */
100
+ .foogallery-album-gallery-list .foogallery-pile a,
101
+ .foogallery-album-gallery-list .foogallery-pile a:hover {
102
+ border: none !important;
103
  }
extensions/albums/css/album-stack.css CHANGED
@@ -1,290 +1,290 @@
1
- .tp-grid {
2
- list-style-type: none;
3
- position: relative;
4
- display: block;
5
- }
6
-
7
- .tp-grid li {
8
- position: absolute;
9
- cursor: pointer;
10
- border: 10px solid #fff;
11
- box-shadow: 0 2px 3px rgba(0,0,0,0.2);
12
- display: none;
13
- overflow: hidden;
14
- -webkit-backface-visibility: hidden;
15
- -moz-backface-visibility: hidden;
16
- -o-backface-visibility: hidden;
17
- -ms-backface-visibility: hidden;
18
- backface-visibility: hidden;
19
- }
20
-
21
- .no-js .tp-grid li {
22
- position: relative;
23
- display: inline-block;
24
- }
25
-
26
- .tp-grid li a {
27
- display: block;
28
- outline: none;
29
- }
30
-
31
- .tp-grid li img {
32
- display: block;
33
- border: none;
34
- }
35
-
36
- .tp-info,
37
- .tp-title {
38
- position: absolute;
39
- background: #fff;
40
- line-height: 20px;
41
- color: #333;
42
- top: 40%;
43
- width: 75%;
44
- padding: 10px;
45
- font-weight: 700;
46
- text-align: right;
47
- left: -100%;
48
- box-shadow:
49
- 1px 1px 1px rgba(0,0,0,0.1),
50
- 5px 0 5px -3px rgba(0,0,0,0.4),
51
- inset 0 0 5px rgba(0,0,0,0.04);
52
- }
53
-
54
- .tp-title-cover {
55
- position: absolute;
56
- top: 0;
57
- bottom: 0;
58
- left: 0;
59
- right: 0;
60
- }
61
-
62
- .tp-open .tp-title-cover {
63
- display: none;
64
- }
65
-
66
- .touch .tp-info {
67
- left: 0px;
68
- }
69
-
70
- .no-touch .tp-info {
71
- -webkit-transition: all 0.3s ease-in-out;
72
- -moz-transition: all 0.3s ease-in-out;
73
- -o-transition: all 0.3s ease-in-out;
74
- -ms-transition: all 0.3s ease-in-out;
75
- transition: all 0.3s ease-in-out;
76
- }
77
-
78
- .no-touch .tp-grid li:hover .tp-info {
79
- -webkit-transition-delay: 150ms;
80
- -moz-transition-delay: 150ms;
81
- -o-transition-delay: 150ms;
82
- -ms-transition-delay: 150ms;
83
- transition-delay: 150ms;
84
- }
85
-
86
- .no-touch .tp-open li:hover .tp-info {
87
- left: 0px;
88
- }
89
-
90
- .tp-title {
91
- padding: 10px 35px 10px 10px;
92
- left: 0px;
93
- }
94
-
95
- .tp-title span:nth-child(2){
96
- color: #aaa;
97
- padding: 0 5px;
98
- background: #F7F7F7;
99
- right: 0px;
100
- height: 100%;
101
- line-height: 40px;
102
- top: 0px;
103
- position: absolute;
104
- display: block;
105
- }
106
-
107
- .foogallery-stack-album * {
108
- box-sizing: border-box;
109
- }
110
-
111
- .foogallery-stack-album .topbar {
112
- position: relative;
113
- padding: 10px 0;
114
- margin: 0 0 20px;
115
- box-shadow: 0 1px 0 #aaa, 0 -1px 0 #aaa;
116
- }
117
-
118
- .foogallery-stack-album .back {
119
- width: 40px;
120
- height: 40px;
121
- position: absolute;
122
- left: 50%;
123
- top: 50%;
124
- margin: -20px 0 0 -20px;
125
- border-radius: 50%;
126
- text-align: center;
127
- line-height: 38px;
128
- color: #999;
129
- background: #ddd;
130
- background: rgba(200,200,200,0.5);
131
- cursor: pointer;
132
- display: none;
133
- -webkit-touch-callout: none;
134
- -webkit-user-select: none;
135
- -khtml-user-select: none;
136
- -moz-user-select: none;
137
- -ms-user-select: none;
138
- user-select: none;
139
- }
140
-
141
- .no-touch .foogallery-stack-album .back:hover {
142
- background: #666;
143
- background: rgba(100,100,100,0.5);
144
- color: #fff;
145
- }
146
-
147
- .foogallery-stack-album .topbar h2,
148
- .foogallery-stack-album .topbar h3 {
149
- display: inline-block;
150
- width: 49%;
151
- margin: 0;
152
- }
153
-
154
- .foogallery-stack-album .topbar h2 {
155
- padding-right: 20px;
156
- }
157
-
158
- .foogallery-stack-album .topbar h3 {
159
- text-align: right;
160
- padding-left: 20px;
161
- }
162
-
163
- /* Loader */
164
-
165
- .foogallery-stack-album .loader {
166
- left: 50%;
167
- position: absolute;
168
- margin-left: -120px;
169
- }
170
-
171
- .foogallery-stack-album .loader i {
172
- display: inline-block;
173
- width: 40px;
174
- height: 40px;
175
- -webkit-animation: loading 1s linear infinite forwards;
176
- -moz-animation: loading 1s linear infinite forwards;
177
- -o-animation: loading 1s linear infinite forwards;
178
- -ms-animation: loading 1s linear infinite forwards;
179
- animation: loading 1s linear infinite forwards;
180
- }
181
-
182
- .foogallery-stack-album .loader i:nth-child(2){
183
- -webkit-animation-delay: 0.1s;
184
- -moz-animation-delay: 0.1s;
185
- -o-animation-delay: 0.1s;
186
- -ms-animation-delay: 0.1s;
187
- animation-delay: 0.1s;
188
- }
189
-
190
- .foogallery-stack-album .loader i:nth-child(3){
191
- -webkit-animation-delay: 0.2s;
192
- -moz-animation-delay: 0.2s;
193
- -o-animation-delay: 0.2s;
194
- -ms-animation-delay: 0.2s;
195
- animation-delay: 0.2s;
196
- }
197
-
198
- .foogallery-stack-album .loader i:nth-child(4){
199
- -webkit-animation-delay: 0.3s;
200
- -moz-animation-delay: 0.3s;
201
- -o-animation-delay: 0.3s;
202
- -ms-animation-delay: 0.3s;
203
- animation-delay: 0.3s;
204
- }
205
-
206
- .foogallery-stack-album .loader i:nth-child(5){
207
- -webkit-animation-delay: 0.4s;
208
- -moz-animation-delay: 0.4s;
209
- -o-animation-delay: 0.4s;
210
- -ms-animation-delay: 0.4s;
211
- animation-delay: 0.4s;
212
- }
213
-
214
- .foogallery-stack-album .loader i:nth-child(6){
215
- -webkit-animation-delay: 0.5s;
216
- -moz-animation-delay: 0.5s;
217
- -o-animation-delay: 0.5s;
218
- -ms-animation-delay: 0.5s;
219
- animation-delay: 0.5s;
220
- }
221
-
222
- @-webkit-keyframes loading{
223
- 0%{
224
- opacity: 0;
225
- background-color: rgba(255,255,255,0.9);
226
- }
227
-
228
- 100%{
229
- opacity: 1;
230
- -webkit-transform: scale(0.25) rotate(75deg);
231
- background-color: rgba(155,155,155,0.9);
232
- }
233
- }
234
-
235
- @-moz-keyframes loading{
236
- 0%{
237
- opacity: 0;
238
- background-color: rgba(255,255,255,0.9);
239
- }
240
-
241
- 100%{
242
- opacity: 1;
243
- -moz-transform: scale(0.25) rotate(75deg);
244
- background-color: rgba(155,155,155,0.9);
245
- }
246
- }
247
-
248
- @-o-keyframes loading{
249
- 0%{
250
- opacity: 0;
251
- background-color: rgba(255,255,255,0.9);
252
- }
253
-
254
- 100%{
255
- opacity: 1;
256
- -o-transform: scale(0.25) rotate(75deg);
257
- background-color: rgba(155,155,155,0.9);
258
- }
259
- }
260
-
261
- @-ms-keyframes loading{
262
- 0%{
263
- opacity: 0;
264
- background-color: rgba(255,255,255,0.9);
265
- }
266
-
267
- 100%{
268
- opacity: 1;
269
- -ms-transform: scale(0.25) rotate(75deg);
270
- background-color: rgba(155,155,155,0.9);
271
- }
272
- }
273
-
274
- @keyframes loading{
275
- 0%{
276
- opacity: 0;
277
- background-color: rgba(255,255,255,0.9);
278
- }
279
-
280
- 100%{
281
- opacity: 1;
282
- transform: scale(0.25) rotate(75deg);
283
- background-color: rgba(155,155,155,0.9);
284
- }
285
- }
286
-
287
- @media screen and (max-width: 680px){
288
- .foogallery-stack-album .topbar h2, .foogallery-stack-album .topbar h3 { text-align: left; padding: 0; display: block;}
289
- .foogallery-stack-album .back { left: auto; right: 0px; margin-left: 0px;}
290
  }
1
+ .tp-grid {
2
+ list-style-type: none;
3
+ position: relative;
4
+ display: block;
5
+ }
6
+
7
+ .tp-grid li {
8
+ position: absolute;
9
+ cursor: pointer;
10
+ border: 10px solid #fff;
11
+ box-shadow: 0 2px 3px rgba(0,0,0,0.2);
12
+ display: none;
13
+ overflow: hidden;
14
+ -webkit-backface-visibility: hidden;
15
+ -moz-backface-visibility: hidden;
16
+ -o-backface-visibility: hidden;
17
+ -ms-backface-visibility: hidden;
18
+ backface-visibility: hidden;
19
+ }
20
+
21
+ .no-js .tp-grid li {
22
+ position: relative;
23
+ display: inline-block;
24
+ }
25
+
26
+ .tp-grid li a {
27
+ display: block;
28
+ outline: none;
29
+ }
30
+
31
+ .tp-grid li img {
32
+ display: block;
33
+ border: none;
34
+ }
35
+
36
+ .tp-info,
37
+ .tp-title {
38
+ position: absolute;
39
+ background: #fff;
40
+ line-height: 20px;
41
+ color: #333;
42
+ top: 40%;
43
+ width: 75%;
44
+ padding: 10px;
45
+ font-weight: 700;
46
+ text-align: right;
47
+ left: -100%;
48
+ box-shadow:
49
+ 1px 1px 1px rgba(0,0,0,0.1),
50
+ 5px 0 5px -3px rgba(0,0,0,0.4),
51
+ inset 0 0 5px rgba(0,0,0,0.04);
52
+ }
53
+
54
+ .tp-title-cover {
55
+ position: absolute;
56
+ top: 0;
57
+ bottom: 0;
58
+ left: 0;
59
+ right: 0;
60
+ }
61
+
62
+ .tp-open .tp-title-cover {
63
+ display: none;
64
+ }
65
+
66
+ .touch .tp-info {
67
+ left: 0px;
68
+ }
69
+
70
+ .no-touch .tp-info {
71
+ -webkit-transition: all 0.3s ease-in-out;
72
+ -moz-transition: all 0.3s ease-in-out;
73
+ -o-transition: all 0.3s ease-in-out;
74
+ -ms-transition: all 0.3s ease-in-out;
75
+ transition: all 0.3s ease-in-out;
76
+ }
77
+
78
+ .no-touch .tp-grid li:hover .tp-info {
79
+ -webkit-transition-delay: 150ms;
80
+ -moz-transition-delay: 150ms;
81
+ -o-transition-delay: 150ms;
82
+ -ms-transition-delay: 150ms;
83
+ transition-delay: 150ms;
84
+ }
85
+
86
+ .no-touch .tp-open li:hover .tp-info {
87
+ left: 0px;
88
+ }
89
+
90
+ .tp-title {
91
+ padding: 10px 35px 10px 10px;
92
+ left: 0px;
93
+ }
94
+
95
+ .tp-title span:nth-child(2){
96
+ color: #aaa;
97
+ padding: 0 5px;
98
+ background: #F7F7F7;
99
+ right: 0px;
100
+ height: 100%;
101
+ line-height: 40px;
102
+ top: 0px;
103
+ position: absolute;
104
+ display: block;
105
+ }
106
+
107
+ .foogallery-stack-album * {
108
+ box-sizing: border-box;
109
+ }
110
+
111
+ .foogallery-stack-album .topbar {
112
+ position: relative;
113
+ padding: 10px 0;
114
+ margin: 0 0 20px;
115
+ box-shadow: 0 1px 0 #aaa, 0 -1px 0 #aaa;
116
+ }
117
+
118
+ .foogallery-stack-album .back {
119
+ width: 40px;
120
+ height: 40px;
121
+ position: absolute;
122
+ left: 50%;
123
+ top: 50%;
124
+ margin: -20px 0 0 -20px;
125
+ border-radius: 50%;
126
+ text-align: center;
127
+ line-height: 38px;
128
+ color: #999;
129
+ background: #ddd;
130
+ background: rgba(200,200,200,0.5);
131
+ cursor: pointer;
132
+ display: none;
133
+ -webkit-touch-callout: none;
134
+ -webkit-user-select: none;
135
+ -khtml-user-select: none;
136
+ -moz-user-select: none;
137
+ -ms-user-select: none;
138
+ user-select: none;
139
+ }
140
+
141
+ .no-touch .foogallery-stack-album .back:hover {
142
+ background: #666;
143
+ background: rgba(100,100,100,0.5);
144
+ color: #fff;
145
+ }
146
+
147
+ .foogallery-stack-album .topbar h2,
148
+ .foogallery-stack-album .topbar h3 {
149
+ display: inline-block;
150
+ width: 49%;
151
+ margin: 0;
152
+ }
153
+
154
+ .foogallery-stack-album .topbar h2 {
155
+ padding-right: 20px;
156
+ }
157
+
158
+ .foogallery-stack-album .topbar h3 {
159
+ text-align: right;
160
+ padding-left: 20px;
161
+ }
162
+
163
+ /* Loader */
164
+
165
+ .foogallery-stack-album .loader {
166
+ left: 50%;
167
+ position: absolute;
168
+ margin-left: -120px;
169
+ }
170
+
171
+ .foogallery-stack-album .loader i {
172
+ display: inline-block;
173
+ width: 40px;
174
+ height: 40px;
175
+ -webkit-animation: loading 1s linear infinite forwards;
176
+ -moz-animation: loading 1s linear infinite forwards;
177
+ -o-animation: loading 1s linear infinite forwards;
178
+ -ms-animation: loading 1s linear infinite forwards;
179
+ animation: loading 1s linear infinite forwards;
180
+ }
181
+
182
+ .foogallery-stack-album .loader i:nth-child(2){
183
+ -webkit-animation-delay: 0.1s;
184
+ -moz-animation-delay: 0.1s;
185
+ -o-animation-delay: 0.1s;
186
+ -ms-animation-delay: 0.1s;
187
+ animation-delay: 0.1s;
188
+ }
189
+
190
+ .foogallery-stack-album .loader i:nth-child(3){
191
+ -webkit-animation-delay: 0.2s;
192
+ -moz-animation-delay: 0.2s;
193
+ -o-animation-delay: 0.2s;
194
+ -ms-animation-delay: 0.2s;
195
+ animation-delay: 0.2s;
196
+ }
197
+
198
+ .foogallery-stack-album .loader i:nth-child(4){
199
+ -webkit-animation-delay: 0.3s;
200
+ -moz-animation-delay: 0.3s;
201
+ -o-animation-delay: 0.3s;
202
+ -ms-animation-delay: 0.3s;
203
+ animation-delay: 0.3s;
204
+ }
205
+
206
+ .foogallery-stack-album .loader i:nth-child(5){
207
+ -webkit-animation-delay: 0.4s;
208
+ -moz-animation-delay: 0.4s;
209
+ -o-animation-delay: 0.4s;
210
+ -ms-animation-delay: 0.4s;
211
+ animation-delay: 0.4s;
212
+ }
213
+
214
+ .foogallery-stack-album .loader i:nth-child(6){
215
+ -webkit-animation-delay: 0.5s;
216
+ -moz-animation-delay: 0.5s;
217
+ -o-animation-delay: 0.5s;
218
+ -ms-animation-delay: 0.5s;
219
+ animation-delay: 0.5s;
220
+ }
221
+
222
+ @-webkit-keyframes loading{
223
+ 0%{
224
+ opacity: 0;
225
+ background-color: rgba(255,255,255,0.9);
226
+ }
227
+
228
+ 100%{
229
+ opacity: 1;
230
+ -webkit-transform: scale(0.25) rotate(75deg);
231
+ background-color: rgba(155,155,155,0.9);
232
+ }
233
+ }
234
+
235
+ @-moz-keyframes loading{
236
+ 0%{
237
+ opacity: 0;
238
+ background-color: rgba(255,255,255,0.9);
239
+ }
240
+
241
+ 100%{
242
+ opacity: 1;
243
+ -moz-transform: scale(0.25) rotate(75deg);
244
+ background-color: rgba(155,155,155,0.9);
245
+ }
246
+ }
247
+
248
+ @-o-keyframes loading{
249
+ 0%{
250
+ opacity: 0;
251
+ background-color: rgba(255,255,255,0.9);
252
+ }
253
+
254
+ 100%{
255
+ opacity: 1;
256
+ -o-transform: scale(0.25) rotate(75deg);
257
+ background-color: rgba(155,155,155,0.9);
258
+ }
259
+ }
260
+
261
+ @-ms-keyframes loading{
262
+ 0%{
263
+ opacity: 0;
264
+ background-color: rgba(255,255,255,0.9);
265
+ }
266
+
267
+ 100%{
268
+ opacity: 1;
269
+ -ms-transform: scale(0.25) rotate(75deg);
270
+ background-color: rgba(155,155,155,0.9);
271
+ }
272
+ }
273
+
274
+ @keyframes loading{
275
+ 0%{
276
+ opacity: 0;
277
+ background-color: rgba(255,255,255,0.9);
278
+ }
279
+
280
+ 100%{
281
+ opacity: 1;
282
+ transform: scale(0.25) rotate(75deg);
283
+ background-color: rgba(155,155,155,0.9);
284
+ }
285
+ }
286
+
287
+ @media screen and (max-width: 680px){
288
+ .foogallery-stack-album .topbar h2, .foogallery-stack-album .topbar h3 { text-align: left; padding: 0; display: block;}
289
+ .foogallery-stack-album .back { left: auto; right: 0px; margin-left: 0px;}
290
  }
extensions/albums/functions.php CHANGED
@@ -1,391 +1,391 @@
1
- <?php
2
-
3
- /**
4
- * Builds up a FooGallery album shortcode
5
- *
6
- * @param $album_id
7
- *
8
- * @return string
9
- */
10
- function foogallery_build_album_shortcode( $album_id ) {
11
- return '[' . foogallery_album_shortcode_tag() . ' id="' . $album_id . '"]';
12
- }
13
-
14
- /**
15
- * Returns the album shortcode tag
16
- *
17
- * @return string
18
- */
19
- function foogallery_album_shortcode_tag() {
20
- return apply_filters( 'foogallery_album_shortcode_tag', FOOGALLERY_CPT_ALBUM );
21
- }
22
-
23
- /**
24
- * Return all the album templates used within FooGallery
25
- *
26
- * @return array
27
- */
28
- function foogallery_album_templates() {
29
- $album_templates[] = array(
30
- 'slug' => 'default',
31
- 'name' => __( 'Responsive Album Layout', 'foogallery' ),
32
- 'fields' => array(
33
- array(
34
- 'id' => 'thumbnail_dimensions',
35
- 'title' => __( 'Thumbnail Size', 'foogallery' ),
36
- 'desc' => __( 'Choose the size of your gallery thumbnails.', 'foogallery' ),
37
- 'section' => __( 'Thumbnail Settings', 'foogallery' ),
38
- 'type' => 'thumb_size',
39
- 'default' => array(
40
- 'width' => get_option( 'thumbnail_size_w' ),
41
- 'height' => get_option( 'thumbnail_size_h' ),
42
- 'crop' => true,
43
- ),
44
- ),
45
- array(
46
- 'id' => 'title_bg',
47
- 'title' => __( 'Title Background Color', 'foogallery' ),
48
- 'desc' => __( 'The color of the title that overlays the album thumbnails', 'foogallery' ),
49
- 'section' => __( 'Thumbnail Settings', 'foogallery' ),
50
- 'type' => 'colorpicker',
51
- 'default' => '#fff'
52
- ),
53
- array(
54
- 'id' => 'title_font_color',
55
- 'title' => __( 'Title Text Color', 'foogallery' ),
56
- 'desc' => __( 'The color of the title text that overlays the album thumbnails', 'foogallery' ),
57
- 'section' => __( 'Thumbnail Settings', 'foogallery' ),
58
- 'type' => 'colorpicker',
59
- 'default' => '#000000'
60
- ),
61
- array(
62
- 'id' => 'alignment',
63
- 'title' => __( 'Alignment', 'foogallery' ),
64
- 'desc' => __( 'The horizontal alignment of the gallery thumbnails inside the album.', 'foogallery' ),
65
- 'section' => __( 'Thumbnail Settings', 'foogallery' ),
66
- 'default' => 'alignment-left',
67
- 'type' => 'select',
68
- 'choices' => array(
69
- 'alignment-left' => __( 'Left', 'foogallery' ),
70
- 'alignment-center' => __( 'Center', 'foogallery' ),
71
- 'alignment-right' => __( 'Right', 'foogallery' ),
72
- )
73
- ),
74
- array(
75
- 'id' => 'gallery_link',
76
- 'title' => __( 'Gallery Link', 'foogallery' ),
77
- 'section' => __( 'URL Settings', 'foogallery' ),
78
- 'default' => '',
79
- 'type' => 'radio',
80
- 'spacer' => '<span class="spacer"></span>',
81
- 'choices' => array(
82
- '' => __('Default', 'foogallery'),
83
- 'custom_url' => __('Custom URL', 'foogallery')
84
- ),
85
- 'desc' => __( 'You can choose to link each gallery to the default embedded gallery, or you can choose to link to the gallery custom URL (if set).', 'foogallery' ),
86
- ),
87
- array(
88
- 'id' => 'gallery_link_format',
89
- 'title' => __( 'Gallery Link Format', 'foogallery' ),
90
- 'desc' => __( 'The format of the URL for each individual gallery in the album.', 'foogallery' ),
91
- 'section' => __( 'URL Settings', 'foogallery' ),
92
- 'type' => 'radio',
93
- 'choices' => array(
94
- 'default' => __('Pretty, e.g. ', 'foogallery') . '<code>/page-with-album/' . foogallery_album_gallery_url_slug() . '/some-gallery</code>',
95
- 'querystring' => __('Querystring e.g. ', 'foogallery') . '<code>/page-with-album?' . foogallery_album_gallery_url_slug() . '=some-gallery</code>'
96
- ),
97
- 'default' => foogallery_determine_best_link_format_default()
98
- ),
99
- array(
100
- 'id' => 'url_help',
101
- 'title' => __( 'Please Note', 'foogallery' ),
102
- 'section' => __( 'URL Settings', 'foogallery' ),
103
- 'type' => 'help',
104
- 'help' => true,
105
- 'desc' => __( 'If you are getting 404\'s when clicking on the album galleries, then change to the querystring format. To force your rewrite rules to flush, simply deactivate and activate the albums extension again.', 'foogallery' ),
106
- ),
107
- array(
108
- 'id' => 'album_hash',
109
- 'title' => __( 'Remember Scroll Position', 'foogallery' ),
110
- 'desc' => __( 'When a gallery is loaded in your album, the page is refreshed which means the scroll position will be lost .', 'foogallery' ),
111
- 'section' => __( 'URL Settings', 'foogallery' ),
112
- 'type' => 'radio',
113
- 'choices' => array(
114
- 'none' => __('Don\'t Remember', 'foogallery'),
115
- 'remember' => __('Remember Scroll Position', 'foogallery')
116
- ),
117
- 'default' => 'none'
118
- ),
119
- array(
120
- 'id' => 'gallery_title_size',
121
- 'title' => __( 'Gallery Title Size', 'foogallery' ),
122
- 'desc' => __( 'The size of the title when displaying a gallery page.', 'foogallery' ),
123
- 'section' => __( 'Gallery Settings', 'foogallery' ),
124
- 'default' => 'h2',
125
- 'type' => 'select',
126
- 'choices' => array(
127
- 'h2' => __( 'H2', 'foogallery' ),
128
- 'h3' => __( 'H3', 'foogallery' ),
129
- 'h4' => __( 'H4', 'foogallery' ),
130
- 'h5' => __( 'H5', 'foogallery' ),
131
- 'h6' => __( 'H6', 'foogallery' ),
132
- )
133
- ),
134
- )
135
- );
136
-
137
- $album_templates[] = array(
138
- 'slug' => 'stack',
139
- 'name' => __( 'All-In-One Stack Album', 'foogallery' ),
140
- 'fields' => array(
141
- array(
142
- 'id' => 'lightbox',
143
- 'title' => __( 'Lightbox', 'foogallery' ),
144
- 'desc' => __( 'Choose which lightbox you want to use to display images.', 'foogallery' ),
145
- 'type' => 'lightbox',
146
- ),
147
-
148
- array(
149
- 'id' => 'thumbnail_dimensions',
150
- 'title' => __( 'Thumbnail Size', 'foogallery' ),
151
- 'desc' => __( 'Choose the size of your image stack thumbnails.', 'foogallery' ),
152
- 'section' => __( 'Thumbnail Settings', 'foogallery' ),
153
- 'type' => 'thumb_size_no_crop',
154
- 'default' => array(
155
- 'width' => get_option( 'thumbnail_size_w' ),
156
- 'height' => get_option( 'thumbnail_size_h' ),
157
- 'crop' => true,
158
- ),
159
- ),
160
-
161
- array(
162
- 'id' => 'random_angle',
163
- 'title' => __( 'Thumbnail Rotation', 'foogallery' ),
164
- 'section' => __( 'Thumbnail Settings', 'foogallery' ),
165
- 'desc' => __( 'Choose how thumbnails in each gallery are shown when clicking an image stack.', 'foogallery' ),
166
- 'type' => 'radio',
167
- 'default' => 'false',
168
- 'choices' => array(
169
- 'false' => __( 'Normal', 'foogallery' ),
170
- 'true' => __( 'Random Angles', 'foogallery' )
171
- )
172
- ),
173
-
174
- array(
175
- 'id' => 'gutter',
176
- 'title' => __( 'Thumbnail Gutter', 'foogallery' ),
177
- 'section' => __( 'Thumbnail Settings', 'foogallery' ),
178
- 'desc' => __( 'The spacing between each image stack.', 'foogallery' ),
179
- 'type' => 'number',
180
- 'default' => 50
181
- ),
182
-
183
- array(
184
- 'id' => 'pile_angles',
185
- 'title' => __( 'Image Stack Angles', 'foogallery' ),
186
- 'section' => __( 'Thumbnail Settings', 'foogallery' ),
187
- 'desc' => __( 'The angle of the images behind the thumbnail in each image stack.', 'foogallery' ),
188
- 'type' => 'radio',
189
- 'default' => '1',
190
- 'choices' => array(
191
- '1' => __( 'Low', 'foogallery' ),
192
- '2' => __( 'Normal', 'foogallery' ),
193
- '3' => __( 'More Than Normal', 'foogallery' ),
194
- '5' => __( 'High', 'foogallery' ),
195
- )
196
- )
197
- )
198
- );
199
-
200
- return apply_filters( 'foogallery_album_templates', $album_templates );
201
- }
202
-
203
- function foogallery_determine_best_link_format_default() {
204
- global $wp_rewrite;
205
- if ( '' === $wp_rewrite->permalink_structure ) {
206
- //we are using ?page_id
207
- return 'querystring';
208
- }
209
-
210
- //we are using permalinks
211
- return 'default';
212
- }
213
-
214
- /**
215
- * Returns the default album template
216
- *
217
- * @return string
218
- */
219
- function foogallery_default_album_template() {
220
- return foogallery_get_setting( 'album_template' );
221
- }
222
-
223
- /**
224
- * Returns the gallery link url for an album
225
- *
226
- * @param $album FooGalleryAlbum
227
- * @param $gallery FooGallery
228
- *
229
- * @return string
230
- */
231
- function foogallery_album_build_gallery_link( $album, $gallery ) {
232
- //first check if we want to use custom URL's
233
- $gallery_link = $album->get_meta( 'default_gallery_link', '' );
234
-
235
- if ( 'custom_url' === $gallery_link ) {
236
- //check if the gallery has a custom url, and if so, then use it
237
- $url = get_post_meta( $gallery->ID, 'custom_url', true );
238
- }
239
-
240
- if ( empty( $url ) ) {
241
- $slug = foogallery_album_gallery_url_slug();
242
- $format = $album->get_meta( 'default_gallery_link_format', 'default' );
243
-
244
- if ( 'default' === $format && 'default' === foogallery_determine_best_link_format_default() ) {
245
- $url = untrailingslashit( trailingslashit( get_permalink() ) . $slug . '/' . $gallery->slug );
246
- } else {
247
- $url = add_query_arg( $slug, $gallery->slug );
248
- }
249
-
250
- $use_hash = $album->get_meta( 'default_album_hash', 'remember' );
251
-
252
- if ( 'remember' === $use_hash ) {
253
- //add the album hash if required
254
- $url .= '#' . $album->slug;
255
- }
256
- }
257
-
258
- return apply_filters( 'foogallery_album_build_gallery_link', $url );
259
- }
260
-
261
- /**
262
- * Returns the gallery slug used when generating gallery URL's
263
- *
264
- * @return string
265
- */
266
- function foogallery_album_gallery_url_slug() {
267
- $slug = foogallery_get_setting( 'album_gallery_slug', 'gallery' );
268
- return apply_filters( 'foogallery_album_gallery_url_slug', $slug );
269
- }
270
-
271
- /**
272
- * Returns the gallery link target for an album
273
- *
274
- * @param $album FooGalleryAlbum
275
- * @param $gallery FooGallery
276
- *
277
- * @return string
278
- */
279
- function foogallery_album_build_gallery_link_target( $album, $gallery ) {
280
- //first check if we want to use custom URL's
281
- $gallery_link = $album->get_meta( 'default_gallery_link', '' );
282
-
283
- if ( 'custom_url' === $gallery_link ) {
284
- //check if the gallery has a custom target, and if so, then use it
285
- $target = get_post_meta( $gallery->ID, 'custom_target', true );
286
-
287
- //check if the $target is 'default' and set to '_self'
288
- if ( 'default' === $target ) {
289
- $target = '_self';
290
- }
291
- }
292
-
293
- if ( empty( $target ) ) {
294
- $target = '_self';
295
- }
296
-
297
- return apply_filters( 'foogallery_album_build_gallery_link_target', $target );
298
- }
299
-
300
- function foogallery_album_get_current_gallery() {
301
- $slug = foogallery_album_gallery_url_slug();
302
-
303
- $gallery = get_query_var( $slug );
304
-
305
- if ( empty( $gallery ) ) {
306
- $gallery = safe_get_from_request( $slug );
307
- }
308
-
309
- return apply_filters( 'foogallery_album_get_current_gallery', $gallery );
310
- }
311
-
312
- function foogallery_album_remove_gallery_from_link() {
313
- $gallery = foogallery_album_get_current_gallery();
314
- $slug = foogallery_album_gallery_url_slug();
315
-
316
- $url = untrailingslashit( remove_query_arg( $slug ) );
317
-
318
- return str_replace( $slug . '/' . $gallery, '', $url);
319
- }
320
-
321
- /**
322
- * Get a foogallery album template setting for the current foogallery that is being output to the frontend
323
- * @param string $key
324
- * @param string $default
325
- *
326
- * @return bool
327
- */
328
- function foogallery_album_template_setting( $key, $default = '' ) {
329
- global $current_foogallery_album;
330
- global $current_foogallery_album_arguments;
331
- global $current_foogallery_album_template;
332
-
333
- $settings_key = "{$current_foogallery_album_template}_{$key}";
334
-
335
- if ( $current_foogallery_album_arguments && array_key_exists( $key, $current_foogallery_album_arguments ) ) {
336
- //try to get the value from the arguments
337
- $value = $current_foogallery_album_arguments[ $key ];
338
-
339
- } else if ( $current_foogallery_album->settings && array_key_exists( $settings_key, $current_foogallery_album->settings ) ) {
340
- //then get the value out of the saved gallery settings
341
- $value = $current_foogallery_album->settings[ $settings_key ];
342
- } else {
343
- //otherwise set it to the default
344
- $value = $default;
345
- }
346
-
347
- $value = apply_filters( 'foogallery_album_template_setting-' . $key, $value );
348
-
349
- return $value;
350
- }
351
-
352
- /**
353
- * uninstall all albums and setting for albums
354
- */
355
- function foogallery_album_uninstall() {
356
- if ( !current_user_can( 'install_plugins' ) ) exit;
357
-
358
- //delete all albums posts
359
- global $wpdb;
360
- $query = "SELECT p.ID FROM {$wpdb->posts} AS p WHERE p.post_type IN (%s)";
361
- $gallery_post_ids = $wpdb->get_col( $wpdb->prepare( $query, FOOGALLERY_CPT_ALBUM ) );
362
-
363
- if ( !empty( $gallery_post_ids ) ) {
364
- $deleted = 0;
365
- foreach ( $gallery_post_ids as $post_id ) {
366
- $del = wp_delete_post( $post_id );
367
- if ( false !== $del ) {
368
- ++$deleted;
369
- }
370
- }
371
- }
372
- }
373
-
374
- /**
375
- * Render a foogallery album
376
- *
377
- * @param $album_id int The id of the foogallery album you want to render
378
- * @param array $args
379
- */
380
- if (! function_exists( 'foogallery_render_album') ) {
381
- function foogallery_render_album( $album_id, $args = array() ) {
382
- //create new instance of template engine
383
- $engine = new FooGallery_Album_Template_Loader();
384
-
385
- $shortcode_args = wp_parse_args( $args, array(
386
- 'id' => $album_id
387
- ) );
388
-
389
- $engine->render_template( $shortcode_args );
390
- }
391
  }
1
+ <?php
2
+
3
+ /**
4
+ * Builds up a FooGallery album shortcode
5
+ *
6
+ * @param $album_id
7
+ *
8
+ * @return string
9
+ */
10
+ function foogallery_build_album_shortcode( $album_id ) {
11
+ return '[' . foogallery_album_shortcode_tag() . ' id="' . $album_id . '"]';
12
+ }
13
+
14
+ /**
15
+ * Returns the album shortcode tag
16
+ *
17
+ * @return string
18
+ */
19
+ function foogallery_album_shortcode_tag() {
20
+ return apply_filters( 'foogallery_album_shortcode_tag', FOOGALLERY_CPT_ALBUM );
21
+ }
22
+
23
+ /**
24
+ * Return all the album templates used within FooGallery
25
+ *
26
+ * @return array
27
+ */
28
+ function foogallery_album_templates() {
29
+ $album_templates[] = array(
30
+ 'slug' => 'default',
31
+ 'name' => __( 'Responsive Album Layout', 'foogallery' ),
32
+ 'fields' => array(
33
+ array(
34
+ 'id' => 'thumbnail_dimensions',
35
+ 'title' => __( 'Thumbnail Size', 'foogallery' ),
36
+ 'desc' => __( 'Choose the size of your gallery thumbnails.', 'foogallery' ),
37
+ 'section' => __( 'Thumbnail Settings', 'foogallery' ),
38
+ 'type' => 'thumb_size',
39
+ 'default' => array(
40
+ 'width' => get_option( 'thumbnail_size_w' ),
41
+ 'height' => get_option( 'thumbnail_size_h' ),
42
+ 'crop' => true,
43
+ ),
44
+ ),
45
+ array(
46
+ 'id' => 'title_bg',
47
+ 'title' => __( 'Title Background Color', 'foogallery' ),
48
+ 'desc' => __( 'The color of the title that overlays the album thumbnails', 'foogallery' ),
49
+ 'section' => __( 'Thumbnail Settings', 'foogallery' ),
50
+ 'type' => 'colorpicker',
51
+ 'default' => '#fff'
52
+ ),
53
+ array(
54
+ 'id' => 'title_font_color',
55
+ 'title' => __( 'Title Text Color', 'foogallery' ),
56
+ 'desc' => __( 'The color of the title text that overlays the album thumbnails', 'foogallery' ),
57
+ 'section' => __( 'Thumbnail Settings', 'foogallery' ),
58
+ 'type' => 'colorpicker',
59
+ 'default' => '#000000'
60
+ ),
61
+ array(
62
+ 'id' => 'alignment',
63
+ 'title' => __( 'Alignment', 'foogallery' ),
64
+ 'desc' => __( 'The horizontal alignment of the gallery thumbnails inside the album.', 'foogallery' ),
65
+ 'section' => __( 'Thumbnail Settings', 'foogallery' ),
66
+ 'default' => 'alignment-left',
67
+ 'type' => 'select',
68
+ 'choices' => array(
69
+ 'alignment-left' => __( 'Left', 'foogallery' ),
70
+ 'alignment-center' => __( 'Center', 'foogallery' ),
71
+ 'alignment-right' => __( 'Right', 'foogallery' ),
72
+ )
73
+ ),
74
+ array(
75
+ 'id' => 'gallery_link',
76
+ 'title' => __( 'Gallery Link', 'foogallery' ),
77
+ 'section' => __( 'URL Settings', 'foogallery' ),
78
+ 'default' => '',
79
+ 'type' => 'radio',
80
+ 'spacer' => '<span class="spacer"></span>',
81
+ 'choices' => array(
82
+ '' => __('Default', 'foogallery'),
83
+ 'custom_url' => __('Custom URL', 'foogallery')
84
+ ),
85
+ 'desc' => __( 'You can choose to link each gallery to the default embedded gallery, or you can choose to link to the gallery custom URL (if set).', 'foogallery' ),
86
+ ),
87
+ array(
88
+ 'id' => 'gallery_link_format',
89
+ 'title' => __( 'Gallery Link Format', 'foogallery' ),
90
+ 'desc' => __( 'The format of the URL for each individual gallery in the album.', 'foogallery' ),
91
+ 'section' => __( 'URL Settings', 'foogallery' ),
92
+ 'type' => 'radio',
93
+ 'choices' => array(
94
+ 'default' => __('Pretty, e.g. ', 'foogallery') . '<code>/page-with-album/' . foogallery_album_gallery_url_slug() . '/some-gallery</code>',
95
+ 'querystring' => __('Querystring e.g. ', 'foogallery') . '<code>/page-with-album?' . foogallery_album_gallery_url_slug() . '=some-gallery</code>'
96
+ ),
97
+ 'default' => foogallery_determine_best_link_format_default()
98
+ ),
99
+ array(
100
+ 'id' => 'url_help',
101
+ 'title' => __( 'Please Note', 'foogallery' ),
102
+ 'section' => __( 'URL Settings', 'foogallery' ),
103
+ 'type' => 'help',
104
+ 'help' => true,
105
+ 'desc' => __( 'If you are getting 404\'s when clicking on the album galleries, then change to the querystring format. To force your rewrite rules to flush, simply deactivate and activate the albums extension again.', 'foogallery' ),
106
+ ),
107
+ array(
108
+ 'id' => 'album_hash',
109
+ 'title' => __( 'Remember Scroll Position', 'foogallery' ),
110
+ 'desc' => __( 'When a gallery is loaded in your album, the page is refreshed which means the scroll position will be lost .', 'foogallery' ),
111
+ 'section' => __( 'URL Settings', 'foogallery' ),
112
+ 'type' => 'radio',
113
+ 'choices' => array(
114
+ 'none' => __('Don\'t Remember', 'foogallery'),
115
+ 'remember' => __('Remember Scroll Position', 'foogallery')
116
+ ),
117
+ 'default' => 'none'
118
+ ),
119
+ array(
120
+ 'id' => 'gallery_title_size',
121
+ 'title' => __( 'Gallery Title Size', 'foogallery' ),
122
+ 'desc' => __( 'The size of the title when displaying a gallery page.', 'foogallery' ),
123
+ 'section' => __( 'Gallery Settings', 'foogallery' ),
124
+ 'default' => 'h2',
125
+ 'type' => 'select',
126
+ 'choices' => array(
127
+ 'h2' => __( 'H2', 'foogallery' ),
128
+ 'h3' => __( 'H3', 'foogallery' ),
129
+ 'h4' => __( 'H4', 'foogallery' ),
130
+ 'h5' => __( 'H5', 'foogallery' ),
131
+ 'h6' => __( 'H6', 'foogallery' ),
132
+ )
133
+ ),
134
+ )
135
+ );
136
+
137
+ $album_templates[] = array(
138
+ 'slug' => 'stack',
139
+ 'name' => __( 'All-In-One Stack Album', 'foogallery' ),
140
+ 'fields' => array(
141
+ array(
142
+ 'id' => 'lightbox',
143
+ 'title' => __( 'Lightbox', 'foogallery' ),
144
+ 'desc' => __( 'Choose which lightbox you want to use to display images.', 'foogallery' ),
145
+ 'type' => 'lightbox',
146
+ ),
147
+
148
+ array(
149
+ 'id' => 'thumbnail_dimensions',
150
+ 'title' => __( 'Thumbnail Size', 'foogallery' ),
151
+ 'desc' => __( 'Choose the size of your image stack thumbnails.', 'foogallery' ),
152
+ 'section' => __( 'Thumbnail Settings', 'foogallery' ),
153
+ 'type' => 'thumb_size_no_crop',
154
+ 'default' => array(
155
+ 'width' => get_option( 'thumbnail_size_w' ),
156
+ 'height' => get_option( 'thumbnail_size_h' ),
157
+ 'crop' => true,
158
+ ),
159
+ ),
160
+
161
+ array(
162
+ 'id' => 'random_angle',
163
+ 'title' => __( 'Thumbnail Rotation', 'foogallery' ),
164
+ 'section' => __( 'Thumbnail Settings', 'foogallery' ),
165
+ 'desc' => __( 'Choose how thumbnails in each gallery are shown when clicking an image stack.', 'foogallery' ),
166
+ 'type' => 'radio',
167
+ 'default' => 'false',
168
+ 'choices' => array(
169
+ 'false' => __( 'Normal', 'foogallery' ),
170
+ 'true' => __( 'Random Angles', 'foogallery' )
171
+ )
172
+ ),
173
+
174
+ array(
175
+ 'id' => 'gutter',
176
+ 'title' => __( 'Thumbnail Gutter', 'foogallery' ),
177
+ 'section' => __( 'Thumbnail Settings', 'foogallery' ),
178
+ 'desc' => __( 'The spacing between each image stack.', 'foogallery' ),
179
+ 'type' => 'number',
180
+ 'default' => 50
181
+ ),
182
+
183
+ array(
184
+ 'id' => 'pile_angles',
185
+ 'title' => __( 'Image Stack Angles', 'foogallery' ),
186
+ 'section' => __( 'Thumbnail Settings', 'foogallery' ),
187
+ 'desc' => __( 'The angle of the images behind the thumbnail in each image stack.', 'foogallery' ),
188
+ 'type' => 'radio',
189
+ 'default' => '1',
190
+ 'choices' => array(
191
+ '1' => __( 'Low', 'foogallery' ),
192
+ '2' => __( 'Normal', 'foogallery' ),
193
+ '3' => __( 'More Than Normal', 'foogallery' ),
194
+ '5' => __( 'High', 'foogallery' ),
195
+ )
196
+ )
197
+ )
198
+ );
199
+
200
+ return apply_filters( 'foogallery_album_templates', $album_templates );
201
+ }
202
+
203
+ function foogallery_determine_best_link_format_default() {
204
+ global $wp_rewrite;
205
+ if ( '' === $wp_rewrite->permalink_structure ) {
206
+ //we are using ?page_id
207
+ return 'querystring';
208
+ }
209
+
210
+ //we are using permalinks
211
+ return 'default';
212
+ }
213
+
214
+ /**
215
+ * Returns the default album template
216
+ *
217
+ * @return string
218
+ */
219
+ function foogallery_default_album_template() {
220
+ return foogallery_get_setting( 'album_template' );
221
+ }
222
+
223
+ /**
224
+ * Returns the gallery link url for an album
225
+ *
226
+ * @param $album FooGalleryAlbum
227
+ * @param $gallery FooGallery
228
+ *
229
+ * @return string
230
+ */
231
+ function foogallery_album_build_gallery_link( $album, $gallery ) {
232
+ //first check if we want to use custom URL's
233
+ $gallery_link = $album->get_meta( 'default_gallery_link', '' );
234
+
235
+ if ( 'custom_url' === $gallery_link ) {
236
+ //check if the gallery has a custom url, and if so, then use it
237
+ $url = get_post_meta( $gallery->ID, 'custom_url', true );
238
+ }
239
+
240
+ if ( empty( $url ) ) {
241
+ $slug = foogallery_album_gallery_url_slug();
242
+ $format = $album->get_meta( 'default_gallery_link_format', 'default' );
243
+
244
+ if ( 'default' === $format && 'default' === foogallery_determine_best_link_format_default() ) {
245
+ $url = untrailingslashit( trailingslashit( get_permalink() ) . $slug . '/' . $gallery->slug );
246
+ } else {
247
+ $url = add_query_arg( $slug, $gallery->slug );
248
+ }
249
+
250
+ $use_hash = $album->get_meta( 'default_album_hash', 'remember' );
251
+
252
+ if ( 'remember' === $use_hash ) {
253
+ //add the album hash if required
254
+ $url .= '#' . $album->slug;
255
+ }
256
+ }
257
+
258
+ return apply_filters( 'foogallery_album_build_gallery_link', $url );
259
+ }
260
+
261
+ /**
262
+ * Returns the gallery slug used when generating gallery URL's
263
+ *
264
+ * @return string
265
+ */
266
+ function foogallery_album_gallery_url_slug() {
267
+ $slug = foogallery_get_setting( 'album_gallery_slug', 'gallery' );
268
+ return apply_filters( 'foogallery_album_gallery_url_slug', $slug );
269
+ }
270
+
271
+ /**
272
+ * Returns the gallery link target for an album
273
+ *
274
+ * @param $album FooGalleryAlbum
275
+ * @param $gallery FooGallery
276
+ *
277
+ * @return string
278
+ */
279
+ function foogallery_album_build_gallery_link_target( $album, $gallery ) {
280
+ //first check if we want to use custom URL's
281
+ $gallery_link = $album->get_meta( 'default_gallery_link', '' );
282
+
283
+ if ( 'custom_url' === $gallery_link ) {
284
+ //check if the gallery has a custom target, and if so, then use it
285
+ $target = get_post_meta( $gallery->ID, 'custom_target', true );
286
+
287
+ //check if the $target is 'default' and set to '_self'
288
+ if ( 'default' === $target ) {
289
+ $target = '_self';
290
+ }
291
+ }
292
+
293
+ if ( empty( $target ) ) {
294
+ $target = '_self';
295
+ }
296
+
297
+ return apply_filters( 'foogallery_album_build_gallery_link_target', $target );
298
+ }
299
+
300
+ function foogallery_album_get_current_gallery() {
301
+ $slug = foogallery_album_gallery_url_slug();
302
+
303
+ $gallery = get_query_var( $slug );
304
+
305
+ if ( empty( $gallery ) ) {
306
+ $gallery = safe_get_from_request( $slug );
307
+ }
308
+
309
+ return apply_filters( 'foogallery_album_get_current_gallery', $gallery );
310
+ }
311
+
312
+ function foogallery_album_remove_gallery_from_link() {
313
+ $gallery = foogallery_album_get_current_gallery();
314
+ $slug = foogallery_album_gallery_url_slug();
315
+
316
+ $url = untrailingslashit( remove_query_arg( $slug ) );
317
+
318
+ return str_replace( $slug . '/' . $gallery, '', $url);
319
+ }
320
+
321
+ /**
322
+ * Get a foogallery album template setting for the current foogallery that is being output to the frontend
323
+ * @param string $key
324
+ * @param string $default
325
+ *
326
+ * @return bool
327
+ */
328
+ function foogallery_album_template_setting( $key, $default = '' ) {
329
+ global $current_foogallery_album;
330
+ global $current_foogallery_album_arguments;
331
+ global $current_foogallery_album_template;
332
+
333
+ $settings_key = "{$current_foogallery_album_template}_{$key}";
334
+
335
+ if ( $current_foogallery_album_arguments && array_key_exists( $key, $current_foogallery_album_arguments ) ) {
336
+ //try to get the value from the arguments
337
+ $value = $current_foogallery_album_arguments[ $key ];
338
+
339
+ } else if ( $current_foogallery_album->settings && array_key_exists( $settings_key, $current_foogallery_album->settings ) ) {
340
+ //then get the value out of the saved gallery settings
341
+ $value = $current_foogallery_album->settings[ $settings_key ];
342
+ } else {
343
+ //otherwise set it to the default
344
+ $value = $default;
345
+ }
346
+
347
+ $value = apply_filters( 'foogallery_album_template_setting-' . $key, $value );
348
+
349
+ return $value;
350
+ }
351
+
352
+ /**
353
+ * uninstall all albums and setting for albums
354
+ */
355
+ function foogallery_album_uninstall() {
356
+ if ( !current_user_can( 'install_plugins' ) ) exit;
357
+
358
+ //delete all albums posts
359
+ global $wpdb;
360
+ $query = "SELECT p.ID FROM {$wpdb->posts} AS p WHERE p.post_type IN (%s)";
361
+ $gallery_post_ids = $wpdb->get_col( $wpdb->prepare( $query, FOOGALLERY_CPT_ALBUM ) );
362
+
363
+ if ( !empty( $gallery_post_ids ) ) {
364
+ $deleted = 0;
365
+ foreach ( $gallery_post_ids as $post_id ) {
366
+ $del = wp_delete_post( $post_id );
367
+ if ( false !== $del ) {
368
+ ++$deleted;
369
+ }
370
+ }
371
+ }
372
+ }
373
+
374
+ /**
375
+ * Render a foogallery album
376
+ *
377
+ * @param $album_id int The id of the foogallery album you want to render
378
+ * @param array $args
379
+ */
380
+ if (! function_exists( 'foogallery_render_album') ) {
381
+ function foogallery_render_album( $album_id, $args = array() ) {
382
+ //create new instance of template engine
383
+ $engine = new FooGallery_Album_Template_Loader();
384
+
385
+ $shortcode_args = wp_parse_args( $args, array(
386
+ 'id' => $album_id
387
+ ) );
388
+
389
+ $engine->render_template( $shortcode_args );
390
+ }
391
  }
extensions/albums/js/admin-foogallery-album.js CHANGED
@@ -1,149 +1,149 @@
1
- (function(FOOGALLERYALBUM, $, undefined) {
2
-
3
- FOOGALLERYALBUM.bindElements = function() {
4
- $('.foogallery-album-gallery-list')
5
- .on('click', '.foogallery-gallery-select', function(e) {
6
- e.stopPropagation();
7
- $(this).toggleClass('selected');
8
- FOOGALLERYALBUM.changeSelection();
9
- })
10
- .sortable({
11
- items: 'li',
12
- distance: 10,
13
- placeholder: 'attachment placeholder',
14
- stop : function() {
15
- FOOGALLERYALBUM.changeSelection();
16
- }
17
- });
18
-
19
- //init any colorpickers
20
- $('.colorpicker').spectrum({
21
- preferredFormat: "rgb",
22
- showInput: true,
23
- clickoutFiresChange: true
24
- });
25
-
26
- $('.foogallery-album-info-modal').prependTo('body');
27
- };
28
-
29
- FOOGALLERYALBUM.changeSelection = function() {
30
- var ids = '',
31
- none = true;
32
- $('.foogallery-gallery-select.selected').each(function() {
33
- ids += $(this).data('foogallery-id') + ',';
34
- none = false;
35
- });
36
-
37
- if (!none) {
38
- ids = ids.substring(0, ids.length - 1);
39
- }
40
- //build up the list of ids
41
- $('#foogallery_album_galleries').val(ids);
42
- };
43
-
44
- FOOGALLERYALBUM.initSettings = function() {
45
- $('#FooGallerySettings_AlbumTemplate').change(function() {
46
- var $this = $(this),
47
- selectedTemplate = $this.val();
48
-
49
- //hide all template fields
50
- $('.foogallery-album-metabox-settings .foogallery_template_field').not('.foogallery_template_field_selector').hide();
51
-
52
- //show all fields for the selected template only
53
- $('.foogallery-album-metabox-settings .foogallery_template_field-' + selectedTemplate).show();
54
-
55
- //trigger a change so custom template js can do something
56
- FOOGALLERYALBUM.triggerTemplateChangedEvent();
57
- });
58
-
59
- //trigger this onload too!
60
- FOOGALLERYALBUM.triggerTemplateChangedEvent();
61
- };
62
-
63
- FOOGALLERYALBUM.triggerTemplateChangedEvent = function() {
64
- var selectedTemplate = $('#FooGallerySettings_AlbumTemplate').val();
65
- $('body').trigger('foogallery-album-template-changed-' + selectedTemplate );
66
- };
67
-
68
- FOOGALLERYALBUM.initAlbumInfoButtons = function() {
69
- $('.foogallery-album-gallery-list').on('click', 'a.info', function(e) {
70
-
71
- e.preventDefault();
72
-
73
- e.stopPropagation();
74
-
75
- var $this = $(this),
76
- $modal = $('.foogallery-album-info-modal'),
77
- $spinner = $modal.find('.media-frame-title .spinner'),
78
- $nonce = $modal.find('#foogallery_album_gallery_details_nonce'),
79
- $details = $modal.find('.gallery-details'),
80
- data = 'action=foogallery_get_gallery_details' +
81
- '&foogallery_id=' + $this.data('gallery-id') +
82
- '&_wpnonce=' + $nonce.val() +
83
- '&_wp_http_referer=' + encodeURIComponent($('input[name="_wp_http_referer"]').val());
84
-
85
- $details.html( $details.data('loading') + $this.data('gallery-title') + '...' );
86
- $spinner.addClass('is-active');
87
-
88
- $.ajax({
89
- type: "POST",
90
- url: ajaxurl,
91
- data: data,
92
- success: function(data) {
93
- $details.html(data);
94
- },
95
- complete: function() {
96
- $spinner.removeClass('is-active');
97
- }
98
- });
99
-
100
- $modal.show();
101
- $('.media-modal-backdrop').show();
102
- });
103
-
104
- $('.foogallery-album-info-modal .gallery-details-save').on('click', function(e) {
105
- e.preventDefault();
106
-
107
- var $this = $(this),
108
- $modal = $('.foogallery-album-info-modal'),
109
- $spinner = $modal.find('.media-frame-toolbar .spinner'),
110
- $nonce = $modal.find('#foogallery_album_gallery_details_nonce'),
111
- $form = $modal.find('form[name="foogallery_gallery_details"]'),
112
- data = 'action=foogallery_save_gallery_details' +
113
- '&_wpnonce=' + $nonce.val() +
114
- '&_wp_http_referer=' + encodeURIComponent($('input[name="_wp_http_referer"]').val()) +
115
- '& ' + $form.serialize();
116
-
117
- $this.attr('disabled', 'disabled');
118
- $spinner.addClass('is-active');
119
-
120
- $.ajax({
121
- type: "POST",
122
- url: ajaxurl,
123
- data: data,
124
- success: function() {
125
- $('.foogallery-album-info-modal').hide();
126
- $('.media-modal-backdrop').hide();
127
- },
128
- complete: function() {
129
- $spinner.removeClass('is-active');
130
- $this.removeAttr('disabled');
131
- }
132
- });
133
- });
134
-
135
- $('.foogallery-album-info-modal .media-modal-close').on('click', function() {
136
- $('.foogallery-album-info-modal').hide();
137
- $('.media-modal-backdrop').hide();
138
- });
139
- };
140
-
141
- $(function() { //wait for ready
142
- FOOGALLERYALBUM.bindElements();
143
-
144
- FOOGALLERYALBUM.initSettings();
145
-
146
- FOOGALLERYALBUM.initAlbumInfoButtons();
147
- });
148
-
149
  }(window.FOOGALLERYALBUM = window.FOOGALLERYALBUM || {}, jQuery));
1
+ (function(FOOGALLERYALBUM, $, undefined) {
2
+
3
+ FOOGALLERYALBUM.bindElements = function() {
4
+ $('.foogallery-album-gallery-list')
5
+ .on('click', '.foogallery-gallery-select', function(e) {
6
+ e.stopPropagation();
7
+ $(this).toggleClass('selected');
8
+ FOOGALLERYALBUM.changeSelection();
9
+ })
10
+ .sortable({
11
+ items: 'li',
12
+ distance: 10,
13
+ placeholder: 'attachment placeholder',
14
+ stop : function() {
15
+ FOOGALLERYALBUM.changeSelection();
16
+ }
17
+ });
18
+
19
+ //init any colorpickers
20
+ $('.colorpicker').spectrum({
21
+ preferredFormat: "rgb",
22
+ showInput: true,
23
+ clickoutFiresChange: true
24
+ });
25
+
26
+ $('.foogallery-album-info-modal').prependTo('body');
27
+ };
28
+
29
+ FOOGALLERYALBUM.changeSelection = function() {
30
+ var ids = '',
31
+ none = true;
32
+ $('.foogallery-gallery-select.selected').each(function() {
33
+ ids += $(this).data('foogallery-id') + ',';
34
+ none = false;
35
+ });
36
+
37
+ if (!none) {
38
+ ids = ids.substring(0, ids.length - 1);
39
+ }
40
+ //build up the list of ids
41
+ $('#foogallery_album_galleries').val(ids);
42
+ };
43
+
44
+ FOOGALLERYALBUM.initSettings = function() {
45
+ $('#FooGallerySettings_AlbumTemplate').change(function() {
46
+ var $this = $(this),
47
+ selectedTemplate = $this.val();
48
+
49
+ //hide all template fields
50
+ $('.foogallery-album-metabox-settings .foogallery_template_field').not('.foogallery_template_field_selector').hide();
51
+
52
+ //show all fields for the selected template only
53
+ $('.foogallery-album-metabox-settings .foogallery_template_field-' + selectedTemplate).show();
54
+
55
+ //trigger a change so custom template js can do something
56
+ FOOGALLERYALBUM.triggerTemplateChangedEvent();
57
+ });
58
+
59
+ //trigger this onload too!
60
+ FOOGALLERYALBUM.triggerTemplateChangedEvent();
61
+ };
62
+
63
+ FOOGALLERYALBUM.triggerTemplateChangedEvent = function() {
64
+ var selectedTemplate = $('#FooGallerySettings_AlbumTemplate').val();
65
+ $('body').trigger('foogallery-album-template-changed-' + selectedTemplate );
66
+ };
67
+
68
+ FOOGALLERYALBUM.initAlbumInfoButtons = function() {
69
+ $('.foogallery-album-gallery-list').on('click', 'a.info', function(e) {
70
+
71
+ e.preventDefault();
72
+
73
+ e.stopPropagation();
74
+
75
+ var $this = $(this),
76
+ $modal = $('.foogallery-album-info-modal'),
77
+ $spinner = $modal.find('.media-frame-title .spinner'),
78
+ $nonce = $modal.find('#foogallery_album_gallery_details_nonce'),
79
+ $details = $modal.find('.gallery-details'),
80
+ data = 'action=foogallery_get_gallery_details' +
81
+ '&foogallery_id=' + $this.data('gallery-id') +
82
+ '&_wpnonce=' + $nonce.val() +
83
+ '&_wp_http_referer=' + encodeURIComponent($('input[name="_wp_http_referer"]').val());
84
+
85
+ $details.html( $details.data('loading') + $this.data('gallery-title') + '...' );
86
+ $spinner.addClass('is-active');
87
+
88
+ $.ajax({
89
+ type: "POST",
90
+ url: ajaxurl,
91
+ data: data,
92
+ success: function(data) {
93
+ $details.html(data);
94
+ },
95
+ complete: function() {
96
+ $spinner.removeClass('is-active');
97
+ }
98
+ });
99
+
100
+ $modal.show();
101
+ $('.media-modal-backdrop').show();
102
+ });
103
+
104
+ $('.foogallery-album-info-modal .gallery-details-save').on('click', function(e) {
105
+ e.preventDefault();
106
+
107
+ var $this = $(this),
108
+ $modal = $('.foogallery-album-info-modal'),
109
+ $spinner = $modal.find('.media-frame-toolbar .spinner'),
110
+ $nonce = $modal.find('#foogallery_album_gallery_details_nonce'),
111
+ $form = $modal.find('form[name="foogallery_gallery_details"]'),
112
+ data = 'action=foogallery_save_gallery_details' +
113
+ '&_wpnonce=' + $nonce.val() +
114
+ '&_wp_http_referer=' + encodeURIComponent($('input[name="_wp_http_referer"]').val()) +
115
+ '& ' + $form.serialize();
116
+
117
+ $this.attr('disabled', 'disabled');
118
+ $spinner.addClass('is-active');
119
+
120
+ $.ajax({
121
+ type: "POST",
122
+ url: ajaxurl,
123
+ data: data,
124
+ success: function() {
125
+ $('.foogallery-album-info-modal').hide();
126
+ $('.media-modal-backdrop').hide();
127
+ },
128
+ complete: function() {
129
+ $spinner.removeClass('is-active');
130
+ $this.removeAttr('disabled');
131
+ }
132
+ });
133
+ });
134
+
135
+ $('.foogallery-album-info-modal .media-modal-close').on('click', function() {
136
+ $('.foogallery-album-info-modal').hide();
137
+ $('.media-modal-backdrop').hide();
138
+ });
139
+ };
140
+
141
+ $(function() { //wait for ready
142
+ FOOGALLERYALBUM.bindElements();
143
+
144
+ FOOGALLERYALBUM.initSettings();
145
+
146
+ FOOGALLERYALBUM.initAlbumInfoButtons();
147
+ });
148
+
149
  }(window.FOOGALLERYALBUM = window.FOOGALLERYALBUM || {}, jQuery));
extensions/albums/js/album-stack.js CHANGED
@@ -1,870 +1,870 @@
1
- /* Modernizr 2.8.3 (Custom Build) | MIT & BSD
2
- * Build: http://modernizr.com/download/#-csstransitions-prefixed-testprop-testallprops-domprefixes
3
- */
4
- if (!window.FooGalleryStackAlbumModernizr) {
5
- window.FooGalleryStackAlbumModernizr=function(a,b,c){function w(a){i.cssText=a}function x(a,b){return w(prefixes.join(a+";")+(b||""))}function y(a,b){return typeof a===b}function z(a,b){return!!~(""+a).indexOf(b)}function A(a,b){for(var d in a){var e=a[d];if(!z(e,"-")&&i[e]!==c)return b=="pfx"?e:!0}return!1}function B(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:y(f,"function")?f.bind(d||b):f}return!1}function C(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+m.join(d+" ")+d).split(" ");return y(b,"string")||y(b,"undefined")?A(e,b):(e=(a+" "+n.join(d+" ")+d).split(" "),B(e,b,c))}var d="2.8.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l="Webkit Moz O ms",m=l.split(" "),n=l.toLowerCase().split(" "),o={},p={},q={},r=[],s=r.slice,t,u={}.hasOwnProperty,v;!y(u,"undefined")&&!y(u.call,"undefined")?v=function(a,b){return u.call(a,b)}:v=function(a,b){return b in a&&y(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(s.call(arguments)))};return e}),o.csstransitions=function(){return C("transition")};for(var D in o)v(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)v(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},w(""),h=j=null,e._version=d,e._domPrefixes=n,e._cssomPrefixes=m,e.testProp=function(a){return A([a])},e.testAllProps=C,e.prefixed=function(a,b,c){return b?C(a,b,c):C(a,"pfx")},e}(this,this.document);
6
- }
7
-
8
- /**
9
- * jquery.stapel.js v1.0.0
10
- * http://www.codrops.com
11
- *
12
- * Licensed under the MIT license.
13
- * http://www.opensource.org/licenses/mit-license.php
14
- *
15
- * Copyright 2012, Codrops
16
- * http://www.codrops.com
17
- */
18
- ;( function( $, window, undefined ) {
19
-
20
- 'use strict';
21
-
22
- /*
23
- * debouncedresize: special jQuery event that happens once after a window resize
24
- *
25
- * latest version and complete README available on Github:
26
- * https://github.com/louisremi/jquery-smartresize/blob/master/jquery.debouncedresize.js
27
- *
28
- * Copyright 2011 @louis_remi
29
- * Licensed under the MIT license.
30
- */
31
- var $event = $.event,
32
- $special,
33
- resizeTimeout;
34
-
35
- $special = $event.special.debouncedresize = {
36
- setup: function() {
37
- $( this ).on( "resize", $special.handler );
38
- },
39
- teardown: function() {
40
- $( this ).off( "resize", $special.handler );
41
- },
42
- handler: function( event, execAsap ) {
43
- // Save the context
44
- var context = this,
45
- args = arguments,
46
- dispatch = function() {
47
- // set correct event type
48
- event.type = "debouncedresize";
49
- $event.dispatch.apply( context, args );
50
- };
51
-
52
- if ( resizeTimeout ) {
53
- clearTimeout( resizeTimeout );
54
- }
55
-
56
- execAsap ?
57
- dispatch() :
58
- resizeTimeout = setTimeout( dispatch, $special.threshold );
59
- },
60
- threshold: 150
61
- };
62
-
63
- // ======================= imagesLoaded Plugin ===============================
64
- // https://github.com/desandro/imagesloaded
65
-
66
- // renamed from imagesLoaded to foogalleryImagesLoaded to avoid conflicts
67
-
68
- // $('#my-container').foogalleryImagesLoaded(myFunction)
69
- // execute a callback when all images have loaded.
70
- // needed because .load() doesn't work on cached images
71
-
72
- // callback function gets image collection as argument
73
- // this is the container
74
-
75
- // original: mit license. paul irish. 2010.
76
- // contributors: Oren Solomianik, David DeSandro, Yiannis Chatzikonstantinou
77
-
78
- // blank image data-uri bypasses webkit log warning (thx doug jones)
79
- var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
80
-
81
- $.fn.foogalleryImagesLoaded = function( callback ) {
82
- var $this = this,
83
- deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
84
- hasNotify = $.isFunction(deferred.notify),
85
- $images = $this.find('img').add( $this.filter('img') ),
86
- loaded = [],
87
- proper = [],
88
- broken = [];
89
-
90
- // Register deferred callbacks
91
- if ($.isPlainObject(callback)) {
92
- $.each(callback, function (key, value) {
93
- if (key === 'callback') {
94
- callback = value;
95
- } else if (deferred) {
96
- deferred[key](value);
97
- }
98
- });
99
- }
100
-
101
- function doneLoading() {
102
- var $proper = $(proper),
103
- $broken = $(broken);
104
-
105
- if ( deferred ) {
106
- if ( broken.length ) {
107
- deferred.reject( $images, $proper, $broken );
108
- } else {
109
- deferred.resolve( $images );
110
- }
111
- }
112
-
113
- if ( $.isFunction( callback ) ) {
114
- callback.call( $this, $images, $proper, $broken );
115
- }
116
- }
117
-
118
- function imgLoaded( img, isBroken ) {
119
- // don't proceed if BLANK image, or image is already loaded
120
- if ( img.src === BLANK || $.inArray( img, loaded ) !== -1 ) {
121
- return;
122
- }
123
-
124
- // store element in loaded images array
125
- loaded.push( img );
126
-
127
- // keep track of broken and properly loaded images
128
- if ( isBroken ) {
129
- broken.push( img );
130
- } else {
131
- proper.push( img );
132
- }
133
-
134
- // cache image and its state for future calls
135
- $.data( img, 'foogalleryImagesLoaded', { isBroken: isBroken, src: img.src } );
136
-
137
- // trigger deferred progress method if present
138
- if ( hasNotify ) {
139
- deferred.notifyWith( $(img), [ isBroken, $images, $(proper), $(broken) ] );
140
- }
141
-
142
- // call doneLoading and clean listeners if all images are loaded
143
- if ( $images.length === loaded.length ){
144
- setTimeout( doneLoading );
145
- $images.unbind( '.foogalleryImagesLoaded' );
146
- }
147
- }
148
-
149
- // if no images, trigger immediately
150
- if ( !$images.length ) {
151
- doneLoading();
152
- } else {
153
- $images.bind( 'load.foogalleryImagesLoaded error.foogalleryImagesLoaded', function( event ){
154
- // trigger imgLoaded
155
- imgLoaded( event.target, event.type === 'error' );
156
- }).each( function( i, el ) {
157
- var src = el.src;
158
-
159
- // find out if this image has been already checked for status
160
- // if it was, and src has not changed, call imgLoaded on it
161
- var cached = $.data( el, 'foogalleryImagesLoaded' );
162
- if ( cached && cached.src === src ) {
163
- imgLoaded( el, cached.isBroken );
164
- return;
165
- }
166
-
167
- // if complete is true and browser supports natural sizes, try
168
- // to check for image status manually
169
- if ( el.complete && el.naturalWidth !== undefined ) {
170
- imgLoaded( el, el.naturalWidth === 0 || el.naturalHeight === 0 );
171
- return;
172
- }
173
-
174
- // cached images don't fire load sometimes, so we reset src, but only when
175
- // dealing with IE, or image is complete (loaded) and failed manual check
176
- // webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
177
- if ( el.readyState || el.complete ) {
178
- el.src = BLANK;
179
- el.src = src;
180
- }
181
- });
182
- }
183
-
184
- return deferred ? deferred.promise( $this ) : $this;
185
- };
186
-
187
- // global
188
- var $window = $( window ),
189
- FooGalleryStackAlbumModernizr = window.FooGalleryStackAlbumModernizr;
190
-
191
- $.Stapel = function( options, element ) {
192
-
193
- this.el = $( element );
194
- this._init( options );
195
-
196
- };
197
-
198
- // the options
199
- $.Stapel.defaults = {
200
- // space between the items
201
- gutter : 40,
202
- // the rotations degree for the 2nd and 3rd item
203
- // (to give a more realistic pile effect)
204
- pileAngles : 2,
205
- // animation settings for the clicked pile's items
206
- pileAnimation : {
207
- openSpeed : 400,
208
- openEasing : 'ease-in-out', // try this :) 'cubic-bezier(.47,1.34,.9,1.03)',
209
- closeSpeed : 400,
210
- closeEasing : 'ease-in-out'
211
- },
212
- // animation settings for the other piles
213
- otherPileAnimation : {
214
- openSpeed : 400,
215
- openEasing : 'ease-in-out',
216
- closeSpeed : 350,
217
- closeEasing : 'ease-in-out'
218
- },
219
- // delay for each item of the pile
220
- delay : 0,
221
- // random rotation for the items once opened
222
- randomAngle : false,
223
- onLoad : function() { return false; },
224
- onBeforeOpen : function( pileName ) { return false; },
225
- onAfterOpen : function( pileName, totalItems ) { return false; },
226
- onBeforeClose : function( pileName ) { return false; },
227
- onAfterClose : function( pileName, totalItems ) { return false; }
228
- };
229
-
230
- $.Stapel.prototype = {
231
-
232
- _init : function( options ) {
233
-
234
- // options
235
- this.options = $.extend( true, {}, $.Stapel.defaults, options );
236
-
237
- // cache some elements
238
- this._config();
239
-
240
- // preload images
241
- var self = this;
242
- this.el.foogalleryImagesLoaded( function() {
243
- self.options.onLoad();
244
- self._layout();
245
- self._initEvents();
246
- if (typeof FOOBOX != 'undefined') {
247
- FOOBOX.init();
248
- }
249
- } );
250
-
251
- },
252
- _config : function() {
253
-
254
- // css transitions support
255
- this.support = FooGalleryStackAlbumModernizr.csstransitions;
256
-
257
- var transEndEventNames = {
258
- 'WebkitTransition' : 'webkitTransitionEnd',
259
- 'MozTransition' : 'transitionend',
260
- 'OTransition' : 'oTransitionEnd',
261
- 'msTransition' : 'MSTransitionEnd',
262
- 'transition' : 'transitionend'
263
- },
264
- transformNames = {
265
- 'WebkitTransform' : '-webkit-transform',
266
- 'MozTransform' : '-moz-transform',
267
- 'OTransform' : '-o-transform',
268
- 'msTransform' : '-ms-transform',
269
- 'transform' : 'transform'
270
- };
271
-
272
- if( this.support ) {
273
-
274
- this.transEndEventName = transEndEventNames[ FooGalleryStackAlbumModernizr.prefixed( 'transition' ) ] + '.cbpFWSlider';
275
- this.transformName = transformNames[ FooGalleryStackAlbumModernizr.prefixed( 'transform' ) ];
276
-
277
- }
278
-
279
- // true if one pile is opened
280
- this.spread = false;
281
-
282
- // the li's
283
- this.items = this.el.children( 'li' ).hide();
284
-
285
- // close pile
286
- this.close = $( '#tp-close' );
287
-
288
- },
289
- _getSize : function() {
290
-
291
- this.elWidth = this.el.outerWidth( true );
292
-
293
- },
294
- _initEvents : function() {
295
-
296
- var self = this;
297
- $window.on( 'debouncedresize.stapel', function() { self._resize(); } );
298
- this.items.on( 'click.stapel', function() {
299
-
300
- var $item = $( this );
301
-
302
- if( !self.spread && $item.data( 'isPile' ) ) {
303
-
304
- self.spread = true;
305
- self.pileName = $item.data( 'pileName' );
306
- self.options.onBeforeOpen( self.pileName );
307
- self._openPile();
308
-
309
- return false;
310
-
311
- }
312
-
313
- } );
314
-
315
- },
316
- _layout : function() {
317
-
318
- /*
319
- piles() : save the items info in a object with the following structure:
320
-
321
- this.piles = {
322
-
323
- pileName : {
324
-
325
- // elements of this pile (note that an element can be also in a different pile)
326
- // for each element, the finalPosition is the position of the element when the pile is opened
327
- elements : [
328
- { el : HTMLELEMENT, finalPosition : { left : LEFT, top : TOP } },
329
- {},
330
- {},
331
- ...
332
- ],
333
- // this is the position of the pile (all elements of the pile) when the pile is closed
334
- position : { left : LEFT, top : TOP },
335
- index : INDEX
336
- },
337
-
338
- // more piles
339
- ...
340
-
341
- }
342
- */
343
- this._piles();
344
-
345
- // items width & height
346
- // assuming here that all items have the same width and height
347
- this.itemSize = { width : this.items.outerWidth( true ) , height : this.items.outerHeight( true ) };
348
-
349
- // remove original elements
350
- this.items.remove();
351
-
352
- // applies some initial style for the items
353
- this._setInitialStyle();
354
-
355
- this.el.css( 'min-width', this.itemSize.width + this.options.gutter );
356
-
357
- // gets the current ul size (needed for the calculation of each item's position)
358
- this._getSize();
359
-
360
- // calculate and set each Pile's elements position based on the current ul width
361
- // this function will also be called on window resize
362
- this._setItemsPosition();
363
-
364
- // new items
365
- this.items = this.el.children( 'li' ).show();
366
- // total items
367
- this.itemsCount = this.items.length;
368
-
369
- },
370
- _piles : function() {
371
-
372
- var piles = {};
373
- this.pilesArr = [];
374
- var pile, self = this, idx = 0;
375
- this.items.each( function() {
376
-
377
- var $item = $( this ),
378
- itemPile = $item.attr( 'data-pile' ) || 'nopile-' + $item.index(),
379
- attr = itemPile.split( ',' );
380
-
381
- for( var i = 0, total = attr.length; i < total; ++i ) {
382
-
383
- var pileName = $.trim( attr[i] );
384
- pile = piles[ pileName ];
385
-
386
- if( !pile ) {
387
-
388
- pile = piles[ pileName ] = {
389
- name : pileName,
390
- elements : [],
391
- position : { left : 0, top : 0 },
392
- index : idx
393
- };
394
-
395
- self.pilesArr.push(pile);
396
-
397
- ++idx;
398
-
399
- }
400
-
401
- var clone = $item.clone().get(0);
402
- pile.elements.push( { el : clone, finalPosition : { left : 0, top : 0 } } );
403
- var $clone = $(clone);
404
- $clone.appendTo(self.el);
405
- }
406
-
407
- } );
408
-
409
- },
410
- _setInitialStyle : function() {
411
- for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
412
-
413
- var p = this.pilesArr[j], featured = false, $el, styleCSS;
414
- for (var k = 0, kl = p.elements.length; k < kl; k++){
415
- if ( $( p.elements[k].el ).data('featured') ){
416
- featured = true;
417
- break;
418
- }
419
- }
420
-
421
- for( var i = 0, len = p.elements.length; i < len; ++i ) {
422
-
423
- $el = $( p.elements[i].el );
424
- styleCSS = { transform : 'rotate(0deg)' };
425
-
426
- this._applyInitialTransition( $el );
427
-
428
- if ( p.name.substr( 0, 6 ) !== 'nopile' && ( $el.data('featured') || ( !featured && i === 0 ) ) ){
429
- $el.css({ zIndex: 9999 }).data( 'front', true ).append( '<div class="tp-title-cover"><div class="tp-title"><span>' + p.name + '</span><span>' + len + '</span></div></div>' );
430
- }
431
- else if( i === len - 2 ) {
432
- styleCSS = { transform : 'rotate(' + this.options.pileAngles + 'deg)' };
433
- }
434
- else if( i === len - 3 ) {
435
- styleCSS = { transform : 'rotate(-' + this.options.pileAngles + 'deg)' };
436
- }
437
- else {
438
- var extraStyle = { visibility : 'hidden' };
439
- $el.css( extraStyle ).data( 'extraStyle', extraStyle );
440
- }
441
-
442
- $el.css( styleCSS ).data( {
443
- initialStyle : styleCSS,
444
- pileName : p.name,
445
- pileCount : len,
446
- shadow : $el.css( 'box-shadow' ),
447
- isPile : p.name.substr(0, 6) !== 'nopile'
448
- } );
449
-
450
- }
451
-
452
- }
453
-
454
- },
455
- _applyInitialTransition : function( $el ) {
456
-
457
- if( this.support ) {
458
- $el.css( 'transition', 'left 400ms ease-in-out, top 400ms ease-in-out' );
459
- }
460
-
461
- },
462
- _setItemsPosition : function() {
463
-
464
- var accumL = 0, accumT = 0,
465
- l, t, ml = 0,
466
- lastItemTop = 0;
467
-
468
- for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
469
-
470
- var p = this.pilesArr[j],
471
-
472
- //for( var pile in this.piles ) {
473
- //
474
- // var p = this.piles[pile],
475
- stepW = this.itemSize.width + this.options.gutter,
476
-
477
- accumIL = 0, accumIT = 0, il, it;
478
-
479
- if( accumL + stepW <= this.elWidth ) {
480
-
481
- l = accumL;
482
- t = accumT;
483
- accumL += stepW;
484
-
485
- }
486
- else {
487
-
488
- if( ml === 0 ) {
489
- ml = Math.ceil( ( this.elWidth - accumL + this.options.gutter ) / 2 );
490
- }
491
-
492
- accumT += this.itemSize.height + this.options.gutter;
493
- l = 0;
494
- t = accumT;
495
- accumL = stepW;
496
-
497
- }
498
-
499
- p.position.left = l;
500
- p.position.top = t;
501
-
502
- for( var i = 0, len = p.elements.length; i < len; ++i ) {
503
-
504
- var elem = p.elements[i],
505
- fp = elem.finalPosition;
506
-
507
- if( accumIL + stepW <= this.elWidth ) {
508
-
509
- il = accumIL;
510
- it = accumIT;
511
- accumIL += stepW;
512
-
513
- }
514
- else {
515
-
516
- accumIT += this.itemSize.height + this.options.gutter;
517
- il = 0;
518
- it = accumIT;
519
- accumIL = stepW;
520
-
521
- }
522
-
523
- fp.left = il;
524
- fp.top = it;
525
-
526
- var $el = $( elem.el );
527
-
528
- if(p.name !== this.pileName ) {
529
-
530
- $el.css( { left : p.position.left, top : p.position.top } );
531
-
532
- }
533
- else {
534
-
535
- lastItemTop = elem.finalPosition.top;
536
- $el.css( { left : elem.finalPosition.left, top : lastItemTop } );
537
-
538
- }
539
-
540
- }
541
-
542
- }
543
-
544
- if( ml === 0 ) {
545
- ml = Math.ceil( ( this.elWidth - accumL + this.options.gutter ) / 2 );
546
- }
547
-
548
- // the position of the items will influence the final margin left value and height for the ul
549
- // center the ul
550
- lastItemTop = this.spread ? lastItemTop : accumT;
551
- this.marginLeft = ml;
552
- this.el.css( {
553
- marginLeft : this.marginLeft,
554
- height : lastItemTop + this.itemSize.height
555
- } );
556
-
557
- },
558
- _openPile : function() {
559
-
560
- if( !this.spread ) {
561
- return false;
562
- }
563
-
564
- // final style
565
- var fs, rowWidth = 0;
566
-
567
- for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
568
-
569
- var p = this.pilesArr[j],
570
- cnt = 0;
571
-
572
- for( var i = 0, len = p.elements.length; i < len; ++i ) {
573
-
574
- var elem = p.elements[i],
575
- $item = $( elem.el ),
576
- styleCSS = p.name === this.pileName ? {
577
- zIndex : 9999,
578
- visibility : 'visible',
579
- transition : this.support ? 'left ' + this.options.pileAnimation.openSpeed + 'ms ' + ( ( len - i - 1 ) * this.options.delay ) + 'ms ' + this.options.pileAnimation.openEasing + ', top ' + this.options.pileAnimation.openSpeed + 'ms ' + ( ( len - i - 1 ) * this.options.delay ) + 'ms ' + this.options.pileAnimation.openEasing + ', ' + this.transformName + ' ' + this.options.pileAnimation.openSpeed + 'ms ' + ( ( len - i - 1 ) * this.options.delay ) + 'ms ' + this.options.pileAnimation.openEasing : 'none'
580
- } : {
581
- zIndex : 1,
582
- transition : this.support ? 'opacity ' + this.options.otherPileAnimation.closeSpeed + 'ms ' + this.options.otherPileAnimation.closeEasing : 'none'
583
- };
584
-
585
- if( p.name === this.pileName ) {
586
-
587
- if (elem.finalPosition.top === 0){
588
- if (rowWidth > 0) rowWidth += this.options.gutter;
589
- rowWidth += this.itemSize.width;
590
- }
591
-
592
- if( $item.data( 'front' ) ) {
593
- $item.find( 'div.tp-title' ).hide();
594
- }
595
-
596
- fs = elem.finalPosition;
597
- fs.transform = this.options.randomAngle && i !== p.index ? 'rotate(' + Math.floor( Math.random() * ( 5 + 5 + 1 ) - 5 ) + 'deg)' : 'none';
598
-
599
- if( !this.support ) {
600
- $item.css( 'transform', 'none' );
601
- }
602
-
603
- // hack: remove box-shadow while animating to prevent the shadow stack effect
604
- if( i < len - 3 ) {
605
- $item.css( 'box-shadow', 'none' );
606
- }
607
-
608
- }
609
-
610
- $item.css( styleCSS );
611
-
612
- var self = this;
613
-
614
- p.name === this.pileName ?
615
- this._applyTransition( $item, fs, this.options.pileAnimation.openSpeed, function( evt ) {
616
-
617
- var target = this.target || this.nodeName;
618
- if( target !== 'LI' ) {
619
- return;
620
- }
621
-
622
- var $el = $( this );
623
-
624
- // hack: remove box-shadow while animating to prevent the shadow stack effect
625
- $el.css( 'box-shadow', $el.data( 'shadow' ) );
626
-
627
- if( self.support ) {
628
- $el.off( self.transEndEventName );
629
- }
630
-
631
- ++cnt;
632
-
633
- if( cnt === $el.data( 'pileCount' ) ) {
634
-
635
- $( document ).one( 'mousemove.stapel', function() {
636
- self.el.addClass( 'tp-open' );
637
- } );
638
- self.options.onAfterOpen( self.pileName, cnt );
639
-
640
- }
641
-
642
- } ) :
643
- this._applyTransition( $item, { visibility: 'hidden', opacity : 0 }, this.options.otherPileAnimation.closeSpeed );
644
-
645
- }
646
-
647
- }
648
-
649
- //this.el.css( 'height', fs.top + this.itemSize.height );
650
- this.el.css({
651
- marginLeft: Math.ceil((this.elWidth - rowWidth) / 2),
652
- height: fs.top + this.itemSize.height
653
- });
654
-
655
- },
656
- _closePile : function() {
657
-
658
- var self = this;
659
-
660
- // close..
661
- if( this.spread ) {
662
-
663
- this.spread = false;
664
-
665
- this.options.onBeforeClose( this.pileName );
666
-
667
- this.el.removeClass( 'tp-open' );
668
-
669
- // final style
670
- var fs;
671
- for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
672
-
673
- var p = this.pilesArr[j],
674
- cnt = 0;
675
-
676
- for( var i = 0, len = p.elements.length; i < len; ++i ) {
677
-
678
- var $item = $( p.elements[i].el ),
679
- styleCSS = p.name === this.pileName ? {
680
- transition : this.support ? 'left ' + this.options.pileAnimation.closeSpeed + 'ms ' + this.options.pileAnimation.closeEasing + ', top ' + this.options.pileAnimation.closeSpeed + 'ms ' + this.options.pileAnimation.closeEasing + ', ' + this.transformName + ' ' + this.options.pileAnimation.closeSpeed + 'ms ' + this.options.pileAnimation.closeEasing : 'none'
681
- } : {
682
- transition : this.support ? 'opacity ' + this.options.otherPileAnimation.openSpeed + 'ms ' + this.options.otherPileAnimation.openEasing : 'none'
683
- };
684
-
685
- $item.css( styleCSS );
686
-
687
- fs = p.position;
688
-
689
- if(p.name === this.pileName ) {
690
-
691
- $.extend( fs, $item.data( 'initialStyle' ) );
692
-
693
- // hack: remove box-shadow while animating to prevent the shadow stack effect
694
- if( i < len - 3 ) {
695
- $item.css( 'box-shadow', 'none' );
696
- }
697
-
698
- }
699
-
700
- p.name === this.pileName ? this._applyTransition( $item, fs, this.options.pileAnimation.closeSpeed, function( evt ) {
701
-
702
- var target = this.target || this.nodeName;
703
- if( target !== 'LI' ) {
704
- return;
705
- }
706
-
707
- var $el = $( this ), extraStyle = $el.data( 'extraStyle' ), initialStyle = $el.data( 'initialStyle' );
708
-
709
- // hack: remove box-shadow while animating to prevent the shadow stack effect
710
- $el.css( 'box-shadow', $el.data( 'shadow' ) );
711
-
712
- if( self.support ) {
713
- $el.off( self.transEndEventName );
714
- self._applyInitialTransition( $el );
715
- }
716
- else {
717
- $el.css( initialStyle );
718
- }
719
-
720
- if( extraStyle ) {
721
- $el.css( extraStyle );
722
- }
723
-
724
- ++cnt;
725
-
726
- if( $el.data( 'front' ) ) {
727
- $el.css({visibility: 'visible'}).find( 'div.tp-title' ).show();
728
- } else {
729
- $el.css({visibility: 'hidden', zIndex: 1});
730
- }
731
-
732
- if( cnt === $el.data( 'pileCount' ) ) {
733
- self.options.onAfterClose( $el.data( 'pileName' ), cnt );
734
- }
735
-
736
- } ) : this._applyTransition( $item, { opacity : 1 }, this.options.otherPileAnimation.openSpeed, function( evt ) {
737
-
738
- var target = this.target || this.nodeName;
739
- if( target !== 'LI' ) {
740
- return;
741
- }
742
-
743
- var $el = $( this );
744
- if( $el.data( 'front' ) ) {
745
- $el.css({visibility: 'visible'}).find( 'div.tp-title' ).show();
746
- } else {
747
- $el.css({visibility: 'hidden', zIndex: 1});
748
- }
749
-
750
- if( self.support ) {
751
- $el.off( self.transEndEventName );
752
- self._applyInitialTransition( $el );
753
- }
754
-
755
- } );
756
-
757
- }
758
-
759
- }
760
-
761
- // reset pile name
762
- this.pileName = '';
763
-
764
- // update ul height
765
- //this.el.css( 'height', fs.top + this.itemSize.height );
766
- this.el.css({
767
- marginLeft: this.marginLeft,
768
- height: fs.top + this.itemSize.height
769
- });
770
-
771
- }
772
-
773
- return false;
774
-
775
- },
776
- _resize : function() {
777
-
778
- // get ul size again
779
- this._getSize();
780
- // reset items positions
781
- this._setItemsPosition();
782
-
783
- },
784
- _applyTransition : function( el, styleCSS, speed, fncomplete ) {
785
-
786
- $.fn.applyStyle = this.support ? $.fn.css : $.fn.animate;
787
-
788
- if( fncomplete && this.support ) {
789
-
790
- el.on( this.transEndEventName, fncomplete );
791
-
792
- }
793
-
794
- fncomplete = fncomplete || function() { return false; };
795
-
796
- el.stop().applyStyle( styleCSS, $.extend( true, [], { duration : speed + 'ms', complete : fncomplete } ) );
797
-
798
- },
799
- closePile : function() {
800
-
801
- this._closePile();
802
-
803
- }
804
-
805
- };
806
-
807
- var logError = function( message ) {
808
-
809
- if ( window.console ) {
810
-
811
- window.console.error( message );
812
-
813
- }
814
-
815
- };
816
-
817
- $.fn.stapel = function( options ) {
818
-
819
- var instance = $.data( this, 'stapel' );
820
-
821
- if ( typeof options === 'string' ) {
822
-
823
- var args = Array.prototype.slice.call( arguments, 1 );
824
-
825
- this.each(function() {
826
-
827
- if ( !instance ) {
828
-
829
- logError( "cannot call methods on stapel prior to initialization; " +
830
- "attempted to call method '" + options + "'" );
831
- return;
832
-
833
- }
834
-
835
- if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {
836
-
837
- logError( "no such method '" + options + "' for stapel instance" );
838
- return;
839
-
840
- }
841
-
842
- instance[ options ].apply( instance, args );
843
-
844
- });
845
-
846
- }
847
- else {
848
-
849
- this.each(function() {
850
-
851
- if ( instance ) {
852
-
853
- instance._init();
854
-
855
- }
856
- else {
857
-
858
- instance = $.data( this, 'stapel', new $.Stapel( options, this ) );
859
-
860
- }
861
-
862
- });
863
-
864
- }
865
-
866
- return instance;
867
-
868
- };
869
-
870
  } )( jQuery, window );
1
+ /* Modernizr 2.8.3 (Custom Build) | MIT & BSD
2
+ * Build: http://modernizr.com/download/#-csstransitions-prefixed-testprop-testallprops-domprefixes
3
+ */
4
+ if (!window.FooGalleryStackAlbumModernizr) {
5
+ window.FooGalleryStackAlbumModernizr=function(a,b,c){function w(a){i.cssText=a}function x(a,b){return w(prefixes.join(a+";")+(b||""))}function y(a,b){return typeof a===b}function z(a,b){return!!~(""+a).indexOf(b)}function A(a,b){for(var d in a){var e=a[d];if(!z(e,"-")&&i[e]!==c)return b=="pfx"?e:!0}return!1}function B(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:y(f,"function")?f.bind(d||b):f}return!1}function C(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+m.join(d+" ")+d).split(" ");return y(b,"string")||y(b,"undefined")?A(e,b):(e=(a+" "+n.join(d+" ")+d).split(" "),B(e,b,c))}var d="2.8.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l="Webkit Moz O ms",m=l.split(" "),n=l.toLowerCase().split(" "),o={},p={},q={},r=[],s=r.slice,t,u={}.hasOwnProperty,v;!y(u,"undefined")&&!y(u.call,"undefined")?v=function(a,b){return u.call(a,b)}:v=function(a,b){return b in a&&y(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(s.call(arguments)))};return e}),o.csstransitions=function(){return C("transition")};for(var D in o)v(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)v(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},w(""),h=j=null,e._version=d,e._domPrefixes=n,e._cssomPrefixes=m,e.testProp=function(a){return A([a])},e.testAllProps=C,e.prefixed=function(a,b,c){return b?C(a,b,c):C(a,"pfx")},e}(this,this.document);
6
+ }
7
+
8
+ /**
9
+ * jquery.stapel.js v1.0.0
10
+ * http://www.codrops.com
11
+ *
12
+ * Licensed under the MIT license.
13
+ * http://www.opensource.org/licenses/mit-license.php
14
+ *
15
+ * Copyright 2012, Codrops
16
+ * http://www.codrops.com
17
+ */
18
+ ;( function( $, window, undefined ) {
19
+
20
+ 'use strict';
21
+
22
+ /*
23
+ * debouncedresize: special jQuery event that happens once after a window resize
24
+ *
25
+ * latest version and complete README available on Github:
26
+ * https://github.com/louisremi/jquery-smartresize/blob/master/jquery.debouncedresize.js
27
+ *
28
+ * Copyright 2011 @louis_remi
29
+ * Licensed under the MIT license.
30
+ */
31
+ var $event = $.event,
32
+ $special,
33
+ resizeTimeout;
34
+
35
+ $special = $event.special.debouncedresize = {
36
+ setup: function() {
37
+ $( this ).on( "resize", $special.handler );
38
+ },
39
+ teardown: function() {
40
+ $( this ).off( "resize", $special.handler );
41
+ },
42
+ handler: function( event, execAsap ) {
43
+ // Save the context
44
+ var context = this,
45
+ args = arguments,
46
+ dispatch = function() {
47
+ // set correct event type
48
+ event.type = "debouncedresize";
49
+ $event.dispatch.apply( context, args );
50
+ };
51
+
52
+ if ( resizeTimeout ) {
53
+ clearTimeout( resizeTimeout );
54
+ }
55
+
56
+ execAsap ?
57
+ dispatch() :
58
+ resizeTimeout = setTimeout( dispatch, $special.threshold );
59
+ },
60
+ threshold: 150
61
+ };
62
+
63
+ // ======================= imagesLoaded Plugin ===============================
64
+ // https://github.com/desandro/imagesloaded
65
+
66
+ // renamed from imagesLoaded to foogalleryImagesLoaded to avoid conflicts
67
+
68
+ // $('#my-container').foogalleryImagesLoaded(myFunction)
69
+ // execute a callback when all images have loaded.
70
+ // needed because .load() doesn't work on cached images
71
+
72
+ // callback function gets image collection as argument
73
+ // this is the container
74
+
75
+ // original: mit license. paul irish. 2010.
76
+ // contributors: Oren Solomianik, David DeSandro, Yiannis Chatzikonstantinou
77
+
78
+ // blank image data-uri bypasses webkit log warning (thx doug jones)
79
+ var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
80
+
81
+ $.fn.foogalleryImagesLoaded = function( callback ) {
82
+ var $this = this,
83
+ deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
84
+ hasNotify = $.isFunction(deferred.notify),
85
+ $images = $this.find('img').add( $this.filter('img') ),
86
+ loaded = [],
87
+ proper = [],
88
+ broken = [];
89
+
90
+ // Register deferred callbacks
91
+ if ($.isPlainObject(callback)) {
92
+ $.each(callback, function (key, value) {
93
+ if (key === 'callback') {
94
+ callback = value;
95
+ } else if (deferred) {
96
+ deferred[key](value);
97
+ }
98
+ });
99
+ }
100
+
101
+ function doneLoading() {
102
+ var $proper = $(proper),
103
+ $broken = $(broken);
104
+
105
+ if ( deferred ) {
106
+ if ( broken.length ) {
107
+ deferred.reject( $images, $proper, $broken );
108
+ } else {
109
+ deferred.resolve( $images );
110
+ }
111
+ }
112
+
113
+ if ( $.isFunction( callback ) ) {
114
+ callback.call( $this, $images, $proper, $broken );
115
+ }
116
+ }
117
+
118
+ function imgLoaded( img, isBroken ) {
119
+ // don't proceed if BLANK image, or image is already loaded
120
+ if ( img.src === BLANK || $.inArray( img, loaded ) !== -1 ) {
121
+ return;
122
+ }
123
+
124
+ // store element in loaded images array
125
+ loaded.push( img );
126
+
127
+ // keep track of broken and properly loaded images
128
+ if ( isBroken ) {
129
+ broken.push( img );
130
+ } else {
131
+ proper.push( img );
132
+ }
133
+
134
+ // cache image and its state for future calls
135
+ $.data( img, 'foogalleryImagesLoaded', { isBroken: isBroken, src: img.src } );
136
+
137
+ // trigger deferred progress method if present
138
+ if ( hasNotify ) {
139
+ deferred.notifyWith( $(img), [ isBroken, $images, $(proper), $(broken) ] );
140
+ }
141
+
142
+ // call doneLoading and clean listeners if all images are loaded
143
+ if ( $images.length === loaded.length ){
144
+ setTimeout( doneLoading );
145
+ $images.unbind( '.foogalleryImagesLoaded' );
146
+ }
147
+ }
148
+
149
+ // if no images, trigger immediately
150
+ if ( !$images.length ) {
151
+ doneLoading();
152
+ } else {
153
+ $images.bind( 'load.foogalleryImagesLoaded error.foogalleryImagesLoaded', function( event ){
154
+ // trigger imgLoaded
155
+ imgLoaded( event.target, event.type === 'error' );
156
+ }).each( function( i, el ) {
157
+ var src = el.src;
158
+
159
+ // find out if this image has been already checked for status
160
+ // if it was, and src has not changed, call imgLoaded on it
161
+ var cached = $.data( el, 'foogalleryImagesLoaded' );
162
+ if ( cached && cached.src === src ) {
163
+ imgLoaded( el, cached.isBroken );
164
+ return;
165
+ }
166
+
167
+ // if complete is true and browser supports natural sizes, try
168
+ // to check for image status manually
169
+ if ( el.complete && el.naturalWidth !== undefined ) {
170
+ imgLoaded( el, el.naturalWidth === 0 || el.naturalHeight === 0 );
171
+ return;
172
+ }
173
+
174
+ // cached images don't fire load sometimes, so we reset src, but only when
175
+ // dealing with IE, or image is complete (loaded) and failed manual check
176
+ // webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
177
+ if ( el.readyState || el.complete ) {
178
+ el.src = BLANK;
179
+ el.src = src;
180
+ }
181
+ });
182
+ }
183
+
184
+ return deferred ? deferred.promise( $this ) : $this;
185
+ };
186
+
187
+ // global
188
+ var $window = $( window ),
189
+ FooGalleryStackAlbumModernizr = window.FooGalleryStackAlbumModernizr;
190
+
191
+ $.Stapel = function( options, element ) {
192
+
193
+ this.el = $( element );
194
+ this._init( options );
195
+
196
+ };
197
+
198
+ // the options
199
+ $.Stapel.defaults = {
200
+ // space between the items
201
+ gutter : 40,
202
+ // the rotations degree for the 2nd and 3rd item
203
+ // (to give a more realistic pile effect)
204
+ pileAngles : 2,
205
+ // animation settings for the clicked pile's items
206
+ pileAnimation : {
207
+ openSpeed : 400,
208
+ openEasing : 'ease-in-out', // try this :) 'cubic-bezier(.47,1.34,.9,1.03)',
209
+ closeSpeed : 400,
210
+ closeEasing : 'ease-in-out'
211
+ },
212
+ // animation settings for the other piles
213
+ otherPileAnimation : {
214
+ openSpeed : 400,
215
+ openEasing : 'ease-in-out',
216
+ closeSpeed : 350,
217
+ closeEasing : 'ease-in-out'
218
+ },
219
+ // delay for each item of the pile
220
+ delay : 0,
221
+ // random rotation for the items once opened
222
+ randomAngle : false,
223
+ onLoad : function() { return false; },
224
+ onBeforeOpen : function( pileName ) { return false; },
225
+ onAfterOpen : function( pileName, totalItems ) { return false; },
226
+ onBeforeClose : function( pileName ) { return false; },
227
+ onAfterClose : function( pileName, totalItems ) { return false; }
228
+ };
229
+
230
+ $.Stapel.prototype = {
231
+
232
+ _init : function( options ) {
233
+
234
+ // options
235
+ this.options = $.extend( true, {}, $.Stapel.defaults, options );
236
+
237
+ // cache some elements
238
+ this._config();
239
+
240
+ // preload images
241
+ var self = this;
242
+ this.el.foogalleryImagesLoaded( function() {
243
+ self.options.onLoad();
244
+ self._layout();
245
+ self._initEvents();
246
+ if (typeof FOOBOX != 'undefined') {
247
+ FOOBOX.init();
248
+ }
249
+ } );
250
+
251
+ },
252
+ _config : function() {
253
+
254
+ // css transitions support
255
+ this.support = FooGalleryStackAlbumModernizr.csstransitions;
256
+
257
+ var transEndEventNames = {
258
+ 'WebkitTransition' : 'webkitTransitionEnd',
259
+ 'MozTransition' : 'transitionend',
260
+ 'OTransition' : 'oTransitionEnd',
261
+ 'msTransition' : 'MSTransitionEnd',
262
+ 'transition' : 'transitionend'
263
+ },
264
+ transformNames = {
265
+ 'WebkitTransform' : '-webkit-transform',
266
+ 'MozTransform' : '-moz-transform',
267
+ 'OTransform' : '-o-transform',
268
+ 'msTransform' : '-ms-transform',
269
+ 'transform' : 'transform'
270
+ };
271
+
272
+ if( this.support ) {
273
+
274
+ this.transEndEventName = transEndEventNames[ FooGalleryStackAlbumModernizr.prefixed( 'transition' ) ] + '.cbpFWSlider';
275
+ this.transformName = transformNames[ FooGalleryStackAlbumModernizr.prefixed( 'transform' ) ];
276
+
277
+ }
278
+
279
+ // true if one pile is opened
280
+ this.spread = false;
281
+
282
+ // the li's
283
+ this.items = this.el.children( 'li' ).hide();
284
+
285
+ // close pile
286
+ this.close = $( '#tp-close' );
287
+
288
+ },
289
+ _getSize : function() {
290
+
291
+ this.elWidth = this.el.outerWidth( true );
292
+
293
+ },
294
+ _initEvents : function() {
295
+
296
+ var self = this;
297
+ $window.on( 'debouncedresize.stapel', function() { self._resize(); } );
298
+ this.items.on( 'click.stapel', function() {
299
+
300
+ var $item = $( this );
301
+
302
+ if( !self.spread && $item.data( 'isPile' ) ) {
303
+
304
+ self.spread = true;
305
+ self.pileName = $item.data( 'pileName' );
306
+ self.options.onBeforeOpen( self.pileName );
307
+ self._openPile();
308
+
309
+ return false;
310
+
311
+ }
312
+
313
+ } );
314
+
315
+ },
316
+ _layout : function() {
317
+
318
+ /*
319
+ piles() : save the items info in a object with the following structure:
320
+
321
+ this.piles = {
322
+
323
+ pileName : {
324
+
325
+ // elements of this pile (note that an element can be also in a different pile)
326
+ // for each element, the finalPosition is the position of the element when the pile is opened
327
+ elements : [
328
+ { el : HTMLELEMENT, finalPosition : { left : LEFT, top : TOP } },
329
+ {},
330
+ {},
331
+ ...
332
+ ],
333
+ // this is the position of the pile (all elements of the pile) when the pile is closed
334
+ position : { left : LEFT, top : TOP },
335
+ index : INDEX
336
+ },
337
+
338
+ // more piles
339
+ ...
340
+
341
+ }
342
+ */
343
+ this._piles();
344
+
345
+ // items width & height
346
+ // assuming here that all items have the same width and height
347
+ this.itemSize = { width : this.items.outerWidth( true ) , height : this.items.outerHeight( true ) };
348
+
349
+ // remove original elements
350
+ this.items.remove();
351
+
352
+ // applies some initial style for the items
353
+ this._setInitialStyle();
354
+
355
+ this.el.css( 'min-width', this.itemSize.width + this.options.gutter );
356
+
357
+ // gets the current ul size (needed for the calculation of each item's position)
358
+ this._getSize();
359
+
360
+ // calculate and set each Pile's elements position based on the current ul width
361
+ // this function will also be called on window resize
362
+ this._setItemsPosition();
363
+
364
+ // new items
365
+ this.items = this.el.children( 'li' ).show();
366
+ // total items
367
+ this.itemsCount = this.items.length;
368
+
369
+ },
370
+ _piles : function() {
371
+
372
+ var piles = {};
373
+ this.pilesArr = [];
374
+ var pile, self = this, idx = 0;
375
+ this.items.each( function() {
376
+
377
+ var $item = $( this ),
378
+ itemPile = $item.attr( 'data-pile' ) || 'nopile-' + $item.index(),
379
+ attr = itemPile.split( ',' );
380
+
381
+ for( var i = 0, total = attr.length; i < total; ++i ) {
382
+
383
+ var pileName = $.trim( attr[i] );
384
+ pile = piles[ pileName ];
385
+
386
+ if( !pile ) {
387
+
388
+ pile = piles[ pileName ] = {
389
+ name : pileName,
390
+ elements : [],
391
+ position : { left : 0, top : 0 },
392
+ index : idx
393
+ };
394
+
395
+ self.pilesArr.push(pile);
396
+
397
+ ++idx;
398
+
399
+ }
400
+
401
+ var clone = $item.clone().get(0);
402
+ pile.elements.push( { el : clone, finalPosition : { left : 0, top : 0 } } );
403
+ var $clone = $(clone);
404
+ $clone.appendTo(self.el);
405
+ }
406
+
407
+ } );
408
+
409
+ },
410
+ _setInitialStyle : function() {
411
+ for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
412
+
413
+ var p = this.pilesArr[j], featured = false, $el, styleCSS;
414
+ for (var k = 0, kl = p.elements.length; k < kl; k++){
415
+ if ( $( p.elements[k].el ).data('featured') ){
416
+ featured = true;
417
+ break;
418
+ }
419
+ }
420
+
421
+ for( var i = 0, len = p.elements.length; i < len; ++i ) {
422
+
423
+ $el = $( p.elements[i].el );
424
+ styleCSS = { transform : 'rotate(0deg)' };
425
+
426
+ this._applyInitialTransition( $el );
427
+
428
+ if ( p.name.substr( 0, 6 ) !== 'nopile' && ( $el.data('featured') || ( !featured && i === 0 ) ) ){
429
+ $el.css({ zIndex: 9999 }).data( 'front', true ).append( '<div class="tp-title-cover"><div class="tp-title"><span>' + p.name + '</span><span>' + len + '</span></div></div>' );
430
+ }
431
+ else if( i === len - 2 ) {
432
+ styleCSS = { transform : 'rotate(' + this.options.pileAngles + 'deg)' };
433
+ }
434
+ else if( i === len - 3 ) {
435
+ styleCSS = { transform : 'rotate(-' + this.options.pileAngles + 'deg)' };
436
+ }
437
+ else {
438
+ var extraStyle = { visibility : 'hidden' };
439
+ $el.css( extraStyle ).data( 'extraStyle', extraStyle );
440
+ }
441
+
442
+ $el.css( styleCSS ).data( {
443
+ initialStyle : styleCSS,
444
+ pileName : p.name,
445
+ pileCount : len,
446
+ shadow : $el.css( 'box-shadow' ),
447
+ isPile : p.name.substr(0, 6) !== 'nopile'
448
+ } );
449
+
450
+ }
451
+
452
+ }
453
+
454
+ },
455
+ _applyInitialTransition : function( $el ) {
456
+
457
+ if( this.support ) {
458
+ $el.css( 'transition', 'left 400ms ease-in-out, top 400ms ease-in-out' );
459
+ }
460
+
461
+ },
462
+ _setItemsPosition : function() {
463
+
464
+ var accumL = 0, accumT = 0,
465
+ l, t, ml = 0,
466
+ lastItemTop = 0;
467
+
468
+ for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
469
+
470
+ var p = this.pilesArr[j],
471
+
472
+ //for( var pile in this.piles ) {
473
+ //
474
+ // var p = this.piles[pile],
475
+ stepW = this.itemSize.width + this.options.gutter,
476
+
477
+ accumIL = 0, accumIT = 0, il, it;
478
+
479
+ if( accumL + stepW <= this.elWidth ) {
480
+
481
+ l = accumL;
482
+ t = accumT;
483
+ accumL += stepW;
484
+
485
+ }
486
+ else {
487
+
488
+ if( ml === 0 ) {
489
+ ml = Math.ceil( ( this.elWidth - accumL + this.options.gutter ) / 2 );
490
+ }
491
+
492
+ accumT += this.itemSize.height + this.options.gutter;
493
+ l = 0;
494
+ t = accumT;
495
+ accumL = stepW;
496
+
497
+ }
498
+
499
+ p.position.left = l;
500
+ p.position.top = t;
501
+
502
+ for( var i = 0, len = p.elements.length; i < len; ++i ) {
503
+
504
+ var elem = p.elements[i],
505
+ fp = elem.finalPosition;
506
+
507
+ if( accumIL + stepW <= this.elWidth ) {
508
+
509
+ il = accumIL;
510
+ it = accumIT;
511
+ accumIL += stepW;
512
+
513
+ }
514
+ else {
515
+
516
+ accumIT += this.itemSize.height + this.options.gutter;
517
+ il = 0;
518
+ it = accumIT;
519
+ accumIL = stepW;
520
+
521
+ }
522
+
523
+ fp.left = il;
524
+ fp.top = it;
525
+
526
+ var $el = $( elem.el );
527
+
528
+ if(p.name !== this.pileName ) {
529
+
530
+ $el.css( { left : p.position.left, top : p.position.top } );
531
+
532
+ }
533
+ else {
534
+
535
+ lastItemTop = elem.finalPosition.top;
536
+ $el.css( { left : elem.finalPosition.left, top : lastItemTop } );
537
+
538
+ }
539
+
540
+ }
541
+
542
+ }
543
+
544
+ if( ml === 0 ) {
545
+ ml = Math.ceil( ( this.elWidth - accumL + this.options.gutter ) / 2 );
546
+ }
547
+
548
+ // the position of the items will influence the final margin left value and height for the ul
549
+ // center the ul
550
+ lastItemTop = this.spread ? lastItemTop : accumT;
551
+ this.marginLeft = ml;
552
+ this.el.css( {
553
+ marginLeft : this.marginLeft,
554
+ height : lastItemTop + this.itemSize.height
555
+ } );
556
+
557
+ },
558
+ _openPile : function() {
559
+
560
+ if( !this.spread ) {
561
+ return false;
562
+ }
563
+
564
+ // final style
565
+ var fs, rowWidth = 0;
566
+
567
+ for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
568
+
569
+ var p = this.pilesArr[j],
570
+ cnt = 0;
571
+
572
+ for( var i = 0, len = p.elements.length; i < len; ++i ) {
573
+
574
+ var elem = p.elements[i],
575
+ $item = $( elem.el ),
576
+ styleCSS = p.name === this.pileName ? {
577
+ zIndex : 9999,
578
+ visibility : 'visible',
579
+ transition : this.support ? 'left ' + this.options.pileAnimation.openSpeed + 'ms ' + ( ( len - i - 1 ) * this.options.delay ) + 'ms ' + this.options.pileAnimation.openEasing + ', top ' + this.options.pileAnimation.openSpeed + 'ms ' + ( ( len - i - 1 ) * this.options.delay ) + 'ms ' + this.options.pileAnimation.openEasing + ', ' + this.transformName + ' ' + this.options.pileAnimation.openSpeed + 'ms ' + ( ( len - i - 1 ) * this.options.delay ) + 'ms ' + this.options.pileAnimation.openEasing : 'none'
580
+ } : {
581
+ zIndex : 1,
582
+ transition : this.support ? 'opacity ' + this.options.otherPileAnimation.closeSpeed + 'ms ' + this.options.otherPileAnimation.closeEasing : 'none'
583
+ };
584
+
585
+ if( p.name === this.pileName ) {
586
+
587
+ if (elem.finalPosition.top === 0){
588
+ if (rowWidth > 0) rowWidth += this.options.gutter;
589
+ rowWidth += this.itemSize.width;
590
+ }
591
+
592
+ if( $item.data( 'front' ) ) {
593
+ $item.find( 'div.tp-title' ).hide();
594
+ }
595
+
596
+ fs = elem.finalPosition;
597
+ fs.transform = this.options.randomAngle && i !== p.index ? 'rotate(' + Math.floor( Math.random() * ( 5 + 5 + 1 ) - 5 ) + 'deg)' : 'none';
598
+
599
+ if( !this.support ) {
600
+ $item.css( 'transform', 'none' );
601
+ }
602
+
603
+ // hack: remove box-shadow while animating to prevent the shadow stack effect
604
+ if( i < len - 3 ) {
605
+ $item.css( 'box-shadow', 'none' );
606
+ }
607
+
608
+ }
609
+
610
+ $item.css( styleCSS );
611
+
612
+ var self = this;
613
+
614
+ p.name === this.pileName ?
615
+ this._applyTransition( $item, fs, this.options.pileAnimation.openSpeed, function( evt ) {
616
+
617
+ var target = this.target || this.nodeName;
618
+ if( target !== 'LI' ) {
619
+ return;
620
+ }
621
+
622
+ var $el = $( this );
623
+
624
+ // hack: remove box-shadow while animating to prevent the shadow stack effect
625
+ $el.css( 'box-shadow', $el.data( 'shadow' ) );
626
+
627
+ if( self.support ) {
628
+ $el.off( self.transEndEventName );
629
+ }
630
+
631
+ ++cnt;
632
+
633
+ if( cnt === $el.data( 'pileCount' ) ) {
634
+
635
+ $( document ).one( 'mousemove.stapel', function() {
636
+ self.el.addClass( 'tp-open' );
637
+ } );
638
+ self.options.onAfterOpen( self.pileName, cnt );
639
+
640
+ }
641
+
642
+ } ) :
643
+ this._applyTransition( $item, { visibility: 'hidden', opacity : 0 }, this.options.otherPileAnimation.closeSpeed );
644
+
645
+ }
646
+
647
+ }
648
+
649
+ //this.el.css( 'height', fs.top + this.itemSize.height );
650
+ this.el.css({
651
+ marginLeft: Math.ceil((this.elWidth - rowWidth) / 2),
652
+ height: fs.top + this.itemSize.height
653
+ });
654
+
655
+ },
656
+ _closePile : function() {
657
+
658
+ var self = this;
659
+
660
+ // close..
661
+ if( this.spread ) {
662
+
663
+ this.spread = false;
664
+
665
+ this.options.onBeforeClose( this.pileName );
666
+
667
+ this.el.removeClass( 'tp-open' );
668
+
669
+ // final style
670
+ var fs;
671
+ for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
672
+
673
+ var p = this.pilesArr[j],
674
+ cnt = 0;
675
+
676
+ for( var i = 0, len = p.elements.length; i < len; ++i ) {
677
+
678
+ var $item = $( p.elements[i].el ),
679
+ styleCSS = p.name === this.pileName ? {
680
+ transition : this.support ? 'left ' + this.options.pileAnimation.closeSpeed + 'ms ' + this.options.pileAnimation.closeEasing + ', top ' + this.options.pileAnimation.closeSpeed + 'ms ' + this.options.pileAnimation.closeEasing + ', ' + this.transformName + ' ' + this.options.pileAnimation.closeSpeed + 'ms ' + this.options.pileAnimation.closeEasing : 'none'
681
+ } : {
682
+ transition : this.support ? 'opacity ' + this.options.otherPileAnimation.openSpeed + 'ms ' + this.options.otherPileAnimation.openEasing : 'none'
683
+ };
684
+
685
+ $item.css( styleCSS );
686
+
687
+ fs = p.position;
688
+
689
+ if(p.name === this.pileName ) {
690
+
691
+ $.extend( fs, $item.data( 'initialStyle' ) );
692
+
693
+ // hack: remove box-shadow while animating to prevent the shadow stack effect
694
+ if( i < len - 3 ) {
695
+ $item.css( 'box-shadow', 'none' );
696
+ }
697
+
698
+ }
699
+
700
+ p.name === this.pileName ? this._applyTransition( $item, fs, this.options.pileAnimation.closeSpeed, function( evt ) {
701
+
702
+ var target = this.target || this.nodeName;
703
+ if( target !== 'LI' ) {
704
+ return;
705
+ }
706
+
707
+ var $el = $( this ), extraStyle = $el.data( 'extraStyle' ), initialStyle = $el.data( 'initialStyle' );
708
+
709
+ // hack: remove box-shadow while animating to prevent the shadow stack effect
710
+ $el.css( 'box-shadow', $el.data( 'shadow' ) );
711
+
712
+ if( self.support ) {
713
+ $el.off( self.transEndEventName );
714
+ self._applyInitialTransition( $el );
715
+ }
716
+ else {
717
+ $el.css( initialStyle );
718
+ }
719
+
720
+ if( extraStyle ) {
721
+ $el.css( extraStyle );
722
+ }
723
+
724
+ ++cnt;
725
+
726
+ if( $el.data( 'front' ) ) {
727
+ $el.css({visibility: 'visible'}).find( 'div.tp-title' ).show();
728
+ } else {
729
+ $el.css({visibility: 'hidden', zIndex: 1});
730
+ }
731
+
732
+ if( cnt === $el.data( 'pileCount' ) ) {
733
+ self.options.onAfterClose( $el.data( 'pileName' ), cnt );
734
+ }
735
+
736
+ } ) : this._applyTransition( $item, { opacity : 1 }, this.options.otherPileAnimation.openSpeed, function( evt ) {
737
+
738
+ var target = this.target || this.nodeName;
739
+ if( target !== 'LI' ) {
740
+ return;
741
+ }
742
+
743
+ var $el = $( this );
744
+ if( $el.data( 'front' ) ) {
745
+ $el.css({visibility: 'visible'}).find( 'div.tp-title' ).show();
746
+ } else {
747
+ $el.css({visibility: 'hidden', zIndex: 1});
748
+ }
749
+
750
+ if( self.support ) {
751
+ $el.off( self.transEndEventName );
752
+ self._applyInitialTransition( $el );
753
+ }
754
+
755
+ } );
756
+
757
+ }
758
+
759
+ }
760
+
761
+ // reset pile name
762
+ this.pileName = '';
763
+
764
+ // update ul height
765
+ //this.el.css( 'height', fs.top + this.itemSize.height );
766
+ this.el.css({
767
+ marginLeft: this.marginLeft,
768
+ height: fs.top + this.itemSize.height
769
+ });
770
+
771
+ }
772
+
773
+ return false;
774
+
775
+ },
776
+ _resize : function() {
777
+
778
+ // get ul size again
779
+ this._getSize();
780
+ // reset items positions
781
+ this._setItemsPosition();
782
+
783
+ },
784
+ _applyTransition : function( el, styleCSS, speed, fncomplete ) {
785
+
786
+ $.fn.applyStyle = this.support ? $.fn.css : $.fn.animate;
787
+
788
+ if( fncomplete && this.support ) {
789
+
790
+ el.on( this.transEndEventName, fncomplete );
791
+
792
+ }
793
+
794
+ fncomplete = fncomplete || function() { return false; };
795
+
796
+ el.stop().applyStyle( styleCSS, $.extend( true, [], { duration : speed + 'ms', complete : fncomplete } ) );
797
+
798
+ },
799
+ closePile : function() {
800
+
801
+ this._closePile();
802
+
803
+ }
804
+
805
+ };
806
+
807
+ var logError = function( message ) {
808
+
809
+ if ( window.console ) {
810
+
811
+ window.console.error( message );
812
+
813
+ }
814
+
815
+ };
816
+
817
+ $.fn.stapel = function( options ) {
818
+
819
+ var instance = $.data( this, 'stapel' );
820
+
821
+ if ( typeof options === 'string' ) {
822
+
823
+ var args = Array.prototype.slice.call( arguments, 1 );
824
+
825
+ this.each(function() {
826
+
827
+ if ( !instance ) {
828
+
829
+ logError( "cannot call methods on stapel prior to initialization; " +
830
+ "attempted to call method '" + options + "'" );
831
+ return;
832
+
833
+ }
834
+
835
+ if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {
836
+
837
+ logError( "no such method '" + options + "' for stapel instance" );
838
+ return;
839
+
840
+ }
841
+
842
+ instance[ options ].apply( instance, args );
843
+
844
+ });
845
+
846
+ }
847
+ else {
848
+
849
+ this.each(function() {
850
+
851
+ if ( instance ) {
852
+
853
+ instance._init();
854
+
855
+ }
856
+ else {
857
+
858
+ instance = $.data( this, 'stapel', new $.Stapel( options, this ) );
859
+
860
+ }
861
+
862
+ });
863
+
864
+ }
865
+
866
+ return instance;
867
+
868
+ };
869
+
870
  } )( jQuery, window );
extensions/albums/public/class-foogallery-album-template-loader.php CHANGED
@@ -1,184 +1,184 @@
1
- <?php
2
-
3
- /**
4
- * Template loader for FooGallery Albums
5
- *
6
- * @package FooGallery
7
- * @author Brad vincent
8
- */
9
- class FooGallery_Album_Template_Loader {
10
-
11
- /**
12
- * Locates and renders the album based on the template
13
- * Will look in the following locations
14
- * wp-content/themes/{child-theme}/foogallery/album-{template}.php
15
- * wp-content/themes/{theme}/foogallery/album-{template}.php
16
- * wp-content/plugins/foogallery/templates/album-{template}.php
17
- *
18
- * @param $args array Arguments passed in from the shortcode
19
- */
20
- public function render_template( $args ) {
21
- //do some work before we locate the template
22
- global $current_foogallery_album;
23
- global $current_foogallery_album_arguments;
24
- global $current_foogallery_album_template;
25
-
26
- //set the arguments
27
- $current_foogallery_album_arguments = $args;
28
-
29
- //load our album
30
- $current_foogallery_album = $this->find_album( $args );
31
-
32
- if ( false === $current_foogallery_album ) {
33
- _e( 'Could not load the album!', 'foogallery' );
34
- return;
35
- }
36
-
37
- //find the gallery template we will use to render the gallery
38
- $current_foogallery_album_template = $this->get_arg( $args, 'template', $current_foogallery_album->album_template );
39
-
40
- //set a default if we have no gallery template
41
- if ( empty($current_foogallery_album_template) ) {
42
- $current_foogallery_album_template = foogallery_get_default( 'album_template' );
43
- }
44
-
45
- //if we still have not default, then use the first one we can find
46
- if ( empty($current_foogallery_album_template) ) {
47
- $available_templates = foogallery_album_templates();
48
- $current_foogallery_album_template = $available_templates[0]['slug'];
49
- }
50
-
51
- //check if we have any galleries
52
- if ( ! $current_foogallery_album->has_galleries() ) {
53
- //no galleries!
54
- do_action( "foogallery_album_template_no_galleries-($current_foogallery_album_template)", $current_foogallery_album );
55
- } else {
56
-
57
- //create locator instance
58
- $instance_name = FOOGALLERY_SLUG . '_album_templates';
59
- $loader = new Foo_Plugin_File_Locator_v1( $instance_name, FOOGALLERY_FILE, 'templates', FOOGALLERY_SLUG );
60
-
61
- //allow extensions to very easily add pickup locations for their files
62
- $this->add_extension_pickup_locations( $loader, apply_filters( $instance_name . '_files', array() ) );
63
-
64
- if ( false !== ($template_location = $loader->locate_file( "album-{$current_foogallery_album_template}.php" )) ) {
65
-
66
- //we have found a template!
67
- do_action( 'foogallery_located_album_template', $current_foogallery_album );
68
- do_action( "foogallery_located_album_template-{$current_foogallery_album_template}", $current_foogallery_album );
69
-
70
- //try to include some JS
71
- if ( false !== ($js_location = $loader->locate_file( "album-{$current_foogallery_album_template}.js" )) ) {
72
- wp_enqueue_script( "foogallery-album-template-{$current_foogallery_album_template}", $js_location['url'] );
73
- }
74
-
75
- //try to include some CSS
76
- if ( false !== ($css_location = $loader->locate_file( "album-{$current_foogallery_album_template}.css" )) ) {
77
- foogallery_enqueue_style( "foogallery-album-template-{$current_foogallery_album_template}", $css_location['url'] );
78
- }
79
-
80
- //finally include the actual php template!
81
- if ( $template_location ) {
82
- load_template( $template_location['path'], false );
83
- }
84
-
85
- //we have loaded all files, now let extensions do some stuff
86
- do_action( "foogallery_loaded_album_template", $current_foogallery_album );
87
- do_action( "foogallery_loaded_album_template-($current_foogallery_album_template)", $current_foogallery_album );
88
-
89
- } else {
90
- //we could not find a template!
91
- _e( 'No album template found!', 'foogallery' );
92
- }
93
- }
94
- }
95
-
96
- /**
97
- * Add pickup locations to the loader to make it easier for extensions
98
- *
99
- * @param $loader Foo_Plugin_File_Locator_v1
100
- * @param $extension_files array
101
- */
102
- function add_extension_pickup_locations( $loader, $extension_files ) {
103
- if ( count( $extension_files ) > 0 ) {
104
- $position = 120;
105
- foreach ( $extension_files as $file ) {
106
-
107
- //add pickup location for php template
108
- $loader->add_location( $position, array(
109
- 'path' => trailingslashit( plugin_dir_path( $file ) ),
110
- 'url' => trailingslashit( plugin_dir_url( $file ) )
111
- ) );
112
-
113
- $position++;
114
-
115
- //add pickup location for extensions js folder
116
- $loader->add_location( $position, array(
117
- 'path' => trailingslashit( plugin_dir_path( $file ) . 'js' ),
118
- 'url' => trailingslashit( plugin_dir_url( $file ) . 'js' )
119
- ) );
120
-
121
- $position++;
122
-
123
- //add pickup location for extension css folder
124
- $loader->add_location( $position, array(
125
- 'path' => trailingslashit( plugin_dir_path( $file ) . 'css' ),
126
- 'url' => trailingslashit( plugin_dir_url( $file ) . 'css' )
127
- ) );
128
-
129
- $position++;
130
-
131
- }
132
- }
133
- }
134
-
135
- /**
136
- * load the gallery based on either the id or slug, passed in via arguments
137
- *
138
- * @param $args array Arguments passed in from the shortcode
139
- *
140
- * @return bool|FooGallery The gallery object we want to render
141
- */
142
- function find_album( $args ) {
143
-
144
- $id = intval( $this->get_arg( $args, 'id' ), 0 );
145
-
146
- if ( $id > 0 ) {
147
-
148
- //load album by ID
149
- return FooGalleryAlbum::get_by_id( $id );
150
-
151
- } else {
152
-
153
- //take into account the cases where id is passed in via the 'album' attribute
154
- $album = $this->get_arg( 'album', 0 );
155
-
156
- if ( intval( $album ) > 0 ) {
157
- //we have an id, so load
158
- return FooGalleryAlbum::get_by_id( intval( $album ) );
159
- }
160
-
161
- //we are dealing with a slug
162
- return FooGalleryAlbum::get_by_slug( $album );
163
- }
164
- }
165
-
166
- /**
167
- * Helper to get an argument value from an array arguments
168
- *
169
- * @param $args Array the array of arguments to search
170
- * @param $key string the key of the argument you are looking for
171
- * @param $default string a default value if the argument is not found
172
- *
173
- * @return string
174
- */
175
- function get_arg( $args, $key, $default = '' ) {
176
- if ( empty($args)
177
- || !is_array( $args )
178
- || !array_key_exists( $key, $args ) ) {
179
- return $default;
180
- }
181
-
182
- return $args[ $key ];
183
- }
184
- }
1
+ <?php
2
+
3
+ /**
4
+ * Template loader for FooGallery Albums
5
+ *
6
+ * @package FooGallery
7
+ * @author Brad vincent
8
+ */
9
+ class FooGallery_Album_Template_Loader {
10
+
11
+ /**
12
+ * Locates and renders the album based on the template
13
+ * Will look in the following locations
14
+ * wp-content/themes/{child-theme}/foogallery/album-{template}.php
15
+ * wp-content/themes/{theme}/foogallery/album-{template}.php
16
+ * wp-content/plugins/foogallery/templates/album-{template}.php
17
+ *
18
+ * @param $args array Arguments passed in from the shortcode
19
+ */
20
+ public function render_template( $args ) {
21
+ //do some work before we locate the template
22
+ global $current_foogallery_album;
23
+ global $current_foogallery_album_arguments;
24
+ global $current_foogallery_album_template;
25
+
26
+ //set the arguments
27
+ $current_foogallery_album_arguments = $args;
28
+
29
+ //load our album
30
+ $current_foogallery_album = $this->find_album( $args );
31
+
32
+ if ( false === $current_foogallery_album ) {
33
+ _e( 'Could not load the album!', 'foogallery' );
34
+ return;
35
+ }
36
+
37
+ //find the gallery template we will use to render the gallery
38
+ $current_foogallery_album_template = $this->get_arg( $args, 'template', $current_foogallery_album->album_template );
39
+
40
+ //set a default if we have no gallery template
41
+ if ( empty($current_foogallery_album_template) ) {
42
+ $current_foogallery_album_template = foogallery_get_default( 'album_template' );
43
+ }
44
+
45
+ //if we still have not default, then use the first one we can find
46
+ if ( empty($current_foogallery_album_template) ) {
47
+ $available_templates = foogallery_album_templates();
48
+ $current_foogallery_album_template = $available_templates[0]['slug'];
49
+ }
50
+
51
+ //check if we have any galleries
52
+ if ( ! $current_foogallery_album->has_galleries() ) {
53
+ //no galleries!
54
+ do_action( "foogallery_album_template_no_galleries-($current_foogallery_album_template)", $current_foogallery_album );
55
+ } else {
56
+
57
+ //create locator instance
58
+ $instance_name = FOOGALLERY_SLUG . '_album_templates';
59
+ $loader = new Foo_Plugin_File_Locator_v1( $instance_name, FOOGALLERY_FILE, 'templates', FOOGALLERY_SLUG );
60
+
61
+ //allow extensions to very easily add pickup locations for their files
62
+ $this->add_extension_pickup_locations( $loader, apply_filters( $instance_name . '_files', array() ) );
63
+
64
+ if ( false !== ($template_location = $loader->locate_file( "album-{$current_foogallery_album_template}.php" )) ) {
65
+
66
+ //we have found a template!
67
+ do_action( 'foogallery_located_album_template', $current_foogallery_album );
68
+ do_action( "foogallery_located_album_template-{$current_foogallery_album_template}", $current_foogallery_album );
69
+
70
+ //try to include some JS
71
+ if ( false !== ($js_location = $loader->locate_file( "album-{$current_foogallery_album_template}.js" )) ) {
72
+ wp_enqueue_script( "foogallery-album-template-{$current_foogallery_album_template}", $js_location['url'] );
73
+ }
74
+
75
+ //try to include some CSS
76
+ if ( false !== ($css_location = $loader->locate_file( "album-{$current_foogallery_album_template}.css" )) ) {
77
+ foogallery_enqueue_style( "foogallery-album-template-{$current_foogallery_album_template}", $css_location['url'] );
78
+ }
79
+
80
+ //finally include the actual php template!
81
+ if ( $template_location ) {
82
+ load_template( $template_location['path'], false );
83
+ }
84
+
85
+ //we have loaded all files, now let extensions do some stuff
86
+ do_action( "foogallery_loaded_album_template", $current_foogallery_album );
87
+ do_action( "foogallery_loaded_album_template-($current_foogallery_album_template)", $current_foogallery_album );
88
+
89
+ } else {
90
+ //we could not find a template!
91
+ _e( 'No album template found!', 'foogallery' );
92
+ }
93
+ }
94
+ }
95
+
96
+ /**
97
+ * Add pickup locations to the loader to make it easier for extensions
98
+ *
99
+ * @param $loader Foo_Plugin_File_Locator_v1
100
+ * @param $extension_files array
101
+ */
102
+ function add_extension_pickup_locations( $loader, $extension_files ) {
103
+ if ( count( $extension_files ) > 0 ) {
104
+ $position = 120;
105
+ foreach ( $extension_files as $file ) {
106
+
107
+ //add pickup location for php template
108
+ $loader->add_location( $position, array(
109
+ 'path' => trailingslashit( plugin_dir_path( $file ) ),
110
+ 'url' => trailingslashit( plugin_dir_url( $file ) )
111
+ ) );
112
+
113
+ $position++;
114
+
115
+ //add pickup location for extensions js folder
116
+ $loader->add_location( $position, array(
117
+ 'path' => trailingslashit( plugin_dir_path( $file ) . 'js' ),
118
+ 'url' => trailingslashit( plugin_dir_url( $file ) . 'js' )
119
+ ) );
120
+
121
+ $position++;
122
+
123
+ //add pickup location for extension css folder
124
+ $loader->add_location( $position, array(
125
+ 'path' => trailingslashit( plugin_dir_path( $file ) . 'css' ),
126
+ 'url' => trailingslashit( plugin_dir_url( $file ) . 'css' )
127
+ ) );
128
+
129
+ $position++;
130
+
131
+ }
132
+ }
133
+ }
134
+
135
+ /**
136
+ * load the gallery based on either the id or slug, passed in via arguments
137
+ *
138
+ * @param $args array Arguments passed in from the shortcode
139
+ *
140
+ * @return bool|FooGallery The gallery object we want to render
141
+ */
142
+ function find_album( $args ) {
143
+
144
+ $id = intval( $this->get_arg( $args, 'id' ), 0 );
145
+
146
+ if ( $id > 0 ) {
147
+
148
+ //load album by ID
149
+ return FooGalleryAlbum::get_by_id( $id );
150
+
151
+ } else {
152
+
153
+ //take into account the cases where id is passed in via the 'album' attribute
154
+ $album = $this->get_arg( 'album', 0 );
155
+
156
+ if ( intval( $album ) > 0 ) {
157
+ //we have an id, so load
158
+ return FooGalleryAlbum::get_by_id( intval( $album ) );
159
+ }
160
+
161
+ //we are dealing with a slug
162
+ return FooGalleryAlbum::get_by_slug( $album );
163
+ }
164
+ }
165
+
166
+ /**
167
+ * Helper to get an argument value from an array arguments
168
+ *
169
+ * @param $args Array the array of arguments to search
170
+ * @param $key string the key of the argument you are looking for
171
+ * @param $default string a default value if the argument is not found
172
+ *
173
+ * @return string
174
+ */
175
+ function get_arg( $args, $key, $default = '' ) {
176
+ if ( empty($args)
177
+ || !is_array( $args )
178
+ || !array_key_exists( $key, $args ) ) {
179
+ return $default;
180
+ }
181
+
182
+ return $args[ $key ];
183
+ }
184
+ }
extensions/albums/public/class-rewrite-rules.php CHANGED
@@ -1,47 +1,47 @@
1
- <?php
2
- /**
3
- * FooGallery Album Rewrite Rules
4
- */
5
- if (!class_exists('FooGallery_Album_Rewrite_Rules')) {
6
-
7
- class FooGallery_Album_Rewrite_Rules {
8
-
9
- function __construct() {
10
- add_action( 'init', array( $this, 'add_gallery_endpoint' ) );
11
- add_filter( 'redirect_canonical', array( $this, 'disable_canonical_redirect_for_front_page' ), 10, 2 );
12
- add_action( 'update_option_page_on_front', array( $this, 'flush_rules' ) );
13
- }
14
-
15
- function add_gallery_endpoint() {
16
- $gallery_slug = foogallery_album_gallery_url_slug();
17
-
18
- // Ensures the $query_vars['item'] is available
19
- add_rewrite_tag( "%{$gallery_slug}%", '([^&]+)' );
20
-
21
- // Requires flushing endpoints whenever the front page is switched to a different page
22
- $page_on_front = get_option( 'page_on_front' );
23
-
24
- // Match the front page and pass item value as a query var.
25
- add_rewrite_rule( "^{$gallery_slug}/([^/]*)/?", 'index.php?page_id='.$page_on_front.'&'.$gallery_slug.'=$matches[1]', 'top' );
26
- // Match non-front page pages.
27
- add_rewrite_rule( "^(.*)/{$gallery_slug}/([^/]*)/?", 'index.php?pagename=$matches[1]&static=true&'.$gallery_slug.'=$matches[2]', 'top' );
28
- }
29
-
30
- // http://wordpress.stackexchange.com/a/220484/52463
31
- // In order to keep WordPress from forcing a redirect to the canonical
32
- // home page, the redirect needs to be disabled.
33
- function disable_canonical_redirect_for_front_page( $redirect_url, $requested_url ) {
34
- if ( is_page() && $front_page = get_option( 'page_on_front' ) ) {
35
- if ( is_page( $front_page ) ) {
36
- $redirect_url = false;
37
- }
38
- }
39
-
40
- return $redirect_url;
41
- }
42
-
43
- function flush_rules() {
44
- flush_rewrite_rules();
45
- }
46
- }
47
  }
1
+ <?php
2
+ /**
3
+ * FooGallery Album Rewrite Rules
4
+ */
5
+ if (!class_exists('FooGallery_Album_Rewrite_Rules')) {
6
+
7
+ class FooGallery_Album_Rewrite_Rules {
8
+
9
+ function __construct() {
10
+ add_action( 'init', array( $this, 'add_gallery_endpoint' ) );
11
+ add_filter( 'redirect_canonical', array( $this, 'disable_canonical_redirect_for_front_page' ), 10, 2 );
12
+ add_action( 'update_option_page_on_front', array( $this, 'flush_rules' ) );
13
+ }
14
+
15
+ function add_gallery_endpoint() {
16
+ $gallery_slug = foogallery_album_gallery_url_slug();
17
+
18
+ // Ensures the $query_vars['item'] is available
19
+ add_rewrite_tag( "%{$gallery_slug}%", '([^&]+)' );
20
+
21
+ // Requires flushing endpoints whenever the front page is switched to a different page
22
+ $page_on_front = get_option( 'page_on_front' );
23
+
24
+ // Match the front page and pass item value as a query var.
25
+ add_rewrite_rule( "^{$gallery_slug}/([^/]*)/?", 'index.php?page_id='.$page_on_front.'&'.$gallery_slug.'=$matches[1]', 'top' );
26
+ // Match non-front page pages.
27
+ add_rewrite_rule( "^(.*)/{$gallery_slug}/([^/]*)/?", 'index.php?pagename=$matches[1]&static=true&'.$gallery_slug.'=$matches[2]', 'top' );
28
+ }
29
+
30
+ // http://wordpress.stackexchange.com/a/220484/52463
31
+ // In order to keep WordPress from forcing a redirect to the canonical
32
+ // home page, the redirect needs to be disabled.
33
+ function disable_canonical_redirect_for_front_page( $redirect_url, $requested_url ) {
34
+ if ( is_page() && $front_page = get_option( 'page_on_front' ) ) {
35
+ if ( is_page( $front_page ) ) {
36
+ $redirect_url = false;
37
+ }
38
+ }
39
+
40
+ return $redirect_url;
41
+ }
42
+
43
+ function flush_rules() {
44
+ flush_rewrite_rules();
45
+ }
46
+ }
47
  }
extensions/albums/public/class-shortcodes.php CHANGED
@@ -1,44 +1,44 @@
1
- <?php
2
- /*
3
- * FooGallery Album Shortcode
4
- */
5
-
6
- if ( ! class_exists( 'FooGallery_Album_Shortcodes' ) ) {
7
-
8
- class FooGallery_Album_Shortcodes {
9
-
10
- function __construct() {
11
- add_action( 'foogallery_loaded_album_template', array( $this, 'render_custom_css' ) );
12
- add_shortcode( foogallery_album_shortcode_tag(), array( $this, 'render_foogallery_album_shortcode' ) );
13
- }
14
-
15
- function render_foogallery_album_shortcode( $atts ) {
16
-
17
- $args = wp_parse_args( $atts, array(
18
- 'id' => 0,
19
- 'album' => '',
20
- ) );
21
-
22
- $args = apply_filters( 'foogallery-album_shortcode_atts', $args );
23
-
24
- //create new instance of template engine
25
- $engine = new FooGallery_Album_Template_Loader();
26
-
27
- ob_start();
28
-
29
- $engine->render_template( $args );
30
-
31
- $output_string = ob_get_contents();
32
- ob_end_clean();
33
- return $output_string;
34
- }
35
-
36
- function render_custom_css( $foogallery_album ) {
37
- if ( !empty( $foogallery_album->custom_css ) ) {
38
- echo '<style type="text/css">';
39
- echo $foogallery_album->custom_css;
40
- echo '</style>';
41
- }
42
- }
43
- }
44
- }
1
+ <?php
2
+ /*
3
+ * FooGallery Album Shortcode
4
+ */
5
+
6
+ if ( ! class_exists( 'FooGallery_Album_Shortcodes' ) ) {
7
+
8
+ class FooGallery_Album_Shortcodes {
9
+
10
+ function __construct() {
11
+ add_action( 'foogallery_loaded_album_template', array( $this, 'render_custom_css' ) );
12
+ add_shortcode( foogallery_album_shortcode_tag(), array( $this, 'render_foogallery_album_shortcode' ) );
13
+ }
14
+
15
+ function render_foogallery_album_shortcode( $atts ) {
16
+
17
+ $args = wp_parse_args( $atts, array(
18
+ 'id' => 0,
19
+ 'album' => '',
20
+ ) );
21
+
22
+ $args = apply_filters( 'foogallery-album_shortcode_atts', $args );
23
+
24
+ //create new instance of template engine
25
+ $engine = new FooGallery_Album_Template_Loader();
26
+
27
+ ob_start();
28
+
29
+ $engine->render_template( $args );
30
+
31
+ $output_string = ob_get_contents();
32
+ ob_end_clean();
33
+ return $output_string;
34
+ }
35
+
36
+ function render_custom_css( $foogallery_album ) {
37
+ if ( !empty( $foogallery_album->custom_css ) ) {
38
+ echo '<style type="text/css">';
39
+ echo $foogallery_album->custom_css;
40
+ echo '</style>';
41
+ }
42
+ }
43
+ }
44
+ }
extensions/default-templates/carousel/class-carousel-gallery-template.php ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! class_exists( 'FooGallery_Carousel_Gallery_Template' ) ) {
4
+
5
+ class FooGallery_Carousel_Gallery_Template {
6
+
7
+ const TEMPLATE_ID = 'carousel';
8
+
9
+ /**
10
+ * Wire up everything we need to run the extension
11
+ */
12
+ function __construct() {
13
+ // @formatter:off
14
+ add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
15
+
16
+ add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
17
+
18
+ //build up the thumb dimensions from some arguments
19
+ add_filter( 'foogallery_calculate_thumbnail_dimensions-carousel', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
20
+
21
+ //build up the thumb dimensions on save
22
+ add_filter( 'foogallery_template_thumbnail_dimensions-carousel', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
23
+
24
+ //build up the arguments needed for rendering this template
25
+ add_filter( 'foogallery_gallery_template_arguments-carousel', array( $this, 'build_gallery_template_arguments' ) );
26
+
27
+ //add the data options needed for grid pro
28
+ add_filter( 'foogallery_build_container_data_options-carousel', array( $this, 'add_data_options' ), 10, 3 );
29
+
30
+ add_action( 'foogallery_render_gallery_template_field_custom', array( $this, 'admin_custom_fields' ), 10, 3 );
31
+ // @formatter:on
32
+ }
33
+
34
+ /**
35
+ * Output a custom gutter field.
36
+ *
37
+ * @param $field
38
+ * @param $gallery
39
+ * @param $template
40
+ *
41
+ * @return void
42
+ */
43
+ function admin_custom_fields( $field, $gallery, $template ) {
44
+ if ( isset( $field ) && is_array( $field ) && isset( $field['type'] ) && 'carousel_gutter' === $field['type'] ) {
45
+ $id = $template['slug'] . '_' . $field['id'];
46
+ $min = is_array( $field['value'] ) ? intval( $field['value']['min'] ) : -40;
47
+ $max = is_array( $field['value'] ) ? intval( $field['value']['max'] ): -20;
48
+ $units = is_array( $field['value'] ) ? $field['value']['units'] : '%';
49
+ echo '<label for="FooGallerySettings_' . $id . '_min">' . __( 'Min', 'foogallery' ) . '</label>&nbsp;';
50
+ echo '<input class="small-text" type="number" step="1" min="-1000" id="FooGallerySettings_' . $id . '_min" name="' . FOOGALLERY_META_SETTINGS . '[' . $id . '][min]" value="' . esc_attr( $min ) . '" />';
51
+ echo '&nbsp;&nbsp;<label for="FooGallerySettings_' . $id . '_max">' . __( 'Max', 'foogallery' ) . '</label>&nbsp;';
52
+ echo '<input class="small-text" type="number" step="1" min="-1000" id="FooGallerySettings_' . $id . '_max" name="' . FOOGALLERY_META_SETTINGS . '[' . $id . '][max]" value="' . esc_attr( $max ) . '" />';
53
+ echo '&nbsp;&nbsp;<label for="FooGallerySettings_' . $id . '_units">' . __( 'Units', 'foogallery' ) . '</label>&nbsp;';
54
+ echo '<select id="FooGallerySettings_' . $id . '_units" name="' . FOOGALLERY_META_SETTINGS . '[' . $id . '][units]">';
55
+ echo '<option ' . ( $units === '%' ? 'selected="selected" ' : '' ) . 'value="%">' . __( '%', 'foogallery' ) . '</option>';
56
+ echo '<option ' . ( $units === 'px' ? 'selected="selected" ' : '' ) . 'value="px">' . __( 'px', 'foogallery' ) . '</option>';
57
+ echo '</select>';
58
+ ?>
59
+ <script type="text/javascript">
60
+ jQuery(function ($) {
61
+ $('.foogallery-field-carousel-gutter-preset').on('click', function(e) {
62
+ e.preventDefault();
63
+
64
+ $('#FooGallerySettings_<?php echo $id; ?>_min').val( $(this).data('min') );
65
+ $('#FooGallerySettings_<?php echo $id; ?>_max').val( $(this).data('max') );
66
+ $('#FooGallerySettings_<?php echo $id; ?>_units').val( $(this).data('units') ).trigger("change");
67
+ });
68
+ });
69
+ </script>
70
+ <?php
71
+ echo '&nbsp;&nbsp;<a data-min="-40" data-max="-20" data-units="%" class="foogallery-field-carousel-gutter-preset" href="#" >' . __( 'Preset 1', 'foogallery' ) . '</a>';
72
+ echo '&nbsp;&nbsp;<a data-min="5" data-max="10" data-units="px" class="foogallery-field-carousel-gutter-preset" href="#" >' . __( 'Preset 2', 'foogallery' ) . '</a>';
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Add the required data options if needed
78
+ *
79
+ * @param $options
80
+ * @param $gallery FooGallery
81
+ *
82
+ * @param $attributes array
83
+ *
84
+ * @return array
85
+ */
86
+ function add_data_options($options, $gallery, $attributes) {
87
+ $maxItems = foogallery_gallery_template_setting( 'maxItems', 3 );
88
+ $scale = foogallery_gallery_template_setting( 'scale', 0.12 );
89
+ $gutter = foogallery_gallery_template_setting( 'gutter', array( 'min' => -40, 'max' => -20, 'units' => '%' ) );
90
+ $gutter_min = $gutter['min'];
91
+ $gutter_max = $gutter['max'];
92
+ $gutter_units = $gutter['units'];
93
+ $centerOnClick = foogallery_gallery_template_setting( 'centerOnClick', 'false' ) === 'true';
94
+ $autoplay_interaction = foogallery_gallery_template_setting( 'autoplay_interaction', 'pause' );
95
+ $autoplay_time = foogallery_gallery_template_setting( 'autoplay_time', 0 );
96
+
97
+ $options['template']['maxItems'] = intval( $maxItems );
98
+ $options['template']['scale'] = floatval( $scale );
99
+ $options['template']['gutter']['min'] = intval( $gutter_min );
100
+ $options['template']['gutter']['max'] = intval( $gutter_max );
101
+ $options['template']['gutter']['unit'] = $gutter_units;
102
+ $options['template']['autoplay']['time'] = intval( $autoplay_time );
103
+ $options['template']['autoplay']['interaction'] = $autoplay_interaction;
104
+ $options['template']['centerOnClick'] = $centerOnClick;
105
+
106
+ return $options;
107
+ }
108
+
109
+ /**
110
+ * Register myself so that all associated JS and CSS files can be found and automatically included
111
+ *
112
+ * @param $extensions
113
+ *
114
+ * @return array
115
+ */
116
+ function register_myself( $extensions ) {
117
+ $extensions[] = __FILE__;
118
+
119
+ return $extensions;
120
+ }
121
+
122
+ /**
123
+ * Add our gallery template to the list of templates available for every gallery
124
+ *
125
+ * @param $gallery_templates
126
+ *
127
+ * @return array
128
+ */
129
+ function add_template( $gallery_templates ) {
130
+ $gallery_templates[] = array(
131
+ 'slug' => self::TEMPLATE_ID,
132
+ 'name' => __( 'Carousel', 'foogallery' ),
133
+ 'preview_support' => true,
134
+ 'common_fields_support' => true,
135
+ 'paging_support' => true,
136
+ 'lazyload_support' => true,
137
+ 'mandatory_classes' => 'fg-carousel',
138
+ 'thumbnail_dimensions' => true,
139
+ 'filtering_support' => true,
140
+ 'enqueue_core' => true,
141
+ 'fields' => array(
142
+ array(
143
+ 'id' => 'thumbnail_dimensions',
144
+ 'title' => __( 'Thumbnail Size', 'foogallery' ),
145
+ 'desc' => __( 'Choose the size of your thumbnails.', 'foogallery' ),
146
+ 'section' => __( 'General', 'foogallery' ),
147
+ 'type' => 'thumb_size_no_crop',
148
+ 'default' => array(
149
+ 'width' => 200,
150
+ 'height' => 200,
151
+ 'crop' => true
152
+ ),
153
+ 'row_data' => array(
154
+ 'data-foogallery-change-selector' => 'input',
155
+ 'data-foogallery-preview' => 'shortcode'
156
+ )
157
+ ),
158
+ array(
159
+ 'id' => 'maxItems',
160
+ 'title' => __( 'Max Items To Show', 'foogallery' ),
161
+ 'desc' => __( 'The total number of items displayed in the carousel. This should be an ODD number as the active item is the center and the remainder make up each side.', 'foogallery' ),
162
+ 'section' => __( 'General', 'foogallery' ),
163
+ 'default' => '3',
164
+ 'type' => 'number',
165
+ 'row_data' => array(
166
+ 'data-foogallery-change-selector' => 'input',
167
+ 'data-foogallery-preview' => 'shortcode'
168
+ )
169
+ ),
170
+ array(
171
+ 'id' => 'scale',
172
+ 'title' => __( 'Scaling', 'foogallery' ),
173
+ 'desc' => __( 'How to scale the items that are not in the center. Each item to the side is scaled down by this factor.', 'foogallery' ),
174
+ 'section' => __( 'General', 'foogallery' ),
175
+ 'default' => '0.12',
176
+ 'type' => 'select',
177
+ 'choices' => array(
178
+ '0' => __( 'None', 'foogallery' ),
179
+ '0.05' => __( 'Less', 'foogallery' ),
180
+ '0.12' => __( 'Normal', 'foogallery' ),
181
+ '0.18' => __( 'More', 'foogallery' ),
182
+ '0.25' => __( 'Most', 'foogallery' ),
183
+ ),
184
+ 'row_data' => array(
185
+ 'data-foogallery-change-selector' => 'select',
186
+ 'data-foogallery-preview' => 'shortcode'
187
+ )
188
+ ),
189
+ array(
190
+ 'id' => 'gutter',
191
+ 'title' => __( 'Gutters', 'foogallery' ),
192
+ 'desc' => __( 'The minimum gutter to apply to items. Negative values create an overlap. ', 'foogallery' ),
193
+ 'section' => __( 'General', 'foogallery' ),
194
+ 'default' => array( 'min' => -40, 'max' => -20, 'units' => '%' ),
195
+ 'type' => 'carousel_gutter',
196
+ 'row_data' => array(
197
+ 'data-foogallery-change-selector' => ':input',
198
+ 'data-foogallery-preview' => 'shortcode'
199
+ )
200
+ ),
201
+ array(
202
+ 'id' => 'centerOnClick',
203
+ 'title' => __( 'Side Items Click', 'foogallery' ),
204
+ 'desc' => __( 'What happens when an item in the carousel is clicked.', 'foogallery' ),
205
+ 'section' => __( 'General', 'foogallery' ),
206
+ 'default' => 'true',
207
+ 'type' => 'radio',
208
+ 'spacer' => '<span class="spacer"></span>',
209
+ 'choices' => array(
210
+ 'true' => __( 'Center The Clicked Item', 'foogallery' ),
211
+ 'false' => __( 'Open The Item In Lightbox', 'foogallery' ),
212
+ ),
213
+ 'row_data' => array(
214
+ 'data-foogallery-change-selector' => 'input',
215
+ 'data-foogallery-preview' => 'shortcode'
216
+ )
217
+ ),
218
+ array(
219
+ 'id' => 'autoplay_time',
220
+ 'title' => __( 'Autoplay Time', 'foogallery' ),
221
+ 'desc' => __( 'The number in seconds an item is displayed. Set to zero to turn off autoplay.', 'foogallery' ),
222
+ 'section' => __( 'General', 'foogallery' ),
223
+ 'default' => '0',
224
+ 'min' => 0,
225
+ 'type' => 'number',
226
+ 'row_data' => array(
227
+ 'data-foogallery-change-selector' => 'input',
228
+ 'data-foogallery-preview' => 'shortcode'
229
+ )
230
+ ),
231
+ array(
232
+ 'id' => 'autoplay_interaction',
233
+ 'title' => __( 'Autoplay', 'foogallery' ),
234
+ 'desc' => __( 'Specifies what occurs once/when a user has interacted with the carousel. Please Note: for touch devices autoplay is paused on "touchstart" and is only resumed once the user has not interacted with the carousel for the supplied time.', 'foogallery' ),
235
+ 'section' => __( 'General', 'foogallery' ),
236
+ 'default' => 'pause',
237
+ 'type' => 'radio',
238
+ 'choices' => array(
239
+ 'pause' => __( 'Pause - autoplay will resume a short time after the user stops interacting with the carousel', 'foogallery' ),
240
+ 'disable' => __( 'Disable - autoplay is simply turned off once the carousel has been interacted with', 'foogallery' ),
241
+ ),
242
+ 'row_data' => array(
243
+ 'data-foogallery-change-selector' => 'input',
244
+ 'data-foogallery-preview' => 'shortcode'
245
+ )
246
+ ),
247
+ array(
248
+ 'id' => 'inverted',
249
+ 'title' => __( 'Invert Control Theme', 'foogallery' ),
250
+ 'desc' => __( 'Inverts the theme used for the carousel controls (paging and navigation buttons) based on the theme under appearance.', 'foogallery' ),
251
+ 'section' => __( 'General', 'foogallery' ),
252
+ 'default' => '',
253
+ 'type' => 'radio',
254
+ 'spacer' => '<span class="spacer"></span>',
255
+ 'choices' => array(
256
+ '' => __( 'Same', 'foogallery' ),
257
+ 'fg-inverted' => __( 'Inverted', 'foogallery' ),
258
+ ),
259
+ 'row_data' => array(
260
+ 'data-foogallery-change-selector' => 'input',
261
+ 'data-foogallery-preview' => 'shortcode'
262
+ )
263
+ ),
264
+ array(
265
+ 'id' => 'thumbnail_link',
266
+ 'title' => __( 'Thumbnail Link', 'foogallery' ),
267
+ 'section' => __( 'General', 'foogallery' ),
268
+ 'default' => 'image',
269
+ 'type' => 'thumb_link',
270
+ 'desc' => __( 'You can choose to link each thumbnail to the full size image, the image\'s attachment page, a custom URL, or you can choose to not link to anything.', 'foogallery' ),
271
+ ),
272
+ array(
273
+ 'id' => 'lightbox',
274
+ 'title' => __( 'Lightbox', 'foogallery' ),
275
+ 'desc' => __( 'Choose which lightbox you want to use. The lightbox will generally only work if you set the thumbnail link to "Full Size Image".', 'foogallery' ),
276
+ 'section' => __( 'General', 'foogallery' ),
277
+ 'type' => 'lightbox',
278
+ 'default' => 'none'
279
+ ),
280
+ )
281
+ );
282
+
283
+ return $gallery_templates;
284
+ }
285
+
286
+ /**
287
+ * Builds thumb dimensions from arguments
288
+ *
289
+ * @param array $dimensions
290
+ * @param array $arguments
291
+ *
292
+ * @return mixed
293
+ */
294
+ function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
295
+ if ( array_key_exists( 'thumbnail_dimensions', $arguments ) ) {
296
+ return array(
297
+ 'height' => intval( $arguments['thumbnail_dimensions']['height'] ),
298
+ 'width' => intval( $arguments['thumbnail_dimensions']['width'] ),
299
+ 'crop' => '1'
300
+ );
301
+ }
302
+
303
+ return null;
304
+ }
305
+
306
+ /**
307
+ * Get the thumb dimensions arguments saved for the gallery for this gallery template
308
+ *
309
+ * @param array $dimensions
310
+ * @param FooGallery $foogallery
311
+ *
312
+ * @return mixed
313
+ */
314
+ function get_thumbnail_dimensions( $dimensions, $foogallery ) {
315
+ $dimensions = $foogallery->get_meta( 'carousel_thumbnail_dimensions', array(
316
+ 'width' => 200,
317
+ 'height' => 200
318
+ ) );
319
+ $dimensions['crop'] = true;
320
+
321
+ return $dimensions;
322
+ }
323
+
324
+ /**
325
+ * Build up the arguments needed for rendering this gallery template
326
+ *
327
+ * @param $args
328
+ *
329
+ * @return array
330
+ */
331
+ function build_gallery_template_arguments( $args ) {
332
+ $args = foogallery_gallery_template_setting( 'thumbnail_dimensions', array() );
333
+ $args['crop'] = '1'; //we now force thumbs to be cropped
334
+ $args['link'] = foogallery_gallery_template_setting( 'thumbnail_link', 'image' );
335
+
336
+ return $args;
337
+ }
338
+ }
339
+ }
extensions/default-templates/carousel/gallery-carousel.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FooGallery default responsive gallery template
4
+ */
5
+ global $current_foogallery;
6
+
7
+ $lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
8
+ $inverted = foogallery_gallery_template_setting( 'inverted', '' );
9
+ $foogallery_default_classes = foogallery_build_class_attribute_safe( $current_foogallery, 'foogallery-lightbox-' . $lightbox, $inverted );
10
+ $foogallery_default_attributes = foogallery_build_container_attributes_safe( $current_foogallery, array( 'class' => $foogallery_default_classes ) );
11
+ $foogallery_active_class = 'fg-item-active';
12
+ $args = foogallery_gallery_template_arguments();
13
+ ?><div <?php echo $foogallery_default_attributes; ?>>
14
+ <button type="button" class="fg-carousel-prev"></button>
15
+ <div class="fg-carousel-inner">
16
+ <div class="fg-carousel-center"></div>
17
+ <?php foreach ( foogallery_current_gallery_attachments_for_rendering() as $attachment ) {
18
+ $args['class'] = $foogallery_active_class;
19
+ echo foogallery_attachment_html( $attachment, $args );
20
+ $foogallery_active_class = '';
21
+ } ?>
22
+ </div>
23
+ <div class="fg-carousel-bottom"></div>
24
+ <div class="fg-carousel-progress"></div>
25
+ <button type="button" class="fg-carousel-next"></button>
26
+ </div>
extensions/default-templates/class-default-templates-extension.php CHANGED
@@ -1,13 +1,13 @@
1
- <?php
2
- /**
3
- * Legacy Default Extensions Class for previous versions where the default templates were an extension.
4
- * The class is now empty and has no logic. It is purely here so that existing installs do not break
5
- */
6
-
7
- if ( ! class_exists( 'FooGallery_Default_Templates_Extension' ) ) {
8
-
9
- class FooGallery_Default_Templates_Extension {
10
- function __construct() {
11
- }
12
- }
13
- }
1
+ <?php
2
+ /**
3
+ * Legacy Default Extensions Class for previous versions where the default templates were an extension.
4
+ * The class is now empty and has no logic. It is purely here so that existing installs do not break
5
+ */
6
+
7
+ if ( ! class_exists( 'FooGallery_Default_Templates_Extension' ) ) {
8
+
9
+ class FooGallery_Default_Templates_Extension {
10
+ function __construct() {
11
+ }
12
+ }
13
+ }
extensions/default-templates/class-default-templates.php CHANGED
@@ -1,53 +1,54 @@
1
- <?php
2
- /**
3
- * Class to include and init default templates.
4
- * The templates are no longer an extension and are built in and included by default
5
- */
6
-
7
- if ( ! class_exists( 'FooGallery_Default_Templates' ) ) {
8
-
9
- define( 'FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_URL', plugin_dir_url( __FILE__ ) );
10
- define( 'FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH', plugin_dir_path( __FILE__ ) );
11
-
12
- define( 'FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_URL', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_URL . 'shared/' );
13
- define( 'FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_PATH', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'shared/' );
14
-
15
- require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'functions.php';
16
- require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'default/class-default-gallery-template.php';
17
- require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'image-viewer/class-image-viewer-gallery-template.php';
18
- require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'justified/class-justified-gallery-template.php';
19
- require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'masonry/class-masonry-gallery-template.php';
20
- require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'simple-portfolio/class-simple-portfolio-gallery-template.php';
21
- require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'thumbnail/class-thumbnail-gallery-template.php';
22
-
23
- class FooGallery_Default_Templates {
24
-
25
- function __construct() {
26
- new FooGallery_Default_Gallery_Template();
27
- new FooGallery_Image_Viewer_Gallery_Template();
28
- new FooGallery_Justified_Gallery_Template();
29
- //new FooGallery_Justified_CSS_Gallery_Template();
30
- new FooGallery_Masonry_Gallery_Template();
31
- new FooGallery_Simple_Portfolio_Gallery_Template();
32
- new FooGallery_Thumbnail_Gallery_Template();
33
-
34
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) );
35
- }
36
-
37
- /***
38
- * Enqueue the assets needed by the default templates
39
- * @param $hook_suffix
40
- */
41
- function enqueue_assets( $hook_suffix ){
42
- if( in_array( $hook_suffix, array( 'post.php', 'post-new.php' ) ) ) {
43
- $screen = get_current_screen();
44
-
45
- if ( is_object( $screen ) && FOOGALLERY_CPT_GALLERY == $screen->post_type ){
46
-
47
- // Register, enqueue scripts and styles here
48
- wp_enqueue_style( 'foogallery-core-admin-settings', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_URL . 'css/admin-foogallery.css', array(), FOOGALLERY_VERSION );
49
- }
50
- }
51
- }
52
- }
53
- }
 
1
+ <?php
2
+ /**
3
+ * Class to include and init default templates.
4
+ * The templates are no longer an extension and are built in and included by default
5
+ */
6
+
7
+ if ( ! class_exists( 'FooGallery_Default_Templates' ) ) {
8
+
9
+ define( 'FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_URL', plugin_dir_url( __FILE__ ) );
10
+ define( 'FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH', plugin_dir_path( __FILE__ ) );
11
+
12
+ define( 'FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_URL', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_URL . 'shared/' );
13
+ define( 'FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_PATH', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'shared/' );
14
+
15
+ require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'functions.php';
16
+ require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'default/class-default-gallery-template.php';
17
+ require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'image-viewer/class-image-viewer-gallery-template.php';
18
+ require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'justified/class-justified-gallery-template.php';
19
+ require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'masonry/class-masonry-gallery-template.php';
20
+ require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'simple-portfolio/class-simple-portfolio-gallery-template.php';
21
+ require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'thumbnail/class-thumbnail-gallery-template.php';
22
+ require_once FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_PATH . 'carousel/class-carousel-gallery-template.php';
23
+
24
+ class FooGallery_Default_Templates {
25
+
26
+ function __construct() {
27
+ new FooGallery_Default_Gallery_Template();
28
+ new FooGallery_Image_Viewer_Gallery_Template();
29
+ new FooGallery_Justified_Gallery_Template();
30
+ new FooGallery_Masonry_Gallery_Template();
31
+ new FooGallery_Simple_Portfolio_Gallery_Template();
32
+ new FooGallery_Thumbnail_Gallery_Template();
33
+ new FooGallery_Carousel_Gallery_Template();
34
+
35
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) );
36
+ }
37
+
38
+ /***
39
+ * Enqueue the assets needed by the default templates
40
+ * @param $hook_suffix
41
+ */
42
+ function enqueue_assets( $hook_suffix ){
43
+ if( in_array( $hook_suffix, array( 'post.php', 'post-new.php' ) ) ) {
44
+ $screen = get_current_screen();
45
+
46
+ if ( is_object( $screen ) && FOOGALLERY_CPT_GALLERY == $screen->post_type ){
47
+
48
+ // Register, enqueue scripts and styles here
49
+ wp_enqueue_style( 'foogallery-core-admin-settings', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_URL . 'css/admin-foogallery.css', array(), FOOGALLERY_VERSION );
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
extensions/default-templates/default/class-default-gallery-template.php CHANGED
@@ -1,240 +1,240 @@
1
- <?php
2
-
3
- if ( ! class_exists( 'FooGallery_Default_Gallery_Template' ) ) {
4
-
5
- define( 'FOOGALLERY_DEFAULT_GALLERY_TEMPLATE_URL', plugin_dir_url( __FILE__ ) );
6
-
7
- class FooGallery_Default_Gallery_Template {
8
-
9
- const TEMPLATE_ID = 'default';
10
-
11
- /**
12
- * Wire up everything we need to run the extension
13
- */
14
- function __construct() {
15
- // @formatter:off
16
- add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
17
-
18
- add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
19
-
20
- //build up the thumb dimensions from some arguments
21
- add_filter( 'foogallery_calculate_thumbnail_dimensions-default', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
22
-
23
- //build up the thumb dimensions on save
24
- add_filter( 'foogallery_template_thumbnail_dimensions-default', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
25
-
26
- //build up the arguments needed for rendering this template
27
- add_filter( 'foogallery_gallery_template_arguments-default', array( $this, 'build_gallery_template_arguments' ) );
28
-
29
- // add a style block for the gallery based on the thumbnail width.
30
- add_action( 'foogallery_loaded_template_before', array( $this, 'add_width_style_block' ), 10, 1 );
31
- // @formatter:on
32
- }
33
-
34
- /**
35
- * Add a style block based on the width thumbnail size
36
- *
37
- * @param $gallery FooGallery
38
- */
39
- function add_width_style_block( $gallery ) {
40
- if ( self::TEMPLATE_ID !== $gallery->gallery_template ) {
41
- return;
42
- }
43
-
44
- $id = $gallery->container_id();
45
- $dimensions = foogallery_gallery_template_setting('thumbnail_dimensions');
46
- if ( is_array( $dimensions ) && array_key_exists( 'width', $dimensions ) && intval( $dimensions['width'] ) > 0 ) {
47
- $width = intval( $dimensions['width'] );
48
-
49
- // @formatter:off
50
- ?>
51
- <style type="text/css">
52
- <?php echo '#' . $id; ?> .fg-image {
53
- width: <?php echo $width; ?>px;
54
- }
55
- </style>
56
- <?php
57
- // @formatter:on
58
- }
59
- }
60
-
61
- /**
62
- * Register myself so that all associated JS and CSS files can be found and automatically included
63
- *
64
- * @param $extensions
65
- *
66
- * @return array
67
- */
68
- function register_myself( $extensions ) {
69
- $extensions[] = __FILE__;
70
-
71
- return $extensions;
72
- }
73
-
74
- /**
75
- * Add our gallery template to the list of templates available for every gallery
76
- *
77
- * @param $gallery_templates
78
- *
79
- * @return array
80
- */
81
- function add_template( $gallery_templates ) {
82
- $gallery_templates[] = array(
83
- 'slug' => self::TEMPLATE_ID,
84
- 'name' => __( 'Responsive Image Gallery', 'foogallery' ),
85
- 'preview_support' => true,
86
- 'common_fields_support' => true,
87
- 'paging_support' => true,
88
- 'lazyload_support' => true,
89
- 'mandatory_classes' => 'fg-default',
90
- 'thumbnail_dimensions' => true,
91
- 'filtering_support' => true,
92
- 'enqueue_core' => true,
93
- 'fields' => array(
94
- array(
95
- 'id' => 'thumbnail_dimensions',
96
- 'title' => __( 'Thumbnail Size', 'foogallery' ),
97
- 'desc' => __( 'Choose the size of your thumbnails.', 'foogallery' ),
98
- 'section' => __( 'General', 'foogallery' ),
99
- 'type' => 'thumb_size_no_crop',
100
- 'default' => array(
101
- 'width' => get_option( 'thumbnail_size_w' ),
102
- 'height' => get_option( 'thumbnail_size_h' ),
103
- ),
104
- 'row_data' => array(
105
- 'data-foogallery-change-selector' => 'input',
106
- 'data-foogallery-preview' => 'shortcode'
107
- )
108
- ),
109
- array(
110
- 'id' => 'mobile_columns',
111
- 'title' => __( 'Mobile Layout', 'foogallery' ),
112
- 'desc' => __( 'Number of columns to show on mobile (screen widths less than 600px)', 'foogallery' ),
113
- 'section' => __( 'General', 'foogallery' ),
114
- 'default' => '',
115
- 'type' => 'radio',
116
- 'choices' => array(
117
- '' => __( 'Default', 'foogallery' ),
118
- 'fg-m-col1' => __( '1 Column', 'foogallery' ),
119
- 'fg-m-col2' => __( '2 Columns', 'foogallery' ),
120
- 'fg-m-col3' => __( '3 Columns', 'foogallery' ),
121
- ),
122
- 'row_data' => array(
123
- 'data-foogallery-change-selector' => 'input:radio',
124
- 'data-foogallery-preview' => 'shortcode'
125
- )
126
- ),
127
- array(
128
- 'id' => 'thumbnail_link',
129
- 'title' => __( 'Thumbnail Link', 'foogallery' ),
130
- 'section' => __( 'General', 'foogallery' ),
131
- 'default' => 'image',
132
- 'type' => 'thumb_link',
133
- 'desc' => __( 'You can choose to link each thumbnail to the full size image, the image\'s attachment page, a custom URL, or you can choose to not link to anything.', 'foogallery' ),
134
- ),
135
- array(
136
- 'id' => 'lightbox',
137
- 'title' => __( 'Lightbox', 'foogallery' ),
138
- 'desc' => __( 'Choose which lightbox you want to use. The lightbox will generally only work if you set the thumbnail link to "Full Size Image".', 'foogallery' ),
139
- 'section' => __( 'General', 'foogallery' ),
140
- 'type' => 'lightbox',
141
- 'default' => 'none'
142
- ),
143
- array(
144
- 'id' => 'spacing',
145
- 'title' => __( 'Spacing', 'foogallery' ),
146
- 'desc' => __( 'The spacing or gap between thumbnails in the gallery.', 'foogallery' ),
147
- 'section' => __( 'General', 'foogallery' ),
148
- 'type' => 'select',
149
- 'default' => 'fg-gutter-10',
150
- 'choices' => array(
151
- 'fg-gutter-0' => __( 'none', 'foogallery' ),
152
- 'fg-gutter-5' => __( '5 pixels', 'foogallery' ),
153
- 'fg-gutter-10' => __( '10 pixels', 'foogallery' ),
154
- 'fg-gutter-15' => __( '15 pixels', 'foogallery' ),
155
- 'fg-gutter-20' => __( '20 pixels', 'foogallery' ),
156
- 'fg-gutter-25' => __( '25 pixels', 'foogallery' ),
157
- ),
158
- 'row_data' => array(
159
- 'data-foogallery-change-selector' => 'select',
160
- 'data-foogallery-preview' => 'shortcode'
161
- )
162
- ),
163
- array(
164
- 'id' => 'alignment',
165
- 'title' => __( 'Alignment', 'foogallery' ),
166
- 'desc' => __( 'The horizontal alignment of the thumbnails inside the gallery.', 'foogallery' ),
167
- 'section' => __( 'General', 'foogallery' ),
168
- 'default' => 'fg-center',
169
- 'type' => 'radio',
170
- 'spacer' => '<span class="spacer"></span>',
171
- 'choices' => array(
172
- 'fg-left' => __( 'Left', 'foogallery' ),
173
- 'fg-center' => __( 'Center', 'foogallery' ),
174
- 'fg-right' => __( 'Right', 'foogallery' ),
175
- ),
176
- 'row_data' => array(
177
- 'data-foogallery-change-selector' => 'input:radio',
178
- 'data-foogallery-preview' => 'shortcode'
179
- )
180
- )
181
- )
182
- );
183
-
184
- return $gallery_templates;
185
- }
186
-
187
- /**
188
- * Builds thumb dimensions from arguments
189
- *
190
- * @param array $dimensions
191
- * @param array $arguments
192
- *
193
- * @return mixed
194
- */
195
- function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
196
- if ( array_key_exists( 'thumbnail_dimensions', $arguments ) ) {
197
- return array(
198
- 'height' => intval( $arguments['thumbnail_dimensions']['height'] ),
199
- 'width' => intval( $arguments['thumbnail_dimensions']['width'] ),
200
- 'crop' => '1'
201
- );
202
- }
203
-
204
- return null;
205
- }
206
-
207
- /**
208
- * Get the thumb dimensions arguments saved for the gallery for this gallery template
209
- *
210
- * @param array $dimensions
211
- * @param FooGallery $foogallery
212
- *
213
- * @return mixed
214
- */
215
- function get_thumbnail_dimensions( $dimensions, $foogallery ) {
216
- $dimensions = $foogallery->get_meta( 'default_thumbnail_dimensions', array(
217
- 'width' => get_option( 'thumbnail_size_w' ),
218
- 'height' => get_option( 'thumbnail_size_h' )
219
- ) );
220
- $dimensions['crop'] = true;
221
-
222
- return $dimensions;
223
- }
224
-
225
- /**
226
- * Build up the arguments needed for rendering this gallery template
227
- *
228
- * @param $args
229
- *
230
- * @return array
231
- */
232
- function build_gallery_template_arguments( $args ) {
233
- $args = foogallery_gallery_template_setting( 'thumbnail_dimensions', array() );
234
- $args['crop'] = '1'; //we now force thumbs to be cropped
235
- $args['link'] = foogallery_gallery_template_setting( 'thumbnail_link', 'image' );
236
-
237
- return $args;
238
- }
239
- }
240
  }
1
+ <?php
2
+
3
+ if ( ! class_exists( 'FooGallery_Default_Gallery_Template' ) ) {
4
+
5
+ define( 'FOOGALLERY_DEFAULT_GALLERY_TEMPLATE_URL', plugin_dir_url( __FILE__ ) );
6
+
7
+ class FooGallery_Default_Gallery_Template {
8
+
9
+ const TEMPLATE_ID = 'default';
10
+
11
+ /**
12
+ * Wire up everything we need to run the extension
13
+ */
14
+ function __construct() {
15
+ // @formatter:off
16
+ add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
17
+
18
+ add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
19
+
20
+ //build up the thumb dimensions from some arguments
21
+ add_filter( 'foogallery_calculate_thumbnail_dimensions-default', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
22
+
23
+ //build up the thumb dimensions on save
24
+ add_filter( 'foogallery_template_thumbnail_dimensions-default', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
25
+
26
+ //build up the arguments needed for rendering this template
27
+ add_filter( 'foogallery_gallery_template_arguments-default', array( $this, 'build_gallery_template_arguments' ) );
28
+
29
+ // add a style block for the gallery based on the thumbnail width.
30
+ add_action( 'foogallery_loaded_template_before', array( $this, 'add_width_style_block' ), 10, 1 );
31
+ // @formatter:on
32
+ }
33
+
34
+ /**
35
+ * Add a style block based on the width thumbnail size
36
+ *
37
+ * @param $gallery FooGallery
38
+ */
39
+ function add_width_style_block( $gallery ) {
40
+ if ( self::TEMPLATE_ID !== $gallery->gallery_template ) {
41
+ return;
42
+ }
43
+
44
+ $id = $gallery->container_id();
45
+ $dimensions = foogallery_gallery_template_setting('thumbnail_dimensions');
46
+ if ( is_array( $dimensions ) && array_key_exists( 'width', $dimensions ) && intval( $dimensions['width'] ) > 0 ) {
47
+ $width = intval( $dimensions['width'] );
48
+
49
+ // @formatter:off
50
+ ?>
51
+ <style type="text/css">
52
+ <?php echo '#' . $id; ?> .fg-image {
53
+ width: <?php echo $width; ?>px;
54
+ }
55
+ </style>
56
+ <?php
57
+ // @formatter:on
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Register myself so that all associated JS and CSS files can be found and automatically included
63
+ *
64
+ * @param $extensions
65
+ *
66
+ * @return array
67
+ */
68
+ function register_myself( $extensions ) {
69
+ $extensions[] = __FILE__;
70
+
71
+ return $extensions;
72
+ }
73
+
74
+ /**
75
+ * Add our gallery template to the list of templates available for every gallery
76
+ *
77
+ * @param $gallery_templates
78
+ *
79
+ * @return array
80
+ */
81
+ function add_template( $gallery_templates ) {
82
+ $gallery_templates[] = array(
83
+ 'slug' => self::TEMPLATE_ID,
84
+ 'name' => __( 'Responsive Image Gallery', 'foogallery' ),
85
+ 'preview_support' => true,
86
+ 'common_fields_support' => true,
87
+ 'paging_support' => true,
88
+ 'lazyload_support' => true,
89
+ 'mandatory_classes' => 'fg-default',
90
+ 'thumbnail_dimensions' => true,
91
+ 'filtering_support' => true,
92
+ 'enqueue_core' => true,
93
+ 'fields' => array(
94
+ array(
95
+ 'id' => 'thumbnail_dimensions',
96
+ 'title' => __( 'Thumbnail Size', 'foogallery' ),
97
+ 'desc' => __( 'Choose the size of your thumbnails.', 'foogallery' ),
98
+ 'section' => __( 'General', 'foogallery' ),
99
+ 'type' => 'thumb_size_no_crop',
100
+ 'default' => array(
101
+ 'width' => get_option( 'thumbnail_size_w' ),
102
+ 'height' => get_option( 'thumbnail_size_h' ),
103
+ ),
104
+ 'row_data' => array(
105
+ 'data-foogallery-change-selector' => 'input',
106
+ 'data-foogallery-preview' => 'shortcode'
107
+ )
108
+ ),
109
+ array(
110
+ 'id' => 'mobile_columns',
111
+ 'title' => __( 'Mobile Layout', 'foogallery' ),
112
+ 'desc' => __( 'Number of columns to show on mobile (screen widths less than 600px)', 'foogallery' ),
113
+ 'section' => __( 'General', 'foogallery' ),
114
+ 'default' => '',
115
+ 'type' => 'radio',
116
+ 'choices' => array(
117
+ '' => __( 'Default', 'foogallery' ),
118
+ 'fg-m-col1' => __( '1 Column', 'foogallery' ),
119
+ 'fg-m-col2' => __( '2 Columns', 'foogallery' ),
120
+ 'fg-m-col3' => __( '3 Columns', 'foogallery' ),
121
+ ),
122
+ 'row_data' => array(
123
+ 'data-foogallery-change-selector' => 'input:radio',
124
+ 'data-foogallery-preview' => 'shortcode'
125
+ )
126
+ ),
127
+ array(
128
+ 'id' => 'thumbnail_link',
129
+ 'title' => __( 'Thumbnail Link', 'foogallery' ),
130
+ 'section' => __( 'General', 'foogallery' ),
131
+ 'default' => 'image',
132
+ 'type' => 'thumb_link',
133
+ 'desc' => __( 'You can choose to link each thumbnail to the full size image, the image\'s attachment page, a custom URL, or you can choose to not link to anything.', 'foogallery' ),
134
+ ),
135
+ array(
136
+ 'id' => 'lightbox',
137
+ 'title' => __( 'Lightbox', 'foogallery' ),
138
+ 'desc' => __( 'Choose which lightbox you want to use. The lightbox will generally only work if you set the thumbnail link to "Full Size Image".', 'foogallery' ),
139
+ 'section' => __( 'General', 'foogallery' ),
140
+ 'type' => 'lightbox',
141
+ 'default' => 'none'
142
+ ),
143
+ array(
144
+ 'id' => 'spacing',
145
+ 'title' => __( 'Spacing', 'foogallery' ),
146
+ 'desc' => __( 'The spacing or gap between thumbnails in the gallery.', 'foogallery' ),
147
+ 'section' => __( 'General', 'foogallery' ),
148
+ 'type' => 'select',
149
+ 'default' => 'fg-gutter-10',
150
+ 'choices' => array(
151
+ 'fg-gutter-0' => __( 'none', 'foogallery' ),
152
+ 'fg-gutter-5' => __( '5 pixels', 'foogallery' ),
153
+ 'fg-gutter-10' => __( '10 pixels', 'foogallery' ),
154
+ 'fg-gutter-15' => __( '15 pixels', 'foogallery' ),
155
+ 'fg-gutter-20' => __( '20 pixels', 'foogallery' ),
156
+ 'fg-gutter-25' => __( '25 pixels', 'foogallery' ),
157
+ ),
158
+ 'row_data' => array(
159
+ 'data-foogallery-change-selector' => 'select',
160
+ 'data-foogallery-preview' => 'shortcode'
161
+ )
162
+ ),
163
+ array(
164
+ 'id' => 'alignment',
165
+ 'title' => __( 'Alignment', 'foogallery' ),
166
+ 'desc' => __( 'The horizontal alignment of the thumbnails inside the gallery.', 'foogallery' ),
167
+ 'section' => __( 'General', 'foogallery' ),
168
+ 'default' => 'fg-center',
169
+ 'type' => 'radio',
170
+ 'spacer' => '<span class="spacer"></span>',
171
+ 'choices' => array(
172
+ 'fg-left' => __( 'Left', 'foogallery' ),
173
+ 'fg-center' => __( 'Center', 'foogallery' ),
174
+ 'fg-right' => __( 'Right', 'foogallery' ),
175
+ ),
176
+ 'row_data' => array(
177
+ 'data-foogallery-change-selector' => 'input:radio',
178
+ 'data-foogallery-preview' => 'shortcode'
179
+ )
180
+ )
181
+ )
182
+ );
183
+
184
+ return $gallery_templates;
185
+ }
186
+
187
+ /**
188
+ * Builds thumb dimensions from arguments
189
+ *
190
+ * @param array $dimensions
191
+ * @param array $arguments
192
+ *
193
+ * @return mixed
194
+ */
195
+ function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
196
+ if ( array_key_exists( 'thumbnail_dimensions', $arguments ) ) {
197
+ return array(
198
+ 'height' => intval( $arguments['thumbnail_dimensions']['height'] ),
199
+ 'width' => intval( $arguments['thumbnail_dimensions']['width'] ),
200
+ 'crop' => '1'
201
+ );
202
+ }
203
+
204
+ return null;
205
+ }
206
+
207
+ /**
208
+ * Get the thumb dimensions arguments saved for the gallery for this gallery template
209
+ *
210
+ * @param array $dimensions
211
+ * @param FooGallery $foogallery
212
+ *
213
+ * @return mixed
214
+ */
215
+ function get_thumbnail_dimensions( $dimensions, $foogallery ) {
216
+ $dimensions = $foogallery->get_meta( 'default_thumbnail_dimensions', array(
217
+ 'width' => get_option( 'thumbnail_size_w' ),
218
+ 'height' => get_option( 'thumbnail_size_h' )
219
+ ) );
220
+ $dimensions['crop'] = true;
221
+
222
+ return $dimensions;
223
+ }
224
+
225
+ /**
226
+ * Build up the arguments needed for rendering this gallery template
227
+ *
228
+ * @param $args
229
+ *
230
+ * @return array
231
+ */
232
+ function build_gallery_template_arguments( $args ) {
233
+ $args = foogallery_gallery_template_setting( 'thumbnail_dimensions', array() );
234
+ $args['crop'] = '1'; //we now force thumbs to be cropped
235
+ $args['link'] = foogallery_gallery_template_setting( 'thumbnail_link', 'image' );
236
+
237
+ return $args;
238
+ }
239
+ }
240
  }
extensions/default-templates/default/gallery-default.php CHANGED
@@ -1,19 +1,19 @@
1
- <?php
2
- /**
3
- * FooGallery default responsive gallery template
4
- */
5
- global $current_foogallery;
6
-
7
- $lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
8
- $spacing = foogallery_gallery_template_setting( 'spacing', 'spacing-width-10' );
9
- $mobile_columns = foogallery_gallery_template_setting( 'mobile_columns', '' );
10
- $alignment = foogallery_gallery_template_setting( 'alignment', 'fg-center' );
11
-
12
- $foogallery_default_classes = foogallery_build_class_attribute_safe( $current_foogallery, 'foogallery-lightbox-' . $lightbox, $spacing, $alignment, $mobile_columns );
13
- $foogallery_default_attributes = foogallery_build_container_attributes_safe( $current_foogallery, array( 'class' => $foogallery_default_classes ) );
14
-
15
- ?><div <?php echo $foogallery_default_attributes; ?>>
16
- <?php foreach ( foogallery_current_gallery_attachments_for_rendering() as $attachment ) {
17
- echo foogallery_attachment_html( $attachment );
18
- } ?>
19
- </div>
1
+ <?php
2
+ /**
3
+ * FooGallery default responsive gallery template
4
+ */
5
+ global $current_foogallery;
6
+
7
+ $lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
8
+ $spacing = foogallery_gallery_template_setting( 'spacing', 'spacing-width-10' );
9
+ $mobile_columns = foogallery_gallery_template_setting( 'mobile_columns', '' );
10
+ $alignment = foogallery_gallery_template_setting( 'alignment', 'fg-center' );
11
+
12
+ $foogallery_default_classes = foogallery_build_class_attribute_safe( $current_foogallery, 'foogallery-lightbox-' . $lightbox, $spacing, $alignment, $mobile_columns );
13
+ $foogallery_default_attributes = foogallery_build_container_attributes_safe( $current_foogallery, array( 'class' => $foogallery_default_classes ) );
14
+
15
+ ?><div <?php echo $foogallery_default_attributes; ?>>
16
+ <?php foreach ( foogallery_current_gallery_attachments_for_rendering() as $attachment ) {
17
+ echo foogallery_attachment_html( $attachment );
18
+ } ?>
19
+ </div>
extensions/default-templates/default/js/admin-gallery-default.js CHANGED
@@ -1,89 +1,89 @@
1
- (function (FOOGALLERY_DEF_TEMPLATE, $, undefined) {
2
-
3
- FOOGALLERY_DEF_TEMPLATE.setPreviewClasses = function() {
4
-
5
- var $previewImage = $('.foogallery-default-preview'),
6
- border_style = $('input[name="foogallery_settings[default_border-style]"]:checked').val(),
7
- hover_effect = $('input[name="foogallery_settings[default_hover-effect]"]:checked').val(),
8
- hover_effect_type = $('input[name="foogallery_settings[default_hover-effect-type]"]:checked').val(),
9
- caption_effect_type = $('input[name="foogallery_settings[default_caption-hover-effect]"]:checked').val(),
10
- classNames = 'foogallery-default-preview foogallery-container foogallery-default ' + border_style + ' ' + hover_effect_type;
11
-
12
- var $hoverEffectrow = $('.gallery_template_field-default-hover-effect'),
13
- $captionHoverRow = $('.gallery_template_field-default-caption-hover-effect'),
14
- $captionContentRow = $('.gallery_template_field-default-caption-content');
15
-
16
- if ( hover_effect_type === '' ) {
17
- //icon hover effect type
18
- $hoverEffectrow.show();
19
- $captionHoverRow.hide();
20
- $captionContentRow.hide();
21
- classNames += ' ' + hover_effect;
22
- } else if ( hover_effect_type === 'hover-effect-caption' ) {
23
- //caption hover effect type
24
- $hoverEffectrow.hide();
25
- $captionHoverRow.show();
26
- $captionContentRow.show();
27
- classNames += ' ' + caption_effect_type;
28
- } else {
29
- //no hover effect type
30
- $hoverEffectrow.hide();
31
- $captionHoverRow.hide();
32
- $captionContentRow.hide();
33
- }
34
-
35
- $previewImage.attr('class' , classNames);
36
- };
37
-
38
- FOOGALLERY_DEF_TEMPLATE.showHideCaptionContent = function(){
39
- var $previewImage = $('.foogallery-default-preview'),
40
- $caption = $previewImage.find('.foogallery-caption'),
41
- $title = $previewImage.find('.foogallery-caption-title'),
42
- $desc = $previewImage.find('.foogallery-caption-desc'),
43
- caption_content = $('input[name="foogallery_settings[default_caption-content]"]:checked').val();
44
-
45
- $caption.add($title).add($desc).show();
46
- switch(caption_content){
47
- case 'title':
48
- $desc.hide();
49
- break;
50
- case 'desc':
51
- $title.hide();
52
- break;
53
- case 'none':
54
- $caption.hide();
55
- break;
56
- }
57
- };
58
-
59
- FOOGALLERY_DEF_TEMPLATE.adminReady = function () {
60
- $('body').on('foogallery-gallery-template-changed-default', function() {
61
- FOOGALLERY_DEF_TEMPLATE.setPreviewClasses();
62
- FOOGALLERY_DEF_TEMPLATE.showHideCaptionContent();
63
- });
64
-
65
- $('input[name="foogallery_settings[default_border-style]"], ' +
66
- 'input[name="foogallery_settings[default_hover-effect]"], ' +
67
- 'input[name="foogallery_settings[default_hover-effect-type]"], ' +
68
- 'input[name="foogallery_settings[default_caption-hover-effect]"]').change(function() {
69
- FOOGALLERY_DEF_TEMPLATE.setPreviewClasses();
70
- });
71
-
72
- $('input[name="foogallery_settings[default_caption-content]"]').change(function() {
73
- FOOGALLERY_DEF_TEMPLATE.showHideCaptionContent();
74
- });
75
-
76
- $('.foogallery-thumbnail-preview').on('click', function(e) {
77
- e.preventDefault();
78
- });
79
-
80
- //run when the page load for the first time too!
81
- FOOGALLERY_DEF_TEMPLATE.setPreviewClasses();
82
- FOOGALLERY_DEF_TEMPLATE.showHideCaptionContent();
83
- };
84
-
85
- }(window.FOOGALLERY_DEF_TEMPLATE = window.FOOGALLERY_DEF_TEMPLATE || {}, jQuery));
86
-
87
- jQuery(function () {
88
- FOOGALLERY_DEF_TEMPLATE.adminReady();
89
  });
1
+ (function (FOOGALLERY_DEF_TEMPLATE, $, undefined) {
2
+
3
+ FOOGALLERY_DEF_TEMPLATE.setPreviewClasses = function() {
4
+
5
+ var $previewImage = $('.foogallery-default-preview'),
6
+ border_style = $('input[name="foogallery_settings[default_border-style]"]:checked').val(),
7
+ hover_effect = $('input[name="foogallery_settings[default_hover-effect]"]:checked').val(),
8
+ hover_effect_type = $('input[name="foogallery_settings[default_hover-effect-type]"]:checked').val(),
9
+ caption_effect_type = $('input[name="foogallery_settings[default_caption-hover-effect]"]:checked').val(),
10
+ classNames = 'foogallery-default-preview foogallery-container foogallery-default ' + border_style + ' ' + hover_effect_type;
11
+
12
+ var $hoverEffectrow = $('.gallery_template_field-default-hover-effect'),
13
+ $captionHoverRow = $('.gallery_template_field-default-caption-hover-effect'),
14
+ $captionContentRow = $('.gallery_template_field-default-caption-content');
15
+
16
+ if ( hover_effect_type === '' ) {
17
+ //icon hover effect type
18
+ $hoverEffectrow.show();
19
+ $captionHoverRow.hide();
20
+ $captionContentRow.hide();
21
+ classNames += ' ' + hover_effect;
22
+ } else if ( hover_effect_type === 'hover-effect-caption' ) {
23
+ //caption hover effect type
24
+ $hoverEffectrow.hide();
25
+ $captionHoverRow.show();
26
+ $captionContentRow.show();
27
+ classNames += ' ' + caption_effect_type;
28
+ } else {
29
+ //no hover effect type
30
+ $hoverEffectrow.hide();
31
+ $captionHoverRow.hide();
32
+ $captionContentRow.hide();
33
+ }
34
+
35
+ $previewImage.attr('class' , classNames);
36
+ };
37
+
38
+ FOOGALLERY_DEF_TEMPLATE.showHideCaptionContent = function(){
39
+ var $previewImage = $('.foogallery-default-preview'),
40
+ $caption = $previewImage.find('.foogallery-caption'),
41
+ $title = $previewImage.find('.foogallery-caption-title'),
42
+ $desc = $previewImage.find('.foogallery-caption-desc'),
43
+ caption_content = $('input[name="foogallery_settings[default_caption-content]"]:checked').val();
44
+
45
+ $caption.add($title).add($desc).show();
46
+ switch(caption_content){
47
+ case 'title':
48
+ $desc.hide();
49
+ break;
50
+ case 'desc':
51
+ $title.hide();
52
+ break;
53
+ case 'none':
54
+ $caption.hide();
55
+ break;
56
+ }
57
+ };
58
+
59
+ FOOGALLERY_DEF_TEMPLATE.adminReady = function () {
60
+ $('body').on('foogallery-gallery-template-changed-default', function() {
61
+ FOOGALLERY_DEF_TEMPLATE.setPreviewClasses();
62
+ FOOGALLERY_DEF_TEMPLATE.showHideCaptionContent();
63
+ });
64
+
65
+ $('input[name="foogallery_settings[default_border-style]"], ' +
66
+ 'input[name="foogallery_settings[default_hover-effect]"], ' +
67
+ 'input[name="foogallery_settings[default_hover-effect-type]"], ' +
68
+ 'input[name="foogallery_settings[default_caption-hover-effect]"]').change(function() {
69
+ FOOGALLERY_DEF_TEMPLATE.setPreviewClasses();
70
+ });
71
+
72
+ $('input[name="foogallery_settings[default_caption-content]"]').change(function() {
73
+ FOOGALLERY_DEF_TEMPLATE.showHideCaptionContent();
74
+ });
75
+
76
+ $('.foogallery-thumbnail-preview').on('click', function(e) {
77
+ e.preventDefault();
78
+ });
79
+
80
+ //run when the page load for the first time too!
81
+ FOOGALLERY_DEF_TEMPLATE.setPreviewClasses();
82
+ FOOGALLERY_DEF_TEMPLATE.showHideCaptionContent();
83
+ };
84
+
85
+ }(window.FOOGALLERY_DEF_TEMPLATE = window.FOOGALLERY_DEF_TEMPLATE || {}, jQuery));
86
+
87
+ jQuery(function () {
88
+ FOOGALLERY_DEF_TEMPLATE.adminReady();
89
  });
extensions/default-templates/functions.php CHANGED
@@ -1,49 +1,49 @@
1
- <?php
2
- /**
3
- * FooGallery default extensions common functions
4
- */
5
-
6
- /**
7
- * Enqueue the core FooGallery stylesheet used by all default templates
8
- */
9
- function foogallery_enqueue_core_gallery_template_style() {
10
- $filename = foogallery_is_debug() ? '' : '.min';
11
- $css = apply_filters( 'foogallery_core_gallery_style', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_URL . 'css/foogallery' . $filename . '.css' );
12
- foogallery_enqueue_style( 'foogallery-core', $css, array(), FOOGALLERY_VERSION );
13
-
14
- if ( foogallery_get_setting( 'custom_css', '' ) !== '' ) {
15
- $custom_assets = get_option( FOOGALLERY_OPTION_CUSTOM_ASSETS );
16
- if ( is_array( $custom_assets ) && array_key_exists( 'style', $custom_assets ) ) {
17
- foogallery_enqueue_style( 'foogallery-custom', $custom_assets['style'], array('foogallery-core'), FOOGALLERY_VERSION );
18
- }
19
- }
20
- }
21
-
22
- /**
23
- * Enqueue the core FooGallery script used by all default templates
24
- *
25
- * @param string[] $deps
26
- */
27
- function foogallery_enqueue_core_gallery_template_script( $deps = null ) {
28
- if ( isset( $deps ) ) {
29
- //ensure we deregister the previous one
30
- wp_deregister_script( 'foogallery-core' );
31
- do_action( 'foogallery_dequeue_script-core' );
32
- } else {
33
- //set the default
34
- $deps = array( 'jquery' );
35
- }
36
-
37
- $filename = foogallery_is_debug() ? '' : '.min';
38
- $js = apply_filters( 'foogallery_core_gallery_script', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_URL . 'js/foogallery' . $filename . '.js' );
39
- $deps = apply_filters( 'foogallery_core_gallery_script_deps', $deps );
40
- wp_enqueue_script( 'foogallery-core', $js, $deps, FOOGALLERY_VERSION );
41
- do_action( 'foogallery_enqueue_script-core', $js );
42
-
43
- if ( foogallery_get_setting( 'custom_js', '' ) !== '' ) {
44
- $custom_assets = get_option( FOOGALLERY_OPTION_CUSTOM_ASSETS );
45
- if ( is_array( $custom_assets ) && array_key_exists( 'script', $custom_assets ) ) {
46
- wp_enqueue_script( 'foogallery-custom', $custom_assets['script'], array('foogallery-core'), FOOGALLERY_VERSION );
47
- }
48
- }
49
- }
1
+ <?php
2
+ /**
3
+ * FooGallery default extensions common functions
4
+ */
5
+
6
+ /**
7
+ * Enqueue the core FooGallery stylesheet used by all default templates
8
+ */
9
+ function foogallery_enqueue_core_gallery_template_style() {
10
+ $filename = foogallery_is_debug() ? '' : '.min';
11
+ $css = apply_filters( 'foogallery_core_gallery_style', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_URL . 'css/foogallery' . $filename . '.css' );
12
+ foogallery_enqueue_style( 'foogallery-core', $css, array(), FOOGALLERY_VERSION );
13
+
14
+ if ( foogallery_get_setting( 'custom_css', '' ) !== '' ) {
15
+ $custom_assets = get_option( FOOGALLERY_OPTION_CUSTOM_ASSETS );
16
+ if ( is_array( $custom_assets ) && array_key_exists( 'style', $custom_assets ) ) {
17
+ foogallery_enqueue_style( 'foogallery-custom', $custom_assets['style'], array('foogallery-core'), FOOGALLERY_VERSION );
18
+ }
19
+ }
20
+ }
21
+
22
+ /**
23
+ * Enqueue the core FooGallery script used by all default templates
24
+ *
25
+ * @param string[] $deps
26
+ */
27
+ function foogallery_enqueue_core_gallery_template_script( $deps = null ) {
28
+ if ( isset( $deps ) ) {
29
+ //ensure we deregister the previous one
30
+ wp_deregister_script( 'foogallery-core' );
31
+ do_action( 'foogallery_dequeue_script-core' );
32
+ } else {
33
+ //set the default
34
+ $deps = array( 'jquery' );
35
+ }
36
+
37
+ $filename = foogallery_is_debug() ? '' : '.min';
38
+ $js = apply_filters( 'foogallery_core_gallery_script', FOOGALLERY_DEFAULT_TEMPLATES_EXTENSION_SHARED_URL . 'js/foogallery' . $filename . '.js' );
39
+ $deps = apply_filters( 'foogallery_core_gallery_script_deps', $deps );
40
+ wp_enqueue_script( 'foogallery-core', $js, $deps, FOOGALLERY_VERSION );
41
+ do_action( 'foogallery_enqueue_script-core', $js );
42
+
43
+ if ( foogallery_get_setting( 'custom_js', '' ) !== '' ) {
44
+ $custom_assets = get_option( FOOGALLERY_OPTION_CUSTOM_ASSETS );
45
+ if ( is_array( $custom_assets ) && array_key_exists( 'script', $custom_assets ) ) {
46
+ wp_enqueue_script( 'foogallery-custom', $custom_assets['script'], array('foogallery-core'), FOOGALLERY_VERSION );
47
+ }
48
+ }
49
+ }
extensions/default-templates/image-viewer/class-image-viewer-gallery-template.php CHANGED
@@ -1,312 +1,312 @@
1
- <?php
2
-
3
- if ( !class_exists( 'FooGallery_Image_Viewer_Gallery_Template' ) ) {
4
-
5
- define('FOOGALLERY_IMAGE_VIEWER_GALLERY_TEMPLATE_URL', plugin_dir_url( __FILE__ ));
6
-
7
- class FooGallery_Image_Viewer_Gallery_Template {
8
-
9
- const TEMPLATE_ID = 'image-viewer';
10
-
11
- /**
12
- * Wire up everything we need to run the extension
13
- */
14
- function __construct() {
15
- add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
16
-
17
- //add extra fields to the templates
18
- add_filter( 'foogallery_override_gallery_template_fields-image-viewer', array( $this, 'adjust_fields' ), 10, 2 );
19
-
20
- add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
21
-
22
- add_filter( 'foogallery_template_thumbnail_dimensions-image-viewer', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
23
-
24
- //override specific settings when saving the gallery
25
- add_filter( 'foogallery_save_gallery_settings-image-viewer', array( $this, 'override_settings'), 10, 3 );
26
-
27
- //build up the thumb dimensions from some arguments
28
- add_filter( 'foogallery_calculate_thumbnail_dimensions-image-viewer', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
29
-
30
- //alter the crop value if needed
31
- add_filter( 'foogallery_render_gallery_template_field_value', array( $this, 'alter_field_value'), 10, 4 );
32
-
33
- //build up the arguments needed for rendering this template
34
- add_filter( 'foogallery_gallery_template_arguments-image-viewer', array( $this, 'build_gallery_template_arguments' ) );
35
-
36
- //add the data options needed for image viewer
37
- add_filter( 'foogallery_build_container_data_options-image-viewer', array( $this, 'add_data_options' ), 10, 3 );
38
-
39
- // add a style block for the gallery based on the thumbnail width.
40
- add_action( 'foogallery_loaded_template_before', array( $this, 'add_width_style_block' ), 10, 1 );
41
- }
42
-
43
- /**
44
- * Add a style block based on the width thumbnail size
45
- *
46
- * @param $gallery FooGallery
47
- */
48
- function add_width_style_block( $gallery ) {
49
- if ( self::TEMPLATE_ID !== $gallery->gallery_template ) {
50
- return;
51
- }
52
-
53
- $id = $gallery->container_id();
54
- $dimensions = foogallery_gallery_template_setting('thumbnail_size');
55
- if ( is_array( $dimensions ) && array_key_exists( 'width', $dimensions ) && intval( $dimensions['width'] ) > 0 ) {
56
- $width = intval( $dimensions['width'] );
57
-
58
- // @formatter:off
59
- ?>
60
- <style type="text/css">
61
- <?php echo '#' . $id; ?> .fg-image {
62
- width: <?php echo $width; ?>px;
63
- }
64
- </style>
65
- <?php
66
- // @formatter:on
67
- }
68
- }
69
-
70
- function alter_field_value( $value, $field, $gallery, $template ) {
71
- //only do something if we are dealing with the thumbnail_dimensions field in this template
72
- if ( self::TEMPLATE_ID === $template['slug'] && 'thumbnail_size' === $field['id'] ) {
73
- if ( !array_key_exists( 'crop', $value ) ) {
74
- $value['crop'] = true;
75
- }
76
- }
77
-
78
- return $value;
79
- }
80
-
81
- /**
82
- * Register myself so that all associated JS and CSS files can be found and automatically included
83
- * @param $extensions
84
- *
85
- * @return array
86
- */
87
- function register_myself( $extensions ) {
88
- $extensions[] = __FILE__;
89
- return $extensions;
90
- }
91
-
92
- /**
93
- * Add our gallery template to the list of templates available for every gallery
94
- * @param $gallery_templates
95
- *
96
- * @return array
97
- */
98
- function add_template( $gallery_templates ) {
99
-
100
- $gallery_templates[] = array(
101
- 'slug' => self::TEMPLATE_ID,
102
- 'name' => __( 'Image Viewer', 'foogallery' ),
103
- 'preview_support' => true,
104
- 'common_fields_support' => true,
105
- 'lazyload_support' => true,
106
- 'mandatory_classes' => 'fg-image-viewer',
107
- 'thumbnail_dimensions' => true,
108
- 'enqueue_core' => true,
109
- 'fields' => array(
110
- array(
111
- 'id' => 'thumbnail-help',
112
- 'title' => __( 'Thumbnail Help', 'foogallery' ),
113
- 'desc' => __( 'It is recommended to crop your thumbnails, so that your gallery remains a constant size. If you do not crop, then the size of the gallery could potentially change for each thumbnail.', 'foogallery' ),
114
- 'section' => __( 'General', 'foogallery' ),
115
- 'type' => 'help'
116
- ),
117
- array(
118
- 'id' => 'thumbnail_size',
119
- 'title' => __( 'Thumb Size', 'foogallery' ),
120
- 'section' => __( 'General', 'foogallery' ),
121
- 'desc' => __( 'Choose the size of your thumbnails', 'foogallery' ),
122
- 'type' => 'thumb_size',
123
- 'default' => array(
124
- 'width' => 640,
125
- 'height' => 360,
126
- 'crop' => true
127
- ),
128
- 'row_data'=> array(
129
- 'data-foogallery-change-selector' => 'input',
130
- 'data-foogallery-preview' => 'shortcode'
131
- )
132
- ),
133
- array(
134
- 'id' => 'thumbnail_link',
135
- 'title' => __( 'Thumbnail Link', 'foogallery' ),
136
- 'section' => __( 'General', 'foogallery' ),
137
- 'default' => 'image' ,
138
- 'type' => 'thumb_link',
139
- 'desc' => __( 'You can choose to either link each thumbnail to the full size image or to the image\'s attachment page', 'foogallery'),
140
- ),
141
- array(
142
- 'id' => 'lightbox',
143
- 'title' => __( 'Lightbox', 'foogallery' ),
144
- 'section' => __( 'General', 'foogallery' ),
145
- 'desc' => __( 'Choose which lightbox you want to use in the gallery', 'foogallery' ),
146
- 'default' => 'none',
147
- 'type' => 'lightbox',
148
- ),
149
- array(
150
- 'id' => 'alignment',
151
- 'title' => __( 'Alignment', 'foogallery' ),
152
- 'section' => __( 'General', 'foogallery' ),
153
- 'desc' => __( 'The horizontal alignment of the thumbnails inside the gallery', 'foogallery' ),
154
- 'default' => 'fg-center',
155
- 'type' => 'radio',
156
- 'spacer' => '<span class="spacer"></span>',
157
- 'choices' => array(
158
- 'fg-left' => __( 'Left', 'foogallery' ),
159
- 'fg-center' => __( 'Center', 'foogallery' ),
160
- 'fg-right' => __( 'Right', 'foogallery' ),
161
- ),
162
- 'row_data'=> array(
163
- 'data-foogallery-change-selector' => 'input:radio',
164
- 'data-foogallery-preview' => 'shortcode'
165
- )
166
- ),
167
- array(
168
- 'id' => 'looping',
169
- 'title' => __( 'Loop Images', 'foogallery' ),
170
- 'section' => __( 'General', 'foogallery' ),
171
- 'desc' => __( 'When navigating through the images, do you want to loop image back to the first after you navigate past the last image?', 'foogallery' ),
172
- 'default' => 'enabled',
173
- 'type' => 'radio',
174
- 'spacer' => '<span class="spacer"></span>',
175
- 'choices' => array(
176
- 'disabled' => __( 'Disabled', 'foogallery' ),
177
- 'enabled' => __( 'Looping Enabled', 'foogallery' ),
178
- ),
179
- 'row_data'=> array(
180
- 'data-foogallery-change-selector' => 'input:radio',
181
- 'data-foogallery-preview' => 'shortcode'
182
- )
183
- ),
184
- array(
185
- 'id' => 'language-help',
186
- 'title' => __( 'Language Help', 'foogallery' ),
187
- 'desc' => __( 'You can change the "Prev", "Next" and "of" text used in the gallery from the settings page, under the Language tab.', 'foogallery' ),
188
- 'section' => __( 'General', 'foogallery' ),
189
- 'type' => 'help'
190
- )
191
- )
192
- );
193
-
194
- return $gallery_templates;
195
- }
196
-
197
- /**
198
- * Add thumbnail fields to the gallery template
199
- *
200
- * @uses "foogallery_override_gallery_template_fields"
201
- * @param $fields
202
- * @param $template
203
- *
204
- * @return array
205
- */
206
- function adjust_fields( $fields, $template ) {
207
-
208
- //update specific fields
209
- foreach ($fields as &$field) {
210
- if ( 'rounded_corners' === $field['id'] ) {
211
- unset( $field['choices']['fg-round-full'] );
212
- }
213
- }
214
-
215
- return $fields;
216
- }
217
-
218
- /**
219
- * Get the thumb dimensions arguments saved for the gallery for this gallery template
220
- *
221
- * @param array $dimensions
222
- * @param FooGallery $foogallery
223
- *
224
- * @return mixed
225
- */
226
- function get_thumbnail_dimensions( $dimensions, $foogallery ) {
227
- $dimensions = $foogallery->get_meta( 'image-viewer_thumbnail_size', array(
228
- 'width' => 640,
229
- 'height' => 360,
230
- 'crop' => true
231
- ) );
232
- if ( !array_key_exists( 'crop', $dimensions ) ) {
233
- $dimensions['crop'] = true;
234
- }
235
- return $dimensions;
236
- }
237
-
238
- /**
239
- * Override specific settings so that the gallery template will always work
240
- *
241
- * @param $settings
242
- * @param $post_id
243
- * @param $form_data
244
- *
245
- * @return mixed
246
- */
247
- function override_settings($settings, $post_id, $form_data) {
248
- if ( 'fg-round-full' === $settings['image-viewer_rounded_corners'] ) {
249
- $settings['image-viewer_rounded_corners'] = 'fg-round-large';
250
- }
251
-
252
- return $settings;
253
- }
254
-
255
- /**
256
- * Builds thumb dimensions from arguments
257
- *
258
- * @param array $dimensions
259
- * @param array $arguments
260
- *
261
- * @return mixed
262
- */
263
- function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
264
- if ( array_key_exists( 'thumbnail_size', $arguments) ) {
265
- return array(
266
- 'height' => intval($arguments['thumbnail_size']['height']),
267
- 'width' => intval($arguments['thumbnail_size']['width']),
268
- 'crop' => $arguments['thumbnail_size']['crop']
269
- );
270
- }
271
- return null;
272
- }
273
-
274
- /**
275
- * Build up the arguments needed for rendering this gallery template
276
- *
277
- * @param $args
278
- * @return array
279
- */
280
- function build_gallery_template_arguments( $args ) {
281
- $args = foogallery_gallery_template_setting( 'thumbnail_size', array(
282
- 'width' => 640,
283
- 'height' => 360,
284
- 'crop' => true
285
- ) );
286
- if ( !array_key_exists( 'crop', $args ) ) {
287
- $args['crop'] = '1'; //we now force thumbs to be cropped by default
288
- }
289
- $args['link'] = foogallery_gallery_template_setting( 'thumbnail_link', 'image' );
290
-
291
- return $args;
292
- }
293
-
294
- /**
295
- * Add the required options
296
- *
297
- * @param $options
298
- * @param $gallery FooGallery
299
- *
300
- * @param $attributes array
301
- *
302
- * @return array
303
- */
304
- function add_data_options($options, $gallery, $attributes) {
305
-
306
- $looping = foogallery_gallery_template_setting( 'looping', 'enabled' ) === 'enabled';
307
- $options['template']['loop'] = $looping;
308
-
309
- return $options;
310
- }
311
- }
312
  }
1
+ <?php
2
+
3
+ if ( !class_exists( 'FooGallery_Image_Viewer_Gallery_Template' ) ) {
4
+
5
+ define('FOOGALLERY_IMAGE_VIEWER_GALLERY_TEMPLATE_URL', plugin_dir_url( __FILE__ ));
6
+
7
+ class FooGallery_Image_Viewer_Gallery_Template {
8
+
9
+ const TEMPLATE_ID = 'image-viewer';
10
+
11
+ /**
12
+ * Wire up everything we need to run the extension
13
+ */
14
+ function __construct() {
15
+ add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
16
+
17
+ //add extra fields to the templates
18
+ add_filter( 'foogallery_override_gallery_template_fields-image-viewer', array( $this, 'adjust_fields' ), 10, 2 );
19
+
20
+ add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
21
+
22
+ add_filter( 'foogallery_template_thumbnail_dimensions-image-viewer', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
23
+
24
+ //override specific settings when saving the gallery
25
+ add_filter( 'foogallery_save_gallery_settings-image-viewer', array( $this, 'override_settings'), 10, 3 );
26
+
27
+ //build up the thumb dimensions from some arguments
28
+ add_filter( 'foogallery_calculate_thumbnail_dimensions-image-viewer', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
29
+
30
+ //alter the crop value if needed
31
+ add_filter( 'foogallery_render_gallery_template_field_value', array( $this, 'alter_field_value'), 10, 4 );
32
+
33
+ //build up the arguments needed for rendering this template
34
+ add_filter( 'foogallery_gallery_template_arguments-image-viewer', array( $this, 'build_gallery_template_arguments' ) );
35
+
36
+ //add the data options needed for image viewer
37
+ add_filter( 'foogallery_build_container_data_options-image-viewer', array( $this, 'add_data_options' ), 10, 3 );
38
+
39
+ // add a style block for the gallery based on the thumbnail width.
40
+ add_action( 'foogallery_loaded_template_before', array( $this, 'add_width_style_block' ), 10, 1 );
41
+ }
42
+
43
+ /**
44
+ * Add a style block based on the width thumbnail size
45
+ *
46
+ * @param $gallery FooGallery
47
+ */
48
+ function add_width_style_block( $gallery ) {
49
+ if ( self::TEMPLATE_ID !== $gallery->gallery_template ) {
50
+ return;
51
+ }
52
+
53
+ $id = $gallery->container_id();
54
+ $dimensions = foogallery_gallery_template_setting('thumbnail_size');
55
+ if ( is_array( $dimensions ) && array_key_exists( 'width', $dimensions ) && intval( $dimensions['width'] ) > 0 ) {
56
+ $width = intval( $dimensions['width'] );
57
+
58
+ // @formatter:off
59
+ ?>
60
+ <style type="text/css">
61
+ <?php echo '#' . $id; ?> .fg-image {
62
+ width: <?php echo $width; ?>px;
63
+ }
64
+ </style>
65
+ <?php
66
+ // @formatter:on
67
+ }
68
+ }
69
+
70
+ function alter_field_value( $value, $field, $gallery, $template ) {
71
+ //only do something if we are dealing with the thumbnail_dimensions field in this template
72
+ if ( self::TEMPLATE_ID === $template['slug'] && 'thumbnail_size' === $field['id'] ) {
73
+ if ( !array_key_exists( 'crop', $value ) ) {
74
+ $value['crop'] = true;
75
+ }
76
+ }
77
+
78
+ return $value;
79
+ }
80
+
81
+ /**
82
+ * Register myself so that all associated JS and CSS files can be found and automatically included
83
+ * @param $extensions
84
+ *
85
+ * @return array
86
+ */
87
+ function register_myself( $extensions ) {
88
+ $extensions[] = __FILE__;
89
+ return $extensions;
90
+ }
91
+
92
+ /**
93
+ * Add our gallery template to the list of templates available for every gallery
94
+ * @param $gallery_templates
95
+ *
96
+ * @return array
97
+ */
98
+ function add_template( $gallery_templates ) {
99
+
100
+ $gallery_templates[] = array(
101
+ 'slug' => self::TEMPLATE_ID,
102
+ 'name' => __( 'Image Viewer', 'foogallery' ),
103
+ 'preview_support' => true,
104
+ 'common_fields_support' => true,
105
+ 'lazyload_support' => true,
106
+ 'mandatory_classes' => 'fg-image-viewer',
107
+ 'thumbnail_dimensions' => true,
108
+ 'enqueue_core' => true,
109
+ 'fields' => array(
110
+ array(
111
+ 'id' => 'thumbnail-help',
112
+ 'title' => __( 'Thumbnail Help', 'foogallery' ),
113
+ 'desc' => __( 'It is recommended to crop your thumbnails, so that your gallery remains a constant size. If you do not crop, then the size of the gallery could potentially change for each thumbnail.', 'foogallery' ),
114
+ 'section' => __( 'General', 'foogallery' ),
115
+ 'type' => 'help'
116
+ ),
117
+ array(
118
+ 'id' => 'thumbnail_size',
119
+ 'title' => __( 'Thumb Size', 'foogallery' ),
120
+ 'section' => __( 'General', 'foogallery' ),
121
+ 'desc' => __( 'Choose the size of your thumbnails', 'foogallery' ),
122
+ 'type' => 'thumb_size',
123
+ 'default' => array(
124
+ 'width' => 640,
125
+ 'height' => 360,
126
+ 'crop' => true
127
+ ),
128
+ 'row_data'=> array(
129
+ 'data-foogallery-change-selector' => 'input',
130
+ 'data-foogallery-preview' => 'shortcode'
131
+ )
132
+ ),
133
+ array(
134
+ 'id' => 'thumbnail_link',
135
+ 'title' => __( 'Thumbnail Link', 'foogallery' ),
136
+ 'section' => __( 'General', 'foogallery' ),
137
+ 'default' => 'image' ,
138
+ 'type' => 'thumb_link',
139
+ 'desc' => __( 'You can choose to either link each thumbnail to the full size image or to the image\'s attachment page', 'foogallery'),
140
+ ),
141
+ array(
142
+ 'id' => 'lightbox',
143
+ 'title' => __( 'Lightbox', 'foogallery' ),
144
+ 'section' => __( 'General', 'foogallery' ),
145
+ 'desc' => __( 'Choose which lightbox you want to use in the gallery', 'foogallery' ),
146
+ 'default' => 'none',
147
+ 'type' => 'lightbox',
148
+ ),
149
+ array(
150
+ 'id' => 'alignment',
151
+ 'title' => __( 'Alignment', 'foogallery' ),
152
+ 'section' => __( 'General', 'foogallery' ),
153
+ 'desc' => __( 'The horizontal alignment of the thumbnails inside the gallery', 'foogallery' ),
154
+ 'default' => 'fg-center',
155
+ 'type' => 'radio',
156
+ 'spacer' => '<span class="spacer"></span>',
157
+ 'choices' => array(
158
+ 'fg-left' => __( 'Left', 'foogallery' ),
159
+ 'fg-center' => __( 'Center', 'foogallery' ),
160
+ 'fg-right' => __( 'Right', 'foogallery' ),
161
+ ),
162
+ 'row_data'=> array(
163
+ 'data-foogallery-change-selector' => 'input:radio',
164
+ 'data-foogallery-preview' => 'shortcode'
165
+ )
166
+ ),
167
+ array(
168
+ 'id' => 'looping',
169
+ 'title' => __( 'Loop Images', 'foogallery' ),
170
+ 'section' => __( 'General', 'foogallery' ),
171
+ 'desc' => __( 'When navigating through the images, do you want to loop image back to the first after you navigate past the last image?', 'foogallery' ),
172
+ 'default' => 'enabled',
173
+ 'type' => 'radio',
174
+ 'spacer' => '<span class="spacer"></span>',
175
+ 'choices' => array(
176
+ 'disabled' => __( 'Disabled', 'foogallery' ),
177
+ 'enabled' => __( 'Looping Enabled', 'foogallery' ),
178
+ ),
179
+ 'row_data'=> array(
180
+ 'data-foogallery-change-selector' => 'input:radio',
181
+ 'data-foogallery-preview' => 'shortcode'
182
+ )
183
+ ),
184
+ array(
185
+ 'id' => 'language-help',
186
+ 'title' => __( 'Language Help', 'foogallery' ),
187
+ 'desc' => __( 'You can change the "Prev", "Next" and "of" text used in the gallery from the settings page, under the Language tab.', 'foogallery' ),
188
+ 'section' => __( 'General', 'foogallery' ),
189
+ 'type' => 'help'
190
+ )
191
+ )
192
+ );
193
+
194
+ return $gallery_templates;
195
+ }
196
+
197
+ /**
198
+ * Add thumbnail fields to the gallery template
199
+ *
200
+ * @uses "foogallery_override_gallery_template_fields"
201
+ * @param $fields
202
+ * @param $template
203
+ *
204
+ * @return array
205
+ */
206
+ function adjust_fields( $fields, $template ) {
207
+
208
+ //update specific fields
209
+ foreach ($fields as &$field) {
210
+ if ( 'rounded_corners' === $field['id'] ) {
211
+ unset( $field['choices']['fg-round-full'] );
212
+ }
213
+ }
214
+
215
+ return $fields;
216
+ }
217
+
218
+ /**
219
+ * Get the thumb dimensions arguments saved for the gallery for this gallery template
220
+ *
221
+ * @param array $dimensions
222
+ * @param FooGallery $foogallery
223
+ *
224
+ * @return mixed
225
+ */
226
+ function get_thumbnail_dimensions( $dimensions, $foogallery ) {
227
+ $dimensions = $foogallery->get_meta( 'image-viewer_thumbnail_size', array(
228
+ 'width' => 640,
229
+ 'height' => 360,
230
+ 'crop' => true
231
+ ) );
232
+ if ( !array_key_exists( 'crop', $dimensions ) ) {
233
+ $dimensions['crop'] = true;
234
+ }
235
+ return $dimensions;
236
+ }
237
+
238
+ /**
239
+ * Override specific settings so that the gallery template will always work
240
+ *
241
+ * @param $settings
242
+ * @param $post_id
243
+ * @param $form_data
244
+ *
245
+ * @return mixed
246
+ */
247
+ function override_settings($settings, $post_id, $form_data) {
248
+ if ( 'fg-round-full' === $settings['image-viewer_rounded_corners'] ) {
249
+ $settings['image-viewer_rounded_corners'] = 'fg-round-large';
250
+ }
251
+
252
+ return $settings;
253
+ }
254
+
255
+ /**
256
+ * Builds thumb dimensions from arguments
257
+ *
258
+ * @param array $dimensions
259
+ * @param array $arguments
260
+ *
261
+ * @return mixed
262
+ */
263
+ function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
264
+ if ( array_key_exists( 'thumbnail_size', $arguments) ) {
265
+ return array(
266
+ 'height' => intval($arguments['thumbnail_size']['height']),
267
+ 'width' => intval($arguments['thumbnail_size']['width']),
268
+ 'crop' => $arguments['thumbnail_size']['crop']
269
+ );
270
+ }
271
+ return null;
272
+ }
273
+
274
+ /**
275
+ * Build up the arguments needed for rendering this gallery template
276
+ *
277
+ * @param $args
278
+ * @return array
279
+ */
280
+ function build_gallery_template_arguments( $args ) {
281
+ $args = foogallery_gallery_template_setting( 'thumbnail_size', array(
282
+ 'width' => 640,
283
+ 'height' => 360,
284
+ 'crop' => true
285
+ ) );
286
+ if ( !array_key_exists( 'crop', $args ) ) {
287
+ $args['crop'] = '1'; //we now force thumbs to be cropped by default
288
+ }
289
+ $args['link'] = foogallery_gallery_template_setting( 'thumbnail_link', 'image' );
290
+
291
+ return $args;
292
+ }
293
+
294
+ /**
295
+ * Add the required options
296
+ *
297
+ * @param $options
298
+ * @param $gallery FooGallery
299
+ *
300
+ * @param $attributes array
301
+ *
302
+ * @return array
303
+ */
304
+ function add_data_options($options, $gallery, $attributes) {
305
+
306
+ $looping = foogallery_gallery_template_setting( 'looping', 'enabled' ) === 'enabled';
307
+ $options['template']['loop'] = $looping;
308
+
309
+ return $options;
310
+ }
311
+ }
312
  }
extensions/default-templates/image-viewer/gallery-image-viewer.php CHANGED
@@ -1,39 +1,39 @@
1
- <?php
2
- /**
3
- * FooGallery Image Viewer gallery template
4
- * This is the template that is run when a FooGallery shortcode is rendered to the frontend
5
- */
6
- //the current FooGallery that is currently being rendered to the frontend
7
- global $current_foogallery;
8
- //the current shortcode args
9
- global $current_foogallery_arguments;
10
-
11
- $text_prev_default = foogallery_get_setting( 'language_imageviewer_prev_text', __('Prev', 'foogallery') );
12
- $text_prev = foogallery_gallery_template_setting( 'text-prev', $text_prev_default );
13
-
14
- $text_of_default = foogallery_get_setting( 'language_imageviewer_of_text', __('of', 'foogallery') );
15
- $text_of = foogallery_gallery_template_setting( 'text-of', $text_of_default );
16
-
17
- $text_next_default = foogallery_get_setting( 'language_imageviewer_next_text', __('Next', 'foogallery') );
18
- $text_next = foogallery_gallery_template_setting( 'text-next', $text_next_default );
19
-
20
- //get which lightbox we want to use
21
- $lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
22
- $alignment = foogallery_gallery_template_setting( 'alignment', 'fg-center' );
23
- $link = foogallery_gallery_template_setting( 'thumbnail_link', 'image' );
24
- $foogallery_imageviewer_classes = foogallery_build_class_attribute_safe( $current_foogallery, 'foogallery-link-' . $link, 'foogallery-lightbox-' . $lightbox, $alignment );
25
- $foogallery_imageviewer_attributes = foogallery_build_container_attributes_safe( $current_foogallery, array( 'class' => $foogallery_imageviewer_classes ) );
26
- ?><div <?php echo $foogallery_imageviewer_attributes; ?>>
27
- <div class="fiv-inner">
28
- <div class="fiv-inner-container">
29
- <?php foreach ( foogallery_current_gallery_attachments_for_rendering() as $attachment ) {
30
- echo foogallery_attachment_html( $attachment );
31
- } ?>
32
- </div>
33
- <div class="fiv-ctrls">
34
- <div class="fiv-prev"><span><?php echo $text_prev; ?></span></div>
35
- <label class="fiv-count"><span class="fiv-count-current">1</span><?php echo $text_of; ?><span class="fiv-count-total"><?php echo $current_foogallery->attachment_count(); ?></span></label>
36
- <div class="fiv-next"><span><?php echo $text_next; ?></span></div>
37
- </div>
38
- </div>
39
  </div>
1
+ <?php
2
+ /**
3
+ * FooGallery Image Viewer gallery template
4
+ * This is the template that is run when a FooGallery shortcode is rendered to the frontend
5
+ */
6
+ //the current FooGallery that is currently being rendered to the frontend
7
+ global $current_foogallery;
8
+ //the current shortcode args
9
+ global $current_foogallery_arguments;
10
+
11
+ $text_prev_default = foogallery_get_setting( 'language_imageviewer_prev_text', __('Prev', 'foogallery') );
12
+ $text_prev = foogallery_gallery_template_setting( 'text-prev', $text_prev_default );
13
+
14
+ $text_of_default = foogallery_get_setting( 'language_imageviewer_of_text', __('of', 'foogallery') );
15
+ $text_of = foogallery_gallery_template_setting( 'text-of', $text_of_default );
16
+
17
+ $text_next_default = foogallery_get_setting( 'language_imageviewer_next_text', __('Next', 'foogallery') );
18
+ $text_next = foogallery_gallery_template_setting( 'text-next', $text_next_default );
19
+
20
+ //get which lightbox we want to use
21
+ $lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
22
+ $alignment = foogallery_gallery_template_setting( 'alignment', 'fg-center' );
23
+ $link = foogallery_gallery_template_setting( 'thumbnail_link', 'image' );
24
+ $foogallery_imageviewer_classes = foogallery_build_class_attribute_safe( $current_foogallery, 'foogallery-link-' . $link, 'foogallery-lightbox-' . $lightbox, $alignment );
25
+ $foogallery_imageviewer_attributes = foogallery_build_container_attributes_safe( $current_foogallery, array( 'class' => $foogallery_imageviewer_classes ) );
26
+ ?><div <?php echo $foogallery_imageviewer_attributes; ?>>
27
+ <div class="fiv-inner">
28
+ <div class="fiv-inner-container">
29
+ <?php foreach ( foogallery_current_gallery_attachments_for_rendering() as $attachment ) {
30
+ echo foogallery_attachment_html( $attachment );
31
+ } ?>
32
+ </div>
33
+ <div class="fiv-ctrls">
34
+ <div class="fiv-prev"><span><?php echo $text_prev; ?></span></div>
35
+ <label class="fiv-count"><span class="fiv-count-current">1</span><?php echo $text_of; ?><span class="fiv-count-total"><?php echo $current_foogallery->attachment_count(); ?></span></label>
36
+ <div class="fiv-next"><span><?php echo $text_next; ?></span></div>
37
+ </div>
38
+ </div>
39
  </div>
extensions/default-templates/image-viewer/js/admin-gallery-image-viewer.js CHANGED
@@ -1,123 +1,123 @@
1
- //Use this file to inject custom javascript behaviour into the foogallery edit page
2
- //For an example usage, check out wp-content/foogallery/extensions/default-templates/js/admin-gallery-default.js
3
-
4
- (function (IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION, $, undefined) {
5
-
6
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.setPreviewClasses = function() {
7
- var $previewImage = $('.foogallery-image-viewer-preview'),
8
- theme = $('input[name="foogallery_settings[image-viewer_theme]"]:checked').val(),
9
- hover_effect = $('input[name="foogallery_settings[image-viewer_hover-effect]"]:checked').val(),
10
- hover_effect_type = $('input[name="foogallery_settings[image-viewer_hover-effect-type]"]:checked').val();
11
-
12
- var $styles = $('#image-preview-custom-styles');
13
- if (theme === 'fiv-custom'){
14
- var bg_color = $('input[name="foogallery_settings[image-viewer_theme_custom_bgcolor]"]').val(),
15
- text_color = $('input[name="foogallery_settings[image-viewer_theme_custom_textcolor]"]').val(),
16
- border_color = $('input[name="foogallery_settings[image-viewer_theme_custom_bordercolor]"]').val(),
17
- hover_color = $('input[name="foogallery_settings[image-viewer_theme_custom_hovercolor]"]').val();
18
-
19
- var css = '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner,';
20
- css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-prev,';
21
- css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-next {';
22
- css += 'background-color: '+bg_color+';';
23
- css += 'color: '+text_color+';';
24
- css += '}';
25
- css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner,';
26
- css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-inner-container,';
27
- css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-prev,';
28
- css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-next {';
29
- css += 'border-color: '+border_color+';';
30
- css += '}';
31
- css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-prev:hover,';
32
- css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-next:hover {';
33
- css += 'background-color: '+hover_color+';';
34
- css += '}';
35
- $styles.remove();
36
- $('head').append('<style id="image-preview-custom-styles">'+css+'</style>');
37
- } else {
38
- $styles.remove();
39
- }
40
-
41
- $previewImage.attr('class' ,'foogallery-image-viewer-preview foogallery-container foogallery-image-viewer ' + theme);
42
- if (hover_effect_type !== 'hover-effect-none'){
43
- $previewImage.addClass(hover_effect_type + ' ' + hover_effect);
44
- }
45
-
46
- var $hoverEffectrow = $('.gallery_template_field-image-viewer-hover-effect');
47
- if ( hover_effect_type === '' ) {
48
- $hoverEffectrow.show();
49
- } else {
50
- $hoverEffectrow.hide();
51
- }
52
- };
53
-
54
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideRows = function(){
55
- var $theme_rows = $('.gallery_template_field-image-viewer-theme_custom_bgcolor')
56
- .add('.gallery_template_field-image-viewer-theme_custom_textcolor')
57
- .add('.gallery_template_field-image-viewer-theme_custom_hovercolor')
58
- .add('.gallery_template_field-image-viewer-theme_custom_bordercolor');
59
-
60
- if ( $('input[name="foogallery_settings[image-viewer_theme]"]:checked').val() === 'fiv-custom' ) {
61
- $theme_rows.show();
62
- } else {
63
- $theme_rows.hide();
64
- }
65
- };
66
-
67
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideCaptionContent = function(){
68
- var $previewImage = $('.foogallery-image-viewer-preview'),
69
- $caption = $previewImage.find('.foogallery-caption'),
70
- $title = $previewImage.find('.foogallery-caption-title'),
71
- $desc = $previewImage.find('.foogallery-caption-desc'),
72
- caption_content = $('input[name="foogallery_settings[image-viewer_caption-content]"]:checked').val();
73
-
74
- $caption.add($title).add($desc).show();
75
- switch(caption_content){
76
- case 'title':
77
- $desc.hide();
78
- break;
79
- case 'desc':
80
- $title.hide();
81
- break;
82
- case 'none':
83
- $caption.hide();
84
- break;
85
- }
86
- };
87
-
88
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.adminReady = function () {
89
- $('body').on('foogallery-gallery-template-changed-image-viewer', function() {
90
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.setPreviewClasses();
91
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideRows();
92
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideCaptionContent();
93
- });
94
-
95
- var ps = 'input[name="foogallery_settings[image-viewer_hover-effect]"], ' +
96
- 'input[name="foogallery_settings[image-viewer_hover-effect-type]"], ' +
97
- 'input[name="foogallery_settings[image-viewer_theme]"], ' +
98
- 'input[name="foogallery_settings[image-viewer_theme_custom_bgcolor]"], ' +
99
- 'input[name="foogallery_settings[image-viewer_theme_custom_textcolor]"], ' +
100
- 'input[name="foogallery_settings[image-viewer_theme_custom_bordercolor]"], ' +
101
- 'input[name="foogallery_settings[image-viewer_theme_custom_hovercolor]"]';
102
- $(ps).change(function() {
103
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.setPreviewClasses();
104
- });
105
-
106
- $('input[name="foogallery_settings[image-viewer_caption-content]"]').change(function() {
107
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideCaptionContent();
108
- });
109
-
110
- $('input[name="foogallery_settings[image-viewer_theme]"]').change(function() {
111
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideRows();
112
- });
113
-
114
- $('.foogallery-image-viewer-preview').on('click', function(e) {
115
- e.preventDefault();
116
- });
117
- };
118
-
119
- }(window.IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION = window.IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION || {}, jQuery));
120
-
121
- jQuery(function () {
122
- IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.adminReady();
123
  });
1
+ //Use this file to inject custom javascript behaviour into the foogallery edit page
2
+ //For an example usage, check out wp-content/foogallery/extensions/default-templates/js/admin-gallery-default.js
3
+
4
+ (function (IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION, $, undefined) {
5
+
6
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.setPreviewClasses = function() {
7
+ var $previewImage = $('.foogallery-image-viewer-preview'),
8
+ theme = $('input[name="foogallery_settings[image-viewer_theme]"]:checked').val(),
9
+ hover_effect = $('input[name="foogallery_settings[image-viewer_hover-effect]"]:checked').val(),
10
+ hover_effect_type = $('input[name="foogallery_settings[image-viewer_hover-effect-type]"]:checked').val();
11
+
12
+ var $styles = $('#image-preview-custom-styles');
13
+ if (theme === 'fiv-custom'){
14
+ var bg_color = $('input[name="foogallery_settings[image-viewer_theme_custom_bgcolor]"]').val(),
15
+ text_color = $('input[name="foogallery_settings[image-viewer_theme_custom_textcolor]"]').val(),
16
+ border_color = $('input[name="foogallery_settings[image-viewer_theme_custom_bordercolor]"]').val(),
17
+ hover_color = $('input[name="foogallery_settings[image-viewer_theme_custom_hovercolor]"]').val();
18
+
19
+ var css = '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner,';
20
+ css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-prev,';
21
+ css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-next {';
22
+ css += 'background-color: '+bg_color+';';
23
+ css += 'color: '+text_color+';';
24
+ css += '}';
25
+ css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner,';
26
+ css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-inner-container,';
27
+ css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-prev,';
28
+ css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-next {';
29
+ css += 'border-color: '+border_color+';';
30
+ css += '}';
31
+ css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-prev:hover,';
32
+ css += '.foogallery-image-viewer-preview.fiv-custom > .fiv-inner > .fiv-ctrls > .fiv-next:hover {';
33
+ css += 'background-color: '+hover_color+';';
34
+ css += '}';
35
+ $styles.remove();
36
+ $('head').append('<style id="image-preview-custom-styles">'+css+'</style>');
37
+ } else {
38
+ $styles.remove();
39
+ }
40
+
41
+ $previewImage.attr('class' ,'foogallery-image-viewer-preview foogallery-container foogallery-image-viewer ' + theme);
42
+ if (hover_effect_type !== 'hover-effect-none'){
43
+ $previewImage.addClass(hover_effect_type + ' ' + hover_effect);
44
+ }
45
+
46
+ var $hoverEffectrow = $('.gallery_template_field-image-viewer-hover-effect');
47
+ if ( hover_effect_type === '' ) {
48
+ $hoverEffectrow.show();
49
+ } else {
50
+ $hoverEffectrow.hide();
51
+ }
52
+ };
53
+
54
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideRows = function(){
55
+ var $theme_rows = $('.gallery_template_field-image-viewer-theme_custom_bgcolor')
56
+ .add('.gallery_template_field-image-viewer-theme_custom_textcolor')
57
+ .add('.gallery_template_field-image-viewer-theme_custom_hovercolor')
58
+ .add('.gallery_template_field-image-viewer-theme_custom_bordercolor');
59
+
60
+ if ( $('input[name="foogallery_settings[image-viewer_theme]"]:checked').val() === 'fiv-custom' ) {
61
+ $theme_rows.show();
62
+ } else {
63
+ $theme_rows.hide();
64
+ }
65
+ };
66
+
67
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideCaptionContent = function(){
68
+ var $previewImage = $('.foogallery-image-viewer-preview'),
69
+ $caption = $previewImage.find('.foogallery-caption'),
70
+ $title = $previewImage.find('.foogallery-caption-title'),
71
+ $desc = $previewImage.find('.foogallery-caption-desc'),
72
+ caption_content = $('input[name="foogallery_settings[image-viewer_caption-content]"]:checked').val();
73
+
74
+ $caption.add($title).add($desc).show();
75
+ switch(caption_content){
76
+ case 'title':
77
+ $desc.hide();
78
+ break;
79
+ case 'desc':
80
+ $title.hide();
81
+ break;
82
+ case 'none':
83
+ $caption.hide();
84
+ break;
85
+ }
86
+ };
87
+
88
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.adminReady = function () {
89
+ $('body').on('foogallery-gallery-template-changed-image-viewer', function() {
90
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.setPreviewClasses();
91
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideRows();
92
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideCaptionContent();
93
+ });
94
+
95
+ var ps = 'input[name="foogallery_settings[image-viewer_hover-effect]"], ' +
96
+ 'input[name="foogallery_settings[image-viewer_hover-effect-type]"], ' +
97
+ 'input[name="foogallery_settings[image-viewer_theme]"], ' +
98
+ 'input[name="foogallery_settings[image-viewer_theme_custom_bgcolor]"], ' +
99
+ 'input[name="foogallery_settings[image-viewer_theme_custom_textcolor]"], ' +
100
+ 'input[name="foogallery_settings[image-viewer_theme_custom_bordercolor]"], ' +
101
+ 'input[name="foogallery_settings[image-viewer_theme_custom_hovercolor]"]';
102
+ $(ps).change(function() {
103
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.setPreviewClasses();
104
+ });
105
+
106
+ $('input[name="foogallery_settings[image-viewer_caption-content]"]').change(function() {
107
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideCaptionContent();
108
+ });
109
+
110
+ $('input[name="foogallery_settings[image-viewer_theme]"]').change(function() {
111
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.showHideRows();
112
+ });
113
+
114
+ $('.foogallery-image-viewer-preview').on('click', function(e) {
115
+ e.preventDefault();
116
+ });
117
+ };
118
+
119
+ }(window.IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION = window.IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION || {}, jQuery));
120
+
121
+ jQuery(function () {
122
+ IMAGE_VIEWER_TEMPLATE_FOOGALLERY_EXTENSION.adminReady();
123
  });
extensions/default-templates/justified/class-justified-gallery-template.php CHANGED
@@ -1,353 +1,353 @@
1
- <?php
2
-
3
- if ( ! class_exists( 'FooGallery_Justified_Gallery_Template' ) ) {
4
-
5
- define( 'FOOGALLERY_JUSTIFIED_GALLERY_TEMPLATE_URL', plugin_dir_url( __FILE__ ) );
6
-
7
- class FooGallery_Justified_Gallery_Template {
8
-
9
- const TEMPLATE_ID = 'justified';
10
-
11
- /**
12
- * Wire up everything we need to run the extension
13
- */
14
- function __construct() {
15
- // @formatter:off
16
- add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
17
- add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
18
- add_filter( 'foogallery_template_thumbnail_dimensions-justified', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
19
-
20
- // add the data options needed for justified.
21
- add_filter( 'foogallery_build_container_data_options-justified', array( $this, 'add_justified_options' ), 10, 3 );
22
-
23
- // build up the thumb dimensions from some arguments.
24
- add_filter( 'foogallery_calculate_thumbnail_dimensions-justified', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
25
-
26
- // build up the arguments needed for rendering this template.
27
- add_filter( 'foogallery_gallery_template_arguments-justified', array( $this, 'build_gallery_template_arguments' ) );
28
-
29
- add_filter( 'foogallery_override_gallery_template_fields-justified', array( $this, 'adjust_default_field_values' ), 10, 2 );
30
-
31
- // add a style block for the gallery based on the field settings.
32
- add_action( 'foogallery_loaded_template_before', array( $this, 'add_style_block' ), 10, 1 );
33
- // @formatter:on
34
- }
35
-
36
- /**
37
- * Add a style block based on the field settings
38
- *
39
- * @param $gallery FooGallery
40
- */
41
- function add_style_block( $gallery ) {
42
- if ( self::TEMPLATE_ID !== $gallery->gallery_template ) {
43
- return;
44
- }
45
-
46
- $id = $gallery->container_id();
47
- $margins = intval( foogallery_gallery_template_setting( 'margins', 2 ) );
48
- $row_height = intval( foogallery_gallery_template_setting( 'row_height', 250 ) );
49
-
50
- // @formatter:off
51
- ?>
52
- <style>
53
- #<?php echo $id; ?>.fg-justified .fg-item {
54
- margin-right: <?php echo $margins; ?>px;
55
- margin-bottom: <?php echo $margins; ?>px;
56
- }
57
-
58
- #<?php echo $id; ?>.fg-justified .fg-image {
59
- height: <?php echo $row_height; ?>px;
60
- }
61
- </style>
62
- <?php
63
- // @formatter:on
64
- }
65
-
66
- /**
67
- * Register myself so that all associated JS and CSS files can be found and automatically included
68
- *
69
- * @param array $extensions
70
- *
71
- * @return array
72
- */
73
- public function register_myself( $extensions ) {
74
- $extensions[] = __FILE__;
75
-
76
- return $extensions;
77
- }
78
-
79
- /**
80
- * Add our gallery template to the list of templates available for every gallery
81
- *
82
- * @param array $gallery_templates The array of gallery templates.
83
- *
84
- * @return array
85
- */
86
- public function add_template( $gallery_templates ) {
87
- $gallery_templates[] = array(
88
- 'slug' => self::TEMPLATE_ID,
89
- 'name' => __( 'Justified Gallery', 'foogallery' ),
90
- 'preview_support' => true,
91
- 'common_fields_support' => true,
92
- 'lazyload_support' => true,
93
- 'paging_support' => true,
94
- 'mandatory_classes' => 'fg-justified',
95
- 'thumbnail_dimensions' => true,
96
- 'filtering_support' => true,
97
- 'enqueue_core' => true,
98
- 'fields' => array(
99
- array(
100
- 'id' => 'row_height',
101
- 'title' => __( 'Row Height', 'foogallery' ),
102
- 'desc' => __( 'The preferred height of your gallery rows. Depending on the aspect ratio of your images and the viewport, the row height might increase up to Max Row Height.', 'foogallery' ),
103
- 'section' => __( 'General', 'foogallery' ),
104
- 'type' => 'number',
105
- 'class' => 'small-text',
106
- 'default' => 200,
107
- 'step' => '10',
108
- 'min' => '0',
109
- 'row_data' => array(
110
- 'data-foogallery-change-selector' => 'input',
111
- 'data-foogallery-value-selector' => 'input',
112
- 'data-foogallery-preview' => 'shortcode',
113
- ),
114
- ),
115
- array(
116
- 'id' => 'thumb_height',
117
- 'title' => __( 'Max Row Height', 'foogallery' ),
118
- 'desc' => __( 'Choose the max height of your gallery rows. It should always be larger than Row Height by about 150%.', 'foogallery' ),
119
- 'section' => __( 'General', 'foogallery' ),
120
- 'type' => 'number',
121
- 'class' => 'small-text',
122
- 'default' => 300,
123
- 'step' => '10',
124
- 'min' => '0',
125
- 'row_data' => array(
126
- 'data-foogallery-preview' => 'shortcode',
127
- 'data-foogallery-change-selector' => 'input',
128
- ),
129
- ),
130
- array(
131
- 'id' => 'margins',
132
- 'title' => __( 'Margins', 'foogallery' ),
133
- 'desc' => __( 'The spacing between your thumbnails.', 'foogallery' ),
134
- 'section' => __( 'General', 'foogallery' ),
135
- 'type' => 'number',
136
- 'class' => 'small-text',
137
- 'default' => 2,
138
- 'step' => '1',
139
- 'min' => '0',
140
- 'row_data' => array(
141
- 'data-foogallery-change-selector' => 'input',
142
- 'data-foogallery-value-selector' => 'input',
143
- 'data-foogallery-preview' => 'shortcode',
144
- ),
145
- ),
146
- array(
147
- 'id' => 'thumbnail_link',
148
- 'title' => __( 'Thumbnail Link', 'foogallery' ),
149
- 'section' => __( 'General', 'foogallery' ),
150
- 'default' => 'image',
151
- 'type' => 'thumb_link',
152
- 'desc' => __( 'You can choose to link each thumbnail to the full size image, or to the image\'s attachment page, or you can choose to not link to anything.', 'foogallery' ),
153
- ),
154
- array(
155
- 'id' => 'lightbox',
156
- 'title' => __( 'Lightbox', 'foogallery' ),
157
- 'desc' => __( 'Choose which lightbox you want to display images with. The lightbox will only work if you set the thumbnail link to "Full Size Image".', 'foogallery' ),
158
- 'section' => __( 'General', 'foogallery' ),
159
- 'default' => 'none',
160
- 'type' => 'lightbox',
161
- ),
162
- array(
163
- 'id' => 'align',
164
- 'title' => __( 'Alignment', 'foogallery' ),
165
- 'desc' => __( 'For rows that cannot be justified, what alignment should be used?', 'foogallery' ),
166
- 'section' => __( 'General', 'foogallery' ),
167
- 'type' => 'radio',
168
- 'spacer' => '<span class="spacer"></span>',
169
- 'default' => 'center',
170
- 'choices' => array(
171
- 'left' => __( 'Left', 'foogallery' ),
172
- 'center' => __( 'Center', 'foogallery' ),
173
- 'right' => __( 'Right', 'foogallery' ),
174
- ),
175
- 'row_data' => array(
176
- 'data-foogallery-change-selector' => 'input:radio',
177
- 'data-foogallery-value-selector' => 'input:checked',
178
- 'data-foogallery-preview' => 'shortcode',
179
- ),
180
- ),
181
- array(
182
- 'id' => 'last-row',
183
- 'title' => __( 'Last Row', 'foogallery' ),
184
- 'desc' => __( 'Decide what happens to the last row, when there are not enough images to full it completely.', 'foogallery' ),
185
- 'section' => __( 'General', 'foogallery' ),
186
- 'type' => 'radio',
187
- 'default' => 'smart',
188
- 'choices' => array(
189
- 'smart' => __( 'Default - the last row is justified and aligned, but adheres to the max row height and also compares itself to the average height of all rows.', 'foogallery' ),
190
- 'justify' => __( 'Justify - the last row is forced to be justified, ignoring the max row height. This can enlarge images to very large sizes in some scenarios.', 'foogallery' ),
191
- 'hide' => __( 'Hide - the last row is hidden if it does not fill the entire row.', 'foogallery' ),
192
- ),
193
- 'row_data' => array(
194
- 'data-foogallery-change-selector' => 'input:radio',
195
- 'data-foogallery-value-selector' => 'input:checked',
196
- 'data-foogallery-preview' => 'shortcode',
197
- ),
198
- ),
199
- ),
200
- );
201
-
202
- return $gallery_templates;
203
- }
204
-
205
- /**
206
- * Get the thumb dimensions arguments saved for the gallery for this gallery template
207
- *
208
- * @param array $dimensions
209
- * @param FooGallery $foogallery
210
- *
211
- * @return mixed
212
- */
213
- function get_thumbnail_dimensions( $dimensions, $foogallery ) {
214
- return array(
215
- 'height' => $this->max_row_height_from_current_gallery(),
216
- 'width' => 0,
217
- 'crop' => false,
218
- );
219
- }
220
-
221
- /**
222
- * Add the required justified options if needed
223
- *
224
- * @param $options
225
- * @param $gallery FooGallery
226
- *
227
- * @param $attributes array
228
- *
229
- * @return array
230
- */
231
- function add_justified_options( $options, $gallery, $attributes ) {
232
- $this->calculate_row_heights_for_current_gallery();
233
-
234
- $values = foogallery_current_gallery_get_cached_value( 'justified_row_height' );
235
-
236
- $margins = foogallery_gallery_template_setting( 'margins', '1' );
237
- $align = foogallery_gallery_template_setting( 'align', 'center' );
238
- $last_row = foogallery_gallery_template_setting( 'last-row', 'smart' );
239
-
240
- $options['template']['rowHeight'] = intval( $values['row_height'] );
241
- $options['template']['maxRowHeight'] = intval( $values['max_row_height'] );
242
- $options['template']['margins'] = intval( $margins );
243
- $options['template']['align'] = $align;
244
- $options['template']['lastRow'] = $last_row;
245
-
246
- return $options;
247
- }
248
-
249
- /**
250
- * Calculates the row heights for the current gallery, also taking into account legacy settings
251
- */
252
- function calculate_row_heights_for_current_gallery() {
253
- if ( ! foogallery_current_gallery_has_cached_value( 'justified_row_height' ) ) {
254
- $row_height = foogallery_gallery_template_setting( 'row_height', '200' );
255
-
256
- //check to see if there is a legacy max_row_height
257
- $max_row_height = foogallery_gallery_template_setting( 'max_row_height', false );
258
-
259
- if ( false === $max_row_height ) {
260
- //we do not have a legacy max_row_height, so use the thumb_height
261
- $max_row_height = intval( foogallery_gallery_template_setting( 'thumb_height', '300' ) );
262
- } else {
263
- if ( strpos( $max_row_height, '%' ) === false ) {
264
- $max_row_height = intval( $max_row_height );
265
- } else {
266
- $max_row_height = intval( $row_height * intval( $max_row_height ) / 100 );
267
- }
268
- }
269
-
270
- //check for a negative max_row_height
271
- if ( $max_row_height < 0 ) {
272
- $max_row_height = $row_height * 2;
273
- }
274
-
275
- foogallery_current_gallery_set_cached_value( 'justified_row_height', array(
276
- 'row_height' => intval( $row_height ),
277
- 'max_row_height' => $max_row_height,
278
- ) );
279
- }
280
- }
281
-
282
- /**
283
- * Builds thumb dimensions from arguments
284
- *
285
- * @param array $dimensions
286
- * @param array $arguments
287
- *
288
- * @return mixed
289
- */
290
- function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
291
- return array(
292
- 'height' => $this->max_row_height_from_current_gallery(),
293
- 'width' => 0,
294
- 'crop' => false,
295
- );
296
- }
297
-
298
- /**
299
- * Returns the max_row_height for the current gallery
300
- *
301
- * @return int
302
- */
303
- function max_row_height_from_current_gallery() {
304
- $this->calculate_row_heights_for_current_gallery();
305
- $values = foogallery_current_gallery_get_cached_value( 'justified_row_height' );
306
-
307
- return intval( $values['max_row_height'] );
308
- }
309
-
310
- /**
311
- * Build up the arguments needed for rendering this gallery template
312
- *
313
- * @param $args
314
- *
315
- * @return array
316
- */
317
- function build_gallery_template_arguments( $args ) {
318
- $args = array(
319
- 'height' => $this->max_row_height_from_current_gallery(),
320
- 'link' => foogallery_gallery_template_setting( 'thumbnail_link', 'image' ),
321
- 'crop' => false,
322
- );
323
-
324
- return $args;
325
- }
326
-
327
- /**
328
- * Adjust the default values for the justified template
329
- *
330
- * @param $fields
331
- * @param $template
332
- *
333
- * @return array
334
- * @uses "foogallery_override_gallery_template_fields"
335
- */
336
- function adjust_default_field_values( $fields, $template ) {
337
- //update specific fields
338
- foreach ( $fields as &$field ) {
339
- if ( 'border_size' === $field['id'] ) {
340
- $field['default'] = '';
341
- } else if ( 'hover_effect_caption_visibility' == $field['id'] ) {
342
- $field['default'] = 'fg-caption-always';
343
- } else if ( 'hover_effect_icon' == $field['id'] ) {
344
- $field['default'] = 'fg-hover-zoom2';
345
- } else if ( 'caption_desc_source' == $field['id'] ) {
346
- $field['default'] = 'none';
347
- }
348
- }
349
-
350
- return $fields;
351
- }
352
- }
353
  }
1
+ <?php
2
+
3
+ if ( ! class_exists( 'FooGallery_Justified_Gallery_Template' ) ) {
4
+
5
+ define( 'FOOGALLERY_JUSTIFIED_GALLERY_TEMPLATE_URL', plugin_dir_url( __FILE__ ) );
6
+
7
+ class FooGallery_Justified_Gallery_Template {
8
+
9
+ const TEMPLATE_ID = 'justified';
10
+
11
+ /**
12
+ * Wire up everything we need to run the extension
13
+ */
14
+ function __construct() {
15
+ // @formatter:off
16
+ add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
17
+ add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
18
+ add_filter( 'foogallery_template_thumbnail_dimensions-justified', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
19
+
20
+ // add the data options needed for justified.
21
+ add_filter( 'foogallery_build_container_data_options-justified', array( $this, 'add_justified_options' ), 10, 3 );
22
+
23
+ // build up the thumb dimensions from some arguments.
24
+ add_filter( 'foogallery_calculate_thumbnail_dimensions-justified', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
25
+
26
+ // build up the arguments needed for rendering this template.
27
+ add_filter( 'foogallery_gallery_template_arguments-justified', array( $this, 'build_gallery_template_arguments' ) );
28
+
29
+ add_filter( 'foogallery_override_gallery_template_fields-justified', array( $this, 'adjust_default_field_values' ), 10, 2 );
30
+
31
+ // add a style block for the gallery based on the field settings.
32
+ add_action( 'foogallery_loaded_template_before', array( $this, 'add_style_block' ), 10, 1 );
33
+ // @formatter:on
34
+ }
35
+
36
+ /**
37
+ * Add a style block based on the field settings
38
+ *
39
+ * @param $gallery FooGallery
40
+ */
41
+ function add_style_block( $gallery ) {
42
+ if ( self::TEMPLATE_ID !== $gallery->gallery_template ) {
43
+ return;
44
+ }
45
+
46
+ $id = $gallery->container_id();
47
+ $margins = intval( foogallery_gallery_template_setting( 'margins', 2 ) );
48
+ $row_height = intval( foogallery_gallery_template_setting( 'row_height', 250 ) );
49
+
50
+ // @formatter:off
51
+ ?>
52
+ <style>
53
+ #<?php echo $id; ?>.fg-justified .fg-item {
54
+ margin-right: <?php echo $margins; ?>px;
55
+ margin-bottom: <?php echo $margins; ?>px;
56
+ }
57
+
58
+ #<?php echo $id; ?>.fg-justified .fg-image {
59
+ height: <?php echo $row_height; ?>px;
60
+ }
61
+ </style>
62
+ <?php
63
+ // @formatter:on
64
+ }
65
+
66
+ /**
67
+ * Register myself so that all associated JS and CSS files can be found and automatically included
68
+ *
69
+ * @param array $extensions
70
+ *
71
+ * @return array
72
+ */
73
+ public function register_myself( $extensions ) {
74
+ $extensions[] = __FILE__;
75
+
76
+ return $extensions;
77
+ }
78
+
79
+ /**
80
+ * Add our gallery template to the list of templates available for every gallery
81
+ *
82
+ * @param array $gallery_templates The array of gallery templates.
83
+ *
84
+ * @return array
85
+ */
86
+ public function add_template( $gallery_templates ) {
87
+ $gallery_templates[] = array(
88
+ 'slug' => self::TEMPLATE_ID,
89
+ 'name' => __( 'Justified Gallery', 'foogallery' ),
90
+ 'preview_support' => true,
91
+ 'common_fields_support' => true,
92
+ 'lazyload_support' => true,
93
+ 'paging_support' => true,
94
+ 'mandatory_classes' => 'fg-justified',
95
+ 'thumbnail_dimensions' => true,
96
+ 'filtering_support' => true,
97
+ 'enqueue_core' => true,
98
+ 'fields' => array(
99
+ array(
100
+ 'id' => 'row_height',
101
+ 'title' => __( 'Row Height', 'foogallery' ),
102
+ 'desc' => __( 'The preferred height of your gallery rows. Depending on the aspect ratio of your images and the viewport, the row height might increase up to Max Row Height.', 'foogallery' ),
103
+ 'section' => __( 'General', 'foogallery' ),
104
+ 'type' => 'number',
105
+ 'class' => 'small-text',
106
+ 'default' => 200,
107
+ 'step' => '10',
108
+ 'min' => '0',
109
+ 'row_data' => array(
110
+ 'data-foogallery-change-selector' => 'input',
111
+ 'data-foogallery-value-selector' => 'input',
112
+ 'data-foogallery-preview' => 'shortcode',
113
+ ),
114
+ ),
115
+ array(
116
+ 'id' => 'thumb_height',
117
+ 'title' => __( 'Max Row Height', 'foogallery' ),
118
+ 'desc' => __( 'Choose the max height of your gallery rows. It should always be larger than Row Height by about 150%.', 'foogallery' ),
119
+ 'section' => __( 'General', 'foogallery' ),
120
+ 'type' => 'number',
121
+ 'class' => 'small-text',
122
+ 'default' => 300,
123
+ 'step' => '10',
124
+ 'min' => '0',
125
+ 'row_data' => array(
126
+ 'data-foogallery-preview' => 'shortcode',
127
+ 'data-foogallery-change-selector' => 'input',
128
+ ),
129
+ ),
130
+ array(
131
+ 'id' => 'margins',
132
+ 'title' => __( 'Margins', 'foogallery' ),
133
+ 'desc' => __( 'The spacing between your thumbnails.', 'foogallery' ),
134
+ 'section' => __( 'General', 'foogallery' ),
135
+ 'type' => 'number',
136
+ 'class' => 'small-text',
137
+ 'default' => 2,
138
+ 'step' => '1',
139
+ 'min' => '0',
140
+ 'row_data' => array(
141
+ 'data-foogallery-change-selector' => 'input',
142
+ 'data-foogallery-value-selector' => 'input',
143
+ 'data-foogallery-preview' => 'shortcode',
144
+ ),
145
+ ),
146
+ array(
147
+ 'id' => 'thumbnail_link',
148
+ 'title' => __( 'Thumbnail Link', 'foogallery' ),
149
+ 'section' => __( 'General', 'foogallery' ),
150
+ 'default' => 'image',
151
+ 'type' => 'thumb_link',
152
+ 'desc' => __( 'You can choose to link each thumbnail to the full size image, or to the image\'s attachment page, or you can choose to not link to anything.', 'foogallery' ),
153
+ ),
154
+ array(
155
+ 'id' => 'lightbox',
156
+ 'title' => __( 'Lightbox', 'foogallery' ),
157
+ 'desc' => __( 'Choose which lightbox you want to display images with. The lightbox will only work if you set the thumbnail link to "Full Size Image".', 'foogallery' ),
158
+ 'section' => __( 'General', 'foogallery' ),
159
+ 'default' => 'none',
160
+ 'type' => 'lightbox',
161
+ ),
162
+ array(
163
+ 'id' => 'align',
164
+ 'title' => __( 'Alignment', 'foogallery' ),
165
+ 'desc' => __( 'For rows that cannot be justified, what alignment should be used?', 'foogallery' ),
166
+ 'section' => __( 'General', 'foogallery' ),
167
+ 'type' => 'radio',
168
+ 'spacer' => '<span class="spacer"></span>',
169
+ 'default' => 'center',
170
+ 'choices' => array(
171
+ 'left' => __( 'Left', 'foogallery' ),
172
+ 'center' => __( 'Center', 'foogallery' ),
173
+ 'right' => __( 'Right', 'foogallery' ),
174
+ ),
175
+ 'row_data' => array(
176
+ 'data-foogallery-change-selector' => 'input:radio',
177
+ 'data-foogallery-value-selector' => 'input:checked',
178
+ 'data-foogallery-preview' => 'shortcode',
179
+ ),
180
+ ),
181
+ array(
182
+ 'id' => 'last-row',
183
+ 'title' => __( 'Last Row', 'foogallery' ),
184
+ 'desc' => __( 'Decide what happens to the last row, when there are not enough images to full it completely.', 'foogallery' ),
185
+ 'section' => __( 'General', 'foogallery' ),
186
+ 'type' => 'radio',
187
+ 'default' => 'smart',
188
+ 'choices' => array(
189
+ 'smart' => __( 'Default - the last row is justified and aligned, but adheres to the max row height and also compares itself to the average height of all rows.', 'foogallery' ),
190
+ 'justify' => __( 'Justify - the last row is forced to be justified, ignoring the max row height. This can enlarge images to very large sizes in some scenarios.', 'foogallery' ),
191
+ 'hide' => __( 'Hide - the last row is hidden if it does not fill the entire row.', 'foogallery' ),
192
+ ),
193
+ 'row_data' => array(
194
+ 'data-foogallery-change-selector' => 'input:radio',
195
+ 'data-foogallery-value-selector' => 'input:checked',
196
+ 'data-foogallery-preview' => 'shortcode',
197
+ ),
198
+ ),
199
+ ),
200
+ );
201
+
202
+ return $gallery_templates;
203
+ }
204
+
205
+ /**
206
+ * Get the thumb dimensions arguments saved for the gallery for this gallery template
207
+ *
208
+ * @param array $dimensions
209
+ * @param FooGallery $foogallery
210
+ *
211
+ * @return mixed
212
+ */
213
+ function get_thumbnail_dimensions( $dimensions, $foogallery ) {
214
+ return array(
215
+ 'height' => $this->max_row_height_from_current_gallery(),
216
+ 'width' => 0,
217
+ 'crop' => false,
218
+ );
219
+ }
220
+
221
+ /**
222
+ * Add the required justified options if needed
223
+ *
224
+ * @param $options
225
+ * @param $gallery FooGallery
226
+ *
227
+ * @param $attributes array
228
+ *
229
+ * @return array
230
+ */
231
+ function add_justified_options( $options, $gallery, $attributes ) {
232
+ $this->calculate_row_heights_for_current_gallery();
233
+
234
+ $values = foogallery_current_gallery_get_cached_value( 'justified_row_height' );
235
+
236
+ $margins = foogallery_gallery_template_setting( 'margins', '1' );
237
+ $align = foogallery_gallery_template_setting( 'align', 'center' );
238
+ $last_row = foogallery_gallery_template_setting( 'last-row', 'smart' );
239
+
240
+ $options['template']['rowHeight'] = intval( $values['row_height'] );
241
+ $options['template']['maxRowHeight'] = intval( $values['max_row_height'] );
242
+ $options['template']['margins'] = intval( $margins );
243
+ $options['template']['align'] = $align;
244
+ $options['template']['lastRow'] = $last_row;
245
+
246
+ return $options;
247
+ }
248
+
249
+ /**
250
+ * Calculates the row heights for the current gallery, also taking into account legacy settings
251
+ */
252
+ function calculate_row_heights_for_current_gallery() {
253
+ if ( ! foogallery_current_gallery_has_cached_value( 'justified_row_height' ) ) {
254
+ $row_height = foogallery_gallery_template_setting( 'row_height', '200' );
255
+
256
+ //check to see if there is a legacy max_row_height
257
+ $max_row_height = foogallery_gallery_template_setting( 'max_row_height', false );
258
+
259
+ if ( false === $max_row_height ) {
260
+ //we do not have a legacy max_row_height, so use the thumb_height
261
+ $max_row_height = intval( foogallery_gallery_template_setting( 'thumb_height', '300' ) );
262
+ } else {
263
+ if ( strpos( $max_row_height, '%' ) === false ) {
264
+ $max_row_height = intval( $max_row_height );
265
+ } else {
266
+ $max_row_height = intval( $row_height * intval( $max_row_height ) / 100 );
267
+ }
268
+ }
269
+
270
+ //check for a negative max_row_height
271
+ if ( $max_row_height < 0 ) {
272
+ $max_row_height = $row_height * 2;
273
+ }
274
+
275
+ foogallery_current_gallery_set_cached_value( 'justified_row_height', array(
276
+ 'row_height' => intval( $row_height ),
277
+ 'max_row_height' => $max_row_height,
278
+ ) );
279
+ }
280
+ }
281
+
282
+ /**
283
+ * Builds thumb dimensions from arguments
284
+ *
285
+ * @param array $dimensions
286
+ * @param array $arguments
287
+ *
288
+ * @return mixed
289
+ */
290
+ function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
291
+ return array(
292
+ 'height' => $this->max_row_height_from_current_gallery(),
293
+ 'width' => 0,
294
+ 'crop' => false,
295
+ );
296
+ }
297
+
298
+ /**
299
+ * Returns the max_row_height for the current gallery
300
+ *
301
+ * @return int
302
+ */
303
+ function max_row_height_from_current_gallery() {
304
+ $this->calculate_row_heights_for_current_gallery();
305
+ $values = foogallery_current_gallery_get_cached_value( 'justified_row_height' );
306
+
307
+ return intval( $values['max_row_height'] );
308
+ }
309
+
310
+ /**
311
+ * Build up the arguments needed for rendering this gallery template
312
+ *
313
+ * @param $args
314
+ *
315
+ * @return array
316
+ */
317
+ function build_gallery_template_arguments( $args ) {
318
+ $args = array(
319
+ 'height' => $this->max_row_height_from_current_gallery(),
320
+ 'link' => foogallery_gallery_template_setting( 'thumbnail_link', 'image' ),
321
+ 'crop' => false,
322
+ );
323
+
324
+ return $args;
325
+ }
326
+
327
+ /**
328
+ * Adjust the default values for the justified template
329
+ *
330
+ * @param $fields
331
+ * @param $template
332
+ *
333
+ * @return array
334
+ * @uses "foogallery_override_gallery_template_fields"
335
+ */
336
+ function adjust_default_field_values( $fields, $template ) {
337
+ //update specific fields
338
+ foreach ( $fields as &$field ) {
339
+ if ( 'border_size' === $field['id'] ) {
340
+ $field['default'] = '';
341
+ } else if ( 'hover_effect_caption_visibility' == $field['id'] ) {
342
+ $field['default'] = 'fg-caption-always';
343
+ } else if ( 'hover_effect_icon' == $field['id'] ) {
344
+ $field['default'] = 'fg-hover-zoom2';
345
+ } else if ( 'caption_desc_source' == $field['id'] ) {
346
+ $field['default'] = 'none';
347
+ }
348
+ }
349
+
350
+ return $fields;
351
+ }
352
+ }
353
  }
extensions/default-templates/justified/gallery-justified.php CHANGED
@@ -1,15 +1,15 @@
1
- <?php
2
- /**
3
- * FooGallery Justified gallery template
4
- */
5
- global $current_foogallery;
6
- global $current_foogallery_arguments;
7
- $lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
8
- $foogallery_justified_classes = foogallery_build_class_attribute_safe( $current_foogallery, 'foogallery-lightbox-' . $lightbox );
9
- $foogallery_justified_attributes = foogallery_build_container_attributes_safe( $current_foogallery, array( 'class' => $foogallery_justified_classes) );
10
- ?>
11
- <div <?php echo $foogallery_justified_attributes; ?>>
12
- <?php foreach ( foogallery_current_gallery_attachments_for_rendering() as $attachment ) {
13
- echo foogallery_attachment_html( $attachment );
14
- } ?>
15
- </div>
1
+ <?php
2
+ /**
3
+ * FooGallery Justified gallery template
4
+ */
5
+ global $current_foogallery;
6
+ global $current_foogallery_arguments;
7
+ $lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
8
+ $foogallery_justified_classes = foogallery_build_class_attribute_safe( $current_foogallery, 'foogallery-lightbox-' . $lightbox );
9
+ $foogallery_justified_attributes = foogallery_build_container_attributes_safe( $current_foogallery, array( 'class' => $foogallery_justified_classes) );
10
+ ?>
11
+ <div <?php echo $foogallery_justified_attributes; ?>>
12
+ <?php foreach ( foogallery_current_gallery_attachments_for_rendering() as $attachment ) {
13
+ echo foogallery_attachment_html( $attachment );
14
+ } ?>
15
+ </div>
extensions/default-templates/masonry/class-masonry-gallery-template.php CHANGED
@@ -1,407 +1,407 @@
1
- <?php
2
-
3
- if ( !class_exists( 'FooGallery_Masonry_Gallery_Template' ) ) {
4
-
5
- define('FOOGALLERY_MASONRY_GALLERY_TEMPLATE_URL', plugin_dir_url( __FILE__ ));
6
-
7
- class FooGallery_Masonry_Gallery_Template {
8
-
9
- const template_id = 'masonry';
10
-
11
- /**
12
- * Wire up everything we need to run the extension
13
- */
14
- function __construct() {
15
- add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
16
- add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
17
-
18
- add_action( 'foogallery_enqueue_preview_dependencies', array( $this, 'enqueue_preview_dependencies' ) );
19
-
20
- add_filter( 'foogallery_located_template-masonry', array( $this, 'enqueue_dependencies' ) );
21
-
22
- add_filter( 'foogallery_template_thumbnail_dimensions-masonry', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
23
-
24
- //add the data options needed for masonry
25
- add_filter( 'foogallery_build_container_data_options-masonry', array( $this, 'add_masonry_options' ), 10, 3 );
26
-
27
- //build up the thumb dimensions from some arguments
28
- add_filter( 'foogallery_calculate_thumbnail_dimensions-masonry', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
29
-
30
- //build up the arguments needed for rendering this template
31
- add_filter( 'foogallery_gallery_template_arguments-masonry', array( $this, 'build_gallery_template_arguments' ) );
32
-
33
- //add extra fields to the templates
34
- add_filter( 'foogallery_override_gallery_template_fields-masonry', array( $this, 'add_masonry_fields' ), 10, 2 );
35
-
36
- //remove the captions if the captions are below thumbs
37
- add_filter( 'foogallery_build_attachment_html_caption', array( $this, 'remove_captions' ), 10, 3 );
38
-
39
- //add a style block for the gallery based on the field settings
40
- add_action( 'foogallery_loaded_template_before', array( $this, 'add_style_block' ), 10, 1 );
41
-
42
- add_filter( 'foogallery_build_class_attribute', array( $this, 'override_class_attributes' ), 99, 2 );
43
- }
44
-
45
- /**
46
- * Override the classes for the layout
47
- *
48
- * @param $classes array
49
- * @param $gallery FooGallery
50
- *
51
- * @return array
52
- */
53
- function override_class_attributes( $classes, $gallery ) {
54
- if ( self::template_id === $gallery->gallery_template ) {
55
- $classes[] = 'fg-' . foogallery_gallery_template_setting( 'layout', 'fixed' );
56
- }
57
-
58
- return $classes;
59
- }
60
-
61
- /**
62
- * Add a style block based on the field settings
63
- *
64
- * @param $gallery FooGallery
65
- */
66
- function add_style_block( $gallery ) {
67
- if ( self::template_id !== $gallery->gallery_template ) {
68
- return;
69
- }
70
-
71
- $id = $gallery->container_id();
72
- $layout = foogallery_gallery_template_setting( 'layout', 'fixed' );
73
-
74
- //get out early if the layout is not fixed
75
- if ( 'fixed' !== $layout ) {
76
- return;
77
- }
78
-
79
- $thumbnail_width = intval( foogallery_gallery_template_setting( 'thumbnail_width', 250 ) );
80
- $gutter_width = intval( foogallery_gallery_template_setting( 'gutter_width', 10 ) );
81
-
82
- ?>
83
- <style>
84
- #<?php echo $id; ?>.fg-masonry .fg-item {
85
- width: <?php echo $thumbnail_width; ?>px;
86
- margin-right: <?php echo $gutter_width; ?>px;
87
- margin-bottom: <?php echo $gutter_width; ?>px;
88
- }
89
- </style>
90
- <?php
91
- }
92
-
93
-
94
- /**
95
- * Register myself so that all associated JS and CSS files can be found and automatically included
96
- * @param $extensions
97
- *
98
- * @return array
99
- */
100
- function register_myself( $extensions ) {
101
- $extensions[] = __FILE__;
102
- return $extensions;
103
- }
104
-
105
- /**
106
- * Add our gallery template to the list of templates available for every gallery
107
- * @param $gallery_templates
108
- *
109
- * @return array
110
- */
111
- function add_template( $gallery_templates ) {
112
- $gallery_templates[] = array(
113
- 'slug' => self::template_id,
114
- 'name' => __( 'Masonry Image Gallery', 'foogallery' ),
115
- 'preview_support' => true,
116
- 'common_fields_support' => true,
117
- 'lazyload_support' => true,
118
- 'paging_support' => true,
119
- 'mandatory_classes' => 'fg-masonry',
120
- 'thumbnail_dimensions' => true,
121
- 'filtering_support' => true,
122
- 'fields' => array(
123
- array(
124
- 'id' => 'thumbnail_width',
125
- 'title' => __( 'Thumb Width', 'foogallery' ),
126
- 'desc' => __( 'Choose the width of your thumbnails. Thumbnails will be generated on the fly and cached once generated', 'foogallery' ),
127
- 'section' => __( 'General', 'foogallery' ),
128
- 'type' => 'number',
129
- 'class' => 'small-text',
130
- 'default' => 250,
131
- 'step' => '1',
132
- 'min' => '0',
133
- 'row_data'=> array(
134
- 'data-foogallery-change-selector' => 'input',
135
- 'data-foogallery-preview' => 'shortcode'
136
- )
137
- ),
138
- array(
139
- 'id' => 'layout',
140
- 'title' => __( 'Masonry Layout', 'foogallery' ),
141
- 'desc' => __( 'Choose a fixed width thumb layout, or responsive columns.', 'foogallery' ),
142
- 'section' => __( 'General', 'foogallery' ),
143
- 'type' => 'radio',
144
- 'choices' => array(
145
- 'fixed' => __( 'Fixed Width', 'foogallery' ),
146
- 'col6' => __( '6 Columns', 'foogallery' ),
147
- 'col5' => __( '5 Columns', 'foogallery' ),
148
- 'col4' => __( '4 Columns', 'foogallery' ),
149
- 'col3' => __( '3 Columns', 'foogallery' ),
150
- 'col2' => __( '2 Columns', 'foogallery' ),
151
- ),
152
- 'default' => 'fixed',
153
- 'row_data'=> array(
154
- 'data-foogallery-change-selector' => 'input:radio',
155
- 'data-foogallery-value-selector' => 'input:checked',
156
- 'data-foogallery-preview' => 'shortcode'
157
- )
158
- ),
159
- array(
160
- 'id' => 'horizontal',
161
- 'title' => __( 'Horizontal Layout', 'foogallery' ),
162
- 'desc' => __( 'You can choose to lay out items to (mostly) maintain horizontal left-to-right order.', 'foogallery' ),
163
- 'section' => __( 'General', 'foogallery' ),
164
- 'type' => 'radio',
165
- 'choices' => array(
166
- '' => __( 'Disabled', 'foogallery' ),
167
- 'yes' => __( 'Try to maintain lef-to-right order', 'foogallery' ),
168
- ),
169
- 'default' => '',
170
- 'row_data'=> array(
171
- 'data-foogallery-change-selector' => 'input:radio',
172
- 'data-foogallery-value-selector' => 'input:checked',
173
- 'data-foogallery-preview' => 'shortcode'
174
- )
175
- ),
176
- array(
177
- 'id' => 'gutter_width',
178
- 'title' => __( 'Gutter Width', 'foogallery' ),
179
- 'desc' => __( 'The spacing between your thumbnails. Only applicable when using a fixed layout!', 'foogallery' ),
180
- 'section' => __( 'General', 'foogallery' ),
181
- 'type' => 'number',
182
- 'class' => 'small-text',
183
- 'default' => 10,
184
- 'step' => '1',
185
- 'min' => '0',
186
- 'row_data'=> array(
187
- 'data-foogallery-hidden' => true,
188
- 'data-foogallery-change-selector' => 'input',
189
- 'data-foogallery-value-selector' => 'input',
190
- 'data-foogallery-show-when-field' => 'layout',
191
- 'data-foogallery-show-when-field-value' => 'fixed',
192
- 'data-foogallery-preview' => 'shortcode',
193
- )
194
- ),
195
- array(
196
- 'id' => 'gutter_percent',
197
- 'title' => __( 'Gutter Size', 'foogallery' ),
198
- 'desc' => __( 'Choose a gutter size when using responsive columns.', 'foogallery' ),
199
- 'section' => __( 'General', 'foogallery' ),
200
- 'type' => 'radio',
201
- 'choices' => array(
202
- 'fg-gutter-none' => __( 'No Gutter', 'foogallery' ),
203
- '' => __( 'Normal Size Gutter', 'foogallery' ),
204
- 'fg-gutter-large' => __( 'Larger Gutter', 'foogallery' )
205
- ),
206
- 'default' => '',
207
- 'row_data'=> array(
208
- 'data-foogallery-hidden' => true,
209
- 'data-foogallery-change-selector' => 'input:radio',
210
- 'data-foogallery-value-selector' => 'input:checked',
211
- 'data-foogallery-show-when-field' => 'layout',
212
- 'data-foogallery-show-when-field-operator' => '!==',
213
- 'data-foogallery-show-when-field-value' => 'fixed',
214
- 'data-foogallery-preview' => 'shortcode'
215
- )
216
- ),
217
- array(
218
- 'id' => 'alignment',
219
- 'title' => __( 'Alignment', 'foogallery' ),
220
- 'desc' => __( 'You can choose to center align your images or leave them at the default (left). Only applicable when using a fixed layout!', 'foogallery' ),
221
- 'section' => __( 'General', 'foogallery' ),
222
- 'type' => 'radio',
223
- 'spacer' => '<span class="spacer"></span>',
224
- 'choices' => array(
225
- '' => __( 'Left', 'foogallery' ),
226
- 'fg-center' => __( 'Center', 'foogallery' )
227
- ),
228
- 'default' => 'fg-center',
229
- 'row_data'=> array(
230
- 'data-foogallery-hidden' => true,
231
- 'data-foogallery-show-when-field' => 'layout',
232
- 'data-foogallery-show-when-field-value' => 'fixed',
233
- 'data-foogallery-change-selector' => 'input:radio',
234
- 'data-foogallery-preview' => 'shortcode'
235
- )
236
- ),
237
- array(
238
- 'id' => 'thumbnail_link',
239
- 'title' => __( 'Thumbnail Link', 'foogallery' ),
240
- 'default' => 'image' ,
241
- 'type' => 'thumb_link',
242
- 'desc' => __( 'You can choose to link each thumbnail to the full size image, or to the image\'s attachment page, or you can choose to not link to anything', 'foogallery' ),
243
- ),
244
- array(
245
- 'id' => 'lightbox',
246
- 'title' => __( 'Lightbox', 'foogallery' ),
247
- 'desc' => __( 'Choose which lightbox you want to display images with. The lightbox will only work if you set the thumbnail link to "Full Size Image"', 'foogallery' ),
248
- 'type' => 'lightbox',
249
- 'default' => 'none',
250
- ),
251
- ),
252
- );
253
-
254
-
255
- return $gallery_templates;
256
- }
257
-
258
- /**
259
- * Enqueue scripts that the masonry gallery template relies on
260
- */
261
- function enqueue_preview_dependencies() {
262
- wp_enqueue_script( 'masonry' );
263
- }
264
-
265
- /**
266
- * Enqueue scripts that the masonry gallery template relies on
267
- */
268
- function enqueue_dependencies() {
269
- wp_enqueue_script( 'masonry' );
270
-
271
- //enqueue core files
272
- foogallery_enqueue_core_gallery_template_style();
273
- foogallery_enqueue_core_gallery_template_script( array('jquery', 'masonry' ) );
274
- }
275
-
276
- /**
277
- * Get the thumb dimensions arguments saved for the gallery for this gallery template
278
- *
279
- * @param array $dimensions
280
- * @param FooGallery $foogallery
281
- *
282
- * @return mixed
283
- */
284
- function get_thumbnail_dimensions( $dimensions, $foogallery ) {
285
- $width = $foogallery->get_meta( 'masonry_thumbnail_width', false );
286
- return array(
287
- 'height' => 0,
288
- 'width' => intval( $width ),
289
- 'crop' => false
290
- );
291
- }
292
-
293
- /**
294
- * Add the required masonry options if needed
295
- *
296
- * @param $options
297
- * @param $gallery FooGallery
298
- *
299
- * @param $attributes array
300
- *
301
- * @return array
302
- */
303
- function add_masonry_options($options, $gallery, $attributes) {
304
- $layout = foogallery_gallery_template_setting( 'layout', 'fixed' );
305
- if ( 'fixed' === $layout ) {
306
- $width = foogallery_gallery_template_setting( 'thumbnail_width', '250' );
307
- $gutter_width = foogallery_gallery_template_setting( 'gutter_width', '10' );
308
- $options['template']['columnWidth'] = intval($width);
309
- $options['template']['gutter'] = intval($gutter_width);
310
- }
311
- $horizontal = foogallery_gallery_template_setting( 'horizontal', '' );
312
- if ( 'yes' === $horizontal ) {
313
- $options['template']['horizontalOrder'] = true;
314
- }
315
- return $options;
316
- }
317
-
318
- /**
319
- * Builds thumb dimensions from arguments
320
- *
321
- * @param array $dimensions
322
- * @param array $arguments
323
- *
324
- * @return mixed
325
- */
326
- function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
327
- if ( array_key_exists( 'thumbnail_width', $arguments) ) {
328
- return array(
329
- 'height' => 0,
330
- 'width' => intval($arguments['thumbnail_width']),
331
- 'crop' => false
332
- );
333
- }
334
- return null;
335
- }
336
-
337
- /**
338
- * Build up the arguments needed for rendering this gallery template
339
- *
340
- * @param $args
341
- * @return array
342
- */
343
- function build_gallery_template_arguments( $args ) {
344
- $args = array(
345
- 'width' => foogallery_gallery_template_setting( 'thumbnail_width', '250' ),
346
- 'link' => foogallery_gallery_template_setting( 'thumbnail_link', 'image' ),
347
- 'crop' => false
348
- );
349
-
350
- return $args;
351
- }
352
-
353
- /**
354
- * Add masonry-specific fields to the gallery template
355
- *
356
- * @uses "foogallery_override_gallery_template_fields"
357
- * @param $fields
358
- * @param $template
359
- *
360
- * @return array
361
- */
362
- function add_masonry_fields( $fields, $template ) {
363
- //update specific fields
364
- foreach ($fields as &$field) {
365
- if ( 'hover_effect_caption_visibility' === $field['id'] ) {
366
- //add a new choice for captions to show below the thumbs
367
- $field['choices']['fg-captions-bottom'] = __( 'Below Thumbnail', 'foogallery' );
368
- $field['default'] = 'fg-captions-bottom';
369
- } else if ( 'theme' === $field['id'] ) {
370
- $field['default'] = 'fg-dark';
371
- $field['choices'] = array(
372
- 'fg-light' => __( 'Light', 'foogallery' ),
373
- 'fg-dark' => __( 'Dark', 'foogallery' ),
374
- 'fg-transparent' => __( 'Transparent', 'foogallery' ),
375
- 'fg-custom' => __( 'Custom', 'foogallery' )
376
- );
377
- } else if ( 'drop_shadow' === $field['id'] ) {
378
- $field['default'] = 'fg-shadow-small';
379
- } else if ( 'hover_effect_icon' === $field['id'] ) {
380
- $field['default'] = 'fg-hover-plus';
381
- }
382
- }
383
-
384
- return $fields;
385
- }
386
-
387
- function remove_captions( $captions, $foogallery_attachment, $args ) {
388
- global $current_foogallery_template;
389
-
390
- //check if masonry
391
- if ( 'masonry' === $current_foogallery_template ) {
392
-
393
- $hover_effect_caption_visibility = foogallery_gallery_template_setting( 'hover_effect_caption_visibility', 'fg-caption-hover' );
394
-
395
- //check if captions are set to show below the thumbs
396
- if ( 'fg-captions-bottom' === $hover_effect_caption_visibility ) {
397
- //if we have no captions then do not output captions at all
398
- if ( !array_key_exists( 'title', $captions ) && !array_key_exists( 'desc', $captions ) ) {
399
- $captions = false;
400
- }
401
- }
402
- }
403
-
404
- return $captions;
405
- }
406
- }
407
  }
1
+ <?php
2
+
3
+ if ( !class_exists( 'FooGallery_Masonry_Gallery_Template' ) ) {
4
+
5
+ define('FOOGALLERY_MASONRY_GALLERY_TEMPLATE_URL', plugin_dir_url( __FILE__ ));
6
+
7
+ class FooGallery_Masonry_Gallery_Template {
8
+
9
+ const template_id = 'masonry';
10
+
11
+ /**
12
+ * Wire up everything we need to run the extension
13
+ */
14
+ function __construct() {
15
+ add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
16
+ add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
17
+
18
+ add_action( 'foogallery_enqueue_preview_dependencies', array( $this, 'enqueue_preview_dependencies' ) );
19
+
20
+ add_filter( 'foogallery_located_template-masonry', array( $this, 'enqueue_dependencies' ) );
21
+
22
+ add_filter( 'foogallery_template_thumbnail_dimensions-masonry', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
23
+
24
+ //add the data options needed for masonry
25
+ add_filter( 'foogallery_build_container_data_options-masonry', array( $this, 'add_masonry_options' ), 10, 3 );
26
+
27
+ //build up the thumb dimensions from some arguments
28
+ add_filter( 'foogallery_calculate_thumbnail_dimensions-masonry', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
29
+
30
+ //build up the arguments needed for rendering this template
31
+ add_filter( 'foogallery_gallery_template_arguments-masonry', array( $this, 'build_gallery_template_arguments' ) );
32
+
33
+ //add extra fields to the templates
34
+ add_filter( 'foogallery_override_gallery_template_fields-masonry', array( $this, 'add_masonry_fields' ), 10, 2 );
35
+
36
+ //remove the captions if the captions are below thumbs
37
+ add_filter( 'foogallery_build_attachment_html_caption', array( $this, 'remove_captions' ), 10, 3 );
38
+
39
+ //add a style block for the gallery based on the field settings
40
+ add_action( 'foogallery_loaded_template_before', array( $this, 'add_style_block' ), 10, 1 );
41
+
42
+ add_filter( 'foogallery_build_class_attribute', array( $this, 'override_class_attributes' ), 99, 2 );
43
+ }
44
+
45
+ /**
46
+ * Override the classes for the layout
47
+ *
48
+ * @param $classes array
49
+ * @param $gallery FooGallery
50
+ *
51
+ * @return array
52
+ */
53
+ function override_class_attributes( $classes, $gallery ) {
54
+ if ( self::template_id === $gallery->gallery_template ) {
55
+ $classes[] = 'fg-' . foogallery_gallery_template_setting( 'layout', 'fixed' );
56
+ }
57
+
58
+ return $classes;
59
+ }
60
+
61
+ /**
62
+ * Add a style block based on the field settings
63
+ *
64
+ * @param $gallery FooGallery
65
+ */
66
+ function add_style_block( $gallery ) {
67
+ if ( self::template_id !== $gallery->gallery_template ) {
68
+ return;
69
+ }
70
+
71
+ $id = $gallery->container_id();
72
+ $layout = foogallery_gallery_template_setting( 'layout', 'fixed' );
73
+
74
+ //get out early if the layout is not fixed
75
+ if ( 'fixed' !== $layout ) {
76
+ return;
77
+ }
78
+
79
+ $thumbnail_width = intval( foogallery_gallery_template_setting( 'thumbnail_width', 250 ) );
80
+ $gutter_width = intval( foogallery_gallery_template_setting( 'gutter_width', 10 ) );
81
+
82
+ ?>
83
+ <style>
84
+ #<?php echo $id; ?>.fg-masonry .fg-item {
85
+ width: <?php echo $thumbnail_width; ?>px;
86
+ margin-right: <?php echo $gutter_width; ?>px;
87
+ margin-bottom: <?php echo $gutter_width; ?>px;
88
+ }
89
+ </style>
90
+ <?php
91
+ }
92
+
93
+
94
+ /**
95
+ * Register myself so that all associated JS and CSS files can be found and automatically included
96
+ * @param $extensions
97
+ *
98
+ * @return array
99
+ */
100
+ function register_myself( $extensions ) {
101
+ $extensions[] = __FILE__;
102
+ return $extensions;
103
+ }
104
+
105
+ /**
106
+ * Add our gallery template to the list of templates available for every gallery
107
+ * @param $gallery_templates
108
+ *
109
+ * @return array
110
+ */
111
+ function add_template( $gallery_templates ) {
112
+ $gallery_templates[] = array(
113
+ 'slug' => self::template_id,
114
+ 'name' => __( 'Masonry Image Gallery', 'foogallery' ),
115
+ 'preview_support' => true,
116
+ 'common_fields_support' => true,
117
+ 'lazyload_support' => true,
118
+ 'paging_support' => true,
119
+ 'mandatory_classes' => 'fg-masonry',
120
+ 'thumbnail_dimensions' => true,
121
+ 'filtering_support' => true,
122
+ 'fields' => array(
123
+ array(
124
+ 'id' => 'thumbnail_width',
125
+ 'title' => __( 'Thumb Width', 'foogallery' ),
126
+ 'desc' => __( 'Choose the width of your thumbnails. Thumbnails will be generated on the fly and cached once generated', 'foogallery' ),
127
+ 'section' => __( 'General', 'foogallery' ),
128
+ 'type' => 'number',
129
+ 'class' => 'small-text',
130
+ 'default' => 250,
131
+ 'step' => '1',
132
+ 'min' => '0',
133
+ 'row_data'=> array(
134
+ 'data-foogallery-change-selector' => 'input',
135
+ 'data-foogallery-preview' => 'shortcode'
136
+ )
137
+ ),
138
+ array(
139
+ 'id' => 'layout',
140
+ 'title' => __( 'Masonry Layout', 'foogallery' ),
141
+ 'desc' => __( 'Choose a fixed width thumb layout, or responsive columns.', 'foogallery' ),
142
+ 'section' => __( 'General', 'foogallery' ),
143
+ 'type' => 'radio',
144
+ 'choices' => array(
145
+ 'fixed' => __( 'Fixed Width', 'foogallery' ),
146
+ 'col6' => __( '6 Columns', 'foogallery' ),
147
+ 'col5' => __( '5 Columns', 'foogallery' ),
148
+ 'col4' => __( '4 Columns', 'foogallery' ),
149
+ 'col3' => __( '3 Columns', 'foogallery' ),
150
+ 'col2' => __( '2 Columns', 'foogallery' ),
151
+ ),
152
+ 'default' => 'fixed',
153
+ 'row_data'=> array(
154
+ 'data-foogallery-change-selector' => 'input:radio',
155
+ 'data-foogallery-value-selector' => 'input:checked',
156
+ 'data-foogallery-preview' => 'shortcode'
157
+ )
158
+ ),
159
+ array(
160
+ 'id' => 'horizontal',
161
+ 'title' => __( 'Horizontal Layout', 'foogallery' ),
162
+ 'desc' => __( 'You can choose to lay out items to (mostly) maintain horizontal left-to-right order.', 'foogallery' ),
163
+ 'section' => __( 'General', 'foogallery' ),
164
+ 'type' => 'radio',
165
+ 'choices' => array(
166
+ '' => __( 'Disabled', 'foogallery' ),
167
+ 'yes' => __( 'Try to maintain lef-to-right order', 'foogallery' ),
168
+ ),
169
+ 'default' => '',
170
+ 'row_data'=> array(
171
+ 'data-foogallery-change-selector' => 'input:radio',
172
+ 'data-foogallery-value-selector' => 'input:checked',
173
+ 'data-foogallery-preview' => 'shortcode'
174
+ )
175
+ ),
176
+ array(
177
+ 'id' => 'gutter_width',
178
+ 'title' => __( 'Gutter Width', 'foogallery' ),
179
+ 'desc' => __( 'The spacing between your thumbnails. Only applicable when using a fixed layout!', 'foogallery' ),
180
+ 'section' => __( 'General', 'foogallery' ),
181
+ 'type' => 'number',
182
+ 'class' => 'small-text',
183
+ 'default' => 10,
184
+ 'step' => '1',
185
+ 'min' => '0',
186
+ 'row_data'=> array(
187
+ 'data-foogallery-hidden' => true,
188
+ 'data-foogallery-change-selector' => 'input',
189
+ 'data-foogallery-value-selector' => 'input',
190
+ 'data-foogallery-show-when-field' => 'layout',
191
+ 'data-foogallery-show-when-field-value' => 'fixed',
192
+ 'data-foogallery-preview' => 'shortcode',
193
+ )
194
+ ),
195
+ array(
196
+ 'id' => 'gutter_percent',
197
+ 'title' => __( 'Gutter Size', 'foogallery' ),
198
+ 'desc' => __( 'Choose a gutter size when using responsive columns.', 'foogallery' ),
199
+ 'section' => __( 'General', 'foogallery' ),
200
+ 'type' => 'radio',
201
+ 'choices' => array(
202
+ 'fg-gutter-none' => __( 'No Gutter', 'foogallery' ),
203
+ '' => __( 'Normal Size Gutter', 'foogallery' ),
204
+ 'fg-gutter-large' => __( 'Larger Gutter', 'foogallery' )
205
+ ),
206
+ 'default' => '',
207
+ 'row_data'=> array(
208
+ 'data-foogallery-hidden' => true,
209
+ 'data-foogallery-change-selector' => 'input:radio',
210
+ 'data-foogallery-value-selector' => 'input:checked',
211
+ 'data-foogallery-show-when-field' => 'layout',
212
+ 'data-foogallery-show-when-field-operator' => '!==',
213
+ 'data-foogallery-show-when-field-value' => 'fixed',
214
+ 'data-foogallery-preview' => 'shortcode'
215
+ )
216
+ ),
217
+ array(
218
+ 'id' => 'alignment',
219
+ 'title' => __( 'Alignment', 'foogallery' ),
220
+ 'desc' => __( 'You can choose to center align your images or leave them at the default (left). Only applicable when using a fixed layout!', 'foogallery' ),
221
+ 'section' => __( 'General', 'foogallery' ),
222
+ 'type' => 'radio',
223
+ 'spacer' => '<span class="spacer"></span>',
224
+ 'choices' => array(
225
+ '' => __( 'Left', 'foogallery' ),
226
+ 'fg-center' => __( 'Center', 'foogallery' )
227
+ ),
228
+ 'default' => 'fg-center',
229
+ 'row_data'=> array(
230
+ 'data-foogallery-hidden' => true,
231
+ 'data-foogallery-show-when-field' => 'layout',
232
+ 'data-foogallery-show-when-field-value' => 'fixed',
233
+ 'data-foogallery-change-selector' => 'input:radio',
234
+ 'data-foogallery-preview' => 'shortcode'
235
+ )
236
+ ),
237
+ array(
238
+ 'id' => 'thumbnail_link',
239
+ 'title' => __( 'Thumbnail Link', 'foogallery' ),
240
+ 'default' => 'image' ,
241
+ 'type' => 'thumb_link',
242
+ 'desc' => __( 'You can choose to link each thumbnail to the full size image, or to the image\'s attachment page, or you can choose to not link to anything', 'foogallery' ),
243
+ ),
244
+ array(
245
+ 'id' => 'lightbox',
246
+ 'title' => __( 'Lightbox', 'foogallery' ),
247
+ 'desc' => __( 'Choose which lightbox you want to display images with. The lightbox will only work if you set the thumbnail link to "Full Size Image"', 'foogallery' ),
248
+ 'type' => 'lightbox',
249
+ 'default' => 'none',
250
+ ),
251
+ ),
252
+ );
253
+
254
+
255
+ return $gallery_templates;
256
+ }
257
+
258
+ /**
259
+ * Enqueue scripts that the masonry gallery template relies on
260
+ */
261
+ function enqueue_preview_dependencies() {
262
+ wp_enqueue_script( 'masonry' );
263
+ }
264
+
265
+ /**
266
+ * Enqueue scripts that the masonry gallery template relies on
267
+ */
268
+ function enqueue_dependencies() {
269
+ wp_enqueue_script( 'masonry' );
270
+
271
+ //enqueue core files
272
+ foogallery_enqueue_core_gallery_template_style();
273
+ foogallery_enqueue_core_gallery_template_script( array('jquery', 'masonry' ) );
274
+ }
275
+
276
+ /**
277
+ * Get the thumb dimensions arguments saved for the gallery for this gallery template
278
+ *
279
+ * @param array $dimensions
280
+ * @param FooGallery $foogallery
281
+ *
282
+ * @return mixed
283
+ */
284
+ function get_thumbnail_dimensions( $dimensions, $foogallery ) {
285
+ $width = $foogallery->get_meta( 'masonry_thumbnail_width', false );
286
+ return array(
287
+ 'height' => 0,
288
+ 'width' => intval( $width ),
289
+ 'crop' => false
290
+ );
291
+ }
292
+
293
+ /**
294
+ * Add the required masonry options if needed
295
+ *
296
+ * @param $options
297
+ * @param $gallery FooGallery
298
+ *
299
+ * @param $attributes array
300
+ *
301
+ * @return array
302
+ */
303
+ function add_masonry_options($options, $gallery, $attributes) {
304
+ $layout = foogallery_gallery_template_setting( 'layout', 'fixed' );
305
+ if ( 'fixed' === $layout ) {
306
+ $width = foogallery_gallery_template_setting( 'thumbnail_width', '250' );
307
+ $gutter_width = foogallery_gallery_template_setting( 'gutter_width', '10' );
308
+ $options['template']['columnWidth'] = intval($width);
309
+ $options['template']['gutter'] = intval($gutter_width);
310
+ }
311
+ $horizontal = foogallery_gallery_template_setting( 'horizontal', '' );
312
+ if ( 'yes' === $horizontal ) {
313
+ $options['template']['horizontalOrder'] = true;
314
+ }
315
+ return $options;
316
+ }
317
+
318
+ /**
319
+ * Builds thumb dimensions from arguments
320
+ *
321
+ * @param array $dimensions
322
+ * @param array $arguments
323
+ *
324
+ * @return mixed
325
+ */
326
+ function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
327
+ if ( array_key_exists( 'thumbnail_width', $arguments) ) {
328
+ return array(
329
+ 'height' => 0,
330
+ 'width' => intval($arguments['thumbnail_width']),
331
+ 'crop' => false
332
+ );
333
+ }
334
+ return null;
335
+ }
336
+
337
+ /**
338
+ * Build up the arguments needed for rendering this gallery template
339
+ *
340
+ * @param $args
341
+ * @return array
342
+ */
343
+ function build_gallery_template_arguments( $args ) {
344
+ $args = array(
345
+ 'width' => foogallery_gallery_template_setting( 'thumbnail_width', '250' ),
346
+ 'link' => foogallery_gallery_template_setting( 'thumbnail_link', 'image' ),
347
+ 'crop' => false
348
+ );
349
+
350
+ return $args;
351
+ }
352
+
353
+ /**
354
+ * Add masonry-specific fields to the gallery template
355
+ *
356
+ * @uses "foogallery_override_gallery_template_fields"
357
+ * @param $fields
358
+ * @param $template
359
+ *
360
+ * @return array
361
+ */
362
+ function add_masonry_fields( $fields, $template ) {
363
+ //update specific fields
364
+ foreach ($fields as &$field) {
365
+ if ( 'hover_effect_caption_visibility' === $field['id'] ) {
366
+ //add a new choice for captions to show below the thumbs
367
+ $field['choices']['fg-captions-bottom'] = __( 'Below Thumbnail', 'foogallery' );
368
+ $field['default'] = 'fg-captions-bottom';
369
+ } else if ( 'theme' === $field['id'] ) {
370
+ $field['default'] = 'fg-dark';
371
+ $field['choices'] = array(
372
+ 'fg-light' => __( 'Light', 'foogallery' ),
373
+ 'fg-dark' => __( 'Dark', 'foogallery' ),
374
+ 'fg-transparent' => __( 'Transparent', 'foogallery' ),
375
+ 'fg-custom' => __( 'Custom', 'foogallery' )
376
+ );
377
+ } else if ( 'drop_shadow' === $field['id'] ) {
378
+ $field['default'] = 'fg-shadow-small';
379
+ } else if ( 'hover_effect_icon' === $field['id'] ) {
380
+ $field['default'] = 'fg-hover-plus';
381
+ }
382
+ }
383
+
384
+ return $fields;
385
+ }
386
+
387
+ function remove_captions( $captions, $foogallery_attachment, $args ) {
388
+ global $current_foogallery_template;
389
+
390
+ //check if masonry
391
+ if ( 'masonry' === $current_foogallery_template ) {
392
+
393
+ $hover_effect_caption_visibility = foogallery_gallery_template_setting( 'hover_effect_caption_visibility', 'fg-caption-hover' );
394
+
395
+ //check if captions are set to show below the thumbs
396
+ if ( 'fg-captions-bottom' === $hover_effect_caption_visibility ) {
397
+ //if we have no captions then do not output captions at all
398
+ if ( !array_key_exists( 'title', $captions ) && !array_key_exists( 'desc', $captions ) ) {
399
+ $captions = false;
400
+ }
401
+ }
402
+ }
403
+
404
+ return $captions;
405
+ }
406
+ }
407
  }
extensions/default-templates/masonry/gallery-masonry.php CHANGED
@@ -1,26 +1,26 @@
1
- <?php
2
- /**
3
- * FooGallery masonry gallery template
4
- */
5
- global $current_foogallery;
6
- global $current_foogallery_arguments;
7
-
8
- $lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
9
- $alignment = foogallery_gallery_template_setting( 'alignment', 'fg-center' );
10
- $layout = foogallery_gallery_template_setting( 'layout', 'fixed' );
11
- $gutter_percent = '';
12
- if ( 'fixed' !== $layout ) {
13
- $gutter_percent = foogallery_gallery_template_setting( 'gutter_percent', '' );
14
- }
15
- $foogallery_masonry_classes = foogallery_build_class_attribute_safe( $current_foogallery, 'foogallery-lightbox-' . $lightbox, $alignment, $gutter_percent );
16
- $foogallery_masonry_attributes = foogallery_build_container_attributes_safe( $current_foogallery, array( 'class' => $foogallery_masonry_classes) );
17
- ?>
18
- <div <?php echo $foogallery_masonry_attributes; ?>>
19
- <?php if ( 'fixed' !== $layout ) { ?>
20
- <div class="fg-column-width"></div>
21
- <div class="fg-gutter-width"></div>
22
- <?php } ?>
23
- <?php foreach ( foogallery_current_gallery_attachments_for_rendering() as $attachment ) {
24
- echo foogallery_attachment_html( $attachment );
25
- } ?>
26
  </div>
1
+ <?php
2
+ /**
3
+ * FooGallery masonry gallery template
4
+ */
5
+ global $current_foogallery;
6
+ global $current_foogallery_arguments;
7
+
8
+ $lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
9
+ $alignment = foogallery_gallery_template_setting( 'alignment', 'fg-center' );
10
+ $layout = foogallery_gallery_template_setting( 'layout', 'fixed' );
11
+ $gutter_percent = '';
12
+ if ( 'fixed' !== $layout ) {
13
+ $gutter_percent = foogallery_gallery_template_setting( 'gutter_percent', '' );
14
+ }
15
+ $foogallery_masonry_classes = foogallery_build_class_attribute_safe( $current_foogallery, 'foogallery-lightbox-' . $lightbox, $alignment, $gutter_percent );
16
+ $foogallery_masonry_attributes = foogallery_build_container_attributes_safe( $current_foogallery, array( 'class' => $foogallery_masonry_classes) );
17
+ ?>
18
+ <div <?php echo $foogallery_masonry_attributes; ?>>
19
+ <?php if ( 'fixed' !== $layout ) { ?>
20
+ <div class="fg-column-width"></div>
21
+ <div class="fg-gutter-width"></div>
22
+ <?php } ?>
23
+ <?php foreach ( foogallery_current_gallery_attachments_for_rendering() as $attachment ) {
24
+ echo foogallery_attachment_html( $attachment );
25
+ } ?>
26
  </div>
extensions/default-templates/masonry/js/admin-gallery-masonry.js CHANGED
@@ -1,30 +1,30 @@
1
- (function (FOOGALLERY_MASONRY_TEMPLATE, $, undefined) {
2
-
3
- FOOGALLERY_MASONRY_TEMPLATE.showHideControls = function() {
4
-
5
- var layout = $('input[name="foogallery_settings[masonry_layout]"]:checked').val();
6
-
7
- if ( layout === 'fixed' ) {
8
- $('.gallery_template_field-masonry-gutter_width, .gallery_template_field-masonry-center_align').show();
9
- $('.gallery_template_field-masonry-gutter_percent').hide();
10
- } else {
11
- $('.gallery_template_field-masonry-gutter_width, .gallery_template_field-masonry-center_align').hide();
12
- $('.gallery_template_field-masonry-gutter_percent').show();
13
- }
14
- };
15
-
16
- FOOGALLERY_MASONRY_TEMPLATE.adminReady = function () {
17
- $('body').on('foogallery-gallery-template-changed-masonry', function() {
18
- FOOGALLERY_MASONRY_TEMPLATE.showHideControls();
19
- });
20
-
21
- $('input[name="foogallery_settings[masonry_layout]"]').change(function() {
22
- FOOGALLERY_MASONRY_TEMPLATE.showHideControls();
23
- });
24
- };
25
-
26
- }(window.FOOGALLERY_MASONRY_TEMPLATE = window.FOOGALLERY_MASONRY_TEMPLATE || {}, jQuery));
27
-
28
- jQuery(function () {
29
- FOOGALLERY_MASONRY_TEMPLATE.adminReady();
30
  });
1
+ (function (FOOGALLERY_MASONRY_TEMPLATE, $, undefined) {
2
+
3
+ FOOGALLERY_MASONRY_TEMPLATE.showHideControls = function() {
4
+
5
+ var layout = $('input[name="foogallery_settings[masonry_layout]"]:checked').val();
6
+
7
+ if ( layout === 'fixed' ) {
8
+ $('.gallery_template_field-masonry-gutter_width, .gallery_template_field-masonry-center_align').show();
9
+ $('.gallery_template_field-masonry-gutter_percent').hide();
10
+ } else {
11
+ $('.gallery_template_field-masonry-gutter_width, .gallery_template_field-masonry-center_align').hide();
12
+ $('.gallery_template_field-masonry-gutter_percent').show();
13
+ }
14
+ };
15
+
16
+ FOOGALLERY_MASONRY_TEMPLATE.adminReady = function () {
17
+ $('body').on('foogallery-gallery-template-changed-masonry', function() {
18
+ FOOGALLERY_MASONRY_TEMPLATE.showHideControls();
19
+ });
20
+
21
+ $('input[name="foogallery_settings[masonry_layout]"]').change(function() {
22
+ FOOGALLERY_MASONRY_TEMPLATE.showHideControls();
23
+ });
24
+ };
25
+
26
+ }(window.FOOGALLERY_MASONRY_TEMPLATE = window.FOOGALLERY_MASONRY_TEMPLATE || {}, jQuery));
27
+
28
+ jQuery(function () {
29
+ FOOGALLERY_MASONRY_TEMPLATE.adminReady();
30
  });
extensions/default-templates/shared/css/admin-foogallery.css CHANGED
@@ -1,87 +1,87 @@
1
- .foogallery-setting-caption_icon,
2
- .foogallery-setting-loading_icon,
3
- .foogallery-setting-video_overlay,
4
- .foogallery-setting-panel_theme {
5
- content: "";
6
- display: inline-block;
7
- position: relative;
8
- width: 32px;
9
- height: 32px;
10
- margin: 0;
11
- background: transparent no-repeat center center;
12
- background-size: 32px 32px;
13
- vertical-align: middle;
14
- }
15
- .foogallery-setting-caption_icon.fg-hover-zoom {
16
- background-image: url('../img/icons.svg#zoom-light');
17
- }
18
- .foogallery-setting-caption_icon.fg-hover-zoom2 {
19
- background-image: url('../img/icons.svg#zoom2-light');
20
- }
21
- .foogallery-setting-caption_icon.fg-hover-zoom3 {
22
- background-image: url('../img/icons.svg#zoom3-light');
23
- }
24
- .foogallery-setting-caption_icon.fg-hover-plus {
25
- background-image: url('../img/icons.svg#plus-light');
26
- }
27
- .foogallery-setting-caption_icon.fg-hover-circle-plus {
28
- background-image: url('../img/icons.svg#circle-plus-light');
29
- }
30
- .foogallery-setting-caption_icon.fg-hover-eye {
31
- background-image: url('../img/icons.svg#eye-light');
32
- }
33
- .foogallery-setting-caption_icon.fg-hover-external {
34
- background-image: url('../img/icons.svg#external-light');
35
- }
36
- .foogallery-setting-video_overlay.fg-video-default {
37
- background-image: url('../img/icons.svg#video-default-light');
38
- }
39
- .foogallery-setting-video_overlay.fg-video-1 {
40
- background-image: url('../img/icons.svg#video-1-light');
41
- }
42
- .foogallery-setting-video_overlay.fg-video-2 {
43
- background-image: url('../img/icons.svg#video-2-light');
44
- }
45
- .foogallery-setting-video_overlay.fg-video-3 {
46
- background-image: url('../img/icons.svg#video-3-light');
47
- }
48
- .foogallery-setting-video_overlay.fg-video-4 {
49
- background-image: url('../img/icons.svg#video-4-light');
50
- }
51
- .foogallery-setting-caption_icon.fg-hover-cart {
52
- background-image: url('../img/icons.svg#cart-light');
53
- }
54
-
55
- .foogallery_template_field_type-htmlicon.foogallery_template_field_id-loading_icon td label {
56
- background-color: #eee;
57
- }
58
-
59
- .foogallery_template_field_type-htmlicon.foogallery_template_field_id-loading_icon td input:checked + label {
60
- background-color: #eee;
61
- }
62
-
63
- .fg-item-inner {
64
- margin: 0;
65
- }
66
-
67
- .foogallery-setting-panel_theme.fg-light {
68
- background-color: #fff;
69
- }
70
- .foogallery-setting-panel_theme.fg-dark {
71
- background-color: #292929;
72
- }
73
- .foogallery-setting-panel_theme.fg-blue {
74
- background-color: #3079ed;
75
- }
76
- .foogallery-setting-panel_theme.fg-purple {
77
- background-color: #6816c2;
78
- }
79
- .foogallery-setting-panel_theme.fg-green {
80
- background-color: #027339;
81
- }
82
- .foogallery-setting-panel_theme.fg-red {
83
- background-color: #c22b24;
84
- }
85
- .foogallery-setting-panel_theme.fg-orange {
86
- background-color: #e57731;
87
  }
1
+ .foogallery-setting-caption_icon,
2
+ .foogallery-setting-loading_icon,
3
+ .foogallery-setting-video_overlay,
4
+ .foogallery-setting-panel_theme {
5
+ content: "";
6
+ display: inline-block;
7
+ position: relative;
8
+ width: 32px;
9
+ height: 32px;
10
+ margin: 0;
11
+ background: transparent no-repeat center center;
12
+ background-size: 32px 32px;
13
+ vertical-align: middle;
14
+ }
15
+ .foogallery-setting-caption_icon.fg-hover-zoom {
16
+ background-image: url('../img/icons.svg#zoom-light');
17
+ }
18
+ .foogallery-setting-caption_icon.fg-hover-zoom2 {
19
+ background-image: url('../img/icons.svg#zoom2-light');
20
+ }
21
+ .foogallery-setting-caption_icon.fg-hover-zoom3 {
22
+ background-image: url('../img/icons.svg#zoom3-light');
23
+ }
24
+ .foogallery-setting-caption_icon.fg-hover-plus {
25
+ background-image: url('../img/icons.svg#plus-light');
26
+ }
27
+ .foogallery-setting-caption_icon.fg-hover-circle-plus {
28
+ background-image: url('../img/icons.svg#circle-plus-light');
29
+ }
30
+ .foogallery-setting-caption_icon.fg-hover-eye {
31
+ background-image: url('../img/icons.svg#eye-light');
32
+ }
33
+ .foogallery-setting-caption_icon.fg-hover-external {
34
+ background-image: url('../img/icons.svg#external-light');
35
+ }
36
+ .foogallery-setting-video_overlay.fg-video-default {
37
+ background-image: url('../img/icons.svg#video-default-light');
38
+ }
39
+ .foogallery-setting-video_overlay.fg-video-1 {
40
+ background-image: url('../img/icons.svg#video-1-light');
41
+ }
42
+ .foogallery-setting-video_overlay.fg-video-2 {
43
+ background-image: url('../img/icons.svg#video-2-light');
44
+ }
45
+ .foogallery-setting-video_overlay.fg-video-3 {
46
+ background-image: url('../img/icons.svg#video-3-light');
47
+ }
48
+ .foogallery-setting-video_overlay.fg-video-4 {
49
+ background-image: url('../img/icons.svg#video-4-light');
50
+ }
51
+ .foogallery-setting-caption_icon.fg-hover-cart {
52
+ background-image: url('../img/icons.svg#cart-light');
53
+ }
54
+
55
+ .foogallery_template_field_type-htmlicon.foogallery_template_field_id-loading_icon td label {
56
+ background-color: #eee;
57
+ }
58
+
59
+ .foogallery_template_field_type-htmlicon.foogallery_template_field_id-loading_icon td input:checked + label {
60
+ background-color: #eee;
61
+ }
62
+
63
+ .fg-item-inner {
64
+ margin: 0;
65
+ }
66
+
67
+ .foogallery-setting-panel_theme.fg-light {
68
+ background-color: #fff;
69
+ }
70
+ .foogallery-setting-panel_theme.fg-dark {
71
+ background-color: #292929;
72
+ }
73
+ .foogallery-setting-panel_theme.fg-blue {
74
+ background-color: #3079ed;
75
+ }
76
+ .foogallery-setting-panel_theme.fg-purple {
77
+ background-color: #6816c2;
78
+ }
79
+ .foogallery-setting-panel_theme.fg-green {
80
+ background-color: #027339;
81
+ }
82
+ .foogallery-setting-panel_theme.fg-red {
83
+ background-color: #c22b24;
84
+ }
85
+ .foogallery-setting-panel_theme.fg-orange {
86
+ background-color: #e57731;
87
  }
extensions/default-templates/shared/css/foogallery.css CHANGED
@@ -1,3479 +1,3642 @@
1
- .foogallery, .foogallery * {
2
- box-sizing: border-box;
3
- }
4
- .foogallery {
5
- display: block;
6
- z-index: 1;
7
- font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
8
- position: relative;
9
- line-height: 0;
10
- font-size: 0;
11
- width: 100%;
12
- max-width: 100%;
13
- }
14
- .foogallery .fg-item {
15
- display: inline-block;
16
- position: relative;
17
- background-color: transparent;
18
- z-index: 2;
19
- -webkit-user-select: none;
20
- -moz-user-select: none;
21
- -ms-user-select: none;
22
- user-select: none;
23
- }
24
- .foogallery .fg-item.fg-hidden {
25
- display: none!important;
26
- }
27
- .foogallery .fg-item-inner {
28
- display: block;
29
- position: relative;
30
- visibility: hidden;
31
- overflow: hidden;
32
- opacity: 0;
33
- z-index: 3;
34
- margin: 0;
35
- border: solid 0 transparent;
36
- }
37
-
38
- .foogallery .fg-item.fg-error:before {
39
- content: "";
40
- display: block;
41
- position: absolute;
42
- top: 50%;
43
- left: 50%;
44
- transform: translateX(-50%) translateY(-50%);
45
- width: 32px;
46
- height: 32px;
47
- background-image: url('../img/icons.svg#image');
48
- background-color: transparent;
49
- background-repeat: no-repeat;
50
- background-position: center center;
51
- background-size: 32px 32px;
52
- }
53
-
54
- .foogallery .fg-item.fg-loaded {
55
- z-index: 4;
56
- }
57
- .foogallery .fg-loaded .fg-item-inner {
58
- visibility: visible;
59
- opacity: 1;
60
- z-index: 5;
61
- }
62
- .foogallery .fg-error .fg-item-inner {
63
- pointer-events: none;
64
- cursor: default;
65
- }
66
- .foogallery .fg-thumb {
67
- display: block;
68
- position: relative;
69
- border: none;
70
- outline: 0;
71
- text-decoration: none;
72
- z-index: 4;
73
- box-shadow: none;
74
- }
75
- .foogallery .fg-thumb:hover,
76
- .foogallery .fg-thumb:focus {
77
- border: none;
78
- outline: 0;
79
- text-decoration: none;
80
- box-shadow: none;
81
- }
82
- .foogallery .fg-image-overlay {
83
- position: absolute;
84
- top: 0;
85
- right: 0;
86
- bottom: 0;
87
- left: 0;
88
- z-index: 8;
89
- visibility: hidden;
90
- opacity: 0;
91
- }
92
- .foogallery .fg-image-wrap {
93
- display: block;
94
- position: relative;
95
- }
96
- .foogallery .fg-image {
97
- display: block;
98
- position: relative;
99
- border: none;
100
- outline: 0;
101
- text-decoration: none;
102
- z-index: 5;
103
- max-width: 100%;
104
- height: auto;
105
- margin: 0;
106
- width: auto;
107
- }
108
- .foogallery picture.fg-image > img {
109
- display: block;
110
- position: relative;
111
- border: none;
112
- outline: 0;
113
- text-decoration: none;
114
- max-width: 100%;
115
- height: auto;
116
- margin: 0;
117
- width: auto;
118
- }
119
- .foogallery .fg-loaded .fg-thumb {
120
- z-index: 6;
121
- }
122
- .foogallery .fg-loaded .fg-image {
123
- z-index: 7;
124
- }
125
-
126
- /* Utility */
127
- .fg-sr-only {
128
- position: absolute;
129
- width: 1px;
130
- height: 1px;
131
- padding: 0;
132
- margin: -1px;
133
- overflow: hidden;
134
- clip: rect(0,0,0,0);
135
- border: 0;
136
- }
137
- /* Item Style */
138
- .foogallery.fg-light .fg-item-inner {
139
- background-color: #FFF;
140
- color: #333;
141
- border-color: #FFF;
142
- }
143
- .foogallery.fg-dark .fg-item-inner {
144
- background-color: #333;
145
- color: #FFF;
146
- border-color: #333;
147
- }
148
- /* Idle / Loading / Error Style */
149
- .foogallery.fg-light .fg-item.fg-idle,
150
- .foogallery.fg-light .fg-item.fg-loading,
151
- .foogallery.fg-light .fg-item.fg-error {
152
- background-color: #eee;
153
- box-shadow: inset 0 0 0 1px #ddd;
154
- }
155
- .foogallery.fg-dark .fg-item.fg-idle,
156
- .foogallery.fg-dark .fg-item.fg-loading,
157
- .foogallery.fg-dark .fg-item.fg-error {
158
- background-color: #444;
159
- box-shadow: inset 0 0 0 1px #333;
160
- }
161
- /* Caption & Overlay Colors */
162
- .foogallery .fg-caption {
163
- background-color: rgba(0,0,0,0.6);
164
- color: #fff;
165
- }
166
- .foogallery .fg-caption a {
167
- color: #fff;
168
- border-bottom: 1px solid #FFF;
169
- }
170
- .foogallery.fg-light-overlays .fg-caption {
171
- background-color: rgba(255,255,255,0.8);
172
- color: #333;
173
- }
174
- .foogallery.fg-light-overlays .fg-caption a {
175
- color: #333;
176
- border-bottom-color: #333;
177
- }
178
- .foogallery.fg-transparent-overlays .fg-caption {
179
- background-color: transparent;
180
- color: #fff;
181
- }
182
- .foogallery.fg-transparent-overlays .fg-caption a {
183
- color: #fff;
184
- border-bottom-color: #fff;
185
- }
186
-
187
- .foogallery .fg-image-overlay {
188
- background-color: rgba(0,0,0,0.6);
189
- color: #fff;
190
- }
191
- .foogallery.fg-light-overlays .fg-image-overlay {
192
- background-color: rgba(255,255,255,0.8);
193
- color: #333;
194
- }
195
- .foogallery.fg-transparent-overlays .fg-image-overlay {
196
- background-color: transparent;
197
- color: #fff;
198
- }
199
- /* Colors */
200
- .fg-exif-light .fg-item.fg-item-exif .fg-image-wrap:after {
201
- background-color: #FFF;
202
- color: #333;
203
- }
204
- .fg-exif-dark .fg-item.fg-item-exif .fg-image-wrap:after {
205
- background-color: #333;
206
- color: #FFF;
207
- }
208
-
209
- /* Rounded Corners */
210
- .fg-exif-rounded .fg-item.fg-item-exif .fg-image-wrap:after {
211
- border-radius: 3px;
212
- }
213
-
214
- /* Positions ~ Top, Right, Bottom & Left */
215
- .fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after,
216
- .fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after,
217
- .fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after,
218
- .fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after {
219
- display: inline-block;
220
- position: absolute;
221
- content: 'EXIF';
222
- font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
223
- font-size: 11px;
224
- line-height: 10px;
225
- padding: 3px 4px;
226
- z-index: 7;
227
- }
228
- .fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after {
229
- bottom: 5px;
230
- right: 5px;
231
- }
232
- .fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after {
233
- bottom: 5px;
234
- left: 5px;
235
- }
236
- .fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after {
237
- top: 5px;
238
- right: 5px;
239
- }
240
- .fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after {
241
- top: 5px;
242
- left: 5px;
243
- }
244
- /* Border Size */
245
- .foogallery.fg-border-thin .fg-item-inner {
246
- border-width: 4px;
247
- }
248
- .foogallery.fg-border-medium .fg-item-inner {
249
- border-width: 10px;
250
- }
251
- .foogallery.fg-border-thick .fg-item-inner {
252
- border-width: 16px;
253
- }
254
- /* Drop Shadows */
255
- .foogallery.fg-light.fg-shadow-outline .fg-item-inner {
256
- box-shadow: 0 0 0 1px #ddd;
257
- }
258
- .foogallery.fg-dark.fg-shadow-outline .fg-item-inner {
259
- box-shadow: 0 0 0 1px #222;
260
- }
261
- .foogallery.fg-light.fg-shadow-small .fg-item-inner,
262
- .foogallery.fg-dark.fg-shadow-small .fg-item-inner {
263
- box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.5);
264
- }
265
- .foogallery.fg-light.fg-shadow-medium .fg-item-inner,
266
- .foogallery.fg-dark.fg-shadow-medium .fg-item-inner {
267
- box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.5);
268
- }
269
- .foogallery.fg-light.fg-shadow-large .fg-item-inner,
270
- .foogallery.fg-dark.fg-shadow-large .fg-item-inner {
271
- box-shadow: 0 1px 16px 0 rgba(0, 0, 0, 0.5);
272
- }
273
- /* Inset Shadows */
274
- .foogallery.fg-shadow-inset-small .fg-thumb:after,
275
- .foogallery.fg-shadow-inset-medium .fg-thumb:after,
276
- .foogallery.fg-shadow-inset-large .fg-thumb:after {
277
- display: block;
278
- content: "";
279
- position: absolute;
280
- top: 0;
281
- left: 0;
282
- right: 0;
283
- bottom: 0;
284
- z-index: 7;
285
- }
286
- .foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after,
287
- .foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after {
288
- box-shadow: inset 0 1px 4px 0 rgba(0,0,0,0.3);
289
- }
290
- .foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after,
291
- .foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after {
292
- box-shadow: inset 0 1px 10px 0 rgba(0,0,0,0.3);
293
- }
294
- .foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after,
295
- .foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after {
296
- box-shadow: inset 0 1px 16px 0 rgba(0,0,0,0.3);
297
- }
298
-
299
- .foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after,
300
- .foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,
301
- .foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after {
302
- border-radius: 50%;
303
- }
304
- /* Rounded Corners */
305
- .foogallery.fg-round-small .fg-item,
306
- .foogallery.fg-round-small .fg-item-inner {
307
- border-radius: 5px;
308
- }
309
- .foogallery.fg-round-medium .fg-item,
310
- .foogallery.fg-round-medium .fg-item-inner {
311
- border-radius: 10px;
312
- }
313
- .foogallery.fg-round-large .fg-item,
314
- .foogallery.fg-round-large .fg-item-inner {
315
- border-radius: 15px;
316
- }
317
- .foogallery.fg-round-full .fg-item,
318
- .foogallery.fg-round-full .fg-item-inner {
319
- border-radius: 50%;
320
- }
321
- /* Loader Styles */
322
- .foogallery .fg-loader {
323
- position: absolute;
324
- top: 50%;
325
- left: 50%;
326
- margin-top: -0.5em;
327
- margin-left: -0.5em;
328
- width: 1em;
329
- height: 1em;
330
- font-size: 5px;
331
- visibility: hidden;
332
- opacity: 0;
333
- pointer-events: none;
334
- }
335
-
336
- .foogallery .fg-loading .fg-loader {
337
- visibility: visible;
338
- opacity: 1;
339
- }
340
- .fg-loading-default .fg-loader {
341
- border-radius: 50%;
342
- text-indent: -9999em;
343
- box-shadow: 0 -2.6em 0 0 rgba(130, 130, 130, 1),
344
- 1.8em -1.8em 0 0 rgba(130, 130, 130, 0.2),
345
- 2.5em 0 0 0 rgba(130, 130, 130, 0.2),
346
- 1.75em 1.75em 0 0 rgba(130, 130, 130, 0.2),
347
- 0 2.5em 0 0 rgba(130, 130, 130, 0.2),
348
- -1.8em 1.8em 0 0 rgba(130, 130, 130, 0.2),
349
- -2.6em 0 0 0 rgba(130, 130, 130, 0.5),
350
- -1.8em -1.8em 0 0 rgba(130, 130, 130, 0.7);
351
- -webkit-animation: loading-default 1.1s infinite paused steps(8, start);
352
- animation: loading-default 1.1s infinite paused steps(8, start);
353
- }
354
- .fg-loading-default .fg-loading .fg-loader {
355
- -webkit-animation-play-state: running;
356
- animation-play-state: running;
357
- }
358
-
359
- @-webkit-keyframes loading-default {
360
- 0% {
361
- transform: rotate(0deg);
362
- }
363
- 100% {
364
- transform: rotate(360deg);
365
- }
366
- }
367
-
368
- @keyframes loading-default {
369
- 0% {
370
- transform: rotate(0deg);
371
- }
372
- 100% {
373
- transform: rotate(360deg);
374
- }
375
- }
376
- .fg-loading-bars .fg-loader,
377
- .fg-loading-bars .fg-loader:before,
378
- .fg-loading-bars .fg-loader:after {
379
- background: rgba(130, 130, 130, 1);
380
- width: 1em;
381
- height: 4em;
382
- -webkit-animation: loading-bars 1s infinite paused ease-in-out;
383
- animation: loading-bars 1s infinite paused ease-in-out;
384
- }
385
- .fg-loading-bars .fg-loading .fg-loader,
386
- .fg-loading-bars .fg-loading .fg-loader:before,
387
- .fg-loading-bars .fg-loading .fg-loader:after {
388
- -webkit-animation-play-state: running;
389
- animation-play-state: running;
390
- }
391
- .fg-loading-bars .fg-loader {
392
- color: rgba(130, 130, 130, 1);
393
- text-indent: -9999em;
394
- font-size: 4px;
395
- margin-top: -2em;
396
- margin-left: -0.5em;
397
- -webkit-animation-delay: -0.16s;
398
- animation-delay: -0.16s;
399
- }
400
- .fg-loading-bars .fg-loader:before,
401
- .fg-loading-bars .fg-loader:after {
402
- position: absolute;
403
- top: 0;
404
- content: '';
405
- }
406
- .fg-loading-bars .fg-loader:before {
407
- left: -1.5em;
408
- -webkit-animation-delay: -0.32s;
409
- animation-delay: -0.32s;
410
- }
411
- .fg-loading-bars .fg-loader:after {
412
- left: 1.5em;
413
- }
414
- @-webkit-keyframes loading-bars {
415
- 0%,
416
- 80%,
417
- 100% {
418
- box-shadow: 0 0;
419
- height: 4em;
420
- }
421
- 40% {
422
- box-shadow: 0 -2em;
423
- height: 5em;
424
- }
425
- }
426
- @keyframes loading-bars {
427
- 0%,
428
- 80%,
429
- 100% {
430
- box-shadow: 0 0;
431
- height: 4em;
432
- }
433
- 40% {
434
- box-shadow: 0 -2em;
435
- height: 5em;
436
- }
437
- }
438
- .fg-loading-trail .fg-loader {
439
- color: #828282;
440
- margin-top: 0;
441
- margin-left: 0;
442
- font-size: 20px;
443
- text-indent: -9999em;
444
- overflow: hidden;
445
- border-radius: 50%;
446
- -webkit-animation: loading-trail-1 1.7s infinite paused ease, loading-trail-2 1.7s infinite paused ease;
447
- animation: loading-trail-1 1.7s infinite paused ease, loading-trail-2 1.7s infinite paused ease;
448
- }
449
- .fg-loading-trail .fg-loading .fg-loader {
450
- -webkit-animation-play-state: running;
451
- animation-play-state: running;
452
- }
453
-
454
- @-webkit-keyframes loading-trail-1 {
455
- 0% {
456
- box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
457
- }
458
- 5%,
459
- 95% {
460
- box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
461
- }
462
- 10%,
463
- 59% {
464
- box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em;
465
- }
466
- 20% {
467
- box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em;
468
- }
469
- 38% {
470
- box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em;
471
- }
472
- 100% {
473
- box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
474
- }
475
- }
476
- @keyframes loading-trail-1 {
477
- 0% {
478
- box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
479
- }
480
- 5%,
481
- 95% {
482
- box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
483
- }
484
- 10%,
485
- 59% {
486
- box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em;
487
- }
488
- 20% {
489
- box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em;
490
- }
491
- 38% {
492
- box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em;
493
- }
494
- 100% {
495
- box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
496
- }
497
- }
498
- @-webkit-keyframes loading-trail-2 {
499
- 0% {
500
- -webkit-transform: translateX(-50%) translateY(-50%) rotate(0deg);
501
- transform: translateX(-50%) translateY(-50%) rotate(0deg);
502
- }
503
- 100% {
504
- -webkit-transform: translateX(-50%) translateY(-50%) rotate(360deg);
505
- transform: translateX(-50%) translateY(-50%) rotate(360deg);
506
- }
507
- }
508
- @keyframes loading-trail-2 {
509
- 0% {
510
- -webkit-transform: translateX(-50%) translateY(-50%) rotate(0deg);
511
- transform: translateX(-50%) translateY(-50%) rotate(0deg);
512
- }
513
- 100% {
514
- -webkit-transform: translateX(-50%) translateY(-50%) rotate(360deg);
515
- transform: translateX(-50%) translateY(-50%) rotate(360deg);
516
- }
517
- }
518
- .fg-loading-pulse .fg-loader,
519
- .fg-loading-pulse .fg-loader:before,
520
- .fg-loading-pulse .fg-loader:after {
521
- border-radius: 50%;
522
- width: 2.5em;
523
- height: 2.5em;
524
- -webkit-animation: loading-pulse 1.8s infinite both paused ease-in-out;
525
- animation: loading-pulse 1.8s infinite both paused ease-in-out;
526
- }
527
- .fg-loading-pulse .fg-loading .fg-loader,
528
- .fg-loading-pulse .fg-loading .fg-loader:before,
529
- .fg-loading-pulse .fg-loading .fg-loader:after {
530
- -webkit-animation-play-state: running;
531
- animation-play-state: running;
532
- }
533
-
534
- .fg-loading-pulse .fg-loader {
535
- color: #828282;
536
- font-size: 4px;
537
- margin-top: -3.75em;
538
- margin-left: -1.25em;
539
- text-indent: -9999em;
540
- -webkit-animation-delay: -0.16s;
541
- animation-delay: -0.16s;
542
- }
543
- .fg-loading-pulse .fg-loader:before,
544
- .fg-loading-pulse .fg-loader:after {
545
- content: '';
546
- position: absolute;
547
- top: 0;
548
- }
549
- .fg-loading-pulse .fg-loader:before {
550
- left: -3.5em;
551
- -webkit-animation-delay: -0.32s;
552
- animation-delay: -0.32s;
553
- }
554
- .fg-loading-pulse .fg-loader:after {
555
- left: 3.5em;
556
- }
557
- @-webkit-keyframes loading-pulse {
558
- 0%,
559
- 80%,
560
- 100% {
561
- box-shadow: 0 2.5em 0 -1.3em;
562
- }
563
- 40% {
564
- box-shadow: 0 2.5em 0 0;
565
- }
566
- }
567
- @keyframes loading-pulse {
568
- 0%,
569
- 80%,
570
- 100% {
571
- box-shadow: 0 2.5em 0 -1.3em;
572
- }
573
- 40% {
574
- box-shadow: 0 2.5em 0 0;
575
- }
576
- }
577
- .fg-loading-dots .fg-loader {
578
- color: #828282;
579
- font-size: 5px;
580
- border-radius: 50%;
581
- text-indent: -9999em;
582
- -webkit-animation: loading-dots 1.3s infinite paused linear;
583
- animation: loading-dots 1.3s infinite paused linear;
584
- }
585
- .fg-loading-dots .fg-loading .fg-loader {
586
- -webkit-animation-play-state: running;
587
- animation-play-state: running;
588
- }
589
-
590
- @-webkit-keyframes loading-dots {
591
- 0%,
592
- 100% {
593
- box-shadow: 0 -3em 0 0.2em, 2em -2em 0 0em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 0;
594
- }
595
- 12.5% {
596
- box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
597
- }
598
- 25% {
599
- box-shadow: 0 -3em 0 -0.5em, 2em -2em 0 0, 3em 0 0 0.2em, 2em 2em 0 0, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
600
- }
601
- 37.5% {
602
- box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
603
- }
604
- 50% {
605
- box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
606
- }
607
- 62.5% {
608
- box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
609
- }
610
- 75% {
611
- box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
612
- }
613
- 87.5% {
614
- box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
615
- }
616
- }
617
- @keyframes loading-dots {
618
- 0%,
619
- 100% {
620
- box-shadow: 0 -3em 0 0.2em, 2em -2em 0 0em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 0;
621
- }
622
- 12.5% {
623
- box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
624
- }
625
- 25% {
626
- box-shadow: 0 -3em 0 -0.5em, 2em -2em 0 0, 3em 0 0 0.2em, 2em 2em 0 0, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
627
- }
628
- 37.5% {
629
- box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
630
- }
631
- 50% {
632
- box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
633
- }
634
- 62.5% {
635
- box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
636
- }
637
- 75% {
638
- box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
639
- }
640
- 87.5% {
641
- box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
642
- }
643
- }
644
- .fg-loading-partial .fg-loader,
645
- .fg-loading-partial .fg-loader:after {
646
- border-radius: 50%;
647
- width: 10em;
648
- height: 10em;
649
- }
650
- .fg-loading-partial .fg-loader {
651
- font-size: 4px;
652
- text-indent: -9999em;
653
- margin-top: 0;
654
- margin-left: 0;
655
- border-top: 1.1em solid rgba(130,130,130, 0.2);
656
- border-right: 1.1em solid rgba(130,130,130, 0.2);
657
- border-bottom: 1.1em solid rgba(130,130,130, 0.2);
658
- border-left: 1.1em solid #828282;
659
- -webkit-animation: loading-partial 1.1s infinite paused linear;
660
- animation: loading-partial 1.1s infinite paused linear;
661
- }
662
- .fg-loading-partial .fg-loading .fg-loader {
663
- -webkit-animation-play-state: running;
664
- animation-play-state: running;
665
- }
666
-
667
- @-webkit-keyframes loading-partial {
668
- 0% {
669
- -webkit-transform: translateX(-50%) translateY(-50%) rotate(0deg);
670
- transform: translateX(-50%) translateY(-50%) rotate(0deg);
671
- }
672
- 100% {
673
- -webkit-transform: translateX(-50%) translateY(-50%) rotate(360deg);
674
- transform: translateX(-50%) translateY(-50%) rotate(360deg);
675
- }
676
- }
677
- @keyframes loading-partial {
678
- 0% {
679
- -webkit-transform: translateX(-50%) translateY(-50%) rotate(0deg);
680
- transform: translateX(-50%) translateY(-50%) rotate(0deg);
681
- }
682
- 100% {
683
- -webkit-transform: translateX(-50%) translateY(-50%) rotate(360deg);
684
- transform: translateX(-50%) translateY(-50%) rotate(360deg);
685
- }
686
- }
687
- /* Loaded Effects */
688
- .foogallery.fg-loaded-fade-in .fg-item.fg-loaded,
689
- .foogallery.fg-loaded-slide-up .fg-item.fg-loaded,
690
- .foogallery.fg-loaded-slide-down .fg-item.fg-loaded,
691
- .foogallery.fg-loaded-slide-left .fg-item.fg-loaded,
692
- .foogallery.fg-loaded-slide-right .fg-item.fg-loaded,
693
- .foogallery.fg-loaded-scale-up .fg-item.fg-loaded,
694
- .foogallery.fg-loaded-swing-down .fg-item.fg-loaded,
695
- .foogallery.fg-loaded-drop .fg-item.fg-loaded,
696
- .foogallery.fg-loaded-fly .fg-item.fg-loaded,
697
- .foogallery.fg-loaded-flip .fg-item.fg-loaded {
698
- transition-timing-function: ease;
699
- transition-duration: 650ms;
700
- transition-property: background-color, transform;
701
- }
702
- .foogallery.fg-loaded-fade-in .fg-loaded .fg-item-inner,
703
- .foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner,
704
- .foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner,
705
- .foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner,
706
- .foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner,
707
- .foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner,
708
- .foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner,
709
- .foogallery.fg-loaded-drop .fg-loaded .fg-item-inner,
710
- .foogallery.fg-loaded-fly .fg-loaded .fg-item-inner,
711
- .foogallery.fg-loaded-flip .fg-loaded .fg-item-inner {
712
- transition-timing-function: ease;
713
- transition-duration: 650ms;
714
- }
715
- /* Only apply the perspective once loaded otherwise transitions could take place behind other items*/
716
- .foogallery.fg-loaded-swing-down .fg-item.fg-loaded,
717
- .foogallery.fg-loaded-drop .fg-item.fg-loaded,
718
- .foogallery.fg-loaded-fly .fg-item.fg-loaded,
719
- .foogallery.fg-loaded-flip .fg-item.fg-loaded {
720
- perspective: 1300px;
721
- }
722
- /* Drop */
723
- .foogallery.fg-loaded-drop .fg-item-inner {
724
- transition-property: visibility, opacity, transform;
725
- transform-style: preserve-3d;
726
- transform: translateZ(400px) translateY(100%) rotateX(-90deg);
727
- }
728
- .foogallery.fg-loaded-drop .fg-loaded .fg-item-inner {
729
- transform: translateZ(0px) translateY(0px) rotateX(0deg);
730
- }
731
- /* Fade In */
732
- .foogallery.fg-loaded-fade-in .fg-item-inner {
733
- transition-property: visibility, opacity;
734
- }
735
- /* Flip */
736
- .foogallery.fg-loaded-flip .fg-item-inner {
737
- transition-property: visibility, opacity, transform;
738
- backface-visibility: hidden;
739
- transform-style: preserve-3d;
740
- transform: rotateY(-180deg);
741
- }
742
- .foogallery.fg-loaded-flip .fg-loaded .fg-item-inner {
743
- transform: rotateY(0deg);
744
- }
745
- /* Fly */
746
- .foogallery.fg-loaded-fly .fg-item-inner {
747
- transition-property: visibility, opacity, transform;
748
- transform-style: preserve-3d;
749
- transform-origin: 50% 50% -300px;
750
- transform: rotateX(-180deg);
751
- }
752
- .foogallery.fg-loaded-fly .fg-loaded .fg-item-inner {
753
- transform: rotateX(0deg);
754
- }
755
- /* Scale Up */
756
- .foogallery.fg-loaded-scale-up .fg-item-inner {
757
- transition-property: visibility, opacity, transform;
758
- transform: scale(0.6);
759
- }
760
- .foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner {
761
- transform: scale(1);
762
- }
763
- /* Slide Up */
764
- .foogallery.fg-loaded-slide-up .fg-item-inner {
765
- transition-property: visibility, opacity, transform;
766
- transform: translateY(50%);
767
- }
768
- .foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner {
769
- transform: translateY(0);
770
- }
771
- /* Slide Down */
772
- .foogallery.fg-loaded-slide-down .fg-item-inner {
773
- transition-property: visibility, opacity, transform;
774
- transform: translateY(-50%);
775
- }
776
- .foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner {
777
- transform: translateY(0);
778
- }
779
- /* Slide Left */
780
- .foogallery.fg-loaded-slide-left .fg-item-inner {
781
- transition-property: visibility, opacity, transform;
782
- transform: translateX(50%);
783
- }
784
- .foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner {
785
- transform: translateX(0);
786
- }
787
- /* Slide Right */
788
- .foogallery.fg-loaded-slide-right .fg-item-inner {
789
- transition-property: visibility, opacity, transform;
790
- transform: translateX(-50%);
791
- }
792
- .foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner {
793
- transform: translateX(0);
794
- }
795
- /* Swing Down */
796
- .foogallery.fg-loaded-swing-down .fg-item-inner {
797
- transition-property: visibility, opacity, transform;
798
- transform-style: preserve-3d;
799
- transform-origin: 0 0;
800
- transform: rotateX(-80deg);
801
- }
802
- .foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner {
803
- transform: rotateX(0deg);
804
- }
805
- /* Caption Styles */
806
- .foogallery .fg-caption {
807
- visibility: hidden;
808
- opacity: 0;
809
- position: absolute;
810
- z-index: 8;
811
- width: 100%;
812
- max-height: 100%;
813
- overflow: hidden;
814
- font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
815
- font-size: 13px;
816
- font-weight: 400;
817
- line-height: 1.3;
818
- border: none;
819
- text-align: center;
820
- cursor: pointer;
821
- margin: 0;
822
- }
823
- .foogallery .fg-caption a {
824
- text-decoration: none;
825
- }
826
-
827
- .foogallery .fg-caption a:hover {
828
- border-bottom: none;
829
- }
830
-
831
- .foogallery .fg-caption-title {
832
- box-sizing: content-box;
833
- white-space: nowrap;
834
- overflow: hidden;
835
- text-overflow: ellipsis;
836
- font-size: 16px;
837
- font-weight: 400;
838
- padding: 0;
839
- margin: 0.4em;
840
- height: 1.3em;
841
- min-height: 1.3em;
842
- line-height: 1.3em;
843
- }
844
- .foogallery .fg-caption-desc {
845
- padding: 0;
846
- margin: 0.4em;
847
- overflow: hidden;
848
- height: 100%;
849
- max-height: 100%;
850
- }
851
- .foogallery .fg-caption-title+.fg-caption-desc {
852
- margin-top: 0;
853
- }
854
-
855
- .foogallery .fg-caption-buttons {
856
- display: flex;
857
- position: relative;
858
- flex-direction: row;
859
- flex-wrap: wrap;
860
- align-items: center;
861
- justify-content: center;
862
- width: 100%;
863
- padding: 5px;
864
- margin: 0;
865
- }
866
-
867
- .foogallery .fg-caption-buttons > a {
868
- display: inline-block;
869
- position: relative;
870
- padding: 0.4em 0.8em;
871
- margin: 1px;
872
- max-width: 100%;
873
- font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
874
- font-size: 12px;
875
- font-weight: 400;
876
- line-height: 1.42857143;
877
- text-align: center;
878
- white-space: nowrap;
879
- vertical-align: middle;
880
- cursor: pointer;
881
- user-select: none;
882
- background-image: none;
883
- text-decoration: none!important;
884
- border: 1px solid transparent;
885
- border-radius: 4px;
886
- box-shadow: none;
887
- outline: none;
888
- opacity: 1;
889
- transition-timing-function: ease-out;
890
- transition-duration: 0.3s;
891
- transition-property: color, opacity, border-color, background-color;
892
- }
893
-
894
- @media only screen and (max-width: 600px) {
895
- .foogallery .fg-caption-buttons {
896
- align-items: stretch;
897
- }
898
- .foogallery .fg-caption-buttons > a {
899
- flex: 1;
900
- }
901
- }
902
-
903
- /* Light */
904
- .foogallery .fg-caption .fg-caption-buttons > a {
905
- color: #333;
906
- background-color: #fff;
907
- border-color: #ccc;
908
- }
909
- .foogallery .fg-caption .fg-caption-buttons > a:not(.fg-disabled):hover {
910
- color: #333;
911
- background-color: #e6e6e6;
912
- border-color: #adadad;
913
- border-bottom: solid 1px;
914
- }
915
- .foogallery .fg-caption .fg-caption-buttons > a.fg-disabled {
916
- color: #9d9d9d;
917
- }
918
- .foogallery .fg-caption .fg-caption-buttons > a.fg-disabled:hover {
919
- border-bottom: solid 1px;
920
- }
921
-
922
- /* Dark */
923
- .foogallery.fg-light-overlays .fg-caption .fg-caption-buttons > a {
924
- color: #FFF;
925
- background-color: #444;
926
- border-color: #333;
927
- }
928
- .foogallery.fg-light-overlays .fg-caption .fg-caption-buttons > a:not(.fg-disabled):hover {
929
- color: #9d9d9d;
930
- background-color: #333;
931
- border-color: #222;
932
- }
933
- .foogallery.fg-light-overlays .fg-caption .fg-caption-buttons > a.fg-disabled {
934
- color: #9d9d9d;
935
- }
936
- .foogallery.fg-light-overlays .fg-caption .fg-caption-buttons > a.fg-disabled:hover {
937
- border-bottom: solid 1px;
938
- }
939
-
940
- /* Always */
941
- .foogallery.fg-caption-always .fg-item .fg-caption .fg-caption-inner:before {
942
- display: none;
943
- }
944
- .foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption {
945
- left: 0;
946
- bottom: 0;
947
- transition-timing-function: ease;
948
- transition-duration: 300ms;
949
- transition-property: visibility, opacity;
950
- visibility: visible;
951
- opacity: 1;
952
- }
953
- .foogallery.fg-caption-always .fg-caption {
954
- text-align: left;
955
- }
956
-
957
- /* On Hover */
958
- .foogallery.fg-caption-hover .fg-caption .fg-caption-inner {
959
- display: flex;
960
- flex-direction: column;
961
- align-items: center;
962
- justify-content: center;
963
- width: 100%;
964
- max-height: 100%;
965
- position: absolute;
966
- top: 50%;
967
- left: 0;
968
- transform: translateY(-50%);
969
- padding: 0.4em;
970
- }
971
- .foogallery.fg-caption-hover .fg-item.fg-loaded .fg-image-overlay {
972
- display: none;
973
- }
974
-
975
- /* Alignment */
976
- .foogallery.fg-c-l .fg-caption,
977
- .foogallery.fg-caption-always.fg-c-l .fg-caption {
978
- text-align: left;
979
- }
980
- .foogallery.fg-c-c .fg-caption,
981
- .foogallery.fg-caption-always.fg-c-c .fg-caption {
982
- text-align: center;
983
- }
984
- .foogallery.fg-c-r .fg-caption,
985
- .foogallery.fg-caption-always.fg-c-r .fg-caption {
986
- text-align: right;
987
- }
988
- .foogallery.fg-c-j .fg-caption,
989
- .foogallery.fg-caption-always.fg-c-j .fg-caption {
990
- text-align: justify;
991
- }
992
- /* Icon & Overlay */
993
- .foogallery .fg-image-overlay:before {
994
- content: "";
995
- display: block;
996
- position: absolute;
997
- top: 50%;
998
- left: 50%;
999
- transform: translateX(-50%) translateY(-50%);
1000
- width: 32px;
1001
- height: 32px;
1002
- background-size: 32px 32px;
1003
- background-position: center center;
1004
- background-repeat: no-repeat;
1005
- min-width: 32px;
1006
- min-height: 32px;
1007
- }
1008
- .foogallery .fg-caption-inner:before {
1009
- content: "";
1010
- display: none;
1011
- position: relative;
1012
- width: 32px;
1013
- height: 32px;
1014
- margin: 0.4em;
1015
- background-size: 32px 32px;
1016
- vertical-align: middle;
1017
- background-position: center center;
1018
- background-repeat: no-repeat;
1019
- min-width: 32px;
1020
- min-height: 32px;
1021
- }
1022
- .foogallery.fg-hover-zoom:not(.fg-preset) .fg-caption-inner:before,
1023
- .foogallery.fg-hover-zoom2:not(.fg-preset) .fg-caption-inner:before,
1024
- .foogallery.fg-hover-zoom3:not(.fg-preset) .fg-caption-inner:before,
1025
- .foogallery.fg-hover-plus:not(.fg-preset) .fg-caption-inner:before,
1026
- .foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-caption-inner:before,
1027
- .foogallery.fg-hover-eye:not(.fg-preset) .fg-caption-inner:before,
1028
- .foogallery.fg-hover-external:not(.fg-preset) .fg-caption-inner:before,
1029
- .foogallery.fg-hover-tint:not(.fg-preset) .fg-caption-inner:before,
1030
- .foogallery.fg-hover-cart:not(.fg-preset) .fg-caption-inner:before,
1031
- .foogallery.fg-video-default:not(.fg-preset) .fg-caption-inner:before,
1032
- .foogallery.fg-video-1:not(.fg-preset) .fg-caption-inner:before,
1033
- .foogallery.fg-video-2:not(.fg-preset) .fg-caption-inner:before,
1034
- .foogallery.fg-video-3:not(.fg-preset) .fg-caption-inner:before,
1035
- .foogallery.fg-video-4:not(.fg-preset) .fg-caption-inner:before {
1036
- display: block;
1037
- }
1038
-
1039
- .foogallery.fg-hover-zoom:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1040
- .foogallery.fg-hover-zoom2:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1041
- .foogallery.fg-hover-zoom3:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1042
- .foogallery.fg-hover-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1043
- .foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1044
- .foogallery.fg-hover-eye:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1045
- .foogallery.fg-hover-external:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1046
- .foogallery.fg-hover-tint:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1047
- .foogallery.fg-hover-cart:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1048
- .foogallery.fg-video-default:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,
1049
- .foogallery.fg-video-1:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,
1050
- .foogallery.fg-video-2:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,
1051
- .foogallery.fg-video-3:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,
1052
- .foogallery.fg-video-4:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay {
1053
- visibility: visible;
1054
- opacity: 1;
1055
- }
1056
- .foogallery.fg-video-sticky .fg-type-video.fg-loaded .fg-item-inner .fg-image-overlay {
1057
- background-color: transparent;
1058
- visibility: visible;
1059
- opacity: 1;
1060
- display: block;
1061
- }
1062
- .foogallery.fg-video-sticky .fg-type-video .fg-caption-inner:before {
1063
- display: none;
1064
- }
1065
-
1066
- .foogallery.fg-hover-zoom .fg-image-overlay:before,
1067
- .foogallery.fg-hover-zoom .fg-caption-inner:before {
1068
- background-image: url('../img/icons.svg#zoom-light');
1069
- }
1070
- .foogallery.fg-light-overlays.fg-hover-zoom .fg-image-overlay:before,
1071
- .foogallery.fg-light-overlays.fg-hover-zoom .fg-caption-inner:before {
1072
- background-image: url('../img/icons.svg#zoom-dark');
1073
- }
1074
-
1075
- .foogallery.fg-hover-zoom2 .fg-image-overlay:before,
1076
- .foogallery.fg-hover-zoom2 .fg-caption-inner:before {
1077
- background-image: url('../img/icons.svg#zoom2-light');
1078
- }
1079
- .foogallery.fg-light-overlays.fg-hover-zoom2 .fg-image-overlay:before,
1080
- .foogallery.fg-light-overlays.fg-hover-zoom2 .fg-caption-inner:before {
1081
- background-image: url('../img/icons.svg#zoom2-dark');
1082
- }
1083
-
1084
- .foogallery.fg-hover-zoom3 .fg-image-overlay:before,
1085
- .foogallery.fg-hover-zoom3 .fg-caption-inner:before {
1086
- background-image: url('../img/icons.svg#zoom3-light');
1087
- }
1088
- .foogallery.fg-light-overlays.fg-hover-zoom3 .fg-image-overlay:before,
1089
- .foogallery.fg-light-overlays.fg-hover-zoom3 .fg-caption-inner:before {
1090
- background-image: url('../img/icons.svg#zoom3-dark');
1091
- }
1092
-
1093
- .foogallery.fg-hover-plus .fg-image-overlay:before,
1094
- .foogallery.fg-hover-plus .fg-caption-inner:before {
1095
- background-image: url('../img/icons.svg#plus-light');
1096
- }
1097
- .foogallery.fg-light-overlays.fg-hover-plus .fg-image-overlay:before,
1098
- .foogallery.fg-light-overlays.fg-hover-plus .fg-caption-inner:before {
1099
- background-image: url('../img/icons.svg#plus-dark');
1100
- }
1101
-
1102
- .foogallery.fg-hover-circle-plus .fg-image-overlay:before,
1103
- .foogallery.fg-hover-circle-plus .fg-caption-inner:before {
1104
- background-image: url('../img/icons.svg#circle-plus-light');
1105
- }
1106
- .foogallery.fg-light-overlays.fg-hover-circle-plus .fg-image-overlay:before,
1107
- .foogallery.fg-light-overlays.fg-hover-circle-plus .fg-caption-inner:before {
1108
- background-image: url('../img/icons.svg#circle-plus-dark');
1109
- }
1110
-
1111
- .foogallery.fg-hover-eye .fg-image-overlay:before,
1112
- .foogallery.fg-hover-eye .fg-caption-inner:before {
1113
- background-image: url('../img/icons.svg#eye-light');
1114
- }
1115
- .foogallery.fg-light-overlays.fg-hover-eye .fg-image-overlay:before,
1116
- .foogallery.fg-light-overlays.fg-hover-eye .fg-caption-inner:before {
1117
- background-image: url('../img/icons.svg#eye-dark');
1118
- }
1119
-
1120
- .foogallery.fg-hover-external .fg-image-overlay:before,
1121
- .foogallery.fg-hover-external .fg-caption-inner:before {
1122
- background-image: url('../img/icons.svg#external-light');
1123
- }
1124
- .foogallery.fg-light-overlays.fg-hover-external .fg-image-overlay:before,
1125
- .foogallery.fg-light-overlays.fg-hover-external .fg-caption-inner:before {
1126
- background-image: url('../img/icons.svg#external-dark');
1127
- }
1128
-
1129
- .foogallery.fg-hover-cart .fg-image-overlay:before,
1130
- .foogallery.fg-hover-cart .fg-caption-inner:before {
1131
- background-image: url('../img/icons.svg#cart-light');
1132
- }
1133
- .foogallery.fg-light-overlays.fg-hover-cart .fg-image-overlay:before,
1134
- .foogallery.fg-light-overlays.fg-hover-cart .fg-caption-inner:before {
1135
- background-image: url('../img/icons.svg#cart-dark');
1136
- }
1137
-
1138
- .foogallery.fg-video-default .fg-type-video .fg-image-overlay:before,
1139
- .foogallery.fg-video-default .fg-type-video .fg-caption-inner:before {
1140
- background-image: url('../img/icons.svg#video-default-light');
1141
- }
1142
- .foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-image-overlay:before,
1143
- .foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-caption-inner:before {
1144
- background-image: url('../img/icons.svg#video-default-dark');
1145
- }
1146
-
1147
- .foogallery.fg-video-1 .fg-type-video .fg-image-overlay:before,
1148
- .foogallery.fg-video-1 .fg-type-video .fg-caption-inner:before {
1149
- background-image: url('../img/icons.svg#video-1-light');
1150
- }
1151
- .foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-image-overlay:before,
1152
- .foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-caption-inner:before {
1153
- background-image: url('../img/icons.svg#video-1-dark');
1154
- }
1155
-
1156
- .foogallery.fg-video-2 .fg-type-video .fg-image-overlay:before,
1157
- .foogallery.fg-video-2 .fg-type-video .fg-caption-inner:before {
1158
- background-image: url('../img/icons.svg#video-2-light');
1159
- }
1160
- .foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-image-overlay:before,
1161
- .foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-caption-inner:before {
1162
- background-image: url('../img/icons.svg#video-2-dark');
1163
- }
1164
-
1165
- .foogallery.fg-video-3 .fg-type-video .fg-image-overlay:before,
1166
- .foogallery.fg-video-3 .fg-type-video .fg-caption-inner:before {
1167
- background-image: url('../img/icons.svg#video-3-light');
1168
- }
1169
- .foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-image-overlay:before,
1170
- .foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-caption-inner:before {
1171
- background-image: url('../img/icons.svg#video-3-dark');
1172
- }
1173
-
1174
- .foogallery.fg-video-4 .fg-type-video .fg-image-overlay:before,
1175
- .foogallery.fg-video-4 .fg-type-video .fg-caption-inner:before {
1176
- background-image: url('../img/icons.svg#video-4-light');
1177
- }
1178
- .foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-image-overlay:before,
1179
- .foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-caption-inner:before {
1180
- background-image: url('../img/icons.svg#video-4-dark');
1181
- }
1182
- /* Transitions */
1183
- .foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,
1184
- .foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,
1185
- .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,
1186
- .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,
1187
- .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,
1188
- .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,
1189
- .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,
1190
- .foogallery.fg-caption-hover.fg-hover-colorize .fg-loaded .fg-caption,
1191
- .foogallery.fg-caption-hover.fg-hover-grayscale .fg-loaded .fg-caption,
1192
- .foogallery.fg-caption-hover.fg-hover-scale .fg-loaded .fg-caption,
1193
- .foogallery.fg-hover-instant .fg-loaded .fg-image-overlay,
1194
- .foogallery.fg-hover-fade .fg-loaded .fg-image-overlay,
1195
- .foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,
1196
- .foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,
1197
- .foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,
1198
- .foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,
1199
- .foogallery.fg-hover-push .fg-loaded .fg-thumb,
1200
- .foogallery.fg-hover-colorize .fg-loaded .fg-image-overlay,
1201
- .foogallery.fg-hover-grayscale .fg-loaded .fg-image-overlay,
1202
- .foogallery.fg-hover-scale .fg-item.fg-loaded,
1203
- .foogallery.fg-hover-scale .fg-loaded .fg-image-overlay,
1204
- .foogallery.fg-hover-zoomed .fg-loaded .fg-image,
1205
- .foogallery.fg-hover-colorize .fg-loaded .fg-image,
1206
- .foogallery.fg-hover-grayscale .fg-loaded .fg-image {
1207
- transition-timing-function: ease;
1208
- transition-duration: 300ms;
1209
- backface-visibility: hidden;
1210
- }
1211
- /* Colorize */
1212
- .foogallery.fg-hover-colorize .fg-image {
1213
- filter: grayscale(100%);
1214
- transition-property: filter;
1215
- }
1216
- .foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image,
1217
- .foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image {
1218
- filter: grayscale(0%);
1219
- }
1220
- .foogallery.fg-hover-colorize .fg-image-overlay,
1221
- .foogallery.fg-caption-hover.fg-hover-colorize .fg-caption {
1222
- display: block;
1223
- left: 0;
1224
- top: 0;
1225
- bottom: 0;
1226
- transition-property: visibility, opacity, background-color;
1227
- }
1228
- .foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image-overlay,
1229
- .foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,
1230
- .foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image-overlay,
1231
- .foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:focus-within .fg-caption {
1232
- visibility: visible;
1233
- opacity: 1;
1234
- }
1235
- /* Fade */
1236
- .foogallery.fg-hover-fade .fg-loaded .fg-image-overlay,
1237
- .foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption {
1238
- display: block;
1239
- left: 0;
1240
- top: 0;
1241
- bottom: 0;
1242
- transition-property: visibility, opacity, background-color;
1243
- }
1244
- .foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1245
- .foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,
1246
- .foogallery.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1247
- .foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-caption {
1248
- visibility: visible;
1249
- opacity: 1;
1250
- }
1251
- /* Grayscale */
1252
- .foogallery.fg-hover-grayscale .fg-image {
1253
- filter: grayscale(0%);
1254
- transition-property: filter;
1255
- }
1256
- .foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image,
1257
- .foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image {
1258
- filter: grayscale(100%);
1259
- }
1260
- .foogallery.fg-hover-grayscale .fg-image-overlay,
1261
- .foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption {
1262
- display: block;
1263
- left: 0;
1264
- top: 0;
1265
- bottom: 0;
1266
- transition-property: visibility, opacity, background-color;
1267
- }
1268
- .foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image-overlay,
1269
- .foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,
1270
- .foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image-overlay,
1271
- .foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:focus-within .fg-caption {
1272
- visibility: visible;
1273
- opacity: 1;
1274
- }
1275
- /* Instant */
1276
- .foogallery.fg-hover-instant .fg-loaded .fg-image-overlay,
1277
- .foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption {
1278
- display: block;
1279
- left: 0;
1280
- top: 0;
1281
- bottom: 0;
1282
- transition-property: none;
1283
- }
1284
- .foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1285
- .foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,
1286
- .foogallery.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1287
- .foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-caption {
1288
- visibility: visible;
1289
- opacity: 1;
1290
- }
1291
- /* Push */
1292
- .foogallery.fg-hover-push .fg-loaded .fg-image-overlay,
1293
- .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption {
1294
- display: block;
1295
- left: 0;
1296
- top: 0;
1297
- bottom: 0;
1298
- transform: translateX(100%);
1299
- visibility: visible;
1300
- opacity: 1;
1301
- }
1302
- .foogallery.fg-hover-push .fg-loaded .fg-thumb,
1303
- .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption {
1304
- transition-property: transform;
1305
- }
1306
- .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption,
1307
- .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:focus-within .fg-caption {
1308
- transform: translateY(0);
1309
- }
1310
- .foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,
1311
- .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,
1312
- .foogallery.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,
1313
- .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus {
1314
- transform: translateX(-100%);
1315
- }
1316
- /* Scale */
1317
- .foogallery.fg-hover-scale .fg-item {
1318
- transition-property: transform;
1319
- z-index: 4;
1320
- }
1321
-
1322
- .foogallery.fg-hover-scale .fg-item:hover,
1323
- .foogallery.fg-hover-scale .fg-item:focus-within {
1324
- transform: scale(1.048);
1325
- z-index: 10;
1326
- }
1327
- .foogallery.fg-hover-scale .fg-image-overlay,
1328
- .foogallery.fg-caption-hover.fg-hover-scale .fg-caption {
1329
- display: block;
1330
- left: 0;
1331
- top: 0;
1332
- bottom: 0;
1333
- transition-property: visibility, opacity, background-color;
1334
- }
1335
- .foogallery.fg-hover-scale .fg-item-inner:hover .fg-image-overlay,
1336
- .foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,
1337
- .foogallery.fg-hover-scale .fg-item-inner:focus-within .fg-image-overlay,
1338
- .foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:focus-within .fg-caption {
1339
- visibility: visible;
1340
- opacity: 1;
1341
- }
1342
- /* Zoomed */
1343
- .foogallery.fg-hover-zoomed .fg-image {
1344
- transition-property: transform;
1345
- z-index: 4;
1346
- }
1347
- .foogallery.fg-hover-zoomed .fg-item:hover .fg-image,
1348
- .foogallery.fg-hover-zoomed .fg-item:focus-within .fg-image {
1349
- transform: scale(1.15);
1350
- }
1351
- .foogallery.fg-hover-zoomed .fg-image-wrap {
1352
- overflow: hidden;
1353
- }
1354
-
1355
- .foogallery.fg-hover-zoomed .fg-image-overlay,
1356
- .foogallery.fg-caption-hover.fg-hover-zoomed .fg-caption {
1357
- display: block;
1358
- left: 0;
1359
- top: 0;
1360
- bottom: 0;
1361
- transition-property: visibility, opacity, background-color;
1362
- }
1363
- .foogallery.fg-hover-zoomed .fg-item-inner:hover .fg-image-overlay,
1364
- .foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:hover .fg-caption,
1365
- .foogallery.fg-hover-zoomed .fg-item-inner:focus-within .fg-image-overlay,
1366
- .foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:focus-within .fg-caption {
1367
- visibility: visible;
1368
- opacity: 1;
1369
- }
1370
- /* Slide */
1371
- .foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,
1372
- .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,
1373
- .foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,
1374
- .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,
1375
- .foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,
1376
- .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,
1377
- .foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,
1378
- .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption {
1379
- display: block;
1380
- left: 0;
1381
- top: 0;
1382
- bottom: 0;
1383
- transition-property: transform, background-color, opacity, visibility;
1384
- visibility: visible;
1385
- opacity: 1;
1386
- }
1387
- .foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1388
- .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-caption,
1389
- .foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1390
- .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,
1391
- .foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1392
- .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,
1393
- .foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1394
- .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-caption,
1395
- .foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1396
- .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-caption,
1397
- .foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1398
- .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-caption,
1399
- .foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1400
- .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-caption,
1401
- .foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1402
- .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-caption {
1403
- transform: translateY(0) translateX(0);
1404
- }
1405
-
1406
-
1407
- /* Slide Up */
1408
- .foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,
1409
- .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption {
1410
- transform: translateY(100%);
1411
- }
1412
-
1413
- /* Slide Down */
1414
- .foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,
1415
- .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption {
1416
- transform: translateY(-100%);
1417
- }
1418
-
1419
- /* Slide Left */
1420
- .foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,
1421
- .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption {
1422
- transform: translateX(100%);
1423
- }
1424
-
1425
- /* Slide Right */
1426
- .foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,
1427
- .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption {
1428
- transform: translateX(-100%);
1429
- }
1430
- .fg-paging-container, .fg-paging-container *, .fg-paging-container *:before, .fg-paging-container *:after {
1431
- box-sizing: border-box;
1432
- }
1433
- .fg-paging-container {
1434
- display: block;
1435
- padding: 15px;
1436
- margin-top: 0!important;
1437
- margin-bottom: 0!important;
1438
- margin-left: auto;
1439
- margin-right: auto;
1440
- text-align: center;
1441
- font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
1442
- -webkit-user-select: none;
1443
- -moz-user-select: none;
1444
- -ms-user-select: none;
1445
- user-select: none;
1446
- }
1447
- .fg-ph-dots:after {
1448
- display: block;
1449
- content: '';
1450
- width: 0;
1451
- height: 22px;
1452
- }
1453
-
1454
- .fg-paging-container .fg-dots,
1455
- .fg-paging-container .fg-dot-item {
1456
- display: inline-block;
1457
- margin: 0;
1458
- padding: 0;
1459
- outline: none;
1460
- list-style: none;
1461
- }
1462
- .fg-paging-container .fg-dot-item .fg-dot-link {
1463
- display: inline-block;
1464
- margin: 3px;
1465
- font-weight: 400;
1466
- line-height: 1.42857143;
1467
- text-align: center;
1468
- white-space: nowrap;
1469
- vertical-align: middle;
1470
- cursor: pointer;
1471
- user-select: none;
1472
- background-image: none;
1473
- text-decoration: none;
1474
- border: 1px solid transparent;
1475
- position: relative;
1476
- border-radius: 50%;
1477
- padding: 0;
1478
- font-size: 0;
1479
- outline: none;
1480
- color: transparent;
1481
- box-shadow: none;
1482
- }
1483
- .fg-paging-container .fg-dot-item .fg-dot-link:before {
1484
- content: "";
1485
- background-color: transparent;
1486
- border: 1px solid transparent;
1487
- display: block;
1488
- border-radius: 50%;
1489
- width: 9px;
1490
- height: 9px;
1491
- padding: 0;
1492
- margin: 2px;
1493
- }
1494
- .fg-paging-container .fg-dot-item .fg-dot-link:active,
1495
- .fg-paging-container .fg-dot-item .fg-dot-link:hover,
1496
- .fg-paging-container .fg-dot-item .fg-dot-link:focus {
1497
- text-decoration: none;
1498
- box-shadow: none;
1499
- outline: none;
1500
- }
1501
- .fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,
1502
- .fg-paging-container .fg-dot-item.fg-selected .fg-dot-link {
1503
- cursor: not-allowed;
1504
- pointer-events: none;
1505
- }
1506
- .fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link {
1507
- cursor: not-allowed;
1508
- pointer-events: none;
1509
- outline: none;
1510
- }
1511
-
1512
- /* Light - Dots */
1513
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link,
1514
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before {
1515
- transition-timing-function: ease-out;
1516
- transition-duration: 0.3s;
1517
- transition-property: color, border-color, background-color;
1518
- }
1519
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link {
1520
- background-color: #eee;
1521
- border-color: #9d9d9d;
1522
- }
1523
- .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link {
1524
- border-color: #888;
1525
- }
1526
- .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before,
1527
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,
1528
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before {
1529
- background-color: #666;
1530
- border-color: #888;
1531
- }
1532
- .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,
1533
- .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover,
1534
- .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus {
1535
- background-color: #eee;
1536
- border-color: #9d9d9d;
1537
- opacity: 0.5;
1538
- }
1539
-
1540
- /* Dark - Dots */
1541
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,
1542
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before {
1543
- transition-timing-function: ease-out;
1544
- transition-duration: 0.3s;
1545
- transition-property: color, border-color, background-color;
1546
- }
1547
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link {
1548
- background-color: #666;
1549
- border-color: #333;
1550
- }
1551
- .fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link {
1552
- border-color: #444;
1553
- }
1554
- .fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before,
1555
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,
1556
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before {
1557
- background-color: #333;
1558
- border-color: #444;
1559
- }
1560
- .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,
1561
- .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover,
1562
- .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus {
1563
- background-color: #666;
1564
- border-color: #333;
1565
- opacity: 0.5;
1566
- }
1567
- .fg-paging-container, .fg-paging-container *, .fg-paging-container *:before, .fg-paging-container *:after {
1568
- box-sizing: border-box;
1569
- }
1570
- .fg-paging-container {
1571
- display: block;
1572
- padding: 15px;
1573
- margin-top: 0!important;
1574
- margin-bottom: 0!important;
1575
- margin-left: auto;
1576
- margin-right: auto;
1577
- text-align: center;
1578
- font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
1579
- -webkit-user-select: none;
1580
- -moz-user-select: none;
1581
- -ms-user-select: none;
1582
- user-select: none;
1583
- }
1584
- .fg-ph-dots:after {
1585
- display: block;
1586
- content: '';
1587
- width: 0;
1588
- height: 22px;
1589
- }
1590
-
1591
- .fg-paging-container .fg-dots,
1592
- .fg-paging-container .fg-dot-item {
1593
- display: inline-block;
1594
- margin: 0;
1595
- padding: 0;
1596
- outline: none;
1597
- list-style: none;
1598
- }
1599
- .fg-paging-container .fg-dot-item .fg-dot-link {
1600
- display: inline-block;
1601
- margin: 3px;
1602
- font-weight: 400;
1603
- line-height: 1.42857143;
1604
- text-align: center;
1605
- white-space: nowrap;
1606
- vertical-align: middle;
1607
- cursor: pointer;
1608
- user-select: none;
1609
- background-image: none;
1610
- text-decoration: none;
1611
- border: 1px solid transparent;
1612
- position: relative;
1613
- border-radius: 50%;
1614
- padding: 0;
1615
- font-size: 0;
1616
- outline: none;
1617
- color: transparent;
1618
- box-shadow: none;
1619
- }
1620
- .fg-paging-container .fg-dot-item .fg-dot-link:before {
1621
- content: "";
1622
- background-color: transparent;
1623
- border: 1px solid transparent;
1624
- display: block;
1625
- border-radius: 50%;
1626
- width: 9px;
1627
- height: 9px;
1628
- padding: 0;
1629
- margin: 2px;
1630
- }
1631
- .fg-paging-container .fg-dot-item .fg-dot-link:active,
1632
- .fg-paging-container .fg-dot-item .fg-dot-link:hover,
1633
- .fg-paging-container .fg-dot-item .fg-dot-link:focus {
1634
- text-decoration: none;
1635
- box-shadow: none;
1636
- outline: none;
1637
- }
1638
- .fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,
1639
- .fg-paging-container .fg-dot-item.fg-selected .fg-dot-link {
1640
- cursor: not-allowed;
1641
- pointer-events: none;
1642
- }
1643
- .fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link {
1644
- cursor: not-allowed;
1645
- pointer-events: none;
1646
- outline: none;
1647
- }
1648
-
1649
- /* Light - Dots */
1650
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link,
1651
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before {
1652
- transition-timing-function: ease-out;
1653
- transition-duration: 0.3s;
1654
- transition-property: color, border-color, background-color;
1655
- }
1656
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link {
1657
- background-color: #eee;
1658
- border-color: #9d9d9d;
1659
- }
1660
- .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link {
1661
- border-color: #888;
1662
- }
1663
- .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before,
1664
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,
1665
- .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before {
1666
- background-color: #666;
1667
- border-color: #888;
1668
- }
1669
- .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,
1670
- .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover,
1671
- .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus {
1672
- background-color: #eee;
1673
- border-color: #9d9d9d;
1674
- opacity: 0.5;
1675
- }
1676
-
1677
- /* Dark - Dots */
1678
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,
1679
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before {
1680
- transition-timing-function: ease-out;
1681
- transition-duration: 0.3s;
1682
- transition-property: color, border-color, background-color;
1683
- }
1684
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link {
1685
- background-color: #666;
1686
- border-color: #333;
1687
- }
1688
- .fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link {
1689
- border-color: #444;
1690
- }
1691
- .fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before,
1692
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,
1693
- .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before {
1694
- background-color: #333;
1695
- border-color: #444;
1696
- }
1697
- .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,
1698
- .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover,
1699
- .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus {
1700
- background-color: #666;
1701
- border-color: #333;
1702
- opacity: 0.5;
1703
- }
1704
- /* Base styles */
1705
- .fg-default:after {
1706
- content: '';
1707
- display: block;
1708
- clear: both;
1709
- }
1710
-
1711
- .fg-default .fg-item {
1712
- display: inline-block;
1713
- vertical-align: top;
1714
- max-width: 100%;
1715
- }
1716
- .fg-default .fg-item-inner,
1717
- .fg-default .fg-thumb {
1718
- display: block;
1719
- vertical-align: top;
1720
- max-width: 100%;
1721
- }
1722
-
1723
- .fg-default .fg-image {
1724
- border-radius: 0;
1725
- display: block;
1726
- max-width: 100%;
1727
- height: auto;
1728
- margin: 0;
1729
- padding: 0;
1730
- }
1731
-
1732
- /* Horizontal alignment */
1733
- .fg-default .fg-image {
1734
- vertical-align: top;
1735
- }
1736
-
1737
- .fg-default.fg-left {
1738
- text-align: left;
1739
- }
1740
-
1741
- .fg-default.fg-center {
1742
- text-align: center;
1743
- }
1744
-
1745
- .fg-default.fg-right {
1746
- text-align: right;
1747
- }
1748
-
1749
- /* Gutter widths */
1750
- .fg-default.fg-gutter-5 {
1751
- padding-left: 5px;
1752
- margin-bottom: -5px;
1753
- }
1754
- .fg-default.fg-gutter-5 .fg-item {
1755
- margin-right: 5px;
1756
- margin-bottom: 5px;
1757
- }
1758
-
1759
- .fg-default.fg-gutter-10 {
1760
- padding-left: 10px;
1761
- margin-bottom: -10px;
1762
- }
1763
- .fg-default.fg-gutter-10 .fg-item {
1764
- margin-right: 10px;
1765
- margin-bottom: 10px;
1766
- }
1767
-
1768
- .fg-default.fg-gutter-15 {
1769
- padding-left: 15px;
1770
- margin-bottom: -15px;
1771
- }
1772
- .fg-default.fg-gutter-15 .fg-item {
1773
- margin-right: 15px;
1774
- margin-bottom: 15px;
1775
- }
1776
-
1777
- .fg-default.fg-gutter-20 {
1778
- padding-left: 20px;
1779
- margin-bottom: -20px;
1780
- }
1781
- .fg-default.fg-gutter-20 .fg-item {
1782
- margin-right: 20px;
1783
- margin-bottom: 20px;
1784
- }
1785
-
1786
- .fg-default.fg-gutter-25 {
1787
- padding-left: 25px;
1788
- margin-bottom: -25px;
1789
- }
1790
- .fg-default.fg-gutter-25 .fg-item {
1791
- margin-right: 25px;
1792
- margin-bottom: 25px;
1793
- }
1794
-
1795
-
1796
- @media only screen and (max-width: 600px){
1797
- .fg-default.fg-m-col1 .fg-image,
1798
- .fg-default.fg-m-col2 .fg-image,
1799
- .fg-default.fg-m-col3 .fg-image {
1800
- width: 100%;
1801
- }
1802
- .fg-default.fg-m-col1.fg-gutter-5 .fg-item {
1803
- width: calc(100% - 10px);
1804
- min-width: calc(100% - 10px);
1805
- max-width: calc(100% - 10px);
1806
- }
1807
- .fg-default.fg-m-col2.fg-gutter-5 .fg-item {
1808
- width: calc(50% - 10px);
1809
- min-width: calc(50% - 10px);
1810
- max-width: calc(50% - 10px);
1811
- }
1812
- .fg-default.fg-m-col3.fg-gutter-5 .fg-item {
1813
- width: calc(33.33% - 10px);
1814
- min-width: calc(33.33% - 10px);
1815
- max-width: calc(33.33% - 10px);
1816
- }
1817
-
1818
- .fg-default.fg-m-col1.fg-gutter-10 .fg-item {
1819
- width: calc(100% - 20px);
1820
- min-width: calc(100% - 20px);
1821
- max-width: calc(100% - 20px);
1822
- }
1823
- .fg-default.fg-m-col2.fg-gutter-10 .fg-item {
1824
- width: calc(50% - 20px);
1825
- min-width: calc(50% - 20px);
1826
- max-width: calc(50% - 20px);
1827
- }
1828
- .fg-default.fg-m-col3.fg-gutter-10 .fg-item {
1829
- width: calc(33.33% - 20px);
1830
- min-width: calc(33.33% - 20px);
1831
- max-width: calc(33.33% - 20px);
1832
- }
1833
-
1834
- .fg-default.fg-m-col1.fg-gutter-15 .fg-item {
1835
- width: calc(100% - 30px);
1836
- min-width: calc(100% - 30px);
1837
- max-width: calc(100% - 30px);
1838
- }
1839
- .fg-default.fg-m-col2.fg-gutter-15 .fg-item {
1840
- width: calc(50% - 30px);
1841
- min-width: calc(50% - 30px);
1842
- max-width: calc(50% - 30px);
1843
- }
1844
- .fg-default.fg-m-col3.fg-gutter-15 .fg-item {
1845
- width: calc(33.33% - 30px);
1846
- min-width: calc(33.33% - 30px);
1847
- max-width: calc(33.33% - 30px);
1848
- }
1849
-
1850
- .fg-default.fg-m-col1.fg-gutter-20 .fg-item {
1851
- width: calc(100% - 40px);
1852
- min-width: calc(100% - 40px);
1853
- max-width: calc(100% - 40px);
1854
- }
1855
- .fg-default.fg-m-col2.fg-gutter-20 .fg-item {
1856
- width: calc(50% - 40px);
1857
- min-width: calc(50% - 40px);
1858
- max-width: calc(50% - 40px);
1859
- }
1860
- .fg-default.fg-m-col3.fg-gutter-20 .fg-item {
1861
- width: calc(33.33% - 40px);
1862
- min-width: calc(33.33% - 40px);
1863
- max-width: calc(33.33% - 40px);
1864
- }
1865
-
1866
- .fg-default.fg-m-col1.fg-gutter-25 .fg-item {
1867
- width: calc(100% - 50px);
1868
- min-width: calc(100% - 50px);
1869
- max-width: calc(100% - 50px);
1870
- }
1871
- .fg-default.fg-m-col2.fg-gutter-25 .fg-item {
1872
- width: calc(50% - 50px);
1873
- min-width: calc(50% - 50px);
1874
- max-width: calc(50% - 50px);
1875
- }
1876
- .fg-default.fg-m-col3.fg-gutter-25 .fg-item {
1877
- width: calc(33.33% - 50px);
1878
- min-width: calc(33.33% - 50px);
1879
- max-width: calc(33.33% - 50px);
1880
- }
1881
- }
1882
- /* Base styles */
1883
- .fg-masonry * {
1884
- box-sizing: border-box;
1885
- }
1886
- .foogallery.fg-masonry {
1887
- margin: 0 auto;
1888
- text-align: center;
1889
- }
1890
- .fg-masonry .fg-thumb {
1891
- display: block;
1892
- }
1893
- .fg-masonry.fg-fixed .fg-item,
1894
- .fg-masonry.fg-fixed .fg-image,
1895
- .fg-masonry.fg-fixed .fg-column-width {
1896
- max-width: 100%;
1897
- }
1898
-
1899
- .fg-masonry .fg-column-width {
1900
- display: inline-block;
1901
- border: solid 0 transparent;
1902
- }
1903
- .fg-masonry .fg-column-width,
1904
- .fg-masonry .fg-gutter-width {
1905
- position: absolute;
1906
- height: 0;
1907
- visibility: hidden;
1908
- opacity: 0;
1909
- pointer-events: none;
1910
- }
1911
-
1912
- .fg-masonry.fg-fixed .fg-item .fg-image,
1913
- .fg-masonry.fg-col6 .fg-item .fg-image,
1914
- .fg-masonry.fg-col5 .fg-item .fg-image,
1915
- .fg-masonry.fg-col4 .fg-item .fg-image,
1916
- .fg-masonry.fg-col3 .fg-item .fg-image,
1917
- .fg-masonry.fg-col2 .fg-item .fg-image {
1918
- width: 100%;
1919
- height: auto;
1920
- max-width: 100%;
1921
- }
1922
-
1923
- .fg-masonry .fg-item {
1924
- line-height: 0;
1925
- font-size: 0;
1926
- vertical-align: top;
1927
- }
1928
-
1929
- /* 2 column layouts */
1930
- /* 2 column layout - normal gutter */
1931
- .fg-masonry.fg-col2 .fg-item { margin-bottom: 1%; width: 49.5%; }
1932
- .fg-masonry.fg-col2 .fg-column-width { width: 49.5%; }
1933
- .fg-masonry.fg-col2 .fg-gutter-width { width: 1%; }
1934
-
1935
- /* 2 column layout - no gutter */
1936
- .fg-masonry.fg-col2.fg-gutter-none .fg-item { margin-bottom: 0; width: 50%; }
1937
- .fg-masonry.fg-col2.fg-gutter-none .fg-column-width { width: 50%; }
1938
- .fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width { width: 0; }
1939
-
1940
- /* 2 column layout - large gutter */
1941
- .fg-masonry.fg-col2.fg-gutter-large .fg-item { margin-bottom: 3%; width: 48.5%; }
1942
- .fg-masonry.fg-col2.fg-gutter-large .fg-column-width { width: 48.5%; }
1943
- .fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width { width: 3%; }
1944
-
1945
- /* 3 column layouts */
1946
- /* 3 column layout - normal gutter */
1947
- .fg-masonry.fg-col3 .fg-item { margin-bottom: 1%; width: 32.66%; }
1948
- .fg-masonry.fg-col3 .fg-column-width { width: 32.66%; }
1949
- .fg-masonry.fg-col3 .fg-gutter-width { width: 1%; }
1950
-
1951
- /* 3 column layout - no gutter */
1952
- .fg-masonry.fg-col3.fg-gutter-none .fg-item { margin-bottom: 0; width: 33.33%; }
1953
- .fg-masonry.fg-col3.fg-gutter-none .fg-column-width { width: 33.33%; }
1954
- .fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width { width: 0; }
1955
-
1956
- /* 3 column layout - large gutter */
1957
- .fg-masonry.fg-col3.fg-gutter-large .fg-item { margin-bottom: 3%; width: 31.33%; }
1958
- .fg-masonry.fg-col3.fg-gutter-large .fg-column-width { width: 31.33%; }
1959
- .fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width { width: 3%; }
1960
-
1961
- /* 4 column layouts */
1962
- /* 4 column layout - normal gutter */
1963
- .fg-masonry.fg-col4 .fg-item { margin-bottom: 1%; width: 24.25%; }
1964
- .fg-masonry.fg-col4 .fg-column-width { width: 24.25%; }
1965
- .fg-masonry.fg-col4 .fg-gutter-width { width: 1%; }
1966
-
1967
- /* 4 column layout - no gutter */
1968
- .fg-masonry.fg-col4.fg-gutter-none .fg-item { margin-bottom: 0; width: 25%; }
1969
- .fg-masonry.fg-col4.fg-gutter-none .fg-column-width { width: 25%; }
1970
- .fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width { width: 0; }
1971
-
1972
- /* 4 column layout - large gutter */
1973
- .fg-masonry.fg-col4.fg-gutter-large .fg-item { margin-bottom: 3%; width: 22.75%; }
1974
- .fg-masonry.fg-col4.fg-gutter-large .fg-column-width { width: 22.75%; }
1975
- .fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width { width: 3%; }
1976
-
1977
- /* 5 column layouts */
1978
- /* 5 column layout - normal gutter */
1979
- .fg-masonry.fg-col5 .fg-item { margin-bottom: 1%; width: 19.2%; }
1980
- .fg-masonry.fg-col5 .fg-column-width { width: 19.2%; }
1981
- .fg-masonry.fg-col5 .fg-gutter-width { width: 1%; }
1982
-
1983
- /* 5 column layout - no gutter */
1984
- .fg-masonry.fg-col5.fg-gutter-none .fg-item { margin-bottom: 0; width: 20%; }
1985
- .fg-masonry.fg-col5.fg-gutter-none .fg-column-width { width: 20%; }
1986
- .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width { width: 0; }
1987
-
1988
- /* 5 column layout - large gutter */
1989
- .fg-masonry.fg-col5.fg-gutter-large .fg-item { margin-bottom: 3%; width: 17.6%; }
1990
- .fg-masonry.fg-col5.fg-gutter-large .fg-column-width { width: 17.6%; }
1991
- .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width { width: 3%; }
1992
-
1993
- /* 6 column layouts */
1994
- /* 6 column layout - normal gutter */
1995
- .fg-masonry.fg-col6 .fg-item { margin-bottom: 1%; width: 15.83%; }
1996
- .fg-masonry.fg-col6 .fg-column-width { width: 15.83%; }
1997
- .fg-masonry.fg-col6 .fg-gutter-width { width: 1%; }
1998
-
1999
- /* 6 column layout - no gutter */
2000
- .fg-masonry.fg-col6.fg-gutter-none .fg-item { margin-bottom: 0; width: 16.66%; }
2001
- .fg-masonry.fg-col6.fg-gutter-none .fg-column-width { width: 16.66%; }
2002
- .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width { width: 0; }
2003
-
2004
- /* 6 column layout - large gutter */
2005
- .fg-masonry.fg-col6.fg-gutter-large .fg-item { margin-bottom: 3%; width: 14.16%; }
2006
- .fg-masonry.fg-col6.fg-gutter-large .fg-column-width { width: 14.16%; }
2007
- .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width { width: 3%; }
2008
-
2009
- /* Force 5 column layout < 1280px */
2010
- @media screen and (max-width: 1280px) {
2011
- /* default gutter */
2012
- .fg-masonry.fg-col6 .fg-item { margin-bottom: 1%; width: 19.2%; }
2013
- .fg-masonry.fg-col6 .fg-column-width { width: 19.2%; }
2014
- .fg-masonry.fg-col6 .fg-gutter-width { width: 1%; }
2015
-
2016
- /* no gutter */
2017
- .fg-masonry.fg-col6.fg-gutter-none .fg-item { margin-bottom: 0; width: 20%; }
2018
- .fg-masonry.fg-col6.fg-gutter-none .fg-column-width { width: 20%; }
2019
- .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width { width: 0; }
2020
-
2021
- /* large gutter */
2022
- .fg-masonry.fg-col6.fg-gutter-large .fg-item { margin-bottom: 3%; width: 17.6%; }
2023
- .fg-masonry.fg-col6.fg-gutter-large .fg-column-width { width: 17.6%; }
2024
- .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width { width: 3%; }
2025
- }
2026
-
2027
- /* Force 4 column layout < 1024px */
2028
- @media screen and (max-width: 1024px) {
2029
- /* default gutter */
2030
- .fg-masonry.fg-col6 .fg-item,
2031
- .fg-masonry.fg-col5 .fg-item { margin-bottom: 1%; width: 24.25%; }
2032
- .fg-masonry.fg-col6 .fg-column-width,
2033
- .fg-masonry.fg-col5 .fg-column-width { width: 24.25%; }
2034
- .fg-masonry.fg-col6 .fg-gutter-width,
2035
- .fg-masonry.fg-col5 .fg-gutter-width { width: 1%; }
2036
-
2037
- /* no gutter */
2038
- .fg-masonry.fg-col6.fg-gutter-none .fg-item,
2039
- .fg-masonry.fg-col5.fg-gutter-none .fg-item { margin-bottom: 0; width: 25%; }
2040
- .fg-masonry.fg-col6.fg-gutter-none .fg-column-width,
2041
- .fg-masonry.fg-col5.fg-gutter-none .fg-column-width { width: 25%; }
2042
- .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width,
2043
- .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width { width: 0; }
2044
-
2045
- /* large gutter */
2046
- .fg-masonry.fg-col6.fg-gutter-large .fg-item,
2047
- .fg-masonry.fg-col5.fg-gutter-large .fg-item { margin-bottom: 3%; width: 22.75%; }
2048
- .fg-masonry.fg-col6.fg-gutter-large .fg-column-width,
2049
- .fg-masonry.fg-col5.fg-gutter-large .fg-column-width { width: 22.75%; }
2050
- .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width,
2051
- .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width { width: 3%; }
2052
- }
2053
-
2054
- /* Force 3 column layout < 720px */
2055
- @media screen and (max-width: 720px) {
2056
- /* default gutter */
2057
- .fg-masonry.fg-col6 .fg-item,
2058
- .fg-masonry.fg-col5 .fg-item,
2059
- .fg-masonry.fg-col4 .fg-item { margin-bottom: 1%; width: 32.66%; }
2060
- .fg-masonry.fg-col6 .fg-column-width,
2061
- .fg-masonry.fg-col5 .fg-column-width,
2062
- .fg-masonry.fg-col4 .fg-column-width { width: 32.66%; }
2063
- .fg-masonry.fg-col6 .fg-gutter-width,
2064
- .fg-masonry.fg-col5 .fg-gutter-width,
2065
- .fg-masonry.fg-col4 .fg-gutter-width { width: 1%; }
2066
-
2067
- /* no gutter */
2068
- .fg-masonry.fg-col6.fg-gutter-none .fg-item,
2069
- .fg-masonry.fg-col5.fg-gutter-none .fg-item,
2070
- .fg-masonry.fg-col4.fg-gutter-none .fg-item { margin-bottom: 0; width: 33.33%; }
2071
- .fg-masonry.fg-col6.fg-gutter-none .fg-column-width,
2072
- .fg-masonry.fg-col5.fg-gutter-none .fg-column-width,
2073
- .fg-masonry.fg-col4.fg-gutter-none .fg-column-width { width: 33.33%; }
2074
- .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width,
2075
- .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,
2076
- .fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width { width: 0; }
2077
-
2078
- /* large gutter */
2079
- .fg-masonry.fg-col6.fg-gutter-large .fg-item,
2080
- .fg-masonry.fg-col5.fg-gutter-large .fg-item,
2081
- .fg-masonry.fg-col4.fg-gutter-large .fg-item { margin-bottom: 3%; width: 31.33%; }
2082
- .fg-masonry.fg-col6.fg-gutter-large .fg-column-width,
2083
- .fg-masonry.fg-col5.fg-gutter-large .fg-column-width,
2084
- .fg-masonry.fg-col4.fg-gutter-large .fg-column-width { width: 31.33%; }
2085
- .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width,
2086
- .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,
2087
- .fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width { width: 3%; }
2088
-
2089
- }
2090
-
2091
- /* Force 2 column layout < 480px */
2092
- @media screen and (max-width: 480px) {
2093
- /* default gutter */
2094
- .fg-masonry.fg-col6 .fg-item,
2095
- .fg-masonry.fg-col5 .fg-item,
2096
- .fg-masonry.fg-col4 .fg-item,
2097
- .fg-masonry.fg-col3 .fg-item { margin-bottom: 1%; width: 49.5%; }
2098
- .fg-masonry.fg-col6 .fg-column-width,
2099
- .fg-masonry.fg-col5 .fg-column-width,
2100
- .fg-masonry.fg-col4 .fg-column-width,
2101
- .fg-masonry.fg-col3 .fg-column-width { width: 49.5%; }
2102
- .fg-masonry.fg-col6 .fg-gutter-width,
2103
- .fg-masonry.fg-col5 .fg-gutter-width,
2104
- .fg-masonry.fg-col4 .fg-gutter-width,
2105
- .fg-masonry.fg-col3 .fg-gutter-width { width: 1%; }
2106
-
2107
- /* no gutter */
2108
- .fg-masonry.fg-col6.fg-gutter-none .fg-item,
2109
- .fg-masonry.fg-col5.fg-gutter-none .fg-item,
2110
- .fg-masonry.fg-col4.fg-gutter-none .fg-item,
2111
- .fg-masonry.fg-col3.fg-gutter-none .fg-item { margin-bottom: 0; width: 50%; }
2112
- .fg-masonry.fg-col6.fg-gutter-none .fg-column-width,
2113
- .fg-masonry.fg-col5.fg-gutter-none .fg-column-width,
2114
- .fg-masonry.fg-col4.fg-gutter-none .fg-column-width,
2115
- .fg-masonry.fg-col3.fg-gutter-none .fg-column-width { width: 50%; }
2116
- .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width,
2117
- .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,
2118
- .fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,
2119
- .fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width { width: 0; }
2120
-
2121
- /* large gutter */
2122
- .fg-masonry.fg-col6.fg-gutter-large .fg-item,
2123
- .fg-masonry.fg-col5.fg-gutter-large .fg-item,
2124
- .fg-masonry.fg-col4.fg-gutter-large .fg-item,
2125
- .fg-masonry.fg-col3.fg-gutter-large .fg-item { margin-bottom: 3%; width: 48.5%; }
2126
- .fg-masonry.fg-col6.fg-gutter-large .fg-column-width,
2127
- .fg-masonry.fg-col5.fg-gutter-large .fg-column-width,
2128
- .fg-masonry.fg-col4.fg-gutter-large .fg-column-width,
2129
- .fg-masonry.fg-col3.fg-gutter-large .fg-column-width { width: 48.5%; }
2130
- .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width,
2131
- .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,
2132
- .fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,
2133
- .fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width { width: 3%; }
2134
- }
2135
-
2136
- /* Force 1 column layout < 320px */
2137
- @media screen and (max-width: 320px) {
2138
- /* default gutter */
2139
- .fg-masonry.fg-col6 .fg-item,
2140
- .fg-masonry.fg-col5 .fg-item,
2141
- .fg-masonry.fg-col4 .fg-item,
2142
- .fg-masonry.fg-col3 .fg-item,
2143
- .fg-masonry.fg-col2 .fg-item { margin-bottom: 1%; width: 100%; }
2144
- .fg-masonry.fg-col6 .fg-column-width,
2145
- .fg-masonry.fg-col5 .fg-column-width,
2146
- .fg-masonry.fg-col4 .fg-column-width,
2147
- .fg-masonry.fg-col3 .fg-column-width,
2148
- .fg-masonry.fg-col2 .fg-column-width { width: 100%; }
2149
- .fg-masonry.fg-col6 .fg-gutter-width,
2150
- .fg-masonry.fg-col5 .fg-gutter-width,
2151
- .fg-masonry.fg-col4 .fg-gutter-width,
2152
- .fg-masonry.fg-col3 .fg-gutter-width,
2153
- .fg-masonry.fg-col2 .fg-gutter-width { width: 0; }
2154
-
2155
- /* no gutter */
2156
- .fg-masonry.fg-col6.fg-gutter-none .fg-item,
2157
- .fg-masonry.fg-col5.fg-gutter-none .fg-item,
2158
- .fg-masonry.fg-col4.fg-gutter-none .fg-item,
2159
- .fg-masonry.fg-col3.fg-gutter-none .fg-item,
2160
- .fg-masonry.fg-col2.fg-gutter-none .fg-item { margin-bottom: 0; width: 100%; }
2161
- .fg-masonry.fg-col6.fg-gutter-none .fg-column-width,
2162
- .fg-masonry.fg-col5.fg-gutter-none .fg-column-width,
2163
- .fg-masonry.fg-col4.fg-gutter-none .fg-column-width,
2164
- .fg-masonry.fg-col3.fg-gutter-none .fg-column-width,
2165
- .fg-masonry.fg-col2.fg-gutter-none .fg-column-width { width: 100%; }
2166
- .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width,
2167
- .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,
2168
- .fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,
2169
- .fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width,
2170
- .fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width { width: 0; }
2171
-
2172
- /* large gutter */
2173
- .fg-masonry.fg-col6.fg-gutter-large .fg-item,
2174
- .fg-masonry.fg-col5.fg-gutter-large .fg-item,
2175
- .fg-masonry.fg-col4.fg-gutter-large .fg-item,
2176
- .fg-masonry.fg-col3.fg-gutter-large .fg-item,
2177
- .fg-masonry.fg-col2.fg-gutter-large .fg-item { margin-bottom: 3%; width: 100%; }
2178
- .fg-masonry.fg-col6.fg-gutter-large .fg-column-width,
2179
- .fg-masonry.fg-col5.fg-gutter-large .fg-column-width,
2180
- .fg-masonry.fg-col4.fg-gutter-large .fg-column-width,
2181
- .fg-masonry.fg-col3.fg-gutter-large .fg-column-width,
2182
- .fg-masonry.fg-col2.fg-gutter-large .fg-column-width { width: 100%; }
2183
- .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width,
2184
- .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,
2185
- .fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,
2186
- .fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width,
2187
- .fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width { width: 0; }
2188
- }
2189
-
2190
- /* Border Styles - We must apply width changing border styles to the fg-column-width element so that the plugin can correctly determine the item widths. */
2191
- .foogallery.fg-border-thin .fg-column-width {
2192
- border-width: 4px;
2193
- }
2194
- .foogallery.fg-border-medium .fg-column-width {
2195
- border-width: 10px;
2196
- }
2197
- .foogallery.fg-border-thick .fg-column-width {
2198
- border-width: 16px;
2199
- }
2200
-
2201
- /* Captions Bottom */
2202
- .foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption {
2203
- visibility: visible;
2204
- opacity: 1;
2205
- font-size: 13px;
2206
- position: relative;
2207
- display: block;
2208
- top: auto;
2209
- bottom: auto;
2210
- left: auto;
2211
- right: auto;
2212
- width: auto;
2213
- height: auto;
2214
- text-transform: none;
2215
- transform: none;
2216
- transition: none;
2217
- background-color: transparent;
2218
- border-style: solid;
2219
- border-color: transparent;
2220
- text-align: left;
2221
- }
2222
- .foogallery.fg-masonry.fg-captions-bottom.fg-c-l .fg-item-inner .fg-caption {
2223
- text-align: left;
2224
- }
2225
- .foogallery.fg-masonry.fg-captions-bottom.fg-c-c .fg-item-inner .fg-caption {
2226
- text-align: center;
2227
- }
2228
- .foogallery.fg-masonry.fg-captions-bottom.fg-c-r .fg-item-inner .fg-caption {
2229
- text-align: right;
2230
- }
2231
- .foogallery.fg-masonry.fg-captions-bottom.fg-c-j .fg-item-inner .fg-caption {
2232
- text-align: justify;
2233
- }
2234
- .foogallery.fg-masonry.fg-captions-bottom .fg-item-inner:hover .fg-caption {
2235
- transform: none;
2236
- transition: none;
2237
- }
2238
- .foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner {
2239
- display: block;
2240
- position: relative;
2241
- max-height: none;
2242
- top: auto;
2243
- bottom: auto;
2244
- left: auto;
2245
- right: auto;
2246
- width: auto;
2247
- height: auto;
2248
- border: none;
2249
- transform: none;
2250
- transition: none;
2251
- }
2252
- .foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner:before {
2253
- display: none;
2254
- }
2255
- .foogallery.fg-masonry.fg-captions-bottom.fg-caption-hover .fg-item-inner .fg-image-overlay {
2256
- display: block;
2257
- }
2258
- .foogallery.fg-masonry.fg-captions-bottom.fg-caption-always .fg-item-inner:hover .fg-caption {
2259
- visibility: visible;
2260
- opacity: 1;
2261
- }
2262
-
2263
- .fg-masonry.fg-captions-bottom.fg-light .fg-caption,
2264
- .fg-masonry.fg-captions-bottom.fg-dark .fg-caption {
2265
- color: #828282;
2266
- }
2267
- .fg-masonry.fg-captions-bottom.fg-light .fg-caption a,
2268
- .fg-masonry.fg-captions-bottom.fg-dark .fg-caption a {
2269
- color: #828282;
2270
- border-bottom: 1px solid #828282;
2271
- }
2272
- .fg-masonry.fg-captions-bottom.fg-light .fg-caption a:hover,
2273
- .fg-masonry.fg-captions-bottom.fg-dark .fg-caption a:hover {
2274
- border-bottom: none;
2275
- }
2276
- .fg-masonry.fg-captions-bottom.fg-light .fg-caption-title,
2277
- .fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a {
2278
- color: #222;
2279
- }
2280
- .fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title,
2281
- .fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a {
2282
- color: #FFF;
2283
- }
2284
- .fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a {
2285
- border-bottom: 1px solid #222;
2286
- }
2287
- .fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a {
2288
- border-bottom: 1px solid #FFF;
2289
- }
2290
-
2291
- /* Handle Border Sizing for Captions Below */
2292
- .fg-masonry.fg-captions-bottom .fg-caption {
2293
- border-width: 10px;
2294
- }
2295
- .fg-masonry.fg-captions-bottom .fg-caption-title+.fg-caption-desc {
2296
- margin-top: 4px;
2297
- }
2298
- .fg-masonry.fg-captions-bottom.fg-border-thin .fg-caption {
2299
- border-width: 10px 4px 4px 4px;
2300
- }
2301
- .fg-masonry.fg-captions-bottom.fg-border-medium .fg-caption {
2302
- border-width: 10px 0 0 0;
2303
- }
2304
- .fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption {
2305
- border-width: 16px 0 0 0;
2306
- }
2307
- .fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption-title+.fg-caption-desc {
2308
- margin-top: 10px;
2309
- }
2310
-
2311
- /* Transparent Theme */
2312
- .fg-masonry.fg-transparent .fg-item-inner {
2313
- background-color: transparent;
2314
- color: #333;
2315
- border-color: transparent;
2316
- }
2317
-
2318
- /* Captions */
2319
- .fg-masonry.fg-transparent .fg-caption {
2320
- color: #7f7f7f;
2321
- }
2322
- .fg-masonry.fg-transparent.fg-captions-bottom .fg-caption {
2323
- border-width: 0;
2324
- border-top-width: 10px;
2325
- border-bottom-width: 10px;
2326
- }
2327
- .fg-masonry.fg-transparent .fg-caption a {
2328
- color: #7f7f7f;
2329
- border-bottom: 1px solid #7f7f7f;
2330
- }
2331
- .fg-masonry.fg-transparent .fg-caption a:hover {
2332
- border-bottom: none;
2333
- }
2334
- .fg-masonry.fg-transparent .fg-caption-title,
2335
- .fg-masonry.fg-transparent .fg-caption-title a {
2336
- color: #333;
2337
- }
2338
- .fg-masonry.fg-transparent .fg-caption-title a {
2339
- border-bottom: 1px solid #333;
2340
- }
2341
-
2342
- /* Rounded Corners */
2343
- .fg-masonry.fg-transparent.fg-round-full .fg-item,
2344
- .fg-masonry.fg-transparent.fg-round-full .fg-item-inner {
2345
- border-radius: 15px;
2346
- }
2347
- .fg-masonry.fg-transparent.fg-round-full .fg-image-wrap,
2348
- .fg-masonry.fg-transparent.fg-round-full .fg-image-overlay,
2349
- .fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after,
2350
- .fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,
2351
- .fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after {
2352
- border-radius: 50%;
2353
- overflow: hidden;
2354
- }
2355
-
2356
- .fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2357
- .fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,
2358
- .fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2359
- .fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,
2360
- .fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2361
- .fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2362
- overflow: hidden;
2363
- }
2364
- .fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2365
- .fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2366
- .fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2367
- .fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2368
- .fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2369
- border-radius: 5px;
2370
- }
2371
- .fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2372
- .fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2373
- .fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2374
- .fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2375
- .fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2376
- border-radius: 10px;
2377
- }
2378
- .fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2379
- .fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2380
- .fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2381
- .fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2382
- .fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2383
- border-radius: 15px;
2384
- }
2385
-
2386
- /* Shadows */
2387
- .fg-masonry.fg-transparent.fg-shadow-inset-small .fg-thumb:after {
2388
- box-shadow: inset 0 1px 4px 0 rgba(0,0,0,0.3);
2389
- }
2390
- .fg-masonry.fg-transparent.fg-shadow-inset-medium .fg-thumb:after {
2391
- box-shadow: inset 0 1px 10px 0 rgba(0,0,0,0.3);
2392
- }
2393
- .fg-masonry.fg-transparent.fg-shadow-inset-large .fg-thumb:after {
2394
- box-shadow: inset 0 1px 16px 0 rgba(0,0,0,0.3);
2395
- }
2396
-
2397
- .fg-masonry.fg-transparent.fg-shadow-outline .fg-item-inner {
2398
- box-shadow: 0 0 0 1px rgba(128, 128, 128, 0.5);
2399
- }
2400
- .fg-masonry.fg-transparent.fg-shadow-small .fg-item-inner {
2401
- box-shadow: 0 1px 4px 0 rgba(128, 128, 128, 0.5);
2402
- }
2403
- .fg-masonry.fg-transparent.fg-shadow-medium .fg-item-inner {
2404
- box-shadow: 0 1px 10px 0 rgba(128, 128, 128, 0.5);
2405
- }
2406
- .fg-masonry.fg-transparent.fg-shadow-large .fg-item-inner {
2407
- box-shadow: 0 1px 16px 0 rgba(128, 128, 128, 0.5);
2408
- }
2409
- /* Base Styles */
2410
- .fg-justified {
2411
- box-sizing: border-box;
2412
- position: relative;
2413
- text-align: center;
2414
- }
2415
- .foogallery.fg-justified .fg-item {
2416
- box-sizing: border-box;
2417
- display: inline-block;
2418
- margin: 0;
2419
- padding: 0;
2420
- }
2421
- .foogallery.fg-justified .fg-item-inner,
2422
- .foogallery.fg-justified .fg-thumb,
2423
- .foogallery.fg-justified .fg-image {
2424
- box-sizing: border-box;
2425
- display: block;
2426
- margin: 0;
2427
- padding: 0;
2428
- }
2429
- .fg-justified .fg-item {
2430
- visibility: visible;
2431
- position: relative;
2432
- }
2433
- .fg-justified .fg-item-inner {
2434
- position: relative;
2435
- width: 100%;
2436
- height: 100%;
2437
- }
2438
- .fg-justified .fg-thumb {
2439
- position: relative;
2440
- overflow: hidden;
2441
- }
2442
- .fg-justified .fg-image {
2443
- z-index: 1;
2444
- }
2445
- .fg-justified .fg-item.fg-positioned .fg-thumb,
2446
- .fg-justified .fg-item.fg-positioned .fg-image-wrap {
2447
- width: 100%;
2448
- height: 100%;
2449
- }
2450
- .fg-justified .fg-item.fg-positioned .fg-image {
2451
- width: 100%!important;
2452
- height: auto!important;
2453
- min-height: 100%;
2454
- }
2455
- /* CSS justified layout. */
2456
- .foogallery.fg-justified-css {
2457
- position: relative;
2458
- display: flex;
2459
- box-sizing: border-box;
2460
- align-items: center;
2461
- justify-content: stretch;
2462
- flex-wrap: wrap;
2463
- }
2464
- .foogallery.fg-justified-css:after {
2465
- display: block;
2466
- content: '';
2467
- flex-shrink: 0;
2468
- flex-grow: 10;
2469
- min-width: 60px;
2470
- }
2471
- .foogallery.fg-justified-css .fg-item,
2472
- .foogallery.fg-justified-css .fg-item-inner,
2473
- .foogallery.fg-justified-css .fg-thumb,
2474
- .foogallery.fg-justified-css .fg-image {
2475
- display: block;
2476
- }
2477
-
2478
- .foogallery.fg-justified-css .fg-item {
2479
- flex-shrink: 0;
2480
- flex-grow: 1;
2481
- margin: 5px;
2482
- }
2483
- .foogallery.fg-justified-css .fg-thumb {
2484
-
2485
- }
2486
- .foogallery.fg-justified-css .fg-image-wrap {
2487
- display: flex;
2488
- align-items: center;
2489
- justify-content: stretch;
2490
- overflow: hidden;
2491
- }
2492
- .foogallery.fg-justified-css .fg-image {
2493
- width: 100%;
2494
- height: auto;
2495
- }
2496
- .fg-simple_portfolio {
2497
- display: flex;
2498
- flex-wrap: wrap;
2499
- justify-content: center;
2500
- align-items: stretch;
2501
- align-content: center;
2502
- }
2503
- .fg-simple_portfolio .fg-item {
2504
- position: relative;
2505
- flex-grow: 0;
2506
- flex-shrink: 0;
2507
- flex-basis: auto;
2508
- margin: 10px;
2509
- max-width: 100%;
2510
- }
2511
- .fg-simple_portfolio .fg-item-inner {
2512
- display: flex;
2513
- flex-direction: column;
2514
- margin: 0;
2515
- height: 100%;
2516
- }
2517
- .fg-simple_portfolio.fg-captions-top .fg-item-inner {
2518
- flex-direction: column-reverse;
2519
- }
2520
- .fg-simple_portfolio .fg-image {
2521
- height: auto;
2522
- width: 100%;
2523
- }
2524
-
2525
- /* Some badly written themes apply min-width:0 and min-height:0 to every element in the page which causes layout issues with flex. */
2526
- .fg-simple_portfolio .fg-thumb {
2527
- min-width: auto;
2528
- min-height: auto;
2529
- }
2530
-
2531
- /* Reset captions for the portfolio */
2532
- .foogallery.fg-simple_portfolio .fg-item-inner .fg-caption {
2533
- visibility: visible;
2534
- opacity: 1;
2535
- font-size: 13px;
2536
- position: relative;
2537
- display: block;
2538
- top: auto;
2539
- bottom: auto;
2540
- left: auto;
2541
- right: auto;
2542
- width: 100%;
2543
- height: 100%;
2544
- text-transform: none;
2545
- transform: none;
2546
- transition: none;
2547
- background-color: transparent;
2548
- border-style: solid;
2549
- border-color: transparent;
2550
- text-align: left;
2551
- }
2552
- .foogallery.fg-simple_portfolio.fg-c-l .fg-item-inner .fg-caption {
2553
- text-align: left;
2554
- }
2555
- .foogallery.fg-simple_portfolio.fg-c-c .fg-item-inner .fg-caption {
2556
- text-align: center;
2557
- }
2558
- .foogallery.fg-simple_portfolio.fg-c-r .fg-item-inner .fg-caption {
2559
- text-align: right;
2560
- }
2561
- .foogallery.fg-simple_portfolio.fg-c-j .fg-item-inner .fg-caption {
2562
- text-align: justify;
2563
- }
2564
- .foogallery.fg-simple_portfolio .fg-item-inner:hover .fg-caption {
2565
- transform: none;
2566
- transition: none;
2567
- }
2568
- .foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner {
2569
- display: block;
2570
- top: auto;
2571
- bottom: auto;
2572
- left: auto;
2573
- right: auto;
2574
- width: auto;
2575
- height: auto;
2576
- border: none;
2577
- transform: none;
2578
- transition: none;
2579
- }
2580
- .foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner:before {
2581
- display: none;
2582
- }
2583
- .foogallery.fg-simple_portfolio.fg-caption-hover .fg-item-inner .fg-image-overlay {
2584
- display: block;
2585
- }
2586
- .foogallery.fg-simple_portfolio.fg-caption-always .fg-item-inner:hover .fg-caption {
2587
- visibility: visible;
2588
- opacity: 1;
2589
- }
2590
- .fg-simple_portfolio .fg-caption-title {
2591
- white-space: normal;
2592
- height: auto;
2593
- }
2594
-
2595
- .fg-simple_portfolio.fg-light .fg-caption,
2596
- .fg-simple_portfolio.fg-dark .fg-caption {
2597
- color: #828282;
2598
- }
2599
- .fg-simple_portfolio.fg-light .fg-caption a,
2600
- .fg-simple_portfolio.fg-dark .fg-caption a {
2601
- color: #828282;
2602
- border-bottom: 1px solid #828282;
2603
- }
2604
- .fg-simple_portfolio.fg-light .fg-caption a:hover,
2605
- .fg-simple_portfolio.fg-dark .fg-caption a:hover {
2606
- border-bottom: none;
2607
- }
2608
- .fg-simple_portfolio.fg-light .fg-caption-title,
2609
- .fg-simple_portfolio.fg-light .fg-caption-title a {
2610
- color: #222;
2611
- }
2612
- .fg-simple_portfolio.fg-dark .fg-caption-title,
2613
- .fg-simple_portfolio.fg-dark .fg-caption-title a {
2614
- color: #FFF;
2615
- }
2616
- .fg-simple_portfolio.fg-light .fg-caption-title a {
2617
- border-bottom: 1px solid #222;
2618
- }
2619
- .fg-simple_portfolio.fg-dark .fg-caption-title a {
2620
- border-bottom: 1px solid #FFF;
2621
- }
2622
-
2623
- /* Handle Border Sizing */
2624
- .fg-simple_portfolio .fg-caption {
2625
- border-width: 0;
2626
- }
2627
- .fg-simple_portfolio .fg-caption-title+.fg-caption-desc {
2628
- margin-top: 4px;
2629
- }
2630
- .fg-simple_portfolio.fg-border-thin .fg-caption {
2631
- border-width: 10px 4px 4px 4px;
2632
- }
2633
- .fg-simple_portfolio.fg-captions-top.fg-border-thin .fg-caption {
2634
- border-width: 4px 4px 10px 4px;
2635
- }
2636
- .fg-simple_portfolio.fg-border-medium .fg-caption {
2637
- border-width: 10px 0 0 0;
2638
- }
2639
- .fg-simple_portfolio.fg-captions-top.fg-border-medium .fg-caption {
2640
- border-width: 0 0 10px 0;
2641
- }
2642
- .fg-simple_portfolio.fg-border-thick .fg-caption {
2643
- border-width: 16px 0 0 0;
2644
- }
2645
- .fg-simple_portfolio.fg-captions-top.fg-border-thick .fg-caption {
2646
- border-width: 0 0 16px 0;
2647
- }
2648
- .fg-simple_portfolio.fg-border-thick .fg-caption-title+.fg-caption-desc {
2649
- margin-top: 10px;
2650
- }
2651
-
2652
- /* Transparent Theme */
2653
- .fg-simple_portfolio.fg-transparent .fg-item-inner {
2654
- background-color: transparent;
2655
- color: #333;
2656
- border-color: transparent;
2657
- }
2658
-
2659
- /* Captions */
2660
- .fg-simple_portfolio.fg-transparent .fg-caption {
2661
- color: #7f7f7f;
2662
- }
2663
- .fg-simple_portfolio.fg-transparent .fg-caption a {
2664
- color: #7f7f7f;
2665
- border-bottom: 1px solid #7f7f7f;
2666
- }
2667
- .fg-simple_portfolio.fg-transparent .fg-caption a:hover {
2668
- border-bottom: none;
2669
- }
2670
- .fg-simple_portfolio.fg-transparent .fg-caption-title,
2671
- .fg-simple_portfolio.fg-transparent .fg-caption-title a {
2672
- color: #333;
2673
- }
2674
- .fg-simple_portfolio.fg-transparent .fg-caption-title a {
2675
- border-bottom: 1px solid #333;
2676
- }
2677
-
2678
- /* Rounded Corners */
2679
- .fg-simple_portfolio.fg-transparent.fg-round-full .fg-item,
2680
- .fg-simple_portfolio.fg-transparent.fg-round-full .fg-item-inner {
2681
- border-radius: 15px;
2682
- }
2683
- .fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-wrap,
2684
- .fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-overlay,
2685
- .fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after,
2686
- .fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,
2687
- .fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after {
2688
- border-radius: 50%;
2689
- overflow: hidden;
2690
- }
2691
-
2692
- .fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2693
- .fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,
2694
- .fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2695
- .fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,
2696
- .fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2697
- .fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2698
- overflow: hidden;
2699
- }
2700
- .fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2701
- .fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2702
- .fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2703
- .fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2704
- .fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2705
- border-radius: 5px;
2706
- }
2707
- .fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2708
- .fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2709
- .fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2710
- .fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2711
- .fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2712
- border-radius: 10px;
2713
- }
2714
- .fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2715
- .fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2716
- .fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2717
- .fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2718
- .fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2719
- border-radius: 15px;
2720
- }
2721
-
2722
- /* Shadows */
2723
- .fg-simple_portfolio.fg-transparent.fg-shadow-inset-small .fg-thumb:after {
2724
- box-shadow: inset 0 1px 4px 0 rgba(0,0,0,0.3);
2725
- }
2726
- .fg-simple_portfolio.fg-transparent.fg-shadow-inset-medium .fg-thumb:after {
2727
- box-shadow: inset 0 1px 10px 0 rgba(0,0,0,0.3);
2728
- }
2729
- .fg-simple_portfolio.fg-transparent.fg-shadow-inset-large .fg-thumb:after {
2730
- box-shadow: inset 0 1px 16px 0 rgba(0,0,0,0.3);
2731
- }
2732
-
2733
- .fg-simple_portfolio.fg-transparent.fg-shadow-outline .fg-item-inner {
2734
- box-shadow: 0 0 0 1px rgba(128, 128, 128, 0.5);
2735
- }
2736
- .fg-simple_portfolio.fg-transparent.fg-shadow-small .fg-item-inner {
2737
- box-shadow: 0 1px 4px 0 rgba(128, 128, 128, 0.5);
2738
- }
2739
- .fg-simple_portfolio.fg-transparent.fg-shadow-medium .fg-item-inner {
2740
- box-shadow: 0 1px 10px 0 rgba(128, 128, 128, 0.5);
2741
- }
2742
- .fg-simple_portfolio.fg-transparent.fg-shadow-large .fg-item-inner {
2743
- box-shadow: 0 1px 16px 0 rgba(128, 128, 128, 0.5);
2744
- }
2745
- /* Polaroid */
2746
- .foogallery.fg-preset.fg-polaroid .fg-item {
2747
- -webkit-backface-visibility: hidden;
2748
- backface-visibility: hidden;
2749
- transition: transform 0.35s, background-color 0.65s;
2750
- }
2751
- .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1) {
2752
- -webkit-transform: rotate(3deg);
2753
- transform: rotate(3deg);
2754
- }
2755
- .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n) {
2756
- -webkit-transform: rotate(-3deg);
2757
- transform: rotate(-3deg);
2758
- }
2759
- .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(3n) {
2760
- -webkit-transform: rotate(1deg);
2761
- transform: rotate(1deg);
2762
- }
2763
- .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(5n) {
2764
- -webkit-transform: rotate(-2deg);
2765
- transform: rotate(-2deg);
2766
- }
2767
-
2768
- .foogallery.fg-preset.fg-polaroid .fg-item:hover {
2769
- -webkit-transform: rotate(0);
2770
- transform: rotate(0);
2771
- }
2772
-
2773
- .foogallery.fg-preset.fg-polaroid .fg-caption {
2774
- position: relative;
2775
- width: auto;
2776
- font-family: "Segoe Print Regular",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
2777
- }
2778
-
2779
- .foogallery.fg-preset.fg-polaroid .fg-caption-inner,
2780
- .foogallery.fg-preset.fg-polaroid .fg-caption-title {
2781
- position: relative;
2782
- width: auto;
2783
- }
2784
- .foogallery.fg-preset.fg-polaroid .fg-caption-title {
2785
- text-align: center;
2786
- }
2787
- .foogallery.fg-preset.fg-polaroid .fg-caption-desc {
2788
- display: none;
2789
- }
2790
-
2791
- /* Themes */
2792
- .foogallery.fg-preset.fg-polaroid .fg-caption-title,
2793
- .foogallery.fg-light.fg-preset.fg-polaroid .fg-caption-title {
2794
- color: #333;
2795
- }
2796
- .foogallery.fg-dark.fg-preset.fg-polaroid .fg-caption-title {
2797
- color: #FFF;
2798
- }
2799
-
2800
- /* Handle Border Sizing */
2801
- .foogallery.fg-preset.fg-polaroid .fg-caption {
2802
- border-style: solid;
2803
- border-color: transparent;
2804
- border-width: 10px;
2805
- }
2806
- .foogallery.fg-preset.fg-polaroid .fg-caption-title+.fg-caption-desc {
2807
- margin-top: 4px;
2808
- }
2809
- .foogallery.fg-preset.fg-polaroid.fg-border-thin .fg-caption {
2810
- border-width: 10px 4px 4px 4px;
2811
- }
2812
- .foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thin .fg-caption {
2813
- border-width: 4px 4px 10px 4px;
2814
- }
2815
- .foogallery.fg-preset.fg-polaroid.fg-border-medium .fg-caption {
2816
- border-width: 10px 0 0 0;
2817
- }
2818
- .foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-medium .fg-caption {
2819
- border-width: 0 0 10px 0;
2820
- }
2821
- .foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption {
2822
- border-width: 16px 0 0 0;
2823
- }
2824
- .foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thick .fg-caption {
2825
- border-width: 0 0 16px 0;
2826
- }
2827
- .foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption-title+.fg-caption-desc {
2828
- margin-top: 10px;
2829
- }
2830
- /* Base styles */
2831
- .fg-image-viewer {
2832
- display: block;
2833
- font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
2834
- }
2835
- .fg-image-viewer.fg-left {
2836
- text-align: left;
2837
- }
2838
-
2839
- .fg-image-viewer.fg-center {
2840
- text-align: center;
2841
- }
2842
- .fg-image-viewer.fg-right {
2843
- text-align: right;
2844
- }
2845
-
2846
- .fiv-inner {
2847
- position: relative;
2848
- display: inline-block;
2849
- max-width: 100%;
2850
- overflow: hidden;
2851
- z-index: 6;
2852
- }
2853
- .fiv-inner .fiv-inner-container {
2854
- position: relative;
2855
- overflow: hidden;
2856
- max-width: 100%;
2857
- border-style: solid;
2858
- border-width: 0;
2859
- border-bottom-width: 4px;
2860
- z-index: 5;
2861
- }
2862
- .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb,
2863
- .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:hover,
2864
- .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:active,
2865
- .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:visited {
2866
- position: relative;
2867
- display: block;
2868
- border: none;
2869
- outline: none;
2870
- text-decoration: none;
2871
- box-shadow: none;
2872
- max-width: 100%;
2873
- }
2874
-
2875
- .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item {
2876
- position: absolute;
2877
- visibility: visible;
2878
- opacity: 1;
2879
- border: none;
2880
- outline: none;
2881
- text-decoration: none;
2882
- box-shadow: none;
2883
- max-width: 100%;
2884
- }
2885
- .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item:first-of-type {
2886
- position: relative;
2887
- }
2888
- .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img {
2889
- display: block;
2890
- max-width: 100%;
2891
- height: auto;
2892
- border: none;
2893
- outline: none;
2894
- text-decoration: none;
2895
- }
2896
-
2897
- .fg-image-viewer .fiv-inner .fiv-ctrls {
2898
- display: block;
2899
- text-align: center;
2900
- font-size: 14px;
2901
- border-style: solid;
2902
- line-height: 34px;
2903
- }
2904
- .fg-image-viewer .fiv-inner .fiv-ctrls:after {
2905
- content: '';
2906
- display: block;
2907
- clear: both;
2908
- }
2909
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count {
2910
- display: inline-block;
2911
- font-weight: normal;
2912
- margin: 0;
2913
- }
2914
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev,
2915
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next {
2916
- cursor: pointer;
2917
- -webkit-user-select: none;
2918
- -moz-user-select: none;
2919
- -ms-user-select: none;
2920
- user-select: none;
2921
- border: none;
2922
- min-width: 80px;
2923
- position: relative;
2924
- overflow: hidden;
2925
- transition: background-color .3s;
2926
- }
2927
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before,
2928
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before {
2929
- display: block;
2930
- position: absolute;
2931
- font-size: 24px;
2932
- line-height: 30px;
2933
- top:0;
2934
- left:0;
2935
- width: 100%;
2936
- transform: translateY(0);
2937
- transition: transform .3s;
2938
- }
2939
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover:before,
2940
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover:before {
2941
- transform: translateY(-100%);
2942
- }
2943
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev span,
2944
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next span {
2945
- display: block;
2946
- width: 100%;
2947
- transform: translateY(100%);
2948
- transition: transform .3s;
2949
- }
2950
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover span,
2951
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover span {
2952
- transform: translateY(0);
2953
- }
2954
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev {
2955
- float: left;
2956
- }
2957
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before {
2958
- content: '\2190';
2959
- }
2960
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next {
2961
- float: right;
2962
- }
2963
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before {
2964
- content: '\2192';
2965
- }
2966
- .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count span {
2967
- margin: 0 4px;
2968
- }
2969
-
2970
- /* Captions */
2971
-
2972
- .foogallery.fg-image-viewer.fg-caption-always .fg-item-inner .fg-caption {
2973
- padding: 0;
2974
- border: none;
2975
- }
2976
- .foogallery.fg-image-viewer.fg-caption-always .fg-caption-title {
2977
- padding: 10px 10px 10px 10px;
2978
- }
2979
- .foogallery.fg-image-viewer.fg-caption-always .fg-caption-desc {
2980
- padding: 10px 10px 10px 10px;
2981
- }
2982
- .foogallery.fg-image-viewer.fg-caption-always .fg-caption-title+.fg-caption-desc {
2983
- padding: 0 10px 10px 10px;
2984
- }
2985
-
2986
- /* Theme - Default (Light) */
2987
- .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls,
2988
- .fg-image-viewer.fg-light .fiv-inner .fiv-inner-container,
2989
- .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-count,
2990
- .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev,
2991
- .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next {
2992
- background-color: #FFF;
2993
- color: #333;
2994
- border-color: #FFF;
2995
- }
2996
- .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev:hover,
2997
- .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next:hover {
2998
- background-color: #F2F2F2;
2999
- }
3000
- .fg-image-viewer.fg-light .fiv-prev,
3001
- .fg-image-viewer.fg-light .fiv-next {
3002
- box-shadow: inset 0 0 0 1px #ddd;
3003
- }
3004
-
3005
- /* Theme - Dark */
3006
- .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls,
3007
- .fg-image-viewer.fg-dark .fiv-inner .fiv-inner-container,
3008
- .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-count,
3009
- .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev,
3010
- .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next {
3011
- background-color: #333;
3012
- color: #FFF;
3013
- border-color: #333;
3014
- }
3015
- .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev:hover,
3016
- .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next:hover {
3017
- background-color: #444;
3018
- }
3019
- .fg-image-viewer.fg-dark .fiv-prev,
3020
- .fg-image-viewer.fg-dark .fiv-next {
3021
- box-shadow: inset 0 0 0 1px #222;
3022
- }
3023
-
3024
- /* Border Size */
3025
- .foogallery.fg-image-viewer.fg-border-thin .fg-item-inner,
3026
- .foogallery.fg-image-viewer.fg-border-medium .fg-item-inner,
3027
- .foogallery.fg-image-viewer.fg-border-thick .fg-item-inner {
3028
- border-width: 0;
3029
- }
3030
- .foogallery.fg-image-viewer .fiv-ctrls,
3031
- .foogallery.fg-image-viewer.fg-border-thin .fiv-inner-container {
3032
- border-width: 4px;
3033
- }
3034
- .foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,
3035
- .foogallery.fg-image-viewer.fg-border-medium .fiv-inner-container {
3036
- border-width: 10px;
3037
- }
3038
- .foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,
3039
- .foogallery.fg-image-viewer.fg-border-thick .fiv-inner-container {
3040
- border-width: 16px;
3041
- }
3042
- .foogallery.fg-image-viewer .fiv-ctrls,
3043
- .foogallery.fg-image-viewer.fg-border-thin .fiv-ctrls,
3044
- .foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,
3045
- .foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls {
3046
- border-top-width: 1px;
3047
- }
3048
-
3049
- /* Rounded Corners */
3050
- .foogallery.fg-image-viewer.fg-round-small .fg-item,
3051
- .foogallery.fg-image-viewer.fg-round-small .fg-item-inner,
3052
- .foogallery.fg-image-viewer.fg-round-small .fiv-inner {
3053
- border-radius: 5px;
3054
- }
3055
- .foogallery.fg-image-viewer.fg-round-small .fg-item,
3056
- .foogallery.fg-image-viewer.fg-round-small .fg-item-inner {
3057
- border-bottom-left-radius: 0;
3058
- border-bottom-right-radius: 0;
3059
- }
3060
- .foogallery.fg-image-viewer.fg-round-small .fiv-prev,
3061
- .foogallery.fg-image-viewer.fg-round-small .fiv-next {
3062
- border-radius: 3px;
3063
- }
3064
-
3065
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item,
3066
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item-inner,
3067
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-prev,
3068
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-next,
3069
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item,
3070
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item-inner,
3071
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-prev,
3072
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-next,
3073
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item,
3074
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item-inner,
3075
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-prev,
3076
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-next {
3077
- border-radius: 3px;
3078
- }
3079
-
3080
- .foogallery.fg-image-viewer.fg-round-medium .fg-item,
3081
- .foogallery.fg-image-viewer.fg-round-medium .fg-item-inner,
3082
- .foogallery.fg-image-viewer.fg-round-medium .fiv-inner {
3083
- border-radius: 10px;
3084
- }
3085
- .foogallery.fg-image-viewer.fg-round-medium .fg-item,
3086
- .foogallery.fg-image-viewer.fg-round-medium .fg-item-inner {
3087
- border-bottom-left-radius: 0;
3088
- border-bottom-right-radius: 0;
3089
- }
3090
- .foogallery.fg-image-viewer.fg-round-medium .fiv-prev,
3091
- .foogallery.fg-image-viewer.fg-round-medium .fiv-next {
3092
- border-radius: 5px;
3093
- }
3094
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item,
3095
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item-inner,
3096
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-prev,
3097
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-next {
3098
- border-radius: 5px;
3099
- }
3100
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item,
3101
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item-inner,
3102
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-prev,
3103
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-next,
3104
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item,
3105
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item-inner,
3106
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-prev,
3107
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-next {
3108
- border-radius: 3px;
3109
- }
3110
-
3111
- .foogallery.fg-image-viewer.fg-round-large .fg-item,
3112
- .foogallery.fg-image-viewer.fg-round-large .fg-item-inner,
3113
- .foogallery.fg-image-viewer.fg-round-large .fiv-inner {
3114
- border-radius: 15px;
3115
- }
3116
- .foogallery.fg-image-viewer.fg-round-large .fg-item,
3117
- .foogallery.fg-image-viewer.fg-round-large .fg-item-inner {
3118
- border-bottom-left-radius: 0;
3119
- border-bottom-right-radius: 0;
3120
- }
3121
- .foogallery.fg-image-viewer.fg-round-large .fiv-prev,
3122
- .foogallery.fg-image-viewer.fg-round-large .fiv-next {
3123
- border-radius: 11px;
3124
- }
3125
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item,
3126
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item-inner,
3127
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-prev,
3128
- .foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-next {
3129
- border-radius: 11px;
3130
- }
3131
-
3132
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item,
3133
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item-inner,
3134
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-prev,
3135
- .foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-next {
3136
- border-radius: 5px;
3137
- }
3138
-
3139
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item,
3140
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item-inner,
3141
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-prev,
3142
- .foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-next {
3143
- border-radius: 3px;
3144
- }
3145
-
3146
- .foogallery.fg-image-viewer.fg-round-full .fiv-inner,
3147
- .foogallery.fg-image-viewer.fg-round-full .fiv-prev,
3148
- .foogallery.fg-image-viewer.fg-round-full .fiv-next {
3149
- border-radius: 50%;
3150
- }
3151
-
3152
- /* Drop Shadows */
3153
- .foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fg-item-inner,
3154
- .foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fg-item-inner,
3155
- .foogallery.fg-image-viewer.fg-light.fg-shadow-small .fg-item-inner,
3156
- .foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fg-item-inner,
3157
- .foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fg-item-inner,
3158
- .foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fg-item-inner,
3159
- .foogallery.fg-image-viewer.fg-light.fg-shadow-large .fg-item-inner,
3160
- .foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fg-item-inner {
3161
- box-shadow: none;
3162
- }
3163
-
3164
- .foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fiv-inner {
3165
- box-shadow: 0 0 0 1px #ddd;
3166
- }
3167
- .foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fiv-inner {
3168
- box-shadow: 0 0 0 1px #222;
3169
- }
3170
- .foogallery.fg-image-viewer.fg-light.fg-shadow-small .fiv-inner,
3171
- .foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fiv-inner {
3172
- box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.5);
3173
- }
3174
- .foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fiv-inner,
3175
- .foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fiv-inner {
3176
- box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.5);
3177
- }
3178
- .foogallery.fg-image-viewer.fg-light.fg-shadow-large .fiv-inner,
3179
- .foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fiv-inner {
3180
- box-shadow: 0 1px 16px 0 rgba(0, 0, 0, 0.5);
3181
- }
3182
- .foogallery.fg-thumbnail,
3183
- .foogallery.fg-thumbnail.fg-center {
3184
- text-align: center;
3185
- }
3186
- .foogallery.fg-thumbnail.fg-left {
3187
- text-align: left;
3188
- }
3189
- .foogallery.fg-thumbnail.fg-right {
3190
- text-align: right;
3191
- }
3192
-
3193
- .foogallery.fg-thumbnail.fg-float-left {
3194
- float: left;
3195
- width: auto;
3196
- }
3197
- .foogallery.fg-thumbnail.fg-float-right {
3198
- float: right;
3199
- width: auto;
3200
- }
3201
-
3202
- .foogallery.fg-thumbnail .fg-item {
3203
- display: inline-block;
3204
- vertical-align: top;
3205
- max-width: 100%;
3206
- }
3207
- .foogallery.fg-thumbnail .fg-image {
3208
- max-width: 100%;
3209
- }
3210
- .foogallery.fg-thumbnail .fg-st-hidden {
3211
- display: none;
3212
- }
3213
- .foogallery-stack-album {
3214
- text-align: center;
3215
- overflow: hidden;
3216
- font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
3217
- font-size: 13px;
3218
- font-weight: 400;
3219
- line-height: 1.3;
3220
- }
3221
- .foogallery-stack-album,
3222
- .foogallery-stack-album * {
3223
- box-sizing: border-box;
3224
- }
3225
-
3226
- .foogallery-stack-album.fg-align-left {
3227
- text-align: left;
3228
- }
3229
- .foogallery-stack-album.fg-align-center {
3230
- text-align: center;
3231
- }
3232
- .foogallery-stack-album.fg-align-right {
3233
- text-align: right;
3234
- }
3235
-
3236
- .foogallery-stack-album.fg-disable-transitions,
3237
- .foogallery-stack-album.fg-disable-transitions * {
3238
- transition: none !important;
3239
- }
3240
-
3241
- .fg-header {
3242
- display: flex;
3243
- flex-wrap: nowrap;
3244
- justify-content: space-between;
3245
- align-items: center;
3246
- position: relative;
3247
- padding: 0;
3248
- margin: 0;
3249
- border-top: solid 1px #aaa;
3250
- border-bottom: solid 1px #aaa;
3251
- }
3252
-
3253
- .fg-header-title {
3254
- display: block;
3255
- margin: 0;
3256
- padding: 0 20px;
3257
- width: 100%;
3258
- text-align: left;
3259
- }
3260
-
3261
- .fg-header-active {
3262
- display: block;
3263
- margin: 0;
3264
- padding: 0 20px;
3265
- visibility: hidden;
3266
- opacity: 0;
3267
- width: 100%;
3268
- text-align: right;
3269
- transition-property: opacity, visibility;
3270
- transition-duration: .3s;
3271
- transition-timing-function: ease-in-out;
3272
- }
3273
-
3274
- .fg-header-back {
3275
- display: block;
3276
- padding: 0;
3277
- margin: 5px;
3278
- visibility: hidden;
3279
- opacity: 0;
3280
- min-width: 40px;
3281
- width: 40px;
3282
- height: 40px;
3283
- border-radius: 50%;
3284
- text-align: center;
3285
- line-height: 38px;
3286
- color: #999;
3287
- background: #ddd;
3288
- background: rgba(200,200,200,0.5);
3289
- cursor: pointer;
3290
- -webkit-touch-callout: none;
3291
- -webkit-user-select: none;
3292
- -moz-user-select: none;
3293
- -ms-user-select: none;
3294
- user-select: none;
3295
- transition-property: opacity, visibility;
3296
- transition-duration: .3s;
3297
- transition-timing-function: ease-in-out;
3298
- }
3299
-
3300
- .fg-has-active .fg-header-back,
3301
- .fg-has-active .fg-header-active {
3302
- visibility: visible;
3303
- opacity: 1;
3304
- }
3305
-
3306
-
3307
- .fg-piles {
3308
- display: inline-block;
3309
- position: relative;
3310
- transition-property: width, height;
3311
- transition-duration: .3s;
3312
- transition-timing-function: ease-in-out;
3313
- }
3314
-
3315
- .fg-pile {
3316
- display: block;
3317
- position: absolute;
3318
- top: 0;
3319
- left: 0;
3320
- list-style: none;
3321
- padding: 0;
3322
- margin: 0;
3323
- visibility: visible;
3324
- opacity: 1;
3325
- transition-property: opacity, visibility, top, left, width, height;
3326
- transition-duration: .3s;
3327
- transition-timing-function: ease-in-out;
3328
- }
3329
-
3330
- .fg-pile.fg-hidden {
3331
- visibility: hidden;
3332
- opacity: 0;
3333
- }
3334
-
3335
- .fg-pile-item {
3336
- display: block;
3337
- position: absolute;
3338
- top: 25px;
3339
- left: 25px;
3340
- visibility: visible;
3341
- opacity: 1;
3342
- cursor: pointer;
3343
- border: 10px solid #fff;
3344
- background-color: #FFF;
3345
- box-shadow: 0 1px 4px rgba(0,0,0,0.2);
3346
- transition-property: opacity, visibility, top, left, transform;
3347
- transition-duration: .3s;
3348
- transition-timing-function: ease-in-out;
3349
- z-index: 1;
3350
- transform: rotate(0deg);
3351
- }
3352
-
3353
- .fg-expanded .fg-pile-item {
3354
- z-index: 2;
3355
- transform: rotate(0deg) !important;
3356
- }
3357
- .fg-pile-item.fg-has-cover {
3358
- z-index: 10;
3359
- transform: rotate(0deg) !important;
3360
- }
3361
-
3362
- .fg-pile-item:nth-child(2) {
3363
- z-index: 9;
3364
- }
3365
- .fg-pile-item:nth-child(3) {
3366
- z-index: 8;
3367
- }
3368
- .fg-pile-item:nth-child(4) {
3369
- z-index: 7;
3370
- }
3371
- .fg-pile-item:nth-child(1n+5) {
3372
- visibility: hidden;
3373
- opacity: 0;
3374
- }
3375
- .fg-expanded .fg-pile-item:nth-child(1n+4) {
3376
- visibility: visible;
3377
- opacity: 1;
3378
- }
3379
-
3380
- .fg-pile-item-thumb {
3381
- display: block;
3382
- }
3383
-
3384
- .fg-pile-item-image {
3385
- display: block;
3386
- }
3387
-
3388
- .fg-pile-item-caption {
3389
- display: flex;
3390
- justify-content: center;
3391
- flex-direction: column;
3392
- position: absolute;
3393
- top: 0;
3394
- left: 0;
3395
- bottom: 0;
3396
- right: 0;
3397
- width: 100%;
3398
- height: 100%;
3399
- margin: 0;
3400
- padding: 10px;
3401
- background-color: rgba(68, 68, 68, 0.5);
3402
- color: #FFFFFF;
3403
- text-align: center;
3404
- visibility: hidden;
3405
- opacity: 0;
3406
- transition-property: opacity, visibility;
3407
- transition-duration: .3s;
3408
- transition-timing-function: ease-in-out;
3409
- }
3410
- .fg-pile-item-title {
3411
- display: block;
3412
- width: 100%;
3413
- padding: 0 0 10px;
3414
- }
3415
- .fg-pile-item-desc {
3416
- display: block;
3417
- width: 100%;
3418
- max-height: 100%;
3419
- border-top: solid 1px currentColor;
3420
- padding: 10px 0 0;
3421
- overflow: hidden;
3422
- }
3423
-
3424
- .fg-pile-item-thumb:hover .fg-pile-item-caption {
3425
- visibility: visible;
3426
- opacity: 1;
3427
- }
3428
-
3429
- .fg-pile-cover {
3430
- display: flex;
3431
- justify-content: left;
3432
- align-items: center;
3433
- position: absolute;
3434
- top: 0;
3435
- left: 0;
3436
- bottom: 0;
3437
- right: 0;
3438
- width: 100%;
3439
- height: 100%;
3440
- visibility: visible;
3441
- opacity: 1;
3442
- cursor: pointer;
3443
- -webkit-touch-callout: none;
3444
- -webkit-user-select: none;
3445
- -moz-user-select: none;
3446
- -ms-user-select: none;
3447
- user-select: none;
3448
- transition-property: opacity, visibility;
3449
- transition-duration: .3s;
3450
- transition-timing-function: ease-in-out;
3451
- }
3452
-
3453
- .fg-expanded .fg-pile-cover {
3454
- visibility: hidden;
3455
- opacity: 0;
3456
- pointer-events: none;
3457
- }
3458
-
3459
- .fg-pile-cover-content {
3460
- display: flex;
3461
- position: relative;
3462
- background: #fff;
3463
- color: #333;
3464
- width: 75%;
3465
- font-weight: 700;
3466
- box-shadow: 1px 1px 1px rgba(0,0,0,0.1), 5px 0 5px -3px rgba(0,0,0,0.4), inset 0 0 5px rgba(0,0,0,0.04);
3467
- }
3468
-
3469
- .fg-pile-cover-title {
3470
- text-align: center;
3471
- padding: 10px;
3472
- width: 100%;
3473
- }
3474
- .fg-pile-cover-count {
3475
- color: #aaa;
3476
- padding: 10px 5px;
3477
- background: #F7F7F7;
3478
- height: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3479
  }
1
+ .foogallery, .foogallery * {
2
+ box-sizing: border-box;
3
+ }
4
+ .foogallery {
5
+ display: block;
6
+ z-index: 1;
7
+ font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
8
+ position: relative;
9
+ line-height: 0;
10
+ font-size: 0;
11
+ width: 100%;
12
+ max-width: 100%;
13
+ }
14
+ .foogallery .fg-item {
15
+ display: inline-block;
16
+ position: relative;
17
+ background-color: transparent;
18
+ z-index: 2;
19
+ -webkit-user-select: none;
20
+ -moz-user-select: none;
21
+ -ms-user-select: none;
22
+ user-select: none;
23
+ }
24
+ .foogallery .fg-item.fg-hidden {
25
+ display: none!important;
26
+ }
27
+ .foogallery .fg-item-inner {
28
+ display: block;
29
+ position: relative;
30
+ visibility: hidden;
31
+ overflow: hidden;
32
+ opacity: 0;
33
+ z-index: 3;
34
+ margin: 0;
35
+ border: solid 0 transparent;
36
+ }
37
+
38
+ .foogallery .fg-item.fg-error:before {
39
+ content: "";
40
+ display: block;
41
+ position: absolute;
42
+ top: 50%;
43
+ left: 50%;
44
+ transform: translateX(-50%) translateY(-50%);
45
+ width: 32px;
46
+ height: 32px;
47
+ background-image: url('../img/icons.svg#image');
48
+ background-color: transparent;
49
+ background-repeat: no-repeat;
50
+ background-position: center center;
51
+ background-size: 32px 32px;
52
+ }
53
+
54
+ .foogallery .fg-item.fg-loaded {
55
+ z-index: 4;
56
+ }
57
+ .foogallery .fg-loaded .fg-item-inner {
58
+ visibility: visible;
59
+ opacity: 1;
60
+ z-index: 5;
61
+ }
62
+ .foogallery .fg-error .fg-item-inner {
63
+ pointer-events: none;
64
+ cursor: default;
65
+ }
66
+ .foogallery .fg-thumb {
67
+ display: block;
68
+ position: relative;
69
+ border: none;
70
+ outline: 0;
71
+ text-decoration: none;
72
+ z-index: 4;
73
+ box-shadow: none;
74
+ }
75
+ .foogallery .fg-thumb:hover,
76
+ .foogallery .fg-thumb:focus {
77
+ border: none;
78
+ outline: 0;
79
+ text-decoration: none;
80
+ box-shadow: none;
81
+ }
82
+ .foogallery .fg-image-overlay {
83
+ position: absolute;
84
+ top: 0;
85
+ right: 0;
86
+ bottom: 0;
87
+ left: 0;
88
+ z-index: 8;
89
+ visibility: hidden;
90
+ opacity: 0;
91
+ }
92
+ .foogallery .fg-image-wrap {
93
+ display: block;
94
+ position: relative;
95
+ }
96
+ .foogallery .fg-image {
97
+ display: block;
98
+ position: relative;
99
+ border: none;
100
+ outline: 0;
101
+ text-decoration: none;
102
+ z-index: 5;
103
+ max-width: 100%;
104
+ height: auto;
105
+ margin: 0;
106
+ width: auto;
107
+ }
108
+ .foogallery picture.fg-image > img {
109
+ display: block;
110
+ position: relative;
111
+ border: none;
112
+ outline: 0;
113
+ text-decoration: none;
114
+ max-width: 100%;
115
+ height: auto;
116
+ margin: 0;
117
+ width: auto;
118
+ }
119
+ .foogallery .fg-loaded .fg-thumb {
120
+ z-index: 6;
121
+ }
122
+ .foogallery .fg-loaded .fg-image {
123
+ z-index: 7;
124
+ }
125
+
126
+ /* Utility */
127
+ .fg-sr-only {
128
+ position: absolute;
129
+ width: 1px;
130
+ height: 1px;
131
+ padding: 0;
132
+ margin: -1px;
133
+ overflow: hidden;
134
+ clip: rect(0,0,0,0);
135
+ border: 0;
136
+ }
137
+ /* Item Style */
138
+ .foogallery.fg-light .fg-item-inner {
139
+ background-color: #FFF;
140
+ color: #333;
141
+ border-color: #FFF;
142
+ }
143
+ .foogallery.fg-dark .fg-item-inner {
144
+ background-color: #333;
145
+ color: #FFF;
146
+ border-color: #333;
147
+ }
148
+ /* Idle / Loading / Error Style */
149
+ .foogallery.fg-light .fg-item.fg-idle,
150
+ .foogallery.fg-light .fg-item.fg-loading,
151
+ .foogallery.fg-light .fg-item.fg-error {
152
+ background-color: #eee;
153
+ box-shadow: inset 0 0 0 1px #ddd;
154
+ }
155
+ .foogallery.fg-dark .fg-item.fg-idle,
156
+ .foogallery.fg-dark .fg-item.fg-loading,
157
+ .foogallery.fg-dark .fg-item.fg-error {
158
+ background-color: #444;
159
+ box-shadow: inset 0 0 0 1px #333;
160
+ }
161
+ /* Caption & Overlay Colors */
162
+ .foogallery .fg-caption {
163
+ background-color: rgba(0,0,0,0.6);
164
+ color: #fff;
165
+ }
166
+ .foogallery .fg-caption a {
167
+ color: #fff;
168
+ border-bottom: 1px solid #FFF;
169
+ }
170
+ .foogallery.fg-light-overlays .fg-caption {
171
+ background-color: rgba(255,255,255,0.8);
172
+ color: #333;
173
+ }
174
+ .foogallery.fg-light-overlays .fg-caption a {
175
+ color: #333;
176
+ border-bottom-color: #333;
177
+ }
178
+ .foogallery.fg-transparent-overlays .fg-caption {
179
+ background-color: transparent;
180
+ color: #fff;
181
+ }
182
+ .foogallery.fg-transparent-overlays .fg-caption a {
183
+ color: #fff;
184
+ border-bottom-color: #fff;
185
+ }
186
+
187
+ .foogallery .fg-image-overlay {
188
+ background-color: rgba(0,0,0,0.6);
189
+ color: #fff;
190
+ }
191
+ .foogallery.fg-light-overlays .fg-image-overlay {
192
+ background-color: rgba(255,255,255,0.8);
193
+ color: #333;
194
+ }
195
+ .foogallery.fg-transparent-overlays .fg-image-overlay {
196
+ background-color: transparent;
197
+ color: #fff;
198
+ }
199
+ /* Colors */
200
+ .fg-exif-light .fg-item.fg-item-exif .fg-image-wrap:after {
201
+ background-color: #FFF;
202
+ color: #333;
203
+ }
204
+ .fg-exif-dark .fg-item.fg-item-exif .fg-image-wrap:after {
205
+ background-color: #333;
206
+ color: #FFF;
207
+ }
208
+
209
+ /* Rounded Corners */
210
+ .fg-exif-rounded .fg-item.fg-item-exif .fg-image-wrap:after {
211
+ border-radius: 3px;
212
+ }
213
+
214
+ /* Positions ~ Top, Right, Bottom & Left */
215
+ .fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after,
216
+ .fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after,
217
+ .fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after,
218
+ .fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after {
219
+ display: inline-block;
220
+ position: absolute;
221
+ content: 'EXIF';
222
+ font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
223
+ font-size: 11px;
224
+ line-height: 10px;
225
+ padding: 3px 4px;
226
+ z-index: 7;
227
+ }
228
+ .fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after {
229
+ bottom: 5px;
230
+ right: 5px;
231
+ }
232
+ .fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after {
233
+ bottom: 5px;
234
+ left: 5px;
235
+ }
236
+ .fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after {
237
+ top: 5px;
238
+ right: 5px;
239
+ }
240
+ .fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after {
241
+ top: 5px;
242
+ left: 5px;
243
+ }
244
+ /* Border Size */
245
+ .foogallery.fg-border-thin .fg-item-inner {
246
+ border-width: 4px;
247
+ }
248
+ .foogallery.fg-border-medium .fg-item-inner {
249
+ border-width: 10px;
250
+ }
251
+ .foogallery.fg-border-thick .fg-item-inner {
252
+ border-width: 16px;
253
+ }
254
+ /* Drop Shadows */
255
+ .foogallery.fg-light.fg-shadow-outline .fg-item-inner {
256
+ box-shadow: 0 0 0 1px #ddd;
257
+ }
258
+ .foogallery.fg-dark.fg-shadow-outline .fg-item-inner {
259
+ box-shadow: 0 0 0 1px #222;
260
+ }
261
+ .foogallery.fg-light.fg-shadow-small .fg-item-inner,
262
+ .foogallery.fg-dark.fg-shadow-small .fg-item-inner {
263
+ box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.5);
264
+ }
265
+ .foogallery.fg-light.fg-shadow-medium .fg-item-inner,
266
+ .foogallery.fg-dark.fg-shadow-medium .fg-item-inner {
267
+ box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.5);
268
+ }
269
+ .foogallery.fg-light.fg-shadow-large .fg-item-inner,
270
+ .foogallery.fg-dark.fg-shadow-large .fg-item-inner {
271
+ box-shadow: 0 1px 16px 0 rgba(0, 0, 0, 0.5);
272
+ }
273
+ /* Inset Shadows */
274
+ .foogallery.fg-shadow-inset-small .fg-thumb:after,
275
+ .foogallery.fg-shadow-inset-medium .fg-thumb:after,
276
+ .foogallery.fg-shadow-inset-large .fg-thumb:after {
277
+ display: block;
278
+ content: "";
279
+ position: absolute;
280
+ top: 0;
281
+ left: 0;
282
+ right: 0;
283
+ bottom: 0;
284
+ z-index: 7;
285
+ }
286
+ .foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after,
287
+ .foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after {
288
+ box-shadow: inset 0 1px 4px 0 rgba(0,0,0,0.3);
289
+ }
290
+ .foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after,
291
+ .foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after {
292
+ box-shadow: inset 0 1px 10px 0 rgba(0,0,0,0.3);
293
+ }
294
+ .foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after,
295
+ .foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after {
296
+ box-shadow: inset 0 1px 16px 0 rgba(0,0,0,0.3);
297
+ }
298
+
299
+ .foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after,
300
+ .foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,
301
+ .foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after {
302
+ border-radius: 50%;
303
+ }
304
+ /* Rounded Corners */
305
+ .foogallery.fg-round-small .fg-item,
306
+ .foogallery.fg-round-small .fg-item-inner {
307
+ border-radius: 5px;
308
+ }
309
+ .foogallery.fg-round-medium .fg-item,
310
+ .foogallery.fg-round-medium .fg-item-inner {
311
+ border-radius: 10px;
312
+ }
313
+ .foogallery.fg-round-large .fg-item,
314
+ .foogallery.fg-round-large .fg-item-inner {
315
+ border-radius: 15px;
316
+ }
317
+ .foogallery.fg-round-full .fg-item,
318
+ .foogallery.fg-round-full .fg-item-inner {
319
+ border-radius: 50%;
320
+ }
321
+ /* Loader Styles */
322
+ .foogallery .fg-loader {
323
+ position: absolute;
324
+ top: 50%;
325
+ left: 50%;
326
+ margin-top: -0.5em;
327
+ margin-left: -0.5em;
328
+ width: 1em;
329
+ height: 1em;
330
+ font-size: 5px;
331
+ visibility: hidden;
332
+ opacity: 0;
333
+ pointer-events: none;
334
+ }
335
+
336
+ .foogallery .fg-loading .fg-loader {
337
+ visibility: visible;
338
+ opacity: 1;
339
+ }
340
+ .fg-loading-default .fg-loader {
341
+ border-radius: 50%;
342
+ text-indent: -9999em;
343
+ box-shadow: 0 -2.6em 0 0 rgba(130, 130, 130, 1),
344
+ 1.8em -1.8em 0 0 rgba(130, 130, 130, 0.2),
345
+ 2.5em 0 0 0 rgba(130, 130, 130, 0.2),
346
+ 1.75em 1.75em 0 0 rgba(130, 130, 130, 0.2),
347
+ 0 2.5em 0 0 rgba(130, 130, 130, 0.2),
348
+ -1.8em 1.8em 0 0 rgba(130, 130, 130, 0.2),
349
+ -2.6em 0 0 0 rgba(130, 130, 130, 0.5),
350
+ -1.8em -1.8em 0 0 rgba(130, 130, 130, 0.7);
351
+ -webkit-animation: loading-default 1.1s infinite paused steps(8, start);
352
+ animation: loading-default 1.1s infinite paused steps(8, start);
353
+ }
354
+ .fg-loading-default .fg-loading .fg-loader {
355
+ -webkit-animation-play-state: running;
356
+ animation-play-state: running;
357
+ }
358
+
359
+ @-webkit-keyframes loading-default {
360
+ 0% {
361
+ transform: rotate(0deg);
362
+ }
363
+ 100% {
364
+ transform: rotate(360deg);
365
+ }
366
+ }
367
+
368
+ @keyframes loading-default {
369
+ 0% {
370
+ transform: rotate(0deg);
371
+ }
372
+ 100% {
373
+ transform: rotate(360deg);
374
+ }
375
+ }
376
+ .fg-loading-bars .fg-loader,
377
+ .fg-loading-bars .fg-loader:before,
378
+ .fg-loading-bars .fg-loader:after {
379
+ background: rgba(130, 130, 130, 1);
380
+ width: 1em;
381
+ height: 4em;
382
+ -webkit-animation: loading-bars 1s infinite paused ease-in-out;
383
+ animation: loading-bars 1s infinite paused ease-in-out;
384
+ }
385
+ .fg-loading-bars .fg-loading .fg-loader,
386
+ .fg-loading-bars .fg-loading .fg-loader:before,
387
+ .fg-loading-bars .fg-loading .fg-loader:after {
388
+ -webkit-animation-play-state: running;
389
+ animation-play-state: running;
390
+ }
391
+ .fg-loading-bars .fg-loader {
392
+ color: rgba(130, 130, 130, 1);
393
+ text-indent: -9999em;
394
+ font-size: 4px;
395
+ margin-top: -2em;
396
+ margin-left: -0.5em;
397
+ -webkit-animation-delay: -0.16s;
398
+ animation-delay: -0.16s;
399
+ }
400
+ .fg-loading-bars .fg-loader:before,
401
+ .fg-loading-bars .fg-loader:after {
402
+ position: absolute;
403
+ top: 0;
404
+ content: '';
405
+ }
406
+ .fg-loading-bars .fg-loader:before {
407
+ left: -1.5em;
408
+ -webkit-animation-delay: -0.32s;
409
+ animation-delay: -0.32s;
410
+ }
411
+ .fg-loading-bars .fg-loader:after {
412
+ left: 1.5em;
413
+ }
414
+ @-webkit-keyframes loading-bars {
415
+ 0%,
416
+ 80%,
417
+ 100% {
418
+ box-shadow: 0 0;
419
+ height: 4em;
420
+ }
421
+ 40% {
422
+ box-shadow: 0 -2em;
423
+ height: 5em;
424
+ }
425
+ }
426
+ @keyframes loading-bars {
427
+ 0%,
428
+ 80%,
429
+ 100% {
430
+ box-shadow: 0 0;
431
+ height: 4em;
432
+ }
433
+ 40% {
434
+ box-shadow: 0 -2em;
435
+ height: 5em;
436
+ }
437
+ }
438
+ .fg-loading-trail .fg-loader {
439
+ color: #828282;
440
+ margin-top: 0;
441
+ margin-left: 0;
442
+ font-size: 20px;
443
+ text-indent: -9999em;
444
+ overflow: hidden;
445
+ border-radius: 50%;
446
+ -webkit-animation: loading-trail-1 1.7s infinite paused ease, loading-trail-2 1.7s infinite paused ease;
447
+ animation: loading-trail-1 1.7s infinite paused ease, loading-trail-2 1.7s infinite paused ease;
448
+ }
449
+ .fg-loading-trail .fg-loading .fg-loader {
450
+ -webkit-animation-play-state: running;
451
+ animation-play-state: running;
452
+ }
453
+
454
+ @-webkit-keyframes loading-trail-1 {
455
+ 0% {
456
+ box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
457
+ }
458
+ 5%,
459
+ 95% {
460
+ box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
461
+ }
462
+ 10%,
463
+ 59% {
464
+ box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em;
465
+ }
466
+ 20% {
467
+ box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em;
468
+ }
469
+ 38% {
470
+ box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em;
471
+ }
472
+ 100% {
473
+ box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
474
+ }
475
+ }
476
+ @keyframes loading-trail-1 {
477
+ 0% {
478
+ box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
479
+ }
480
+ 5%,
481
+ 95% {
482
+ box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
483
+ }
484
+ 10%,
485
+ 59% {
486
+ box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em;
487
+ }
488
+ 20% {
489
+ box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em;
490
+ }
491
+ 38% {
492
+ box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em;
493
+ }
494
+ 100% {
495
+ box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
496
+ }
497
+ }
498
+ @-webkit-keyframes loading-trail-2 {
499
+ 0% {
500
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(0deg);
501
+ transform: translateX(-50%) translateY(-50%) rotate(0deg);
502
+ }
503
+ 100% {
504
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(360deg);
505
+ transform: translateX(-50%) translateY(-50%) rotate(360deg);
506
+ }
507
+ }
508
+ @keyframes loading-trail-2 {
509
+ 0% {
510
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(0deg);
511
+ transform: translateX(-50%) translateY(-50%) rotate(0deg);
512
+ }
513
+ 100% {
514
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(360deg);
515
+ transform: translateX(-50%) translateY(-50%) rotate(360deg);
516
+ }
517
+ }
518
+ .fg-loading-pulse .fg-loader,
519
+ .fg-loading-pulse .fg-loader:before,
520
+ .fg-loading-pulse .fg-loader:after {
521
+ border-radius: 50%;
522
+ width: 2.5em;
523
+ height: 2.5em;
524
+ -webkit-animation: loading-pulse 1.8s infinite both paused ease-in-out;
525
+ animation: loading-pulse 1.8s infinite both paused ease-in-out;
526
+ }
527
+ .fg-loading-pulse .fg-loading .fg-loader,
528
+ .fg-loading-pulse .fg-loading .fg-loader:before,
529
+ .fg-loading-pulse .fg-loading .fg-loader:after {
530
+ -webkit-animation-play-state: running;
531
+ animation-play-state: running;
532
+ }
533
+
534
+ .fg-loading-pulse .fg-loader {
535
+ color: #828282;
536
+ font-size: 4px;
537
+ margin-top: -3.75em;
538
+ margin-left: -1.25em;
539
+ text-indent: -9999em;
540
+ -webkit-animation-delay: -0.16s;
541
+ animation-delay: -0.16s;
542
+ }
543
+ .fg-loading-pulse .fg-loader:before,
544
+ .fg-loading-pulse .fg-loader:after {
545
+ content: '';
546
+ position: absolute;
547
+ top: 0;
548
+ }
549
+ .fg-loading-pulse .fg-loader:before {
550
+ left: -3.5em;
551
+ -webkit-animation-delay: -0.32s;
552
+ animation-delay: -0.32s;
553
+ }
554
+ .fg-loading-pulse .fg-loader:after {
555
+ left: 3.5em;
556
+ }
557
+ @-webkit-keyframes loading-pulse {
558
+ 0%,
559
+ 80%,
560
+ 100% {
561
+ box-shadow: 0 2.5em 0 -1.3em;
562
+ }
563
+ 40% {
564
+ box-shadow: 0 2.5em 0 0;
565
+ }
566
+ }
567
+ @keyframes loading-pulse {
568
+ 0%,
569
+ 80%,
570
+ 100% {
571
+ box-shadow: 0 2.5em 0 -1.3em;
572
+ }
573
+ 40% {
574
+ box-shadow: 0 2.5em 0 0;
575
+ }
576
+ }
577
+ .fg-loading-dots .fg-loader {
578
+ color: #828282;
579
+ font-size: 5px;
580
+ border-radius: 50%;
581
+ text-indent: -9999em;
582
+ -webkit-animation: loading-dots 1.3s infinite paused linear;
583
+ animation: loading-dots 1.3s infinite paused linear;
584
+ }
585
+ .fg-loading-dots .fg-loading .fg-loader {
586
+ -webkit-animation-play-state: running;
587
+ animation-play-state: running;
588
+ }
589
+
590
+ @-webkit-keyframes loading-dots {
591
+ 0%,
592
+ 100% {
593
+ box-shadow: 0 -3em 0 0.2em, 2em -2em 0 0em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 0;
594
+ }
595
+ 12.5% {
596
+ box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
597
+ }
598
+ 25% {
599
+ box-shadow: 0 -3em 0 -0.5em, 2em -2em 0 0, 3em 0 0 0.2em, 2em 2em 0 0, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
600
+ }
601
+ 37.5% {
602
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
603
+ }
604
+ 50% {
605
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
606
+ }
607
+ 62.5% {
608
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
609
+ }
610
+ 75% {
611
+ box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
612
+ }
613
+ 87.5% {
614
+ box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
615
+ }
616
+ }
617
+ @keyframes loading-dots {
618
+ 0%,
619
+ 100% {
620
+ box-shadow: 0 -3em 0 0.2em, 2em -2em 0 0em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 0;
621
+ }
622
+ 12.5% {
623
+ box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
624
+ }
625
+ 25% {
626
+ box-shadow: 0 -3em 0 -0.5em, 2em -2em 0 0, 3em 0 0 0.2em, 2em 2em 0 0, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
627
+ }
628
+ 37.5% {
629
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
630
+ }
631
+ 50% {
632
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
633
+ }
634
+ 62.5% {
635
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
636
+ }
637
+ 75% {
638
+ box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
639
+ }
640
+ 87.5% {
641
+ box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
642
+ }
643
+ }
644
+ .fg-loading-partial .fg-loader,
645
+ .fg-loading-partial .fg-loader:after {
646
+ border-radius: 50%;
647
+ width: 10em;
648
+ height: 10em;
649
+ }
650
+ .fg-loading-partial .fg-loader {
651
+ font-size: 4px;
652
+ text-indent: -9999em;
653
+ margin-top: 0;
654
+ margin-left: 0;
655
+ border-top: 1.1em solid rgba(130,130,130, 0.2);
656
+ border-right: 1.1em solid rgba(130,130,130, 0.2);
657
+ border-bottom: 1.1em solid rgba(130,130,130, 0.2);
658
+ border-left: 1.1em solid #828282;
659
+ -webkit-animation: loading-partial 1.1s infinite paused linear;
660
+ animation: loading-partial 1.1s infinite paused linear;
661
+ }
662
+ .fg-loading-partial .fg-loading .fg-loader {
663
+ -webkit-animation-play-state: running;
664
+ animation-play-state: running;
665
+ }
666
+
667
+ @-webkit-keyframes loading-partial {
668
+ 0% {
669
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(0deg);
670
+ transform: translateX(-50%) translateY(-50%) rotate(0deg);
671
+ }
672
+ 100% {
673
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(360deg);
674
+ transform: translateX(-50%) translateY(-50%) rotate(360deg);
675
+ }
676
+ }
677
+ @keyframes loading-partial {
678
+ 0% {
679
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(0deg);
680
+ transform: translateX(-50%) translateY(-50%) rotate(0deg);
681
+ }
682
+ 100% {
683
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(360deg);
684
+ transform: translateX(-50%) translateY(-50%) rotate(360deg);
685
+ }
686
+ }
687
+ /* Loaded Effects */
688
+ .foogallery.fg-loaded-fade-in .fg-item.fg-loaded,
689
+ .foogallery.fg-loaded-slide-up .fg-item.fg-loaded,
690
+ .foogallery.fg-loaded-slide-down .fg-item.fg-loaded,
691
+ .foogallery.fg-loaded-slide-left .fg-item.fg-loaded,
692
+ .foogallery.fg-loaded-slide-right .fg-item.fg-loaded,
693
+ .foogallery.fg-loaded-scale-up .fg-item.fg-loaded,
694
+ .foogallery.fg-loaded-swing-down .fg-item.fg-loaded,
695
+ .foogallery.fg-loaded-drop .fg-item.fg-loaded,
696
+ .foogallery.fg-loaded-fly .fg-item.fg-loaded,
697
+ .foogallery.fg-loaded-flip .fg-item.fg-loaded {
698
+ transition-timing-function: ease;
699
+ transition-duration: 650ms;
700
+ transition-property: background-color, transform;
701
+ }
702
+ .foogallery.fg-loaded-fade-in .fg-loaded .fg-item-inner,
703
+ .foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner,
704
+ .foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner,
705
+ .foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner,
706
+ .foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner,
707
+ .foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner,
708
+ .foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner,
709
+ .foogallery.fg-loaded-drop .fg-loaded .fg-item-inner,
710
+ .foogallery.fg-loaded-fly .fg-loaded .fg-item-inner,
711
+ .foogallery.fg-loaded-flip .fg-loaded .fg-item-inner {
712
+ transition-timing-function: ease;
713
+ transition-duration: 650ms;
714
+ }
715
+ /* Only apply the perspective once loaded otherwise transitions could take place behind other items*/
716
+ .foogallery.fg-loaded-swing-down .fg-item.fg-loaded,
717
+ .foogallery.fg-loaded-drop .fg-item.fg-loaded,
718
+ .foogallery.fg-loaded-fly .fg-item.fg-loaded,
719
+ .foogallery.fg-loaded-flip .fg-item.fg-loaded {
720
+ perspective: 1300px;
721
+ }
722
+ /* Drop */
723
+ .foogallery.fg-loaded-drop .fg-item-inner {
724
+ transition-property: visibility, opacity, transform;
725
+ transform-style: preserve-3d;
726
+ transform: translateZ(400px) translateY(100%) rotateX(-90deg);
727
+ }
728
+ .foogallery.fg-loaded-drop .fg-loaded .fg-item-inner {
729
+ transform: translateZ(0px) translateY(0px) rotateX(0deg);
730
+ }
731
+ /* Fade In */
732
+ .foogallery.fg-loaded-fade-in .fg-item-inner {
733
+ transition-property: visibility, opacity;
734
+ }
735
+ /* Flip */
736
+ .foogallery.fg-loaded-flip .fg-item-inner {
737
+ transition-property: visibility, opacity, transform;
738
+ backface-visibility: hidden;
739
+ transform-style: preserve-3d;
740
+ transform: rotateY(-180deg);
741
+ }
742
+ .foogallery.fg-loaded-flip .fg-loaded .fg-item-inner {
743
+ transform: rotateY(0deg);
744
+ }
745
+ /* Fly */
746
+ .foogallery.fg-loaded-fly .fg-item-inner {
747
+ transition-property: visibility, opacity, transform;
748
+ transform-style: preserve-3d;
749
+ transform-origin: 50% 50% -300px;
750
+ transform: rotateX(-180deg);
751
+ }
752
+ .foogallery.fg-loaded-fly .fg-loaded .fg-item-inner {
753
+ transform: rotateX(0deg);
754
+ }
755
+ /* Scale Up */
756
+ .foogallery.fg-loaded-scale-up .fg-item-inner {
757
+ transition-property: visibility, opacity, transform;
758
+ transform: scale(0.6);
759
+ }
760
+ .foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner {
761
+ transform: scale(1);
762
+ }
763
+ /* Slide Up */
764
+ .foogallery.fg-loaded-slide-up .fg-item-inner {
765
+ transition-property: visibility, opacity, transform;
766
+ transform: translateY(50%);
767
+ }
768
+ .foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner {
769
+ transform: translateY(0);
770
+ }
771
+ /* Slide Down */
772
+ .foogallery.fg-loaded-slide-down .fg-item-inner {
773
+ transition-property: visibility, opacity, transform;
774
+ transform: translateY(-50%);
775
+ }
776
+ .foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner {
777
+ transform: translateY(0);
778
+ }
779
+ /* Slide Left */
780
+ .foogallery.fg-loaded-slide-left .fg-item-inner {
781
+ transition-property: visibility, opacity, transform;
782
+ transform: translateX(50%);
783
+ }
784
+ .foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner {
785
+ transform: translateX(0);
786
+ }
787
+ /* Slide Right */
788
+ .foogallery.fg-loaded-slide-right .fg-item-inner {
789
+ transition-property: visibility, opacity, transform;
790
+ transform: translateX(-50%);
791
+ }
792
+ .foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner {
793
+ transform: translateX(0);
794
+ }
795
+ /* Swing Down */
796
+ .foogallery.fg-loaded-swing-down .fg-item-inner {
797
+ transition-property: visibility, opacity, transform;
798
+ transform-style: preserve-3d;
799
+ transform-origin: 0 0;
800
+ transform: rotateX(-80deg);
801
+ }
802
+ .foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner {
803
+ transform: rotateX(0deg);
804
+ }
805
+ /* Caption Styles */
806
+ .foogallery .fg-caption {
807
+ visibility: hidden;
808
+ opacity: 0;
809
+ position: absolute;
810
+ z-index: 8;
811
+ width: 100%;
812
+ max-height: 100%;
813
+ overflow: hidden;
814
+ font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
815
+ font-size: 13px;
816
+ font-weight: 400;
817
+ line-height: 1.3;
818
+ border: none;
819
+ text-align: center;
820
+ cursor: pointer;
821
+ margin: 0;
822
+ }
823
+ .foogallery .fg-caption a {
824
+ text-decoration: none;
825
+ }
826
+
827
+ .foogallery .fg-caption a:hover {
828
+ border-bottom: none;
829
+ }
830
+
831
+ .foogallery .fg-caption-title {
832
+ box-sizing: content-box;
833
+ white-space: nowrap;
834
+ overflow: hidden;
835
+ text-overflow: ellipsis;
836
+ font-size: 16px;
837
+ font-weight: 400;
838
+ padding: 0;
839
+ margin: 0.4em;
840
+ height: 1.3em;
841
+ min-height: 1.3em;
842
+ line-height: 1.3em;
843
+ }
844
+ .foogallery .fg-caption-desc {
845
+ padding: 0;
846
+ margin: 0.4em;
847
+ overflow: hidden;
848
+ height: 100%;
849
+ max-height: 100%;
850
+ }
851
+ .foogallery .fg-caption-title+.fg-caption-desc {
852
+ margin-top: 0;
853
+ }
854
+
855
+ .foogallery .fg-caption-buttons {
856
+ display: flex;
857
+ position: relative;
858
+ flex-direction: row;
859
+ flex-wrap: wrap;
860
+ align-items: center;
861
+ justify-content: center;
862
+ width: 100%;
863
+ padding: 5px;
864
+ margin: 0;
865
+ }
866
+
867
+ .foogallery .fg-caption-buttons > a {
868
+ display: inline-block;
869
+ position: relative;
870
+ padding: 0.4em 0.8em;
871
+ margin: 1px;
872
+ max-width: 100%;
873
+ font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
874
+ font-size: 12px;
875
+ font-weight: 400;
876
+ line-height: 1.42857143;
877
+ text-align: center;
878
+ white-space: nowrap;
879
+ vertical-align: middle;
880
+ cursor: pointer;
881
+ user-select: none;
882
+ background-image: none;
883
+ text-decoration: none!important;
884
+ border: 1px solid transparent;
885
+ border-radius: 4px;
886
+ box-shadow: none;
887
+ outline: none;
888
+ opacity: 1;
889
+ transition-timing-function: ease-out;
890
+ transition-duration: 0.3s;
891
+ transition-property: color, opacity, border-color, background-color;
892
+ }
893
+
894
+ @media only screen and (max-width: 600px) {
895
+ .foogallery .fg-caption-buttons {
896
+ align-items: stretch;
897
+ }
898
+ .foogallery .fg-caption-buttons > a {
899
+ flex: 1;
900
+ }
901
+ }
902
+
903
+ /* Light */
904
+ .foogallery .fg-caption .fg-caption-buttons > a {
905
+ color: #333;
906
+ background-color: #fff;
907
+ border-color: #ccc;
908
+ }
909
+ .foogallery .fg-caption .fg-caption-buttons > a:not(.fg-disabled):hover {
910
+ color: #333;
911
+ background-color: #e6e6e6;
912
+ border-color: #adadad;
913
+ border-bottom: solid 1px;
914
+ }
915
+ .foogallery .fg-caption .fg-caption-buttons > a.fg-disabled {
916
+ color: #9d9d9d;
917
+ }
918
+ .foogallery .fg-caption .fg-caption-buttons > a.fg-disabled:hover {
919
+ border-bottom: solid 1px;
920
+ }
921
+
922
+ /* Dark */
923
+ .foogallery.fg-light-overlays .fg-caption .fg-caption-buttons > a {
924
+ color: #FFF;
925
+ background-color: #444;
926
+ border-color: #333;
927
+ }
928
+ .foogallery.fg-light-overlays .fg-caption .fg-caption-buttons > a:not(.fg-disabled):hover {
929
+ color: #9d9d9d;
930
+ background-color: #333;
931
+ border-color: #222;
932
+ }
933
+ .foogallery.fg-light-overlays .fg-caption .fg-caption-buttons > a.fg-disabled {
934
+ color: #9d9d9d;
935
+ }
936
+ .foogallery.fg-light-overlays .fg-caption .fg-caption-buttons > a.fg-disabled:hover {
937
+ border-bottom: solid 1px;
938
+ }
939
+
940
+ /* Always */
941
+ .foogallery.fg-caption-always .fg-item .fg-caption .fg-caption-inner:before {
942
+ display: none;
943
+ }
944
+ .foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption {
945
+ left: 0;
946
+ bottom: 0;
947
+ transition-timing-function: ease;
948
+ transition-duration: 300ms;
949
+ transition-property: visibility, opacity;
950
+ visibility: visible;
951
+ opacity: 1;
952
+ }
953
+ .foogallery.fg-caption-always .fg-caption {
954
+ text-align: left;
955
+ }
956
+
957
+ /* On Hover */
958
+ .foogallery.fg-caption-hover .fg-caption .fg-caption-inner {
959
+ display: flex;
960
+ flex-direction: column;
961
+ align-items: center;
962
+ justify-content: center;
963
+ width: 100%;
964
+ max-height: 100%;
965
+ position: absolute;
966
+ top: 50%;
967
+ left: 0;
968
+ transform: translateY(-50%);
969
+ padding: 0.4em;
970
+ }
971
+ .foogallery.fg-caption-hover .fg-item.fg-loaded .fg-image-overlay {
972
+ display: none;
973
+ }
974
+
975
+ /* Alignment */
976
+ .foogallery.fg-c-l .fg-caption,
977
+ .foogallery.fg-caption-always.fg-c-l .fg-caption {
978
+ text-align: left;
979
+ }
980
+ .foogallery.fg-c-c .fg-caption,
981
+ .foogallery.fg-caption-always.fg-c-c .fg-caption {
982
+ text-align: center;
983
+ }
984
+ .foogallery.fg-c-r .fg-caption,
985
+ .foogallery.fg-caption-always.fg-c-r .fg-caption {
986
+ text-align: right;
987
+ }
988
+ .foogallery.fg-c-j .fg-caption,
989
+ .foogallery.fg-caption-always.fg-c-j .fg-caption {
990
+ text-align: justify;
991
+ }
992
+ /* Icon & Overlay */
993
+ .foogallery .fg-image-overlay:before {
994
+ content: "";
995
+ display: block;
996
+ position: absolute;
997
+ top: 50%;
998
+ left: 50%;
999
+ transform: translateX(-50%) translateY(-50%);
1000
+ width: 32px;
1001
+ height: 32px;
1002
+ background-size: 32px 32px;
1003
+ background-position: center center;
1004
+ background-repeat: no-repeat;
1005
+ min-width: 32px;
1006
+ min-height: 32px;
1007
+ }
1008
+ .foogallery .fg-caption-inner:before {
1009
+ content: "";
1010
+ display: none;
1011
+ position: relative;
1012
+ width: 32px;
1013
+ height: 32px;
1014
+ margin: 0.4em;
1015
+ background-size: 32px 32px;
1016
+ vertical-align: middle;
1017
+ background-position: center center;
1018
+ background-repeat: no-repeat;
1019
+ min-width: 32px;
1020
+ min-height: 32px;
1021
+ }
1022
+ .foogallery.fg-hover-zoom:not(.fg-preset) .fg-caption-inner:before,
1023
+ .foogallery.fg-hover-zoom2:not(.fg-preset) .fg-caption-inner:before,
1024
+ .foogallery.fg-hover-zoom3:not(.fg-preset) .fg-caption-inner:before,
1025
+ .foogallery.fg-hover-plus:not(.fg-preset) .fg-caption-inner:before,
1026
+ .foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-caption-inner:before,
1027
+ .foogallery.fg-hover-eye:not(.fg-preset) .fg-caption-inner:before,
1028
+ .foogallery.fg-hover-external:not(.fg-preset) .fg-caption-inner:before,
1029
+ .foogallery.fg-hover-tint:not(.fg-preset) .fg-caption-inner:before,
1030
+ .foogallery.fg-hover-cart:not(.fg-preset) .fg-caption-inner:before,
1031
+ .foogallery.fg-video-default:not(.fg-preset) .fg-caption-inner:before,
1032
+ .foogallery.fg-video-1:not(.fg-preset) .fg-caption-inner:before,
1033
+ .foogallery.fg-video-2:not(.fg-preset) .fg-caption-inner:before,
1034
+ .foogallery.fg-video-3:not(.fg-preset) .fg-caption-inner:before,
1035
+ .foogallery.fg-video-4:not(.fg-preset) .fg-caption-inner:before {
1036
+ display: block;
1037
+ }
1038
+
1039
+ .foogallery.fg-hover-zoom:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1040
+ .foogallery.fg-hover-zoom2:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1041
+ .foogallery.fg-hover-zoom3:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1042
+ .foogallery.fg-hover-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1043
+ .foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1044
+ .foogallery.fg-hover-eye:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1045
+ .foogallery.fg-hover-external:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1046
+ .foogallery.fg-hover-tint:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1047
+ .foogallery.fg-hover-cart:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,
1048
+ .foogallery.fg-video-default:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,
1049
+ .foogallery.fg-video-1:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,
1050
+ .foogallery.fg-video-2:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,
1051
+ .foogallery.fg-video-3:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,
1052
+ .foogallery.fg-video-4:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay {
1053
+ visibility: visible;
1054
+ opacity: 1;
1055
+ }
1056
+ .foogallery.fg-video-sticky .fg-type-video.fg-loaded .fg-item-inner .fg-image-overlay {
1057
+ background-color: transparent;
1058
+ visibility: visible;
1059
+ opacity: 1;
1060
+ display: block;
1061
+ }
1062
+ .foogallery.fg-video-sticky .fg-type-video .fg-caption-inner:before {
1063
+ display: none;
1064
+ }
1065
+
1066
+ .foogallery.fg-hover-zoom .fg-image-overlay:before,
1067
+ .foogallery.fg-hover-zoom .fg-caption-inner:before {
1068
+ background-image: url('../img/icons.svg#zoom-light');
1069
+ }
1070
+ .foogallery.fg-light-overlays.fg-hover-zoom .fg-image-overlay:before,
1071
+ .foogallery.fg-light-overlays.fg-hover-zoom .fg-caption-inner:before {
1072
+ background-image: url('../img/icons.svg#zoom-dark');
1073
+ }
1074
+
1075
+ .foogallery.fg-hover-zoom2 .fg-image-overlay:before,
1076
+ .foogallery.fg-hover-zoom2 .fg-caption-inner:before {
1077
+ background-image: url('../img/icons.svg#zoom2-light');
1078
+ }
1079
+ .foogallery.fg-light-overlays.fg-hover-zoom2 .fg-image-overlay:before,
1080
+ .foogallery.fg-light-overlays.fg-hover-zoom2 .fg-caption-inner:before {
1081
+ background-image: url('../img/icons.svg#zoom2-dark');
1082
+ }
1083
+
1084
+ .foogallery.fg-hover-zoom3 .fg-image-overlay:before,
1085
+ .foogallery.fg-hover-zoom3 .fg-caption-inner:before {
1086
+ background-image: url('../img/icons.svg#zoom3-light');
1087
+ }
1088
+ .foogallery.fg-light-overlays.fg-hover-zoom3 .fg-image-overlay:before,
1089
+ .foogallery.fg-light-overlays.fg-hover-zoom3 .fg-caption-inner:before {
1090
+ background-image: url('../img/icons.svg#zoom3-dark');
1091
+ }
1092
+
1093
+ .foogallery.fg-hover-plus .fg-image-overlay:before,
1094
+ .foogallery.fg-hover-plus .fg-caption-inner:before {
1095
+ background-image: url('../img/icons.svg#plus-light');
1096
+ }
1097
+ .foogallery.fg-light-overlays.fg-hover-plus .fg-image-overlay:before,
1098
+ .foogallery.fg-light-overlays.fg-hover-plus .fg-caption-inner:before {
1099
+ background-image: url('../img/icons.svg#plus-dark');
1100
+ }
1101
+
1102
+ .foogallery.fg-hover-circle-plus .fg-image-overlay:before,
1103
+ .foogallery.fg-hover-circle-plus .fg-caption-inner:before {
1104
+ background-image: url('../img/icons.svg#circle-plus-light');
1105
+ }
1106
+ .foogallery.fg-light-overlays.fg-hover-circle-plus .fg-image-overlay:before,
1107
+ .foogallery.fg-light-overlays.fg-hover-circle-plus .fg-caption-inner:before {
1108
+ background-image: url('../img/icons.svg#circle-plus-dark');
1109
+ }
1110
+
1111
+ .foogallery.fg-hover-eye .fg-image-overlay:before,
1112
+ .foogallery.fg-hover-eye .fg-caption-inner:before {
1113
+ background-image: url('../img/icons.svg#eye-light');
1114
+ }
1115
+ .foogallery.fg-light-overlays.fg-hover-eye .fg-image-overlay:before,
1116
+ .foogallery.fg-light-overlays.fg-hover-eye .fg-caption-inner:before {
1117
+ background-image: url('../img/icons.svg#eye-dark');
1118
+ }
1119
+
1120
+ .foogallery.fg-hover-external .fg-image-overlay:before,
1121
+ .foogallery.fg-hover-external .fg-caption-inner:before {
1122
+ background-image: url('../img/icons.svg#external-light');
1123
+ }
1124
+ .foogallery.fg-light-overlays.fg-hover-external .fg-image-overlay:before,
1125
+ .foogallery.fg-light-overlays.fg-hover-external .fg-caption-inner:before {
1126
+ background-image: url('../img/icons.svg#external-dark');
1127
+ }
1128
+
1129
+ .foogallery.fg-hover-cart .fg-image-overlay:before,
1130
+ .foogallery.fg-hover-cart .fg-caption-inner:before {
1131
+ background-image: url('../img/icons.svg#cart-light');
1132
+ }
1133
+ .foogallery.fg-light-overlays.fg-hover-cart .fg-image-overlay:before,
1134
+ .foogallery.fg-light-overlays.fg-hover-cart .fg-caption-inner:before {
1135
+ background-image: url('../img/icons.svg#cart-dark');
1136
+ }
1137
+
1138
+ .foogallery.fg-video-default .fg-type-video .fg-image-overlay:before,
1139
+ .foogallery.fg-video-default .fg-type-video .fg-caption-inner:before {
1140
+ background-image: url('../img/icons.svg#video-default-light');
1141
+ }
1142
+ .foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-image-overlay:before,
1143
+ .foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-caption-inner:before {
1144
+ background-image: url('../img/icons.svg#video-default-dark');
1145
+ }
1146
+
1147
+ .foogallery.fg-video-1 .fg-type-video .fg-image-overlay:before,
1148
+ .foogallery.fg-video-1 .fg-type-video .fg-caption-inner:before {
1149
+ background-image: url('../img/icons.svg#video-1-light');
1150
+ }
1151
+ .foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-image-overlay:before,
1152
+ .foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-caption-inner:before {
1153
+ background-image: url('../img/icons.svg#video-1-dark');
1154
+ }
1155
+
1156
+ .foogallery.fg-video-2 .fg-type-video .fg-image-overlay:before,
1157
+ .foogallery.fg-video-2 .fg-type-video .fg-caption-inner:before {
1158
+ background-image: url('../img/icons.svg#video-2-light');
1159
+ }
1160
+ .foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-image-overlay:before,
1161
+ .foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-caption-inner:before {
1162
+ background-image: url('../img/icons.svg#video-2-dark');
1163
+ }
1164
+
1165
+ .foogallery.fg-video-3 .fg-type-video .fg-image-overlay:before,
1166
+ .foogallery.fg-video-3 .fg-type-video .fg-caption-inner:before {
1167
+ background-image: url('../img/icons.svg#video-3-light');
1168
+ }
1169
+ .foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-image-overlay:before,
1170
+ .foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-caption-inner:before {
1171
+ background-image: url('../img/icons.svg#video-3-dark');
1172
+ }
1173
+
1174
+ .foogallery.fg-video-4 .fg-type-video .fg-image-overlay:before,
1175
+ .foogallery.fg-video-4 .fg-type-video .fg-caption-inner:before {
1176
+ background-image: url('../img/icons.svg#video-4-light');
1177
+ }
1178
+ .foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-image-overlay:before,
1179
+ .foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-caption-inner:before {
1180
+ background-image: url('../img/icons.svg#video-4-dark');
1181
+ }
1182
+ /* Transitions */
1183
+ .foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,
1184
+ .foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,
1185
+ .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,
1186
+ .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,
1187
+ .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,
1188
+ .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,
1189
+ .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,
1190
+ .foogallery.fg-caption-hover.fg-hover-colorize .fg-loaded .fg-caption,
1191
+ .foogallery.fg-caption-hover.fg-hover-grayscale .fg-loaded .fg-caption,
1192
+ .foogallery.fg-caption-hover.fg-hover-scale .fg-loaded .fg-caption,
1193
+ .foogallery.fg-hover-instant .fg-loaded .fg-image-overlay,
1194
+ .foogallery.fg-hover-fade .fg-loaded .fg-image-overlay,
1195
+ .foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,
1196
+ .foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,
1197
+ .foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,
1198
+ .foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,
1199
+ .foogallery.fg-hover-push .fg-loaded .fg-thumb,
1200
+ .foogallery.fg-hover-colorize .fg-loaded .fg-image-overlay,
1201
+ .foogallery.fg-hover-grayscale .fg-loaded .fg-image-overlay,
1202
+ .foogallery.fg-hover-scale .fg-item.fg-loaded,
1203
+ .foogallery.fg-hover-scale .fg-loaded .fg-image-overlay,
1204
+ .foogallery.fg-hover-zoomed .fg-loaded .fg-image,
1205
+ .foogallery.fg-hover-colorize .fg-loaded .fg-image,
1206
+ .foogallery.fg-hover-grayscale .fg-loaded .fg-image {
1207
+ transition-timing-function: ease;
1208
+ transition-duration: 300ms;
1209
+ backface-visibility: hidden;
1210
+ }
1211
+ /* Colorize */
1212
+ .foogallery.fg-hover-colorize .fg-image {
1213
+ filter: grayscale(100%);
1214
+ transition-property: filter;
1215
+ }
1216
+ .foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image,
1217
+ .foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image {
1218
+ filter: grayscale(0%);
1219
+ }
1220
+ .foogallery.fg-hover-colorize .fg-image-overlay,
1221
+ .foogallery.fg-caption-hover.fg-hover-colorize .fg-caption {
1222
+ display: block;
1223
+ left: 0;
1224
+ top: 0;
1225
+ bottom: 0;
1226
+ transition-property: visibility, opacity, background-color;
1227
+ }
1228
+ .foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image-overlay,
1229
+ .foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,
1230
+ .foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image-overlay,
1231
+ .foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:focus-within .fg-caption {
1232
+ visibility: visible;
1233
+ opacity: 1;
1234
+ }
1235
+ /* Fade */
1236
+ .foogallery.fg-hover-fade .fg-loaded .fg-image-overlay,
1237
+ .foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption {
1238
+ display: block;
1239
+ left: 0;
1240
+ top: 0;
1241
+ bottom: 0;
1242
+ transition-property: visibility, opacity, background-color;
1243
+ }
1244
+ .foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1245
+ .foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,
1246
+ .foogallery.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1247
+ .foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-caption {
1248
+ visibility: visible;
1249
+ opacity: 1;
1250
+ }
1251
+ /* Grayscale */
1252
+ .foogallery.fg-hover-grayscale .fg-image {
1253
+ filter: grayscale(0%);
1254
+ transition-property: filter;
1255
+ }
1256
+ .foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image,
1257
+ .foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image {
1258
+ filter: grayscale(100%);
1259
+ }
1260
+ .foogallery.fg-hover-grayscale .fg-image-overlay,
1261
+ .foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption {
1262
+ display: block;
1263
+ left: 0;
1264
+ top: 0;
1265
+ bottom: 0;
1266
+ transition-property: visibility, opacity, background-color;
1267
+ }
1268
+ .foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image-overlay,
1269
+ .foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,
1270
+ .foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image-overlay,
1271
+ .foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:focus-within .fg-caption {
1272
+ visibility: visible;
1273
+ opacity: 1;
1274
+ }
1275
+ /* Instant */
1276
+ .foogallery.fg-hover-instant .fg-loaded .fg-image-overlay,
1277
+ .foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption {
1278
+ display: block;
1279
+ left: 0;
1280
+ top: 0;
1281
+ bottom: 0;
1282
+ transition-property: none;
1283
+ }
1284
+ .foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1285
+ .foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,
1286
+ .foogallery.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1287
+ .foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-caption {
1288
+ visibility: visible;
1289
+ opacity: 1;
1290
+ }
1291
+ /* Push */
1292
+ .foogallery.fg-hover-push .fg-loaded .fg-image-overlay,
1293
+ .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption {
1294
+ display: block;
1295
+ left: 0;
1296
+ top: 0;
1297
+ bottom: 0;
1298
+ transform: translateX(100%);
1299
+ visibility: visible;
1300
+ opacity: 1;
1301
+ }
1302
+ .foogallery.fg-hover-push .fg-loaded .fg-thumb,
1303
+ .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption {
1304
+ transition-property: transform;
1305
+ }
1306
+ .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption,
1307
+ .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:focus-within .fg-caption {
1308
+ transform: translateY(0);
1309
+ }
1310
+ .foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,
1311
+ .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,
1312
+ .foogallery.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,
1313
+ .foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus {
1314
+ transform: translateX(-100%);
1315
+ }
1316
+ /* Scale */
1317
+ .foogallery.fg-hover-scale .fg-item {
1318
+ transition-property: transform;
1319
+ z-index: 4;
1320
+ }
1321
+
1322
+ .foogallery.fg-hover-scale .fg-item:hover,
1323
+ .foogallery.fg-hover-scale .fg-item:focus-within {
1324
+ transform: scale(1.048);
1325
+ z-index: 10;
1326
+ }
1327
+ .foogallery.fg-hover-scale .fg-image-overlay,
1328
+ .foogallery.fg-caption-hover.fg-hover-scale .fg-caption {
1329
+ display: block;
1330
+ left: 0;
1331
+ top: 0;
1332
+ bottom: 0;
1333
+ transition-property: visibility, opacity, background-color;
1334
+ }
1335
+ .foogallery.fg-hover-scale .fg-item-inner:hover .fg-image-overlay,
1336
+ .foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,
1337
+ .foogallery.fg-hover-scale .fg-item-inner:focus-within .fg-image-overlay,
1338
+ .foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:focus-within .fg-caption {
1339
+ visibility: visible;
1340
+ opacity: 1;
1341
+ }
1342
+ /* Zoomed */
1343
+ .foogallery.fg-hover-zoomed .fg-image {
1344
+ transition-property: transform;
1345
+ z-index: 4;
1346
+ }
1347
+ .foogallery.fg-hover-zoomed .fg-item:hover .fg-image,
1348
+ .foogallery.fg-hover-zoomed .fg-item:focus-within .fg-image {
1349
+ transform: scale(1.15);
1350
+ }
1351
+ .foogallery.fg-hover-zoomed .fg-image-wrap {
1352
+ overflow: hidden;
1353
+ }
1354
+
1355
+ .foogallery.fg-hover-zoomed .fg-image-overlay,
1356
+ .foogallery.fg-caption-hover.fg-hover-zoomed .fg-caption {
1357
+ display: block;
1358
+ left: 0;
1359
+ top: 0;
1360
+ bottom: 0;
1361
+ transition-property: visibility, opacity, background-color;
1362
+ }
1363
+ .foogallery.fg-hover-zoomed .fg-item-inner:hover .fg-image-overlay,
1364
+ .foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:hover .fg-caption,
1365
+ .foogallery.fg-hover-zoomed .fg-item-inner:focus-within .fg-image-overlay,
1366
+ .foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:focus-within .fg-caption {
1367
+ visibility: visible;
1368
+ opacity: 1;
1369
+ }
1370
+ /* Slide */
1371
+ .foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,
1372
+ .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,
1373
+ .foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,
1374
+ .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,
1375
+ .foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,
1376
+ .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,
1377
+ .foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,
1378
+ .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption {
1379
+ display: block;
1380
+ left: 0;
1381
+ top: 0;
1382
+ bottom: 0;
1383
+ transition-property: transform, background-color, opacity, visibility;
1384
+ visibility: visible;
1385
+ opacity: 1;
1386
+ }
1387
+ .foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1388
+ .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-caption,
1389
+ .foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1390
+ .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,
1391
+ .foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1392
+ .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,
1393
+ .foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-image-overlay,
1394
+ .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-caption,
1395
+ .foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1396
+ .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-caption,
1397
+ .foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1398
+ .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-caption,
1399
+ .foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1400
+ .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-caption,
1401
+ .foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,
1402
+ .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-caption {
1403
+ transform: translateY(0) translateX(0);
1404
+ }
1405
+
1406
+
1407
+ /* Slide Up */
1408
+ .foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,
1409
+ .foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption {
1410
+ transform: translateY(100%);
1411
+ }
1412
+
1413
+ /* Slide Down */
1414
+ .foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,
1415
+ .foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption {
1416
+ transform: translateY(-100%);
1417
+ }
1418
+
1419
+ /* Slide Left */
1420
+ .foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,
1421
+ .foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption {
1422
+ transform: translateX(100%);
1423
+ }
1424
+
1425
+ /* Slide Right */
1426
+ .foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,
1427
+ .foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption {
1428
+ transform: translateX(-100%);
1429
+ }
1430
+ .fg-paging-container, .fg-paging-container *, .fg-paging-container *:before, .fg-paging-container *:after {
1431
+ box-sizing: border-box;
1432
+ }
1433
+ .fg-paging-container {
1434
+ display: block;
1435
+ padding: 15px;
1436
+ margin-top: 0!important;
1437
+ margin-bottom: 0!important;
1438
+ margin-left: auto;
1439
+ margin-right: auto;
1440
+ text-align: center;
1441
+ font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
1442
+ -webkit-user-select: none;
1443
+ -moz-user-select: none;
1444
+ -ms-user-select: none;
1445
+ user-select: none;
1446
+ }
1447
+ .fg-ph-dots:after {
1448
+ display: block;
1449
+ content: '';
1450
+ width: 0;
1451
+ height: 22px;
1452
+ }
1453
+
1454
+ .fg-paging-container .fg-dots,
1455
+ .fg-paging-container .fg-dot-item {
1456
+ display: inline-block;
1457
+ margin: 0;
1458
+ padding: 0;
1459
+ outline: none;
1460
+ list-style: none;
1461
+ }
1462
+ .fg-paging-container .fg-dot-item .fg-dot-link {
1463
+ display: inline-block;
1464
+ margin: 3px;
1465
+ font-weight: 400;
1466
+ line-height: 1.42857143;
1467
+ text-align: center;
1468
+ white-space: nowrap;
1469
+ vertical-align: middle;
1470
+ cursor: pointer;
1471
+ user-select: none;
1472
+ background-image: none;
1473
+ text-decoration: none;
1474
+ border: 1px solid transparent;
1475
+ position: relative;
1476
+ border-radius: 50%;
1477
+ padding: 0;
1478
+ font-size: 0;
1479
+ outline: none;
1480
+ color: transparent;
1481
+ box-shadow: none;
1482
+ }
1483
+ .fg-paging-container .fg-dot-item .fg-dot-link:before {
1484
+ content: "";
1485
+ background-color: transparent;
1486
+ border: 1px solid transparent;
1487
+ display: block;
1488
+ border-radius: 50%;
1489
+ width: 9px;
1490
+ height: 9px;
1491
+ padding: 0;
1492
+ margin: 2px;
1493
+ }
1494
+ .fg-paging-container .fg-dot-item .fg-dot-link:active,
1495
+ .fg-paging-container .fg-dot-item .fg-dot-link:hover,
1496
+ .fg-paging-container .fg-dot-item .fg-dot-link:focus {
1497
+ text-decoration: none;
1498
+ box-shadow: none;
1499
+ outline: none;
1500
+ }
1501
+ .fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,
1502
+ .fg-paging-container .fg-dot-item.fg-selected .fg-dot-link {
1503
+ cursor: not-allowed;
1504
+ pointer-events: none;
1505
+ }
1506
+ .fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link {
1507
+ cursor: not-allowed;
1508
+ pointer-events: none;
1509
+ outline: none;
1510
+ }
1511
+
1512
+ /* Light - Dots */
1513
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link,
1514
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before {
1515
+ transition-timing-function: ease-out;
1516
+ transition-duration: 0.3s;
1517
+ transition-property: color, border-color, background-color;
1518
+ }
1519
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link {
1520
+ background-color: #eee;
1521
+ border-color: #9d9d9d;
1522
+ }
1523
+ .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link {
1524
+ border-color: #888;
1525
+ }
1526
+ .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before,
1527
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,
1528
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before {
1529
+ background-color: #666;
1530
+ border-color: #888;
1531
+ }
1532
+ .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,
1533
+ .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover,
1534
+ .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus {
1535
+ background-color: #eee;
1536
+ border-color: #9d9d9d;
1537
+ opacity: 0.5;
1538
+ }
1539
+
1540
+ /* Dark - Dots */
1541
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,
1542
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before {
1543
+ transition-timing-function: ease-out;
1544
+ transition-duration: 0.3s;
1545
+ transition-property: color, border-color, background-color;
1546
+ }
1547
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link {
1548
+ background-color: #666;
1549
+ border-color: #333;
1550
+ }
1551
+ .fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link {
1552
+ border-color: #444;
1553
+ }
1554
+ .fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before,
1555
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,
1556
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before {
1557
+ background-color: #333;
1558
+ border-color: #444;
1559
+ }
1560
+ .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,
1561
+ .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover,
1562
+ .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus {
1563
+ background-color: #666;
1564
+ border-color: #333;
1565
+ opacity: 0.5;
1566
+ }
1567
+ .fg-paging-container, .fg-paging-container *, .fg-paging-container *:before, .fg-paging-container *:after {
1568
+ box-sizing: border-box;
1569
+ }
1570
+ .fg-paging-container {
1571
+ display: block;
1572
+ padding: 15px;
1573
+ margin-top: 0!important;
1574
+ margin-bottom: 0!important;
1575
+ margin-left: auto;
1576
+ margin-right: auto;
1577
+ text-align: center;
1578
+ font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
1579
+ -webkit-user-select: none;
1580
+ -moz-user-select: none;
1581
+ -ms-user-select: none;
1582
+ user-select: none;
1583
+ }
1584
+ .fg-ph-dots:after {
1585
+ display: block;
1586
+ content: '';
1587
+ width: 0;
1588
+ height: 22px;
1589
+ }
1590
+
1591
+ .fg-paging-container .fg-dots,
1592
+ .fg-paging-container .fg-dot-item {
1593
+ display: inline-block;
1594
+ margin: 0;
1595
+ padding: 0;
1596
+ outline: none;
1597
+ list-style: none;
1598
+ }
1599
+ .fg-paging-container .fg-dot-item .fg-dot-link {
1600
+ display: inline-block;
1601
+ margin: 3px;
1602
+ font-weight: 400;
1603
+ line-height: 1.42857143;
1604
+ text-align: center;
1605
+ white-space: nowrap;
1606
+ vertical-align: middle;
1607
+ cursor: pointer;
1608
+ user-select: none;
1609
+ background-image: none;
1610
+ text-decoration: none;
1611
+ border: 1px solid transparent;
1612
+ position: relative;
1613
+ border-radius: 50%;
1614
+ padding: 0;
1615
+ font-size: 0;
1616
+ outline: none;
1617
+ color: transparent;
1618
+ box-shadow: none;
1619
+ }
1620
+ .fg-paging-container .fg-dot-item .fg-dot-link:before {
1621
+ content: "";
1622
+ background-color: transparent;
1623
+ border: 1px solid transparent;
1624
+ display: block;
1625
+ border-radius: 50%;
1626
+ width: 9px;
1627
+ height: 9px;
1628
+ padding: 0;
1629
+ margin: 2px;
1630
+ }
1631
+ .fg-paging-container .fg-dot-item .fg-dot-link:active,
1632
+ .fg-paging-container .fg-dot-item .fg-dot-link:hover,
1633
+ .fg-paging-container .fg-dot-item .fg-dot-link:focus {
1634
+ text-decoration: none;
1635
+ box-shadow: none;
1636
+ outline: none;
1637
+ }
1638
+ .fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,
1639
+ .fg-paging-container .fg-dot-item.fg-selected .fg-dot-link {
1640
+ cursor: not-allowed;
1641
+ pointer-events: none;
1642
+ }
1643
+ .fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link {
1644
+ cursor: not-allowed;
1645
+ pointer-events: none;
1646
+ outline: none;
1647
+ }
1648
+
1649
+ /* Light - Dots */
1650
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link,
1651
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before {
1652
+ transition-timing-function: ease-out;
1653
+ transition-duration: 0.3s;
1654
+ transition-property: color, border-color, background-color;
1655
+ }
1656
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link {
1657
+ background-color: #eee;
1658
+ border-color: #9d9d9d;
1659
+ }
1660
+ .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link {
1661
+ border-color: #888;
1662
+ }
1663
+ .fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before,
1664
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,
1665
+ .fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before {
1666
+ background-color: #666;
1667
+ border-color: #888;
1668
+ }
1669
+ .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,
1670
+ .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover,
1671
+ .fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus {
1672
+ background-color: #eee;
1673
+ border-color: #9d9d9d;
1674
+ opacity: 0.5;
1675
+ }
1676
+
1677
+ /* Dark - Dots */
1678
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,
1679
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before {
1680
+ transition-timing-function: ease-out;
1681
+ transition-duration: 0.3s;
1682
+ transition-property: color, border-color, background-color;
1683
+ }
1684
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link {
1685
+ background-color: #666;
1686
+ border-color: #333;
1687
+ }
1688
+ .fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link {
1689
+ border-color: #444;
1690
+ }
1691
+ .fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before,
1692
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,
1693
+ .fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before {
1694
+ background-color: #333;
1695
+ border-color: #444;
1696
+ }
1697
+ .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,
1698
+ .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover,
1699
+ .fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus {
1700
+ background-color: #666;
1701
+ border-color: #333;
1702
+ opacity: 0.5;
1703
+ }
1704
+ /* Base styles */
1705
+ .fg-default:after {
1706
+ content: '';
1707
+ display: block;
1708
+ clear: both;
1709
+ }
1710
+
1711
+ .fg-default .fg-item {
1712
+ display: inline-block;
1713
+ vertical-align: top;
1714
+ max-width: 100%;
1715
+ }
1716
+ .fg-default .fg-item-inner,
1717
+ .fg-default .fg-thumb {
1718
+ display: block;
1719
+ vertical-align: top;
1720
+ max-width: 100%;
1721
+ }
1722
+
1723
+ .fg-default .fg-image {
1724
+ border-radius: 0;
1725
+ display: block;
1726
+ max-width: 100%;
1727
+ height: auto;
1728
+ margin: 0;
1729
+ padding: 0;
1730
+ }
1731
+
1732
+ /* Horizontal alignment */
1733
+ .fg-default .fg-image {
1734
+ vertical-align: top;
1735
+ }
1736
+
1737
+ .fg-default.fg-left {
1738
+ text-align: left;
1739
+ }
1740
+
1741
+ .fg-default.fg-center {
1742
+ text-align: center;
1743
+ }
1744
+
1745
+ .fg-default.fg-right {
1746
+ text-align: right;
1747
+ }
1748
+
1749
+ /* Gutter widths */
1750
+ .fg-default.fg-gutter-5 {
1751
+ padding-left: 5px;
1752
+ margin-bottom: -5px;
1753
+ }
1754
+ .fg-default.fg-gutter-5 .fg-item {
1755
+ margin-right: 5px;
1756
+ margin-bottom: 5px;
1757
+ }
1758
+
1759
+ .fg-default.fg-gutter-10 {
1760
+ padding-left: 10px;
1761
+ margin-bottom: -10px;
1762
+ }
1763
+ .fg-default.fg-gutter-10 .fg-item {
1764
+ margin-right: 10px;
1765
+ margin-bottom: 10px;
1766
+ }
1767
+
1768
+ .fg-default.fg-gutter-15 {
1769
+ padding-left: 15px;
1770
+ margin-bottom: -15px;
1771
+ }
1772
+ .fg-default.fg-gutter-15 .fg-item {
1773
+ margin-right: 15px;
1774
+ margin-bottom: 15px;
1775
+ }
1776
+
1777
+ .fg-default.fg-gutter-20 {
1778
+ padding-left: 20px;
1779
+ margin-bottom: -20px;
1780
+ }
1781
+ .fg-default.fg-gutter-20 .fg-item {
1782
+ margin-right: 20px;
1783
+ margin-bottom: 20px;
1784
+ }
1785
+
1786
+ .fg-default.fg-gutter-25 {
1787
+ padding-left: 25px;
1788
+ margin-bottom: -25px;
1789
+ }
1790
+ .fg-default.fg-gutter-25 .fg-item {
1791
+ margin-right: 25px;
1792
+ margin-bottom: 25px;
1793
+ }
1794
+
1795
+
1796
+ @media only screen and (max-width: 600px){
1797
+ .fg-default.fg-m-col1 .fg-image,
1798
+ .fg-default.fg-m-col2 .fg-image,
1799
+ .fg-default.fg-m-col3 .fg-image {
1800
+ width: 100%;
1801
+ }
1802
+ .fg-default.fg-m-col1.fg-gutter-5 .fg-item {
1803
+ width: calc(100% - 10px);
1804
+ min-width: calc(100% - 10px);
1805
+ max-width: calc(100% - 10px);
1806
+ }
1807
+ .fg-default.fg-m-col2.fg-gutter-5 .fg-item {
1808
+ width: calc(50% - 10px);
1809
+ min-width: calc(50% - 10px);
1810
+ max-width: calc(50% - 10px);
1811
+ }
1812
+ .fg-default.fg-m-col3.fg-gutter-5 .fg-item {
1813
+ width: calc(33.33% - 10px);
1814
+ min-width: calc(33.33% - 10px);
1815
+ max-width: calc(33.33% - 10px);
1816
+ }
1817
+
1818
+ .fg-default.fg-m-col1.fg-gutter-10 .fg-item {
1819
+ width: calc(100% - 20px);
1820
+ min-width: calc(100% - 20px);
1821
+ max-width: calc(100% - 20px);
1822
+ }
1823
+ .fg-default.fg-m-col2.fg-gutter-10 .fg-item {
1824
+ width: calc(50% - 20px);
1825
+ min-width: calc(50% - 20px);
1826
+ max-width: calc(50% - 20px);
1827
+ }
1828
+ .fg-default.fg-m-col3.fg-gutter-10 .fg-item {
1829
+ width: calc(33.33% - 20px);
1830
+ min-width: calc(33.33% - 20px);
1831
+ max-width: calc(33.33% - 20px);
1832
+ }
1833
+
1834
+ .fg-default.fg-m-col1.fg-gutter-15 .fg-item {
1835
+ width: calc(100% - 30px);
1836
+ min-width: calc(100% - 30px);
1837
+ max-width: calc(100% - 30px);
1838
+ }
1839
+ .fg-default.fg-m-col2.fg-gutter-15 .fg-item {
1840
+ width: calc(50% - 30px);
1841
+ min-width: calc(50% - 30px);
1842
+ max-width: calc(50% - 30px);
1843
+ }
1844
+ .fg-default.fg-m-col3.fg-gutter-15 .fg-item {
1845
+ width: calc(33.33% - 30px);
1846
+ min-width: calc(33.33% - 30px);
1847
+ max-width: calc(33.33% - 30px);
1848
+ }
1849
+
1850
+ .fg-default.fg-m-col1.fg-gutter-20 .fg-item {
1851
+ width: calc(100% - 40px);
1852
+ min-width: calc(100% - 40px);
1853
+ max-width: calc(100% - 40px);
1854
+ }
1855
+ .fg-default.fg-m-col2.fg-gutter-20 .fg-item {
1856
+ width: calc(50% - 40px);
1857
+ min-width: calc(50% - 40px);
1858
+ max-width: calc(50% - 40px);
1859
+ }
1860
+ .fg-default.fg-m-col3.fg-gutter-20 .fg-item {
1861
+ width: calc(33.33% - 40px);
1862
+ min-width: calc(33.33% - 40px);
1863
+ max-width: calc(33.33% - 40px);
1864
+ }
1865
+
1866
+ .fg-default.fg-m-col1.fg-gutter-25 .fg-item {
1867
+ width: calc(100% - 50px);
1868
+ min-width: calc(100% - 50px);
1869
+ max-width: calc(100% - 50px);
1870
+ }
1871
+ .fg-default.fg-m-col2.fg-gutter-25 .fg-item {
1872
+ width: calc(50% - 50px);
1873
+ min-width: calc(50% - 50px);
1874
+ max-width: calc(50% - 50px);
1875
+ }
1876
+ .fg-default.fg-m-col3.fg-gutter-25 .fg-item {
1877
+ width: calc(33.33% - 50px);
1878
+ min-width: calc(33.33% - 50px);
1879
+ max-width: calc(33.33% - 50px);
1880
+ }
1881
+ }
1882
+ /* Base styles */
1883
+ .fg-masonry * {
1884
+ box-sizing: border-box;
1885
+ }
1886
+ .foogallery.fg-masonry {
1887
+ margin: 0 auto;
1888
+ text-align: center;
1889
+ }
1890
+ .fg-masonry .fg-thumb {
1891
+ display: block;
1892
+ }
1893
+ .fg-masonry.fg-fixed .fg-item,
1894
+ .fg-masonry.fg-fixed .fg-image,
1895
+ .fg-masonry.fg-fixed .fg-column-width {
1896
+ max-width: 100%;
1897
+ }
1898
+
1899
+ .fg-masonry .fg-column-width {
1900
+ display: inline-block;
1901
+ border: solid 0 transparent;
1902
+ }
1903
+ .fg-masonry .fg-column-width,
1904
+ .fg-masonry .fg-gutter-width {
1905
+ position: absolute;
1906
+ height: 0;
1907
+ visibility: hidden;
1908
+ opacity: 0;
1909
+ pointer-events: none;
1910
+ }
1911
+
1912
+ .fg-masonry.fg-fixed .fg-item .fg-image,
1913
+ .fg-masonry.fg-col6 .fg-item .fg-image,
1914
+ .fg-masonry.fg-col5 .fg-item .fg-image,
1915
+ .fg-masonry.fg-col4 .fg-item .fg-image,
1916
+ .fg-masonry.fg-col3 .fg-item .fg-image,
1917
+ .fg-masonry.fg-col2 .fg-item .fg-image {
1918
+ width: 100%;
1919
+ height: auto;
1920
+ max-width: 100%;
1921
+ }
1922
+
1923
+ .fg-masonry .fg-item {
1924
+ line-height: 0;
1925
+ font-size: 0;
1926
+ vertical-align: top;
1927
+ }
1928
+
1929
+ /* 2 column layouts */
1930
+ /* 2 column layout - normal gutter */
1931
+ .fg-masonry.fg-col2 .fg-item { margin-bottom: 1%; width: 49.5%; }
1932
+ .fg-masonry.fg-col2 .fg-column-width { width: 49.5%; }
1933
+ .fg-masonry.fg-col2 .fg-gutter-width { width: 1%; }
1934
+
1935
+ /* 2 column layout - no gutter */
1936
+ .fg-masonry.fg-col2.fg-gutter-none .fg-item { margin-bottom: 0; width: 50%; }
1937
+ .fg-masonry.fg-col2.fg-gutter-none .fg-column-width { width: 50%; }
1938
+ .fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width { width: 0; }
1939
+
1940
+ /* 2 column layout - large gutter */
1941
+ .fg-masonry.fg-col2.fg-gutter-large .fg-item { margin-bottom: 3%; width: 48.5%; }
1942
+ .fg-masonry.fg-col2.fg-gutter-large .fg-column-width { width: 48.5%; }
1943
+ .fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width { width: 3%; }
1944
+
1945
+ /* 3 column layouts */
1946
+ /* 3 column layout - normal gutter */
1947
+ .fg-masonry.fg-col3 .fg-item { margin-bottom: 1%; width: 32.66%; }
1948
+ .fg-masonry.fg-col3 .fg-column-width { width: 32.66%; }
1949
+ .fg-masonry.fg-col3 .fg-gutter-width { width: 1%; }
1950
+
1951
+ /* 3 column layout - no gutter */
1952
+ .fg-masonry.fg-col3.fg-gutter-none .fg-item { margin-bottom: 0; width: 33.33%; }
1953
+ .fg-masonry.fg-col3.fg-gutter-none .fg-column-width { width: 33.33%; }
1954
+ .fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width { width: 0; }
1955
+
1956
+ /* 3 column layout - large gutter */
1957
+ .fg-masonry.fg-col3.fg-gutter-large .fg-item { margin-bottom: 3%; width: 31.33%; }
1958
+ .fg-masonry.fg-col3.fg-gutter-large .fg-column-width { width: 31.33%; }
1959
+ .fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width { width: 3%; }
1960
+
1961
+ /* 4 column layouts */
1962
+ /* 4 column layout - normal gutter */
1963
+ .fg-masonry.fg-col4 .fg-item { margin-bottom: 1%; width: 24.25%; }
1964
+ .fg-masonry.fg-col4 .fg-column-width { width: 24.25%; }
1965
+ .fg-masonry.fg-col4 .fg-gutter-width { width: 1%; }
1966
+
1967
+ /* 4 column layout - no gutter */
1968
+ .fg-masonry.fg-col4.fg-gutter-none .fg-item { margin-bottom: 0; width: 25%; }
1969
+ .fg-masonry.fg-col4.fg-gutter-none .fg-column-width { width: 25%; }
1970
+ .fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width { width: 0; }
1971
+
1972
+ /* 4 column layout - large gutter */
1973
+ .fg-masonry.fg-col4.fg-gutter-large .fg-item { margin-bottom: 3%; width: 22.75%; }
1974
+ .fg-masonry.fg-col4.fg-gutter-large .fg-column-width { width: 22.75%; }
1975
+ .fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width { width: 3%; }
1976
+
1977
+ /* 5 column layouts */
1978
+ /* 5 column layout - normal gutter */
1979
+ .fg-masonry.fg-col5 .fg-item { margin-bottom: 1%; width: 19.2%; }
1980
+ .fg-masonry.fg-col5 .fg-column-width { width: 19.2%; }
1981
+ .fg-masonry.fg-col5 .fg-gutter-width { width: 1%; }
1982
+
1983
+ /* 5 column layout - no gutter */
1984
+ .fg-masonry.fg-col5.fg-gutter-none .fg-item { margin-bottom: 0; width: 20%; }
1985
+ .fg-masonry.fg-col5.fg-gutter-none .fg-column-width { width: 20%; }
1986
+ .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width { width: 0; }
1987
+
1988
+ /* 5 column layout - large gutter */
1989
+ .fg-masonry.fg-col5.fg-gutter-large .fg-item { margin-bottom: 3%; width: 17.6%; }
1990
+ .fg-masonry.fg-col5.fg-gutter-large .fg-column-width { width: 17.6%; }
1991
+ .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width { width: 3%; }
1992
+
1993
+ /* 6 column layouts */
1994
+ /* 6 column layout - normal gutter */
1995
+ .fg-masonry.fg-col6 .fg-item { margin-bottom: 1%; width: 15.83%; }
1996
+ .fg-masonry.fg-col6 .fg-column-width { width: 15.83%; }
1997
+ .fg-masonry.fg-col6 .fg-gutter-width { width: 1%; }
1998
+
1999
+ /* 6 column layout - no gutter */
2000
+ .fg-masonry.fg-col6.fg-gutter-none .fg-item { margin-bottom: 0; width: 16.66%; }
2001
+ .fg-masonry.fg-col6.fg-gutter-none .fg-column-width { width: 16.66%; }
2002
+ .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width { width: 0; }
2003
+
2004
+ /* 6 column layout - large gutter */
2005
+ .fg-masonry.fg-col6.fg-gutter-large .fg-item { margin-bottom: 3%; width: 14.16%; }
2006
+ .fg-masonry.fg-col6.fg-gutter-large .fg-column-width { width: 14.16%; }
2007
+ .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width { width: 3%; }
2008
+
2009
+ /* Force 5 column layout < 1280px */
2010
+ @media screen and (max-width: 1280px) {
2011
+ /* default gutter */
2012
+ .fg-masonry.fg-col6 .fg-item { margin-bottom: 1%; width: 19.2%; }
2013
+ .fg-masonry.fg-col6 .fg-column-width { width: 19.2%; }
2014
+ .fg-masonry.fg-col6 .fg-gutter-width { width: 1%; }
2015
+
2016
+ /* no gutter */
2017
+ .fg-masonry.fg-col6.fg-gutter-none .fg-item { margin-bottom: 0; width: 20%; }
2018
+ .fg-masonry.fg-col6.fg-gutter-none .fg-column-width { width: 20%; }
2019
+ .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width { width: 0; }
2020
+
2021
+ /* large gutter */
2022
+ .fg-masonry.fg-col6.fg-gutter-large .fg-item { margin-bottom: 3%; width: 17.6%; }
2023
+ .fg-masonry.fg-col6.fg-gutter-large .fg-column-width { width: 17.6%; }
2024
+ .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width { width: 3%; }
2025
+ }
2026
+
2027
+ /* Force 4 column layout < 1024px */
2028
+ @media screen and (max-width: 1024px) {
2029
+ /* default gutter */
2030
+ .fg-masonry.fg-col6 .fg-item,
2031
+ .fg-masonry.fg-col5 .fg-item { margin-bottom: 1%; width: 24.25%; }
2032
+ .fg-masonry.fg-col6 .fg-column-width,
2033
+ .fg-masonry.fg-col5 .fg-column-width { width: 24.25%; }
2034
+ .fg-masonry.fg-col6 .fg-gutter-width,
2035
+ .fg-masonry.fg-col5 .fg-gutter-width { width: 1%; }
2036
+
2037
+ /* no gutter */
2038
+ .fg-masonry.fg-col6.fg-gutter-none .fg-item,
2039
+ .fg-masonry.fg-col5.fg-gutter-none .fg-item { margin-bottom: 0; width: 25%; }
2040
+ .fg-masonry.fg-col6.fg-gutter-none .fg-column-width,
2041
+ .fg-masonry.fg-col5.fg-gutter-none .fg-column-width { width: 25%; }
2042
+ .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width,
2043
+ .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width { width: 0; }
2044
+
2045
+ /* large gutter */
2046
+ .fg-masonry.fg-col6.fg-gutter-large .fg-item,
2047
+ .fg-masonry.fg-col5.fg-gutter-large .fg-item { margin-bottom: 3%; width: 22.75%; }
2048
+ .fg-masonry.fg-col6.fg-gutter-large .fg-column-width,
2049
+ .fg-masonry.fg-col5.fg-gutter-large .fg-column-width { width: 22.75%; }
2050
+ .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width,
2051
+ .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width { width: 3%; }
2052
+ }
2053
+
2054
+ /* Force 3 column layout < 720px */
2055
+ @media screen and (max-width: 720px) {
2056
+ /* default gutter */
2057
+ .fg-masonry.fg-col6 .fg-item,
2058
+ .fg-masonry.fg-col5 .fg-item,
2059
+ .fg-masonry.fg-col4 .fg-item { margin-bottom: 1%; width: 32.66%; }
2060
+ .fg-masonry.fg-col6 .fg-column-width,
2061
+ .fg-masonry.fg-col5 .fg-column-width,
2062
+ .fg-masonry.fg-col4 .fg-column-width { width: 32.66%; }
2063
+ .fg-masonry.fg-col6 .fg-gutter-width,
2064
+ .fg-masonry.fg-col5 .fg-gutter-width,
2065
+ .fg-masonry.fg-col4 .fg-gutter-width { width: 1%; }
2066
+
2067
+ /* no gutter */
2068
+ .fg-masonry.fg-col6.fg-gutter-none .fg-item,
2069
+ .fg-masonry.fg-col5.fg-gutter-none .fg-item,
2070
+ .fg-masonry.fg-col4.fg-gutter-none .fg-item { margin-bottom: 0; width: 33.33%; }
2071
+ .fg-masonry.fg-col6.fg-gutter-none .fg-column-width,
2072
+ .fg-masonry.fg-col5.fg-gutter-none .fg-column-width,
2073
+ .fg-masonry.fg-col4.fg-gutter-none .fg-column-width { width: 33.33%; }
2074
+ .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width,
2075
+ .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,
2076
+ .fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width { width: 0; }
2077
+
2078
+ /* large gutter */
2079
+ .fg-masonry.fg-col6.fg-gutter-large .fg-item,
2080
+ .fg-masonry.fg-col5.fg-gutter-large .fg-item,
2081
+ .fg-masonry.fg-col4.fg-gutter-large .fg-item { margin-bottom: 3%; width: 31.33%; }
2082
+ .fg-masonry.fg-col6.fg-gutter-large .fg-column-width,
2083
+ .fg-masonry.fg-col5.fg-gutter-large .fg-column-width,
2084
+ .fg-masonry.fg-col4.fg-gutter-large .fg-column-width { width: 31.33%; }
2085
+ .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width,
2086
+ .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,
2087
+ .fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width { width: 3%; }
2088
+
2089
+ }
2090
+
2091
+ /* Force 2 column layout < 480px */
2092
+ @media screen and (max-width: 480px) {
2093
+ /* default gutter */
2094
+ .fg-masonry.fg-col6 .fg-item,
2095
+ .fg-masonry.fg-col5 .fg-item,
2096
+ .fg-masonry.fg-col4 .fg-item,
2097
+ .fg-masonry.fg-col3 .fg-item { margin-bottom: 1%; width: 49.5%; }
2098
+ .fg-masonry.fg-col6 .fg-column-width,
2099
+ .fg-masonry.fg-col5 .fg-column-width,
2100
+ .fg-masonry.fg-col4 .fg-column-width,
2101
+ .fg-masonry.fg-col3 .fg-column-width { width: 49.5%; }
2102
+ .fg-masonry.fg-col6 .fg-gutter-width,
2103
+ .fg-masonry.fg-col5 .fg-gutter-width,
2104
+ .fg-masonry.fg-col4 .fg-gutter-width,
2105
+ .fg-masonry.fg-col3 .fg-gutter-width { width: 1%; }
2106
+
2107
+ /* no gutter */
2108
+ .fg-masonry.fg-col6.fg-gutter-none .fg-item,
2109
+ .fg-masonry.fg-col5.fg-gutter-none .fg-item,
2110
+ .fg-masonry.fg-col4.fg-gutter-none .fg-item,
2111
+ .fg-masonry.fg-col3.fg-gutter-none .fg-item { margin-bottom: 0; width: 50%; }
2112
+ .fg-masonry.fg-col6.fg-gutter-none .fg-column-width,
2113
+ .fg-masonry.fg-col5.fg-gutter-none .fg-column-width,
2114
+ .fg-masonry.fg-col4.fg-gutter-none .fg-column-width,
2115
+ .fg-masonry.fg-col3.fg-gutter-none .fg-column-width { width: 50%; }
2116
+ .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width,
2117
+ .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,
2118
+ .fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,
2119
+ .fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width { width: 0; }
2120
+
2121
+ /* large gutter */
2122
+ .fg-masonry.fg-col6.fg-gutter-large .fg-item,
2123
+ .fg-masonry.fg-col5.fg-gutter-large .fg-item,
2124
+ .fg-masonry.fg-col4.fg-gutter-large .fg-item,
2125
+ .fg-masonry.fg-col3.fg-gutter-large .fg-item { margin-bottom: 3%; width: 48.5%; }
2126
+ .fg-masonry.fg-col6.fg-gutter-large .fg-column-width,
2127
+ .fg-masonry.fg-col5.fg-gutter-large .fg-column-width,
2128
+ .fg-masonry.fg-col4.fg-gutter-large .fg-column-width,
2129
+ .fg-masonry.fg-col3.fg-gutter-large .fg-column-width { width: 48.5%; }
2130
+ .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width,
2131
+ .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,
2132
+ .fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,
2133
+ .fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width { width: 3%; }
2134
+ }
2135
+
2136
+ /* Force 1 column layout < 320px */
2137
+ @media screen and (max-width: 320px) {
2138
+ /* default gutter */
2139
+ .fg-masonry.fg-col6 .fg-item,
2140
+ .fg-masonry.fg-col5 .fg-item,
2141
+ .fg-masonry.fg-col4 .fg-item,
2142
+ .fg-masonry.fg-col3 .fg-item,
2143
+ .fg-masonry.fg-col2 .fg-item { margin-bottom: 1%; width: 100%; }
2144
+ .fg-masonry.fg-col6 .fg-column-width,
2145
+ .fg-masonry.fg-col5 .fg-column-width,
2146
+ .fg-masonry.fg-col4 .fg-column-width,
2147
+ .fg-masonry.fg-col3 .fg-column-width,
2148
+ .fg-masonry.fg-col2 .fg-column-width { width: 100%; }
2149
+ .fg-masonry.fg-col6 .fg-gutter-width,
2150
+ .fg-masonry.fg-col5 .fg-gutter-width,
2151
+ .fg-masonry.fg-col4 .fg-gutter-width,
2152
+ .fg-masonry.fg-col3 .fg-gutter-width,
2153
+ .fg-masonry.fg-col2 .fg-gutter-width { width: 0; }
2154
+
2155
+ /* no gutter */
2156
+ .fg-masonry.fg-col6.fg-gutter-none .fg-item,
2157
+ .fg-masonry.fg-col5.fg-gutter-none .fg-item,
2158
+ .fg-masonry.fg-col4.fg-gutter-none .fg-item,
2159
+ .fg-masonry.fg-col3.fg-gutter-none .fg-item,
2160
+ .fg-masonry.fg-col2.fg-gutter-none .fg-item { margin-bottom: 0; width: 100%; }
2161
+ .fg-masonry.fg-col6.fg-gutter-none .fg-column-width,
2162
+ .fg-masonry.fg-col5.fg-gutter-none .fg-column-width,
2163
+ .fg-masonry.fg-col4.fg-gutter-none .fg-column-width,
2164
+ .fg-masonry.fg-col3.fg-gutter-none .fg-column-width,
2165
+ .fg-masonry.fg-col2.fg-gutter-none .fg-column-width { width: 100%; }
2166
+ .fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width,
2167
+ .fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,
2168
+ .fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,
2169
+ .fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width,
2170
+ .fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width { width: 0; }
2171
+
2172
+ /* large gutter */
2173
+ .fg-masonry.fg-col6.fg-gutter-large .fg-item,
2174
+ .fg-masonry.fg-col5.fg-gutter-large .fg-item,
2175
+ .fg-masonry.fg-col4.fg-gutter-large .fg-item,
2176
+ .fg-masonry.fg-col3.fg-gutter-large .fg-item,
2177
+ .fg-masonry.fg-col2.fg-gutter-large .fg-item { margin-bottom: 3%; width: 100%; }
2178
+ .fg-masonry.fg-col6.fg-gutter-large .fg-column-width,
2179
+ .fg-masonry.fg-col5.fg-gutter-large .fg-column-width,
2180
+ .fg-masonry.fg-col4.fg-gutter-large .fg-column-width,
2181
+ .fg-masonry.fg-col3.fg-gutter-large .fg-column-width,
2182
+ .fg-masonry.fg-col2.fg-gutter-large .fg-column-width { width: 100%; }
2183
+ .fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width,
2184
+ .fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,
2185
+ .fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,
2186
+ .fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width,
2187
+ .fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width { width: 0; }
2188
+ }
2189
+
2190
+ /* Border Styles - We must apply width changing border styles to the fg-column-width element so that the plugin can correctly determine the item widths. */
2191
+ .foogallery.fg-border-thin .fg-column-width {
2192
+ border-width: 4px;
2193
+ }
2194
+ .foogallery.fg-border-medium .fg-column-width {
2195
+ border-width: 10px;
2196
+ }
2197
+ .foogallery.fg-border-thick .fg-column-width {
2198
+ border-width: 16px;
2199
+ }
2200
+
2201
+ /* Captions Bottom */
2202
+ .foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption {
2203
+ visibility: visible;
2204
+ opacity: 1;
2205
+ font-size: 13px;
2206
+ position: relative;
2207
+ display: block;
2208
+ top: auto;
2209
+ bottom: auto;
2210
+ left: auto;
2211
+ right: auto;
2212
+ width: auto;
2213
+ height: auto;
2214
+ text-transform: none;
2215
+ transform: none;
2216
+ transition: none;
2217
+ background-color: transparent;
2218
+ border-style: solid;
2219
+ border-color: transparent;
2220
+ text-align: left;
2221
+ }
2222
+ .foogallery.fg-masonry.fg-captions-bottom.fg-c-l .fg-item-inner .fg-caption {
2223
+ text-align: left;
2224
+ }
2225
+ .foogallery.fg-masonry.fg-captions-bottom.fg-c-c .fg-item-inner .fg-caption {
2226
+ text-align: center;
2227
+ }
2228
+ .foogallery.fg-masonry.fg-captions-bottom.fg-c-r .fg-item-inner .fg-caption {
2229
+ text-align: right;
2230
+ }
2231
+ .foogallery.fg-masonry.fg-captions-bottom.fg-c-j .fg-item-inner .fg-caption {
2232
+ text-align: justify;
2233
+ }
2234
+ .foogallery.fg-masonry.fg-captions-bottom .fg-item-inner:hover .fg-caption {
2235
+ transform: none;
2236
+ transition: none;
2237
+ }
2238
+ .foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner {
2239
+ display: block;
2240
+ position: relative;
2241
+ max-height: none;
2242
+ top: auto;
2243
+ bottom: auto;
2244
+ left: auto;
2245
+ right: auto;
2246
+ width: auto;
2247
+ height: auto;
2248
+ border: none;
2249
+ transform: none;
2250
+ transition: none;
2251
+ }
2252
+ .foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner:before {
2253
+ display: none;
2254
+ }
2255
+ .foogallery.fg-masonry.fg-captions-bottom.fg-caption-hover .fg-item-inner .fg-image-overlay {
2256
+ display: block;
2257
+ }
2258
+ .foogallery.fg-masonry.fg-captions-bottom.fg-caption-always .fg-item-inner:hover .fg-caption {
2259
+ visibility: visible;
2260
+ opacity: 1;
2261
+ }
2262
+
2263
+ .fg-masonry.fg-captions-bottom.fg-light .fg-caption,
2264
+ .fg-masonry.fg-captions-bottom.fg-dark .fg-caption {
2265
+ color: #828282;
2266
+ }
2267
+ .fg-masonry.fg-captions-bottom.fg-light .fg-caption a,
2268
+ .fg-masonry.fg-captions-bottom.fg-dark .fg-caption a {
2269
+ color: #828282;
2270
+ border-bottom: 1px solid #828282;
2271
+ }
2272
+ .fg-masonry.fg-captions-bottom.fg-light .fg-caption a:hover,
2273
+ .fg-masonry.fg-captions-bottom.fg-dark .fg-caption a:hover {
2274
+ border-bottom: none;
2275
+ }
2276
+ .fg-masonry.fg-captions-bottom.fg-light .fg-caption-title,
2277
+ .fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a {
2278
+ color: #222;
2279
+ }
2280
+ .fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title,
2281
+ .fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a {
2282
+ color: #FFF;
2283
+ }
2284
+ .fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a {
2285
+ border-bottom: 1px solid #222;
2286
+ }
2287
+ .fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a {
2288
+ border-bottom: 1px solid #FFF;
2289
+ }
2290
+
2291
+ /* Handle Border Sizing for Captions Below */
2292
+ .fg-masonry.fg-captions-bottom .fg-caption {
2293
+ border-width: 10px;
2294
+ }
2295
+ .fg-masonry.fg-captions-bottom .fg-caption-title+.fg-caption-desc {
2296
+ margin-top: 4px;
2297
+ }
2298
+ .fg-masonry.fg-captions-bottom.fg-border-thin .fg-caption {
2299
+ border-width: 10px 4px 4px 4px;
2300
+ }
2301
+ .fg-masonry.fg-captions-bottom.fg-border-medium .fg-caption {
2302
+ border-width: 10px 0 0 0;
2303
+ }
2304
+ .fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption {
2305
+ border-width: 16px 0 0 0;
2306
+ }
2307
+ .fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption-title+.fg-caption-desc {
2308
+ margin-top: 10px;
2309
+ }
2310
+
2311
+ /* Transparent Theme */
2312
+ .fg-masonry.fg-transparent .fg-item-inner {
2313
+ background-color: transparent;
2314
+ color: #333;
2315
+ border-color: transparent;
2316
+ }
2317
+
2318
+ /* Captions */
2319
+ .fg-masonry.fg-transparent .fg-caption {
2320
+ color: #7f7f7f;
2321
+ }
2322
+ .fg-masonry.fg-transparent.fg-captions-bottom .fg-caption {
2323
+ border-width: 0;
2324
+ border-top-width: 10px;
2325
+ border-bottom-width: 10px;
2326
+ }
2327
+ .fg-masonry.fg-transparent .fg-caption a {
2328
+ color: #7f7f7f;
2329
+ border-bottom: 1px solid #7f7f7f;
2330
+ }
2331
+ .fg-masonry.fg-transparent .fg-caption a:hover {
2332
+ border-bottom: none;
2333
+ }
2334
+ .fg-masonry.fg-transparent .fg-caption-title,
2335
+ .fg-masonry.fg-transparent .fg-caption-title a {
2336
+ color: #333;
2337
+ }
2338
+ .fg-masonry.fg-transparent .fg-caption-title a {
2339
+ border-bottom: 1px solid #333;
2340
+ }
2341
+
2342
+ /* Rounded Corners */
2343
+ .fg-masonry.fg-transparent.fg-round-full .fg-item,
2344
+ .fg-masonry.fg-transparent.fg-round-full .fg-item-inner {
2345
+ border-radius: 15px;
2346
+ }
2347
+ .fg-masonry.fg-transparent.fg-round-full .fg-image-wrap,
2348
+ .fg-masonry.fg-transparent.fg-round-full .fg-image-overlay,
2349
+ .fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after,
2350
+ .fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,
2351
+ .fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after {
2352
+ border-radius: 50%;
2353
+ overflow: hidden;
2354
+ }
2355
+
2356
+ .fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2357
+ .fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,
2358
+ .fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2359
+ .fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,
2360
+ .fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2361
+ .fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2362
+ overflow: hidden;
2363
+ }
2364
+ .fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2365
+ .fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2366
+ .fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2367
+ .fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2368
+ .fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2369
+ border-radius: 5px;
2370
+ }
2371
+ .fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2372
+ .fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2373
+ .fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2374
+ .fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2375
+ .fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2376
+ border-radius: 10px;
2377
+ }
2378
+ .fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2379
+ .fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2380
+ .fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2381
+ .fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2382
+ .fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2383
+ border-radius: 15px;
2384
+ }
2385
+
2386
+ /* Shadows */
2387
+ .fg-masonry.fg-transparent.fg-shadow-inset-small .fg-thumb:after {
2388
+ box-shadow: inset 0 1px 4px 0 rgba(0,0,0,0.3);
2389
+ }
2390
+ .fg-masonry.fg-transparent.fg-shadow-inset-medium .fg-thumb:after {
2391
+ box-shadow: inset 0 1px 10px 0 rgba(0,0,0,0.3);
2392
+ }
2393
+ .fg-masonry.fg-transparent.fg-shadow-inset-large .fg-thumb:after {
2394
+ box-shadow: inset 0 1px 16px 0 rgba(0,0,0,0.3);
2395
+ }
2396
+
2397
+ .fg-masonry.fg-transparent.fg-shadow-outline .fg-item-inner {
2398
+ box-shadow: 0 0 0 1px rgba(128, 128, 128, 0.5);
2399
+ }
2400
+ .fg-masonry.fg-transparent.fg-shadow-small .fg-item-inner {
2401
+ box-shadow: 0 1px 4px 0 rgba(128, 128, 128, 0.5);
2402
+ }
2403
+ .fg-masonry.fg-transparent.fg-shadow-medium .fg-item-inner {
2404
+ box-shadow: 0 1px 10px 0 rgba(128, 128, 128, 0.5);
2405
+ }
2406
+ .fg-masonry.fg-transparent.fg-shadow-large .fg-item-inner {
2407
+ box-shadow: 0 1px 16px 0 rgba(128, 128, 128, 0.5);
2408
+ }
2409
+ /* Base Styles */
2410
+ .fg-justified {
2411
+ box-sizing: border-box;
2412
+ position: relative;
2413
+ text-align: center;
2414
+ }
2415
+ .foogallery.fg-justified .fg-item {
2416
+ box-sizing: border-box;
2417
+ display: inline-block;
2418
+ margin: 0;
2419
+ padding: 0;
2420
+ }
2421
+ .foogallery.fg-justified .fg-item-inner,
2422
+ .foogallery.fg-justified .fg-thumb,
2423
+ .foogallery.fg-justified .fg-image {
2424
+ box-sizing: border-box;
2425
+ display: block;
2426
+ margin: 0;
2427
+ padding: 0;
2428
+ }
2429
+ .fg-justified .fg-item {
2430
+ visibility: visible;
2431
+ position: relative;
2432
+ }
2433
+ .fg-justified .fg-item-inner {
2434
+ position: relative;
2435
+ width: 100%;
2436
+ height: 100%;
2437
+ }
2438
+ .fg-justified .fg-thumb {
2439
+ position: relative;
2440
+ overflow: hidden;
2441
+ }
2442
+ .fg-justified .fg-image {
2443
+ z-index: 1;
2444
+ }
2445
+ .fg-justified .fg-item.fg-positioned .fg-thumb,
2446
+ .fg-justified .fg-item.fg-positioned .fg-image-wrap {
2447
+ width: 100%;
2448
+ height: 100%;
2449
+ }
2450
+ .fg-justified .fg-item.fg-positioned .fg-image {
2451
+ width: 100%!important;
2452
+ height: auto!important;
2453
+ min-height: 100%;
2454
+ }
2455
+ .fg-simple_portfolio {
2456
+ display: flex;
2457
+ flex-wrap: wrap;
2458
+ justify-content: center;
2459
+ align-items: stretch;
2460
+ align-content: center;
2461
+ }
2462
+ .fg-simple_portfolio .fg-item {
2463
+ position: relative;
2464
+ flex-grow: 0;
2465
+ flex-shrink: 0;
2466
+ flex-basis: auto;
2467
+ margin: 10px;
2468
+ max-width: 100%;
2469
+ }
2470
+ .fg-simple_portfolio .fg-item-inner {
2471
+ display: flex;
2472
+ flex-direction: column;
2473
+ margin: 0;
2474
+ height: 100%;
2475
+ }
2476
+ .fg-simple_portfolio.fg-captions-top .fg-item-inner {
2477
+ flex-direction: column-reverse;
2478
+ }
2479
+ .fg-simple_portfolio .fg-image {
2480
+ height: auto;
2481
+ width: 100%;
2482
+ }
2483
+
2484
+ /* Some badly written themes apply min-width:0 and min-height:0 to every element in the page which causes layout issues with flex. */
2485
+ .fg-simple_portfolio .fg-thumb {
2486
+ min-width: auto;
2487
+ min-height: auto;
2488
+ }
2489
+
2490
+ /* Reset captions for the portfolio */
2491
+ .foogallery.fg-simple_portfolio .fg-item-inner .fg-caption {
2492
+ visibility: visible;
2493
+ opacity: 1;
2494
+ font-size: 13px;
2495
+ position: relative;
2496
+ display: block;
2497
+ top: auto;
2498
+ bottom: auto;
2499
+ left: auto;
2500
+ right: auto;
2501
+ width: 100%;
2502
+ height: 100%;
2503
+ text-transform: none;
2504
+ transform: none;
2505
+ transition: none;
2506
+ background-color: transparent;
2507
+ border-style: solid;
2508
+ border-color: transparent;
2509
+ text-align: left;
2510
+ }
2511
+ .foogallery.fg-simple_portfolio.fg-c-l .fg-item-inner .fg-caption {
2512
+ text-align: left;
2513
+ }
2514
+ .foogallery.fg-simple_portfolio.fg-c-c .fg-item-inner .fg-caption {
2515
+ text-align: center;
2516
+ }
2517
+ .foogallery.fg-simple_portfolio.fg-c-r .fg-item-inner .fg-caption {
2518
+ text-align: right;
2519
+ }
2520
+ .foogallery.fg-simple_portfolio.fg-c-j .fg-item-inner .fg-caption {
2521
+ text-align: justify;
2522
+ }
2523
+ .foogallery.fg-simple_portfolio .fg-item-inner:hover .fg-caption {
2524
+ transform: none;
2525
+ transition: none;
2526
+ }
2527
+ .foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner {
2528
+ display: block;
2529
+ top: auto;
2530
+ bottom: auto;
2531
+ left: auto;
2532
+ right: auto;
2533
+ width: auto;
2534
+ height: auto;
2535
+ border: none;
2536
+ transform: none;
2537
+ transition: none;
2538
+ }
2539
+ .foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner:before {
2540
+ display: none;
2541
+ }
2542
+ .foogallery.fg-simple_portfolio.fg-caption-hover .fg-item-inner .fg-image-overlay {
2543
+ display: block;
2544
+ }
2545
+ .foogallery.fg-simple_portfolio.fg-caption-always .fg-item-inner:hover .fg-caption {
2546
+ visibility: visible;
2547
+ opacity: 1;
2548
+ }
2549
+ .fg-simple_portfolio .fg-caption-title {
2550
+ white-space: normal;
2551
+ height: auto;
2552
+ }
2553
+
2554
+ .fg-simple_portfolio.fg-light .fg-caption,
2555
+ .fg-simple_portfolio.fg-dark .fg-caption {
2556
+ color: #828282;
2557
+ }
2558
+ .fg-simple_portfolio.fg-light .fg-caption a,
2559
+ .fg-simple_portfolio.fg-dark .fg-caption a {
2560
+ color: #828282;
2561
+ border-bottom: 1px solid #828282;
2562
+ }
2563
+ .fg-simple_portfolio.fg-light .fg-caption a:hover,
2564
+ .fg-simple_portfolio.fg-dark .fg-caption a:hover {
2565
+ border-bottom: none;
2566
+ }
2567
+ .fg-simple_portfolio.fg-light .fg-caption-title,
2568
+ .fg-simple_portfolio.fg-light .fg-caption-title a {
2569
+ color: #222;
2570
+ }
2571
+ .fg-simple_portfolio.fg-dark .fg-caption-title,
2572
+ .fg-simple_portfolio.fg-dark .fg-caption-title a {
2573
+ color: #FFF;
2574
+ }
2575
+ .fg-simple_portfolio.fg-light .fg-caption-title a {
2576
+ border-bottom: 1px solid #222;
2577
+ }
2578
+ .fg-simple_portfolio.fg-dark .fg-caption-title a {
2579
+ border-bottom: 1px solid #FFF;
2580
+ }
2581
+
2582
+ /* Handle Border Sizing */
2583
+ .fg-simple_portfolio .fg-caption {
2584
+ border-width: 0;
2585
+ }
2586
+ .fg-simple_portfolio .fg-caption-title+.fg-caption-desc {
2587
+ margin-top: 4px;
2588
+ }
2589
+ .fg-simple_portfolio.fg-border-thin .fg-caption {
2590
+ border-width: 10px 4px 4px 4px;
2591
+ }
2592
+ .fg-simple_portfolio.fg-captions-top.fg-border-thin .fg-caption {
2593
+ border-width: 4px 4px 10px 4px;
2594
+ }
2595
+ .fg-simple_portfolio.fg-border-medium .fg-caption {
2596
+ border-width: 10px 0 0 0;
2597
+ }
2598
+ .fg-simple_portfolio.fg-captions-top.fg-border-medium .fg-caption {
2599
+ border-width: 0 0 10px 0;
2600
+ }
2601
+ .fg-simple_portfolio.fg-border-thick .fg-caption {
2602
+ border-width: 16px 0 0 0;
2603
+ }
2604
+ .fg-simple_portfolio.fg-captions-top.fg-border-thick .fg-caption {
2605
+ border-width: 0 0 16px 0;
2606
+ }
2607
+ .fg-simple_portfolio.fg-border-thick .fg-caption-title+.fg-caption-desc {
2608
+ margin-top: 10px;
2609
+ }
2610
+
2611
+ /* Transparent Theme */
2612
+ .fg-simple_portfolio.fg-transparent .fg-item-inner {
2613
+ background-color: transparent;
2614
+ color: #333;
2615
+ border-color: transparent;
2616
+ }
2617
+
2618
+ /* Captions */
2619
+ .fg-simple_portfolio.fg-transparent .fg-caption {
2620
+ color: #7f7f7f;
2621
+ }
2622
+ .fg-simple_portfolio.fg-transparent .fg-caption a {
2623
+ color: #7f7f7f;
2624
+ border-bottom: 1px solid #7f7f7f;
2625
+ }
2626
+ .fg-simple_portfolio.fg-transparent .fg-caption a:hover {
2627
+ border-bottom: none;
2628
+ }
2629
+ .fg-simple_portfolio.fg-transparent .fg-caption-title,
2630
+ .fg-simple_portfolio.fg-transparent .fg-caption-title a {
2631
+ color: #333;
2632
+ }
2633
+ .fg-simple_portfolio.fg-transparent .fg-caption-title a {
2634
+ border-bottom: 1px solid #333;
2635
+ }
2636
+
2637
+ /* Rounded Corners */
2638
+ .fg-simple_portfolio.fg-transparent.fg-round-full .fg-item,
2639
+ .fg-simple_portfolio.fg-transparent.fg-round-full .fg-item-inner {
2640
+ border-radius: 15px;
2641
+ }
2642
+ .fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-wrap,
2643
+ .fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-overlay,
2644
+ .fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after,
2645
+ .fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,
2646
+ .fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after {
2647
+ border-radius: 50%;
2648
+ overflow: hidden;
2649
+ }
2650
+
2651
+ .fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2652
+ .fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,
2653
+ .fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2654
+ .fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,
2655
+ .fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2656
+ .fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2657
+ overflow: hidden;
2658
+ }
2659
+ .fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2660
+ .fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2661
+ .fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2662
+ .fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2663
+ .fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2664
+ border-radius: 5px;
2665
+ }
2666
+ .fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2667
+ .fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2668
+ .fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2669
+ .fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2670
+ .fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2671
+ border-radius: 10px;
2672
+ }
2673
+ .fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2674
+ .fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2675
+ .fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,
2676
+ .fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,
2677
+ .fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay {
2678
+ border-radius: 15px;
2679
+ }
2680
+
2681
+ /* Shadows */
2682
+ .fg-simple_portfolio.fg-transparent.fg-shadow-inset-small .fg-thumb:after {
2683
+ box-shadow: inset 0 1px 4px 0 rgba(0,0,0,0.3);
2684
+ }
2685
+ .fg-simple_portfolio.fg-transparent.fg-shadow-inset-medium .fg-thumb:after {
2686
+ box-shadow: inset 0 1px 10px 0 rgba(0,0,0,0.3);
2687
+ }
2688
+ .fg-simple_portfolio.fg-transparent.fg-shadow-inset-large .fg-thumb:after {
2689
+ box-shadow: inset 0 1px 16px 0 rgba(0,0,0,0.3);
2690
+ }
2691
+
2692
+ .fg-simple_portfolio.fg-transparent.fg-shadow-outline .fg-item-inner {
2693
+ box-shadow: 0 0 0 1px rgba(128, 128, 128, 0.5);
2694
+ }
2695
+ .fg-simple_portfolio.fg-transparent.fg-shadow-small .fg-item-inner {
2696
+ box-shadow: 0 1px 4px 0 rgba(128, 128, 128, 0.5);
2697
+ }
2698
+ .fg-simple_portfolio.fg-transparent.fg-shadow-medium .fg-item-inner {
2699
+ box-shadow: 0 1px 10px 0 rgba(128, 128, 128, 0.5);
2700
+ }
2701
+ .fg-simple_portfolio.fg-transparent.fg-shadow-large .fg-item-inner {
2702
+ box-shadow: 0 1px 16px 0 rgba(128, 128, 128, 0.5);
2703
+ }
2704
+ /* Polaroid */
2705
+ .foogallery.fg-preset.fg-polaroid .fg-item {
2706
+ -webkit-backface-visibility: hidden;
2707
+ backface-visibility: hidden;
2708
+ transition: transform 0.35s, background-color 0.65s;
2709
+ }
2710
+ .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1) {
2711
+ -webkit-transform: rotate(3deg);
2712
+ transform: rotate(3deg);
2713
+ }
2714
+ .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n) {
2715
+ -webkit-transform: rotate(-3deg);
2716
+ transform: rotate(-3deg);
2717
+ }
2718
+ .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(3n) {
2719
+ -webkit-transform: rotate(1deg);
2720
+ transform: rotate(1deg);
2721
+ }
2722
+ .foogallery.fg-preset.fg-polaroid .fg-item:nth-child(5n) {
2723
+ -webkit-transform: rotate(-2deg);
2724
+ transform: rotate(-2deg);
2725
+ }
2726
+
2727
+ .foogallery.fg-preset.fg-polaroid .fg-item:hover {
2728
+ -webkit-transform: rotate(0);
2729
+ transform: rotate(0);
2730
+ }
2731
+
2732
+ .foogallery.fg-preset.fg-polaroid .fg-caption {
2733
+ position: relative;
2734
+ width: auto;
2735
+ font-family: "Segoe Print Regular",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
2736
+ }
2737
+
2738
+ .foogallery.fg-preset.fg-polaroid .fg-caption-inner,
2739
+ .foogallery.fg-preset.fg-polaroid .fg-caption-title {
2740
+ position: relative;
2741
+ width: auto;
2742
+ }
2743
+ .foogallery.fg-preset.fg-polaroid .fg-caption-title {
2744
+ text-align: center;
2745
+ }
2746
+ .foogallery.fg-preset.fg-polaroid .fg-caption-desc {
2747
+ display: none;
2748
+ }
2749
+
2750
+ /* Themes */
2751
+ .foogallery.fg-preset.fg-polaroid .fg-caption-title,
2752
+ .foogallery.fg-light.fg-preset.fg-polaroid .fg-caption-title {
2753
+ color: #333;
2754
+ }
2755
+ .foogallery.fg-dark.fg-preset.fg-polaroid .fg-caption-title {
2756
+ color: #FFF;
2757
+ }
2758
+
2759
+ /* Handle Border Sizing */
2760
+ .foogallery.fg-preset.fg-polaroid .fg-caption {
2761
+ border-style: solid;
2762
+ border-color: transparent;
2763
+ border-width: 10px;
2764
+ }
2765
+ .foogallery.fg-preset.fg-polaroid .fg-caption-title+.fg-caption-desc {
2766
+ margin-top: 4px;
2767
+ }
2768
+ .foogallery.fg-preset.fg-polaroid.fg-border-thin .fg-caption {
2769
+ border-width: 10px 4px 4px 4px;
2770
+ }
2771
+ .foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thin .fg-caption {
2772
+ border-width: 4px 4px 10px 4px;
2773
+ }
2774
+ .foogallery.fg-preset.fg-polaroid.fg-border-medium .fg-caption {
2775
+ border-width: 10px 0 0 0;
2776
+ }
2777
+ .foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-medium .fg-caption {
2778
+ border-width: 0 0 10px 0;
2779
+ }
2780
+ .foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption {
2781
+ border-width: 16px 0 0 0;
2782
+ }
2783
+ .foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thick .fg-caption {
2784
+ border-width: 0 0 16px 0;
2785
+ }
2786
+ .foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption-title+.fg-caption-desc {
2787
+ margin-top: 10px;
2788
+ }
2789
+ /* Base styles */
2790
+ .fg-image-viewer {
2791
+ display: block;
2792
+ font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
2793
+ }
2794
+ .fg-image-viewer.fg-left {
2795
+ text-align: left;
2796
+ }
2797
+
2798
+ .fg-image-viewer.fg-center {
2799
+ text-align: center;
2800
+ }
2801
+ .fg-image-viewer.fg-right {
2802
+ text-align: right;
2803
+ }
2804
+
2805
+ .fiv-inner {
2806
+ position: relative;
2807
+ display: inline-block;
2808
+ max-width: 100%;
2809
+ overflow: hidden;
2810
+ z-index: 6;
2811
+ }
2812
+ .fiv-inner .fiv-inner-container {
2813
+ position: relative;
2814
+ overflow: hidden;
2815
+ max-width: 100%;
2816
+ border-style: solid;
2817
+ border-width: 0;
2818
+ border-bottom-width: 4px;
2819
+ z-index: 5;
2820
+ }
2821
+ .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb,
2822
+ .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:hover,
2823
+ .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:active,
2824
+ .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:visited {
2825
+ position: relative;
2826
+ display: block;
2827
+ border: none;
2828
+ outline: none;
2829
+ text-decoration: none;
2830
+ box-shadow: none;
2831
+ max-width: 100%;
2832
+ }
2833
+
2834
+ .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item {
2835
+ position: absolute;
2836
+ visibility: visible;
2837
+ opacity: 1;
2838
+ border: none;
2839
+ outline: none;
2840
+ text-decoration: none;
2841
+ box-shadow: none;
2842
+ max-width: 100%;
2843
+ }
2844
+ .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item:first-of-type {
2845
+ position: relative;
2846
+ }
2847
+ .fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img {
2848
+ display: block;
2849
+ max-width: 100%;
2850
+ height: auto;
2851
+ border: none;
2852
+ outline: none;
2853
+ text-decoration: none;
2854
+ }
2855
+
2856
+ .fg-image-viewer .fiv-inner .fiv-ctrls {
2857
+ display: block;
2858
+ text-align: center;
2859
+ font-size: 14px;
2860
+ border-style: solid;
2861
+ line-height: 34px;
2862
+ }
2863
+ .fg-image-viewer .fiv-inner .fiv-ctrls:after {
2864
+ content: '';
2865
+ display: block;
2866
+ clear: both;
2867
+ }
2868
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count {
2869
+ display: inline-block;
2870
+ font-weight: normal;
2871
+ margin: 0;
2872
+ }
2873
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev,
2874
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next {
2875
+ cursor: pointer;
2876
+ -webkit-user-select: none;
2877
+ -moz-user-select: none;
2878
+ -ms-user-select: none;
2879
+ user-select: none;
2880
+ border: none;
2881
+ min-width: 80px;
2882
+ position: relative;
2883
+ overflow: hidden;
2884
+ transition: background-color .3s;
2885
+ }
2886
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before,
2887
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before {
2888
+ display: block;
2889
+ position: absolute;
2890
+ font-size: 24px;
2891
+ line-height: 30px;
2892
+ top:0;
2893
+ left:0;
2894
+ width: 100%;
2895
+ transform: translateY(0);
2896
+ transition: transform .3s;
2897
+ }
2898
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover:before,
2899
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover:before {
2900
+ transform: translateY(-100%);
2901
+ }
2902
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev span,
2903
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next span {
2904
+ display: block;
2905
+ width: 100%;
2906
+ transform: translateY(100%);
2907
+ transition: transform .3s;
2908
+ }
2909
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover span,
2910
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover span {
2911
+ transform: translateY(0);
2912
+ }
2913
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev {
2914
+ float: left;
2915
+ }
2916
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before {
2917
+ content: '\2190';
2918
+ }
2919
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next {
2920
+ float: right;
2921
+ }
2922
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before {
2923
+ content: '\2192';
2924
+ }
2925
+ .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count span {
2926
+ margin: 0 4px;
2927
+ }
2928
+
2929
+ /* Captions */
2930
+
2931
+ .foogallery.fg-image-viewer.fg-caption-always .fg-item-inner .fg-caption {
2932
+ padding: 0;
2933
+ border: none;
2934
+ }
2935
+ .foogallery.fg-image-viewer.fg-caption-always .fg-caption-title {
2936
+ padding: 10px 10px 10px 10px;
2937
+ }
2938
+ .foogallery.fg-image-viewer.fg-caption-always .fg-caption-desc {
2939
+ padding: 10px 10px 10px 10px;
2940
+ }
2941
+ .foogallery.fg-image-viewer.fg-caption-always .fg-caption-title+.fg-caption-desc {
2942
+ padding: 0 10px 10px 10px;
2943
+ }
2944
+
2945
+ /* Theme - Default (Light) */
2946
+ .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls,
2947
+ .fg-image-viewer.fg-light .fiv-inner .fiv-inner-container,
2948
+ .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-count,
2949
+ .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev,
2950
+ .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next {
2951
+ background-color: #FFF;
2952
+ color: #333;
2953
+ border-color: #FFF;
2954
+ }
2955
+ .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev:hover,
2956
+ .fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next:hover {
2957
+ background-color: #F2F2F2;
2958
+ }
2959
+ .fg-image-viewer.fg-light .fiv-prev,
2960
+ .fg-image-viewer.fg-light .fiv-next {
2961
+ box-shadow: inset 0 0 0 1px #ddd;
2962
+ }
2963
+
2964
+ /* Theme - Dark */
2965
+ .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls,
2966
+ .fg-image-viewer.fg-dark .fiv-inner .fiv-inner-container,
2967
+ .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-count,
2968
+ .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev,
2969
+ .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next {
2970
+ background-color: #333;
2971
+ color: #FFF;
2972
+ border-color: #333;
2973
+ }
2974
+ .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev:hover,
2975
+ .fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next:hover {
2976
+ background-color: #444;
2977
+ }
2978
+ .fg-image-viewer.fg-dark .fiv-prev,
2979
+ .fg-image-viewer.fg-dark .fiv-next {
2980
+ box-shadow: inset 0 0 0 1px #222;
2981
+ }
2982
+
2983
+ /* Border Size */
2984
+ .foogallery.fg-image-viewer.fg-border-thin .fg-item-inner,
2985
+ .foogallery.fg-image-viewer.fg-border-medium .fg-item-inner,
2986
+ .foogallery.fg-image-viewer.fg-border-thick .fg-item-inner {
2987
+ border-width: 0;
2988
+ }
2989
+ .foogallery.fg-image-viewer .fiv-ctrls,
2990
+ .foogallery.fg-image-viewer.fg-border-thin .fiv-inner-container {
2991
+ border-width: 4px;
2992
+ }
2993
+ .foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,
2994
+ .foogallery.fg-image-viewer.fg-border-medium .fiv-inner-container {
2995
+ border-width: 10px;
2996
+ }
2997
+ .foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,
2998
+ .foogallery.fg-image-viewer.fg-border-thick .fiv-inner-container {
2999
+ border-width: 16px;
3000
+ }
3001
+ .foogallery.fg-image-viewer .fiv-ctrls,
3002
+ .foogallery.fg-image-viewer.fg-border-thin .fiv-ctrls,
3003
+ .foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,
3004
+ .foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls {
3005
+ border-top-width: 1px;
3006
+ }
3007
+
3008
+ /* Rounded Corners */
3009
+ .foogallery.fg-image-viewer.fg-round-small .fg-item,
3010
+ .foogallery.fg-image-viewer.fg-round-small .fg-item-inner,
3011
+ .foogallery.fg-image-viewer.fg-round-small .fiv-inner {
3012
+ border-radius: 5px;
3013
+ }
3014
+ .foogallery.fg-image-viewer.fg-round-small .fg-item,
3015
+ .foogallery.fg-image-viewer.fg-round-small .fg-item-inner {
3016
+ border-bottom-left-radius: 0;
3017
+ border-bottom-right-radius: 0;
3018
+ }
3019
+ .foogallery.fg-image-viewer.fg-round-small .fiv-prev,
3020
+ .foogallery.fg-image-viewer.fg-round-small .fiv-next {
3021
+ border-radius: 3px;
3022
+ }
3023
+
3024
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item,
3025
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item-inner,
3026
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-prev,
3027
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-next,
3028
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item,
3029
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item-inner,
3030
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-prev,
3031
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-next,
3032
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item,
3033
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item-inner,
3034
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-prev,
3035
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-next {
3036
+ border-radius: 3px;
3037
+ }
3038
+
3039
+ .foogallery.fg-image-viewer.fg-round-medium .fg-item,
3040
+ .foogallery.fg-image-viewer.fg-round-medium .fg-item-inner,
3041
+ .foogallery.fg-image-viewer.fg-round-medium .fiv-inner {
3042
+ border-radius: 10px;
3043
+ }
3044
+ .foogallery.fg-image-viewer.fg-round-medium .fg-item,
3045
+ .foogallery.fg-image-viewer.fg-round-medium .fg-item-inner {
3046
+ border-bottom-left-radius: 0;
3047
+ border-bottom-right-radius: 0;
3048
+ }
3049
+ .foogallery.fg-image-viewer.fg-round-medium .fiv-prev,
3050
+ .foogallery.fg-image-viewer.fg-round-medium .fiv-next {
3051
+ border-radius: 5px;
3052
+ }
3053
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item,
3054
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item-inner,
3055
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-prev,
3056
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-next {
3057
+ border-radius: 5px;
3058
+ }
3059
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item,
3060
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item-inner,
3061
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-prev,
3062
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-next,
3063
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item,
3064
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item-inner,
3065
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-prev,
3066
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-next {
3067
+ border-radius: 3px;
3068
+ }
3069
+
3070
+ .foogallery.fg-image-viewer.fg-round-large .fg-item,
3071
+ .foogallery.fg-image-viewer.fg-round-large .fg-item-inner,
3072
+ .foogallery.fg-image-viewer.fg-round-large .fiv-inner {
3073
+ border-radius: 15px;
3074
+ }
3075
+ .foogallery.fg-image-viewer.fg-round-large .fg-item,
3076
+ .foogallery.fg-image-viewer.fg-round-large .fg-item-inner {
3077
+ border-bottom-left-radius: 0;
3078
+ border-bottom-right-radius: 0;
3079
+ }
3080
+ .foogallery.fg-image-viewer.fg-round-large .fiv-prev,
3081
+ .foogallery.fg-image-viewer.fg-round-large .fiv-next {
3082
+ border-radius: 11px;
3083
+ }
3084
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item,
3085
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item-inner,
3086
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-prev,
3087
+ .foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-next {
3088
+ border-radius: 11px;
3089
+ }
3090
+
3091
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item,
3092
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item-inner,
3093
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-prev,
3094
+ .foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-next {
3095
+ border-radius: 5px;
3096
+ }
3097
+
3098
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item,
3099
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item-inner,
3100
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-prev,
3101
+ .foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-next {
3102
+ border-radius: 3px;
3103
+ }
3104
+
3105
+ .foogallery.fg-image-viewer.fg-round-full .fiv-inner,
3106
+ .foogallery.fg-image-viewer.fg-round-full .fiv-prev,
3107
+ .foogallery.fg-image-viewer.fg-round-full .fiv-next {
3108
+ border-radius: 50%;
3109
+ }
3110
+
3111
+ /* Drop Shadows */
3112
+ .foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fg-item-inner,
3113
+ .foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fg-item-inner,
3114
+ .foogallery.fg-image-viewer.fg-light.fg-shadow-small .fg-item-inner,
3115
+ .foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fg-item-inner,
3116
+ .foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fg-item-inner,
3117
+ .foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fg-item-inner,
3118
+ .foogallery.fg-image-viewer.fg-light.fg-shadow-large .fg-item-inner,
3119
+ .foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fg-item-inner {
3120
+ box-shadow: none;
3121
+ }
3122
+
3123
+ .foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fiv-inner {
3124
+ box-shadow: 0 0 0 1px #ddd;
3125
+ }
3126
+ .foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fiv-inner {
3127
+ box-shadow: 0 0 0 1px #222;
3128
+ }
3129
+ .foogallery.fg-image-viewer.fg-light.fg-shadow-small .fiv-inner,
3130
+ .foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fiv-inner {
3131
+ box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.5);
3132
+ }
3133
+ .foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fiv-inner,
3134
+ .foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fiv-inner {
3135
+ box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.5);
3136
+ }
3137
+ .foogallery.fg-image-viewer.fg-light.fg-shadow-large .fiv-inner,
3138
+ .foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fiv-inner {
3139
+ box-shadow: 0 1px 16px 0 rgba(0, 0, 0, 0.5);
3140
+ }
3141
+ .foogallery.fg-thumbnail,
3142
+ .foogallery.fg-thumbnail.fg-center {
3143
+ text-align: center;
3144
+ }
3145
+ .foogallery.fg-thumbnail.fg-left {
3146
+ text-align: left;
3147
+ }
3148
+ .foogallery.fg-thumbnail.fg-right {
3149
+ text-align: right;
3150
+ }
3151
+
3152
+ .foogallery.fg-thumbnail.fg-float-left {
3153
+ float: left;
3154
+ width: auto;
3155
+ }
3156
+ .foogallery.fg-thumbnail.fg-float-right {
3157
+ float: right;
3158
+ width: auto;
3159
+ }
3160
+
3161
+ .foogallery.fg-thumbnail .fg-item {
3162
+ display: inline-block;
3163
+ vertical-align: top;
3164
+ max-width: 100%;
3165
+ }
3166
+ .foogallery.fg-thumbnail .fg-image {
3167
+ max-width: 100%;
3168
+ }
3169
+ .foogallery.fg-thumbnail .fg-st-hidden {
3170
+ display: none;
3171
+ }
3172
+ .foogallery-stack-album {
3173
+ text-align: center;
3174
+ overflow: hidden;
3175
+ font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
3176
+ font-size: 13px;
3177
+ font-weight: 400;
3178
+ line-height: 1.3;
3179
+ }
3180
+ .foogallery-stack-album,
3181
+ .foogallery-stack-album * {
3182
+ box-sizing: border-box;
3183
+ }
3184
+
3185
+ .foogallery-stack-album.fg-align-left {
3186
+ text-align: left;
3187
+ }
3188
+ .foogallery-stack-album.fg-align-center {
3189
+ text-align: center;
3190
+ }
3191
+ .foogallery-stack-album.fg-align-right {
3192
+ text-align: right;
3193
+ }
3194
+
3195
+ .foogallery-stack-album.fg-disable-transitions,
3196
+ .foogallery-stack-album.fg-disable-transitions * {
3197
+ transition: none !important;
3198
+ }
3199
+
3200
+ .fg-header {
3201
+ display: flex;
3202
+ flex-wrap: nowrap;
3203
+ justify-content: space-between;
3204
+ align-items: center;
3205
+ position: relative;
3206
+ padding: 0;
3207
+ margin: 0;
3208
+ border-top: solid 1px #aaa;
3209
+ border-bottom: solid 1px #aaa;
3210
+ }
3211
+
3212
+ .fg-header-title {
3213
+ display: block;
3214
+ margin: 0;
3215
+ padding: 0 20px;
3216
+ width: 100%;
3217
+ text-align: left;
3218
+ }
3219
+
3220
+ .fg-header-active {
3221
+ display: block;
3222
+ margin: 0;
3223
+ padding: 0 20px;
3224
+ visibility: hidden;
3225
+ opacity: 0;
3226
+ width: 100%;
3227
+ text-align: right;
3228
+ transition-property: opacity, visibility;
3229
+ transition-duration: .3s;
3230
+ transition-timing-function: ease-in-out;
3231
+ }
3232
+
3233
+ .fg-header-back {
3234
+ display: block;
3235
+ padding: 0;
3236
+ margin: 5px;
3237
+ visibility: hidden;
3238
+ opacity: 0;
3239
+ min-width: 40px;
3240
+ width: 40px;
3241
+ height: 40px;
3242
+ border-radius: 50%;
3243
+ text-align: center;
3244
+ line-height: 38px;
3245
+ color: #999;
3246
+ background: #ddd;
3247
+ background: rgba(200,200,200,0.5);
3248
+ cursor: pointer;
3249
+ -webkit-touch-callout: none;
3250
+ -webkit-user-select: none;
3251
+ -moz-user-select: none;
3252
+ -ms-user-select: none;
3253
+ user-select: none;
3254
+ transition-property: opacity, visibility;
3255
+ transition-duration: .3s;
3256
+ transition-timing-function: ease-in-out;
3257
+ }
3258
+
3259
+ .fg-has-active .fg-header-back,
3260
+ .fg-has-active .fg-header-active {
3261
+ visibility: visible;
3262
+ opacity: 1;
3263
+ }
3264
+
3265
+
3266
+ .fg-piles {
3267
+ display: inline-block;
3268
+ position: relative;
3269
+ transition-property: width, height;
3270
+ transition-duration: .3s;
3271
+ transition-timing-function: ease-in-out;
3272
+ }
3273
+
3274
+ .fg-pile {
3275
+ display: block;
3276
+ position: absolute;
3277
+ top: 0;
3278
+ left: 0;
3279
+ list-style: none;
3280
+ padding: 0;
3281
+ margin: 0;
3282
+ visibility: visible;
3283
+ opacity: 1;
3284
+ transition-property: opacity, visibility, top, left, width, height;
3285
+ transition-duration: .3s;
3286
+ transition-timing-function: ease-in-out;
3287
+ }
3288
+
3289
+ .fg-pile.fg-hidden {
3290
+ visibility: hidden;
3291
+ opacity: 0;
3292
+ }
3293
+
3294
+ .fg-pile-item {
3295
+ display: block;
3296
+ position: absolute;
3297
+ top: 25px;
3298
+ left: 25px;
3299
+ visibility: visible;
3300
+ opacity: 1;
3301
+ cursor: pointer;
3302
+ border: 10px solid #fff;
3303
+ background-color: #FFF;
3304
+ box-shadow: 0 1px 4px rgba(0,0,0,0.2);
3305
+ transition-property: opacity, visibility, top, left, transform;
3306
+ transition-duration: .3s;
3307
+ transition-timing-function: ease-in-out;
3308
+ z-index: 1;
3309
+ transform: rotate(0deg);
3310
+ }
3311
+
3312
+ .fg-expanded .fg-pile-item {
3313
+ z-index: 2;
3314
+ transform: rotate(0deg) !important;
3315
+ }
3316
+ .fg-pile-item.fg-has-cover {
3317
+ z-index: 10;
3318
+ transform: rotate(0deg) !important;
3319
+ }
3320
+
3321
+ .fg-pile-item:nth-child(2) {
3322
+ z-index: 9;
3323
+ }
3324
+ .fg-pile-item:nth-child(3) {
3325
+ z-index: 8;
3326
+ }
3327
+ .fg-pile-item:nth-child(4) {
3328
+ z-index: 7;
3329
+ }
3330
+ .fg-pile-item:nth-child(1n+5) {
3331
+ visibility: hidden;
3332
+ opacity: 0;
3333
+ }
3334
+ .fg-expanded .fg-pile-item:nth-child(1n+4) {
3335
+ visibility: visible;
3336
+ opacity: 1;
3337
+ }
3338
+
3339
+ .fg-pile-item-thumb {
3340
+ display: block;
3341
+ }
3342
+
3343
+ .fg-pile-item-image {
3344
+ display: block;
3345
+ }
3346
+
3347
+ .fg-pile-item-caption {
3348
+ display: flex;
3349
+ justify-content: center;
3350
+ flex-direction: column;
3351
+ position: absolute;
3352
+ top: 0;
3353
+ left: 0;
3354
+ bottom: 0;
3355
+ right: 0;
3356
+ width: 100%;
3357
+ height: 100%;
3358
+ margin: 0;
3359
+ padding: 10px;
3360
+ background-color: rgba(68, 68, 68, 0.5);
3361
+ color: #FFFFFF;
3362
+ text-align: center;
3363
+ visibility: hidden;
3364
+ opacity: 0;
3365
+ transition-property: opacity, visibility;
3366
+ transition-duration: .3s;
3367
+ transition-timing-function: ease-in-out;
3368
+ }
3369
+ .fg-pile-item-title {
3370
+ display: block;
3371
+ width: 100%;
3372
+ padding: 0 0 10px;
3373
+ }
3374
+ .fg-pile-item-desc {
3375
+ display: block;
3376
+ width: 100%;
3377
+ max-height: 100%;
3378
+ border-top: solid 1px currentColor;
3379
+ padding: 10px 0 0;
3380
+ overflow: hidden;
3381
+ }
3382
+
3383
+ .fg-pile-item-thumb:hover .fg-pile-item-caption {
3384
+ visibility: visible;
3385
+ opacity: 1;
3386
+ }
3387
+
3388
+ .fg-pile-cover {
3389
+ display: flex;
3390
+ justify-content: left;
3391
+ align-items: center;
3392
+ position: absolute;
3393
+ top: 0;
3394
+ left: 0;
3395
+ bottom: 0;
3396
+ right: 0;
3397
+ width: 100%;
3398
+ height: 100%;
3399
+ visibility: visible;
3400
+ opacity: 1;
3401
+ cursor: pointer;
3402
+ -webkit-touch-callout: none;
3403
+ -webkit-user-select: none;
3404
+ -moz-user-select: none;
3405
+ -ms-user-select: none;
3406
+ user-select: none;
3407
+ transition-property: opacity, visibility;
3408
+ transition-duration: .3s;
3409
+ transition-timing-function: ease-in-out;
3410
+ }
3411
+
3412
+ .fg-expanded .fg-pile-cover {
3413
+ visibility: hidden;
3414
+ opacity: 0;
3415
+ pointer-events: none;
3416
+ }
3417
+
3418
+ .fg-pile-cover-content {
3419
+ display: flex;
3420
+ position: relative;
3421
+ background: #fff;
3422
+ color: #333;
3423
+ width: 75%;
3424
+ font-weight: 700;
3425
+ box-shadow: 1px 1px 1px rgba(0,0,0,0.1), 5px 0 5px -3px rgba(0,0,0,0.4), inset 0 0 5px rgba(0,0,0,0.04);
3426
+ }
3427
+
3428
+ .fg-pile-cover-title {
3429
+ text-align: center;
3430
+ padding: 10px;
3431
+ width: 100%;
3432
+ }
3433
+ .fg-pile-cover-count {
3434
+ color: #aaa;
3435
+ padding: 10px 5px;
3436
+ background: #F7F7F7;
3437
+ height: 100%;
3438
+ }
3439
+ :root {
3440
+ --fg-carousel-perspective: 150px;
3441
+ --fg-carousel-navigation-size: 48px;
3442
+ --fg-carousel-pagination-size: 14px;
3443
+ --fg-carousel-progress-size: 4px;
3444
+ --fg-carousel-navigation-opacity: 0.3;
3445
+ --fg-carousel-transition-speed: 650ms;
3446
+ --fg-carousel-ui-speed: 300ms;
3447
+ }
3448
+ .foogallery.fg-carousel {
3449
+ --fg-carousel-inverse-perspective: calc( -1 * var(--fg-carousel-perspective) );
3450
+ position: relative;
3451
+ overflow: hidden;
3452
+ display: grid;
3453
+ grid-template-columns: var(--fg-carousel-navigation-size) auto var(--fg-carousel-navigation-size);
3454
+ grid-template-rows: auto auto;
3455
+ grid-template-areas: "prev inner next"
3456
+ "bottom bottom bottom";
3457
+ }
3458
+ .fg-carousel-inner {
3459
+ position: relative;
3460
+ grid-area: inner;
3461
+ display: grid;
3462
+ grid-template-columns: 1fr auto 1fr;
3463
+ grid-template-rows: auto;
3464
+ grid-template-areas: "left center right";
3465
+ padding: 10px 0;
3466
+ perspective: var(--fg-carousel-perspective);
3467
+ transform: translate3d(0, 0, 0);
3468
+ transform-style: preserve-3d;
3469
+ backface-visibility: hidden;
3470
+ will-change: contents;
3471
+ }
3472
+ .foogallery_preview_container .fg-carousel-inner {
3473
+ transform-style: unset;
3474
+ }
3475
+
3476
+ .fg-carousel-center {
3477
+ position: relative;
3478
+ z-index: -1;
3479
+ pointer-events: none;
3480
+ visibility: hidden;
3481
+ }
3482
+ .fg-carousel-center {
3483
+ grid-area: center;
3484
+ }
3485
+ .fg-carousel-progress {
3486
+ display: block;
3487
+ position: absolute;
3488
+ visibility: visible;
3489
+ bottom: 0;
3490
+ left: 0;
3491
+ width: 0;
3492
+ height: var(--fg-carousel-progress-size);
3493
+ border-radius: calc( var(--fg-carousel-progress-size) / 2 );
3494
+ transition: width 100ms linear;
3495
+ opacity: var(--fg-carousel-navigation-opacity);
3496
+ }
3497
+ .fg-carousel-bottom {
3498
+ display: flex;
3499
+ align-items: center;
3500
+ justify-content: center;
3501
+ position: relative;
3502
+ grid-area: bottom;
3503
+ font-size: var(--fg-carousel-pagination-size);
3504
+ padding: 0;
3505
+ margin-bottom: 10px;
3506
+ }
3507
+ .fg-carousel-bullet {
3508
+ width: 1em;
3509
+ height: 1em;
3510
+ display: block;
3511
+ padding: 0;
3512
+ margin: 0.3em;
3513
+ border-radius: 50%;
3514
+ border: solid 1px transparent;
3515
+ background: none;
3516
+ box-shadow: none;
3517
+ outline: none;
3518
+ opacity: var(--fg-carousel-navigation-opacity);
3519
+ cursor: pointer;
3520
+ font-size: inherit;
3521
+ transition: opacity var(--fg-carousel-ui-speed) ease-in;
3522
+ }
3523
+ @media only screen and (max-width: 782px) {
3524
+ .fg-carousel-bullet {
3525
+ width: 1.25em;
3526
+ height: 1.25em;
3527
+ }
3528
+ }
3529
+
3530
+ .fg-carousel-bullet:hover {
3531
+ background: none;
3532
+ box-shadow: none;
3533
+ outline: none;
3534
+ opacity: 1;
3535
+ }
3536
+ .fg-carousel-bullet.fg-bullet-active {
3537
+ opacity: 1;
3538
+ }
3539
+ button.fg-carousel-prev,
3540
+ button.fg-carousel-next {
3541
+ position: relative;
3542
+ height: 100%;
3543
+ width: 100%;
3544
+ display: flex;
3545
+ align-items: center;
3546
+ justify-content: center;
3547
+ font-size: var(--fg-carousel-navigation-size);
3548
+ background: none;
3549
+ border: none;
3550
+ box-shadow: none;
3551
+ outline: none;
3552
+ z-index: 11;
3553
+ cursor: pointer;
3554
+ opacity: var(--fg-carousel-navigation-opacity);
3555
+ transition: opacity var(--fg-carousel-ui-speed) ease-in;
3556
+ padding: 0;
3557
+ margin: 0;
3558
+ }
3559
+ button.fg-carousel-prev:hover,
3560
+ button.fg-carousel-next:hover {
3561
+ background: none;
3562
+ border: none;
3563
+ box-shadow: none;
3564
+ outline: none;
3565
+ opacity: 1;
3566
+ }
3567
+ .fg-carousel-prev .fg-icon,
3568
+ .fg-carousel-next .fg-icon {
3569
+ width: 1em;
3570
+ height: 1em;
3571
+ }
3572
+ .fg-carousel-prev {
3573
+ grid-area: prev;
3574
+ }
3575
+ .fg-carousel-next {
3576
+ grid-area: next;
3577
+ }
3578
+
3579
+ .foogallery.fg-carousel .fg-item {
3580
+ display: block;
3581
+ opacity: 0;
3582
+ visibility: hidden;
3583
+ grid-area: center;
3584
+ transform-origin: center center;
3585
+ transform: translate3d(0, 200%, var(--fg-carousel-inverse-perspective));
3586
+ transition-timing-function: ease-in-out;
3587
+ transition-duration: 0s;
3588
+ transition-property: background-color,transform,transform-origin,opacity,visibility;
3589
+ backface-visibility: hidden;
3590
+ }
3591
+ .foogallery.fg-carousel .fg-item.fg-loaded {
3592
+ transform: translate3d(0, 0, var(--fg-carousel-inverse-perspective));
3593
+ transition-timing-function: ease-in-out;
3594
+ transition-duration: calc( var(--fg-carousel-transition-speed) / 2 );
3595
+ transition-property: background-color,transform,transform-origin,opacity,visibility;
3596
+ }
3597
+ .foogallery.fg-carousel .fg-item.fg-item-active,
3598
+ .foogallery.fg-carousel .fg-item.fg-item-prev,
3599
+ .foogallery.fg-carousel .fg-item.fg-item-next {
3600
+ opacity: 1;
3601
+ visibility: visible;
3602
+ /*-webkit-box-reflect: below 5px -webkit-linear-gradient(bottom,rgba(255,0,0,.1) 0%,transparent 32px,transparent 100%);*/
3603
+ }
3604
+ .foogallery.fg-carousel .fg-item.fg-item-active {
3605
+ transform: translate3d(0, 0, 0);
3606
+ }
3607
+
3608
+ .foogallery.fg-carousel.fg-dark .fg-carousel-progress,
3609
+ .foogallery.fg-carousel.fg-light.fg-inverted .fg-carousel-progress {
3610
+ background-color: #FFF;
3611
+ box-shadow: inset 0 0 0 1px #9d9d9d;
3612
+ }
3613
+ .foogallery.fg-carousel.fg-dark button.fg-carousel-bullet,
3614
+ .foogallery.fg-carousel.fg-light.fg-inverted button.fg-carousel-bullet {
3615
+ background-color: #FFF;
3616
+ border-color: #ccc;
3617
+ }
3618
+ .foogallery.fg-carousel.fg-dark button.fg-carousel-prev,
3619
+ .foogallery.fg-carousel.fg-dark button.fg-carousel-next,
3620
+ .foogallery.fg-carousel.fg-light.fg-inverted button.fg-carousel-prev,
3621
+ .foogallery.fg-carousel.fg-light.fg-inverted button.fg-carousel-next {
3622
+ color: #FFF;
3623
+ background-color: transparent;
3624
+ }
3625
+
3626
+ .foogallery.fg-carousel.fg-light .fg-carousel-progress,
3627
+ .foogallery.fg-carousel.fg-dark.fg-inverted .fg-carousel-progress {
3628
+ background-color: #444;
3629
+ box-shadow: inset 0 0 0 1px #333;
3630
+ }
3631
+ .foogallery.fg-carousel.fg-light button.fg-carousel-bullet,
3632
+ .foogallery.fg-carousel.fg-dark.fg-inverted button.fg-carousel-bullet {
3633
+ background-color: #444;
3634
+ border-color: #333;
3635
+ }
3636
+ .foogallery.fg-carousel.fg-light button.fg-carousel-prev,
3637
+ .foogallery.fg-carousel.fg-light button.fg-carousel-next,
3638
+ .foogallery.fg-carousel.fg-dark.fg-inverted button.fg-carousel-prev,
3639
+ .foogallery.fg-carousel.fg-dark.fg-inverted button.fg-carousel-next {
3640
+ color: #444;
3641
+ background-color: transparent;
3642
  }
extensions/default-templates/shared/css/foogallery.min.css CHANGED
@@ -1 +1 @@
1
- .foogallery,.foogallery *{box-sizing:border-box}.foogallery{display:block;z-index:1;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;position:relative;line-height:0;font-size:0;width:100%;max-width:100%}.foogallery .fg-item{display:inline-block;position:relative;background-color:transparent;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.foogallery .fg-item.fg-hidden{display:none!important}.foogallery .fg-item-inner{display:block;position:relative;visibility:hidden;overflow:hidden;opacity:0;z-index:3;margin:0;border:solid 0 transparent}.foogallery .fg-item.fg-error:before{content:"";display:block;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:32px;height:32px;background-image:url(../img/icons.svg#image);background-color:transparent;background-repeat:no-repeat;background-position:center center;background-size:32px 32px}.foogallery .fg-item.fg-loaded{z-index:4}.foogallery .fg-loaded .fg-item-inner{visibility:visible;opacity:1;z-index:5}.foogallery .fg-error .fg-item-inner{pointer-events:none;cursor:default}.foogallery .fg-thumb{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:4;box-shadow:none}.foogallery .fg-thumb:focus,.foogallery .fg-thumb:hover{border:none;outline:0;text-decoration:none;box-shadow:none}.foogallery .fg-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;visibility:hidden;opacity:0}.foogallery .fg-image-wrap{display:block;position:relative}.foogallery .fg-image{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:5;max-width:100%;height:auto;margin:0;width:auto}.foogallery picture.fg-image>img{display:block;position:relative;border:none;outline:0;text-decoration:none;max-width:100%;height:auto;margin:0;width:auto}.foogallery .fg-loaded .fg-thumb{z-index:6}.foogallery .fg-loaded .fg-image{z-index:7}.fg-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.foogallery.fg-light .fg-item-inner{background-color:#fff;color:#333;border-color:#fff}.foogallery.fg-dark .fg-item-inner{background-color:#333;color:#fff;border-color:#333}.foogallery.fg-light .fg-item.fg-error,.foogallery.fg-light .fg-item.fg-idle,.foogallery.fg-light .fg-item.fg-loading{background-color:#eee;box-shadow:inset 0 0 0 1px #ddd}.foogallery.fg-dark .fg-item.fg-error,.foogallery.fg-dark .fg-item.fg-idle,.foogallery.fg-dark .fg-item.fg-loading{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery .fg-caption{background-color:rgba(0,0,0,.6);color:#fff}.foogallery .fg-caption a{color:#fff;border-bottom:1px solid #fff}.foogallery.fg-light-overlays .fg-caption{background-color:rgba(255,255,255,.8);color:#333}.foogallery.fg-light-overlays .fg-caption a{color:#333;border-bottom-color:#333}.foogallery.fg-transparent-overlays .fg-caption{background-color:transparent;color:#fff}.foogallery.fg-transparent-overlays .fg-caption a{color:#fff;border-bottom-color:#fff}.foogallery .fg-image-overlay{background-color:rgba(0,0,0,.6);color:#fff}.foogallery.fg-light-overlays .fg-image-overlay{background-color:rgba(255,255,255,.8);color:#333}.foogallery.fg-transparent-overlays .fg-image-overlay{background-color:transparent;color:#fff}.fg-exif-light .fg-item.fg-item-exif .fg-image-wrap:after{background-color:#fff;color:#333}.fg-exif-dark .fg-item.fg-item-exif .fg-image-wrap:after{background-color:#333;color:#fff}.fg-exif-rounded .fg-item.fg-item-exif .fg-image-wrap:after{border-radius:3px}.fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after{display:inline-block;position:absolute;content:'EXIF';font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:11px;line-height:10px;padding:3px 4px;z-index:7}.fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after{bottom:5px;right:5px}.fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after{bottom:5px;left:5px}.fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after{top:5px;right:5px}.fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after{top:5px;left:5px}.foogallery.fg-border-thin .fg-item-inner{border-width:4px}.foogallery.fg-border-medium .fg-item-inner{border-width:10px}.foogallery.fg-border-thick .fg-item-inner{border-width:16px}.foogallery.fg-light.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-dark.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-light.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-light.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-light.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-shadow-inset-small .fg-thumb:after{display:block;content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:7}.foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%}.foogallery.fg-round-small .fg-item,.foogallery.fg-round-small .fg-item-inner{border-radius:5px}.foogallery.fg-round-medium .fg-item,.foogallery.fg-round-medium .fg-item-inner{border-radius:10px}.foogallery.fg-round-large .fg-item,.foogallery.fg-round-large .fg-item-inner{border-radius:15px}.foogallery.fg-round-full .fg-item,.foogallery.fg-round-full .fg-item-inner{border-radius:50%}.foogallery .fg-loader{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em;height:1em;font-size:5px;visibility:hidden;opacity:0;pointer-events:none}.foogallery .fg-loading .fg-loader{visibility:visible;opacity:1}.fg-loading-default .fg-loader{border-radius:50%;text-indent:-9999em;box-shadow:0 -2.6em 0 0 rgba(130,130,130,1),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7);-webkit-animation:loading-default 1.1s infinite paused steps(8,start);animation:loading-default 1.1s infinite paused steps(8,start)}.fg-loading-default .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-default{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes loading-default{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fg-loading-bars .fg-loader,.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{background:rgba(130,130,130,1);width:1em;height:4em;-webkit-animation:loading-bars 1s infinite paused ease-in-out;animation:loading-bars 1s infinite paused ease-in-out}.fg-loading-bars .fg-loading .fg-loader,.fg-loading-bars .fg-loading .fg-loader:after,.fg-loading-bars .fg-loading .fg-loader:before{-webkit-animation-play-state:running;animation-play-state:running}.fg-loading-bars .fg-loader{color:rgba(130,130,130,1);text-indent:-9999em;font-size:4px;margin-top:-2em;margin-left:-.5em;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{position:absolute;top:0;content:''}.fg-loading-bars .fg-loader:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-bars .fg-loader:after{left:1.5em}@-webkit-keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.fg-loading-trail .fg-loader{color:#828282;margin-top:0;margin-left:0;font-size:20px;text-indent:-9999em;overflow:hidden;border-radius:50%;-webkit-animation:loading-trail-1 1.7s infinite paused ease,loading-trail-2 1.7s infinite paused ease;animation:loading-trail-1 1.7s infinite paused ease,loading-trail-2 1.7s infinite paused ease}.fg-loading-trail .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.fg-loading-pulse .fg-loader,.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{border-radius:50%;width:2.5em;height:2.5em;-webkit-animation:loading-pulse 1.8s infinite both paused ease-in-out;animation:loading-pulse 1.8s infinite both paused ease-in-out}.fg-loading-pulse .fg-loading .fg-loader,.fg-loading-pulse .fg-loading .fg-loader:after,.fg-loading-pulse .fg-loading .fg-loader:before{-webkit-animation-play-state:running;animation-play-state:running}.fg-loading-pulse .fg-loader{color:#828282;font-size:4px;margin-top:-3.75em;margin-left:-1.25em;text-indent:-9999em;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{content:'';position:absolute;top:0}.fg-loading-pulse .fg-loader:before{left:-3.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-pulse .fg-loader:after{left:3.5em}@-webkit-keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.fg-loading-dots .fg-loader{color:#828282;font-size:5px;border-radius:50%;text-indent:-9999em;-webkit-animation:loading-dots 1.3s infinite paused linear;animation:loading-dots 1.3s infinite paused linear}.fg-loading-dots .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}.fg-loading-partial .fg-loader,.fg-loading-partial .fg-loader:after{border-radius:50%;width:10em;height:10em}.fg-loading-partial .fg-loader{font-size:4px;text-indent:-9999em;margin-top:0;margin-left:0;border-top:1.1em solid rgba(130,130,130,.2);border-right:1.1em solid rgba(130,130,130,.2);border-bottom:1.1em solid rgba(130,130,130,.2);border-left:1.1em solid #828282;-webkit-animation:loading-partial 1.1s infinite paused linear;animation:loading-partial 1.1s infinite paused linear}.fg-loading-partial .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-fade-in .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-scale-up .fg-item.fg-loaded,.foogallery.fg-loaded-slide-down .fg-item.fg-loaded,.foogallery.fg-loaded-slide-left .fg-item.fg-loaded,.foogallery.fg-loaded-slide-right .fg-item.fg-loaded,.foogallery.fg-loaded-slide-up .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{transition-timing-function:ease;transition-duration:650ms;transition-property:background-color,transform}.foogallery.fg-loaded-drop .fg-loaded .fg-item-inner,.foogallery.fg-loaded-fade-in .fg-loaded .fg-item-inner,.foogallery.fg-loaded-flip .fg-loaded .fg-item-inner,.foogallery.fg-loaded-fly .fg-loaded .fg-item-inner,.foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner,.foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner{transition-timing-function:ease;transition-duration:650ms}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{perspective:1300px}.foogallery.fg-loaded-drop .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform:translateZ(400px) translateY(100%) rotateX(-90deg)}.foogallery.fg-loaded-drop .fg-loaded .fg-item-inner{transform:translateZ(0) translateY(0) rotateX(0)}.foogallery.fg-loaded-fade-in .fg-item-inner{transition-property:visibility,opacity}.foogallery.fg-loaded-flip .fg-item-inner{transition-property:visibility,opacity,transform;backface-visibility:hidden;transform-style:preserve-3d;transform:rotateY(-180deg)}.foogallery.fg-loaded-flip .fg-loaded .fg-item-inner{transform:rotateY(0)}.foogallery.fg-loaded-fly .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform-origin:50% 50% -300px;transform:rotateX(-180deg)}.foogallery.fg-loaded-fly .fg-loaded .fg-item-inner{transform:rotateX(0)}.foogallery.fg-loaded-scale-up .fg-item-inner{transition-property:visibility,opacity,transform;transform:scale(.6)}.foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner{transform:scale(1)}.foogallery.fg-loaded-slide-up .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateY(50%)}.foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner{transform:translateY(0)}.foogallery.fg-loaded-slide-down .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateY(-50%)}.foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner{transform:translateY(0)}.foogallery.fg-loaded-slide-left .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateX(50%)}.foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner{transform:translateX(0)}.foogallery.fg-loaded-slide-right .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateX(-50%)}.foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner{transform:translateX(0)}.foogallery.fg-loaded-swing-down .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform-origin:0 0;transform:rotateX(-80deg)}.foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner{transform:rotateX(0)}.foogallery .fg-caption{visibility:hidden;opacity:0;position:absolute;z-index:8;width:100%;max-height:100%;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3;border:none;text-align:center;cursor:pointer;margin:0}.foogallery .fg-caption a{text-decoration:none}.foogallery .fg-caption a:hover{border-bottom:none}.foogallery .fg-caption-title{box-sizing:content-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:400;padding:0;margin:.4em;height:1.3em;min-height:1.3em;line-height:1.3em}.foogallery .fg-caption-desc{padding:0;margin:.4em;overflow:hidden;height:100%;max-height:100%}.foogallery .fg-caption-title+.fg-caption-desc{margin-top:0}.foogallery .fg-caption-buttons{display:flex;position:relative;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;padding:5px;margin:0}.foogallery .fg-caption-buttons>a{display:inline-block;position:relative;padding:.4em .8em;margin:1px;max-width:100%;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none!important;border:1px solid transparent;border-radius:4px;box-shadow:none;outline:0;opacity:1;transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,opacity,border-color,background-color}@media only screen and (max-width:600px){.foogallery .fg-caption-buttons{align-items:stretch}.foogallery .fg-caption-buttons>a{flex:1}}.foogallery .fg-caption .fg-caption-buttons>a{color:#333;background-color:#fff;border-color:#ccc}.foogallery .fg-caption .fg-caption-buttons>a:not(.fg-disabled):hover{color:#333;background-color:#e6e6e6;border-color:#adadad;border-bottom:solid 1px}.foogallery .fg-caption .fg-caption-buttons>a.fg-disabled{color:#9d9d9d}.foogallery .fg-caption .fg-caption-buttons>a.fg-disabled:hover{border-bottom:solid 1px}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a{color:#fff;background-color:#444;border-color:#333}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a:not(.fg-disabled):hover{color:#9d9d9d;background-color:#333;border-color:#222}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a.fg-disabled{color:#9d9d9d}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a.fg-disabled:hover{border-bottom:solid 1px}.foogallery.fg-caption-always .fg-item .fg-caption .fg-caption-inner:before{display:none}.foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption{left:0;bottom:0;transition-timing-function:ease;transition-duration:.3s;transition-property:visibility,opacity;visibility:visible;opacity:1}.foogallery.fg-caption-always .fg-caption{text-align:left}.foogallery.fg-caption-hover .fg-caption .fg-caption-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%);padding:.4em}.foogallery.fg-caption-hover .fg-item.fg-loaded .fg-image-overlay{display:none}.foogallery.fg-c-l .fg-caption,.foogallery.fg-caption-always.fg-c-l .fg-caption{text-align:left}.foogallery.fg-c-c .fg-caption,.foogallery.fg-caption-always.fg-c-c .fg-caption{text-align:center}.foogallery.fg-c-r .fg-caption,.foogallery.fg-caption-always.fg-c-r .fg-caption{text-align:right}.foogallery.fg-c-j .fg-caption,.foogallery.fg-caption-always.fg-c-j .fg-caption{text-align:justify}.foogallery .fg-image-overlay:before{content:"";display:block;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:32px;height:32px;background-size:32px 32px;background-position:center center;background-repeat:no-repeat;min-width:32px;min-height:32px}.foogallery .fg-caption-inner:before{content:"";display:none;position:relative;width:32px;height:32px;margin:.4em;background-size:32px 32px;vertical-align:middle;background-position:center center;background-repeat:no-repeat;min-width:32px;min-height:32px}.foogallery.fg-hover-cart:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-external:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-eye:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-plus:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-tint:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom2:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom3:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-1:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-2:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-3:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-4:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-default:not(.fg-preset) .fg-caption-inner:before{display:block}.foogallery.fg-hover-cart:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-external:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-eye:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-tint:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom2:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom3:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-1:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-2:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-3:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-4:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-default:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-video-sticky .fg-type-video.fg-loaded .fg-item-inner .fg-image-overlay{background-color:transparent;visibility:visible;opacity:1;display:block}.foogallery.fg-video-sticky .fg-type-video .fg-caption-inner:before{display:none}.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-image-overlay:before{background-image:url(../img/icons.svg#zoom-light)}.foogallery.fg-light-overlays.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom .fg-image-overlay:before{background-image:url(../img/icons.svg#zoom-dark)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-image-overlay:before{background-image:url(../img/icons.svg#zoom2-light)}.foogallery.fg-light-overlays.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom2 .fg-image-overlay:before{background-image:url(../img/icons.svg#zoom2-dark)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-image-overlay:before{background-image:url(../img/icons.svg#zoom3-light)}.foogallery.fg-light-overlays.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom3 .fg-image-overlay:before{background-image:url(../img/icons.svg#zoom3-dark)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-image-overlay:before{background-image:url(../img/icons.svg#plus-light)}.foogallery.fg-light-overlays.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-plus .fg-image-overlay:before{background-image:url(../img/icons.svg#plus-dark)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-image-overlay:before{background-image:url(../img/icons.svg#circle-plus-light)}.foogallery.fg-light-overlays.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-circle-plus .fg-image-overlay:before{background-image:url(../img/icons.svg#circle-plus-dark)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-image-overlay:before{background-image:url(../img/icons.svg#eye-light)}.foogallery.fg-light-overlays.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-eye .fg-image-overlay:before{background-image:url(../img/icons.svg#eye-dark)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-image-overlay:before{background-image:url(../img/icons.svg#external-light)}.foogallery.fg-light-overlays.fg-hover-external .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-external .fg-image-overlay:before{background-image:url(../img/icons.svg#external-dark)}.foogallery.fg-hover-cart .fg-caption-inner:before,.foogallery.fg-hover-cart .fg-image-overlay:before{background-image:url(../img/icons.svg#cart-light)}.foogallery.fg-light-overlays.fg-hover-cart .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-cart .fg-image-overlay:before{background-image:url(../img/icons.svg#cart-dark)}.foogallery.fg-video-default .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-default .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-default-light)}.foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-default-dark)}.foogallery.fg-video-1 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-1 .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-1-light)}.foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-1-dark)}.foogallery.fg-video-2 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-2 .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-2-light)}.foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-2-dark)}.foogallery.fg-video-3 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-3 .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-3-light)}.foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-3-dark)}.foogallery.fg-video-4 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-4 .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-4-light)}.foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-image-overlay:before{background-image:url(../img/icons.svg#video-4-dark)}.foogallery.fg-caption-hover.fg-hover-colorize .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-colorize .fg-loaded .fg-image,.foogallery.fg-hover-colorize .fg-loaded .fg-image-overlay,.foogallery.fg-hover-fade .fg-loaded .fg-image-overlay,.foogallery.fg-hover-grayscale .fg-loaded .fg-image,.foogallery.fg-hover-grayscale .fg-loaded .fg-image-overlay,.foogallery.fg-hover-instant .fg-loaded .fg-image-overlay,.foogallery.fg-hover-push .fg-loaded .fg-thumb,.foogallery.fg-hover-scale .fg-item.fg-loaded,.foogallery.fg-hover-scale .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,.foogallery.fg-hover-zoomed .fg-loaded .fg-image{transition-timing-function:ease;transition-duration:.3s;backface-visibility:hidden}.foogallery.fg-hover-colorize .fg-image{filter:grayscale(100%);transition-property:filter}.foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image{filter:grayscale(0)}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-hover-colorize .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-hover-grayscale .fg-image{filter:grayscale(0);transition-property:filter}.foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image{filter:grayscale(100%)}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-hover-grayscale .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:none}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transform:translateX(100%);visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb{transition-property:transform}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption{transform:translateY(0)}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,.foogallery.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,.foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb{transform:translateX(-100%)}.foogallery.fg-hover-scale .fg-item{transition-property:transform;z-index:4}.foogallery.fg-hover-scale .fg-item:focus-within,.foogallery.fg-hover-scale .fg-item:hover{transform:scale(1.048);z-index:10}.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-hover-scale .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-scale .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-scale .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-hover-zoomed .fg-image{transition-property:transform;z-index:4}.foogallery.fg-hover-zoomed .fg-item:focus-within .fg-image,.foogallery.fg-hover-zoomed .fg-item:hover .fg-image{transform:scale(1.15)}.foogallery.fg-hover-zoomed .fg-image-wrap{overflow:hidden}.foogallery.fg-caption-hover.fg-hover-zoomed .fg-caption,.foogallery.fg-hover-zoomed .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-zoomed .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-zoomed .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:transform,background-color,opacity,visibility;visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-image-overlay{transform:translateY(0) translateX(0)}.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay{transform:translateY(100%)}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay{transform:translateY(-100%)}.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay{transform:translateX(100%)}.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay{transform:translateX(-100%)}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{box-sizing:border-box}.fg-paging-container{display:block;padding:15px;margin-top:0!important;margin-bottom:0!important;margin-left:auto;margin-right:auto;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-ph-dots:after{display:block;content:'';width:0;height:22px}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9d9d9d}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#888}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#888}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9d9d9d;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{box-sizing:border-box}.fg-paging-container{display:block;padding:15px;margin-top:0!important;margin-bottom:0!important;margin-left:auto;margin-right:auto;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-ph-dots:after{display:block;content:'';width:0;height:22px}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9d9d9d}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#888}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#888}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9d9d9d;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-default:after{content:'';display:block;clear:both}.fg-default .fg-item{display:inline-block;vertical-align:top;max-width:100%}.fg-default .fg-item-inner,.fg-default .fg-thumb{display:block;vertical-align:top;max-width:100%}.fg-default .fg-image{border-radius:0;display:block;max-width:100%;height:auto;margin:0;padding:0}.fg-default .fg-image{vertical-align:top}.fg-default.fg-left{text-align:left}.fg-default.fg-center{text-align:center}.fg-default.fg-right{text-align:right}.fg-default.fg-gutter-5{padding-left:5px;margin-bottom:-5px}.fg-default.fg-gutter-5 .fg-item{margin-right:5px;margin-bottom:5px}.fg-default.fg-gutter-10{padding-left:10px;margin-bottom:-10px}.fg-default.fg-gutter-10 .fg-item{margin-right:10px;margin-bottom:10px}.fg-default.fg-gutter-15{padding-left:15px;margin-bottom:-15px}.fg-default.fg-gutter-15 .fg-item{margin-right:15px;margin-bottom:15px}.fg-default.fg-gutter-20{padding-left:20px;margin-bottom:-20px}.fg-default.fg-gutter-20 .fg-item{margin-right:20px;margin-bottom:20px}.fg-default.fg-gutter-25{padding-left:25px;margin-bottom:-25px}.fg-default.fg-gutter-25 .fg-item{margin-right:25px;margin-bottom:25px}@media only screen and (max-width:600px){.fg-default.fg-m-col1 .fg-image,.fg-default.fg-m-col2 .fg-image,.fg-default.fg-m-col3 .fg-image{width:100%}.fg-default.fg-m-col1.fg-gutter-5 .fg-item{width:calc(100% - 10px);min-width:calc(100% - 10px);max-width:calc(100% - 10px)}.fg-default.fg-m-col2.fg-gutter-5 .fg-item{width:calc(50% - 10px);min-width:calc(50% - 10px);max-width:calc(50% - 10px)}.fg-default.fg-m-col3.fg-gutter-5 .fg-item{width:calc(33.33% - 10px);min-width:calc(33.33% - 10px);max-width:calc(33.33% - 10px)}.fg-default.fg-m-col1.fg-gutter-10 .fg-item{width:calc(100% - 20px);min-width:calc(100% - 20px);max-width:calc(100% - 20px)}.fg-default.fg-m-col2.fg-gutter-10 .fg-item{width:calc(50% - 20px);min-width:calc(50% - 20px);max-width:calc(50% - 20px)}.fg-default.fg-m-col3.fg-gutter-10 .fg-item{width:calc(33.33% - 20px);min-width:calc(33.33% - 20px);max-width:calc(33.33% - 20px)}.fg-default.fg-m-col1.fg-gutter-15 .fg-item{width:calc(100% - 30px);min-width:calc(100% - 30px);max-width:calc(100% - 30px)}.fg-default.fg-m-col2.fg-gutter-15 .fg-item{width:calc(50% - 30px);min-width:calc(50% - 30px);max-width:calc(50% - 30px)}.fg-default.fg-m-col3.fg-gutter-15 .fg-item{width:calc(33.33% - 30px);min-width:calc(33.33% - 30px);max-width:calc(33.33% - 30px)}.fg-default.fg-m-col1.fg-gutter-20 .fg-item{width:calc(100% - 40px);min-width:calc(100% - 40px);max-width:calc(100% - 40px)}.fg-default.fg-m-col2.fg-gutter-20 .fg-item{width:calc(50% - 40px);min-width:calc(50% - 40px);max-width:calc(50% - 40px)}.fg-default.fg-m-col3.fg-gutter-20 .fg-item{width:calc(33.33% - 40px);min-width:calc(33.33% - 40px);max-width:calc(33.33% - 40px)}.fg-default.fg-m-col1.fg-gutter-25 .fg-item{width:calc(100% - 50px);min-width:calc(100% - 50px);max-width:calc(100% - 50px)}.fg-default.fg-m-col2.fg-gutter-25 .fg-item{width:calc(50% - 50px);min-width:calc(50% - 50px);max-width:calc(50% - 50px)}.fg-default.fg-m-col3.fg-gutter-25 .fg-item{width:calc(33.33% - 50px);min-width:calc(33.33% - 50px);max-width:calc(33.33% - 50px)}}.fg-masonry *{box-sizing:border-box}.foogallery.fg-masonry{margin:0 auto;text-align:center}.fg-masonry .fg-thumb{display:block}.fg-masonry.fg-fixed .fg-column-width,.fg-masonry.fg-fixed .fg-image,.fg-masonry.fg-fixed .fg-item{max-width:100%}.fg-masonry .fg-column-width{display:inline-block;border:solid 0 transparent}.fg-masonry .fg-column-width,.fg-masonry .fg-gutter-width{position:absolute;height:0;visibility:hidden;opacity:0;pointer-events:none}.fg-masonry.fg-col2 .fg-item .fg-image,.fg-masonry.fg-col3 .fg-item .fg-image,.fg-masonry.fg-col4 .fg-item .fg-image,.fg-masonry.fg-col5 .fg-item .fg-image,.fg-masonry.fg-col6 .fg-item .fg-image,.fg-masonry.fg-fixed .fg-item .fg-image{width:100%;height:auto;max-width:100%}.fg-masonry .fg-item{line-height:0;font-size:0;vertical-align:top}.fg-masonry.fg-col2 .fg-item{margin-bottom:1%;width:49.5%}.fg-masonry.fg-col2 .fg-column-width{width:49.5%}.fg-masonry.fg-col2 .fg-gutter-width{width:1%}.fg-masonry.fg-col2.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-col2.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col2.fg-gutter-large .fg-item{margin-bottom:3%;width:48.5%}.fg-masonry.fg-col2.fg-gutter-large .fg-column-width{width:48.5%}.fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col3 .fg-item{margin-bottom:1%;width:32.66%}.fg-masonry.fg-col3 .fg-column-width{width:32.66%}.fg-masonry.fg-col3 .fg-gutter-width{width:1%}.fg-masonry.fg-col3.fg-gutter-none .fg-item{margin-bottom:0;width:33.33%}.fg-masonry.fg-col3.fg-gutter-none .fg-column-width{width:33.33%}.fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col3.fg-gutter-large .fg-item{margin-bottom:3%;width:31.33%}.fg-masonry.fg-col3.fg-gutter-large .fg-column-width{width:31.33%}.fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col4 .fg-item{margin-bottom:1%;width:24.25%}.fg-masonry.fg-col4 .fg-column-width{width:24.25%}.fg-masonry.fg-col4 .fg-gutter-width{width:1%}.fg-masonry.fg-col4.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-col4.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col4.fg-gutter-large .fg-item{margin-bottom:3%;width:22.75%}.fg-masonry.fg-col4.fg-gutter-large .fg-column-width{width:22.75%}.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col5 .fg-item{margin-bottom:1%;width:19.2%}.fg-masonry.fg-col5 .fg-column-width{width:19.2%}.fg-masonry.fg-col5 .fg-gutter-width{width:1%}.fg-masonry.fg-col5.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-col5.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col5.fg-gutter-large .fg-item{margin-bottom:3%;width:17.6%}.fg-masonry.fg-col5.fg-gutter-large .fg-column-width{width:17.6%}.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:15.83%}.fg-masonry.fg-col6 .fg-column-width{width:15.83%}.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:16.66%}.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:16.66%}.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:14.16%}.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:14.16%}.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}@media screen and (max-width:1280px){.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:19.2%}.fg-masonry.fg-col6 .fg-column-width{width:19.2%}.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:17.6%}.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:17.6%}.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:1024px){.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:24.25%}.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:24.25%}.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:22.75%}.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:22.75%}.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:720px){.fg-masonry.fg-col4 .fg-item,.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:32.66%}.fg-masonry.fg-col4 .fg-column-width,.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:32.66%}.fg-masonry.fg-col4 .fg-gutter-width,.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col4.fg-gutter-none .fg-item,.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:33.33%}.fg-masonry.fg-col4.fg-gutter-none .fg-column-width,.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:33.33%}.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col4.fg-gutter-large .fg-item,.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:31.33%}.fg-masonry.fg-col4.fg-gutter-large .fg-column-width,.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:31.33%}.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:480px){.fg-masonry.fg-col3 .fg-item,.fg-masonry.fg-col4 .fg-item,.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:49.5%}.fg-masonry.fg-col3 .fg-column-width,.fg-masonry.fg-col4 .fg-column-width,.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:49.5%}.fg-masonry.fg-col3 .fg-gutter-width,.fg-masonry.fg-col4 .fg-gutter-width,.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col3.fg-gutter-none .fg-item,.fg-masonry.fg-col4.fg-gutter-none .fg-item,.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-col3.fg-gutter-none .fg-column-width,.fg-masonry.fg-col4.fg-gutter-none .fg-column-width,.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col3.fg-gutter-large .fg-item,.fg-masonry.fg-col4.fg-gutter-large .fg-item,.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:48.5%}.fg-masonry.fg-col3.fg-gutter-large .fg-column-width,.fg-masonry.fg-col4.fg-gutter-large .fg-column-width,.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:48.5%}.fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:320px){.fg-masonry.fg-col2 .fg-item,.fg-masonry.fg-col3 .fg-item,.fg-masonry.fg-col4 .fg-item,.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:100%}.fg-masonry.fg-col2 .fg-column-width,.fg-masonry.fg-col3 .fg-column-width,.fg-masonry.fg-col4 .fg-column-width,.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:100%}.fg-masonry.fg-col2 .fg-gutter-width,.fg-masonry.fg-col3 .fg-gutter-width,.fg-masonry.fg-col4 .fg-gutter-width,.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:0}.fg-masonry.fg-col2.fg-gutter-none .fg-item,.fg-masonry.fg-col3.fg-gutter-none .fg-item,.fg-masonry.fg-col4.fg-gutter-none .fg-item,.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:100%}.fg-masonry.fg-col2.fg-gutter-none .fg-column-width,.fg-masonry.fg-col3.fg-gutter-none .fg-column-width,.fg-masonry.fg-col4.fg-gutter-none .fg-column-width,.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:100%}.fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col2.fg-gutter-large .fg-item,.fg-masonry.fg-col3.fg-gutter-large .fg-item,.fg-masonry.fg-col4.fg-gutter-large .fg-item,.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:100%}.fg-masonry.fg-col2.fg-gutter-large .fg-column-width,.fg-masonry.fg-col3.fg-gutter-large .fg-column-width,.fg-masonry.fg-col4.fg-gutter-large .fg-column-width,.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:100%}.fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:0}}.foogallery.fg-border-thin .fg-column-width{border-width:4px}.foogallery.fg-border-medium .fg-column-width{border-width:10px}.foogallery.fg-border-thick .fg-column-width{border-width:16px}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent;text-align:left}.foogallery.fg-masonry.fg-captions-bottom.fg-c-l .fg-item-inner .fg-caption{text-align:left}.foogallery.fg-masonry.fg-captions-bottom.fg-c-c .fg-item-inner .fg-caption{text-align:center}.foogallery.fg-masonry.fg-captions-bottom.fg-c-r .fg-item-inner .fg-caption{text-align:right}.foogallery.fg-masonry.fg-captions-bottom.fg-c-j .fg-item-inner .fg-caption{text-align:justify}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner{display:block;position:relative;max-height:none;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-hover .fg-item-inner .fg-image-overlay{display:block}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption,.fg-masonry.fg-captions-bottom.fg-light .fg-caption{color:#828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a:hover,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{color:#222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{color:#fff}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-masonry.fg-captions-bottom .fg-caption{border-width:10px}.fg-masonry.fg-captions-bottom .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-masonry.fg-captions-bottom.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-masonry.fg-captions-bottom.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-masonry.fg-transparent .fg-item-inner{background-color:transparent;color:#333;border-color:transparent}.fg-masonry.fg-transparent .fg-caption{color:#7f7f7f}.fg-masonry.fg-transparent.fg-captions-bottom .fg-caption{border-width:0;border-top-width:10px;border-bottom-width:10px}.fg-masonry.fg-transparent .fg-caption a{color:#7f7f7f;border-bottom:1px solid #7f7f7f}.fg-masonry.fg-transparent .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-transparent .fg-caption-title,.fg-masonry.fg-transparent .fg-caption-title a{color:#333}.fg-masonry.fg-transparent .fg-caption-title a{border-bottom:1px solid #333}.fg-masonry.fg-transparent.fg-round-full .fg-item,.fg-masonry.fg-transparent.fg-round-full .fg-item-inner{border-radius:15px}.fg-masonry.fg-transparent.fg-round-full .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-full .fg-image-wrap,.fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%;overflow:hidden}.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{overflow:hidden}.fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:5px}.fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:10px}.fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:15px}.fg-masonry.fg-transparent.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.fg-masonry.fg-transparent.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.fg-masonry.fg-transparent.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.fg-masonry.fg-transparent.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px rgba(128,128,128,.5)}.fg-masonry.fg-transparent.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(128,128,128,.5)}.fg-masonry.fg-transparent.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(128,128,128,.5)}.fg-masonry.fg-transparent.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(128,128,128,.5)}.fg-justified{box-sizing:border-box;position:relative;text-align:center}.foogallery.fg-justified .fg-item{box-sizing:border-box;display:inline-block;margin:0;padding:0}.foogallery.fg-justified .fg-image,.foogallery.fg-justified .fg-item-inner,.foogallery.fg-justified .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0}.fg-justified .fg-item{visibility:visible;position:relative}.fg-justified .fg-item-inner{position:relative;width:100%;height:100%}.fg-justified .fg-thumb{position:relative;overflow:hidden}.fg-justified .fg-image{z-index:1}.fg-justified .fg-item.fg-positioned .fg-image-wrap,.fg-justified .fg-item.fg-positioned .fg-thumb{width:100%;height:100%}.fg-justified .fg-item.fg-positioned .fg-image{width:100%!important;height:auto!important;min-height:100%}.foogallery.fg-justified-css{position:relative;display:flex;box-sizing:border-box;align-items:center;justify-content:stretch;flex-wrap:wrap}.foogallery.fg-justified-css:after{display:block;content:'';flex-shrink:0;flex-grow:10;min-width:60px}.foogallery.fg-justified-css .fg-image,.foogallery.fg-justified-css .fg-item,.foogallery.fg-justified-css .fg-item-inner,.foogallery.fg-justified-css .fg-thumb{display:block}.foogallery.fg-justified-css .fg-item{flex-shrink:0;flex-grow:1;margin:5px}.foogallery.fg-justified-css .fg-image-wrap{display:flex;align-items:center;justify-content:stretch;overflow:hidden}.foogallery.fg-justified-css .fg-image{width:100%;height:auto}.fg-simple_portfolio{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch;align-content:center}.fg-simple_portfolio .fg-item{position:relative;flex-grow:0;flex-shrink:0;flex-basis:auto;margin:10px;max-width:100%}.fg-simple_portfolio .fg-item-inner{display:flex;flex-direction:column;margin:0;height:100%}.fg-simple_portfolio.fg-captions-top .fg-item-inner{flex-direction:column-reverse}.fg-simple_portfolio .fg-image{height:auto;width:100%}.fg-simple_portfolio .fg-thumb{min-width:auto;min-height:auto}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:100%;height:100%;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent;text-align:left}.foogallery.fg-simple_portfolio.fg-c-l .fg-item-inner .fg-caption{text-align:left}.foogallery.fg-simple_portfolio.fg-c-c .fg-item-inner .fg-caption{text-align:center}.foogallery.fg-simple_portfolio.fg-c-r .fg-item-inner .fg-caption{text-align:right}.foogallery.fg-simple_portfolio.fg-c-j .fg-item-inner .fg-caption{text-align:justify}.foogallery.fg-simple_portfolio .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner{display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-simple_portfolio.fg-caption-hover .fg-item-inner .fg-image-overlay{display:block}.foogallery.fg-simple_portfolio.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-simple_portfolio .fg-caption-title{white-space:normal;height:auto}.fg-simple_portfolio.fg-dark .fg-caption,.fg-simple_portfolio.fg-light .fg-caption{color:#828282}.fg-simple_portfolio.fg-dark .fg-caption a,.fg-simple_portfolio.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-simple_portfolio.fg-dark .fg-caption a:hover,.fg-simple_portfolio.fg-light .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-light .fg-caption-title,.fg-simple_portfolio.fg-light .fg-caption-title a{color:#222}.fg-simple_portfolio.fg-dark .fg-caption-title,.fg-simple_portfolio.fg-dark .fg-caption-title a{color:#fff}.fg-simple_portfolio.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-simple_portfolio.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-simple_portfolio .fg-caption{border-width:0}.fg-simple_portfolio .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-simple_portfolio.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-simple_portfolio.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.fg-simple_portfolio.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.fg-simple_portfolio.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.fg-simple_portfolio.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-simple_portfolio.fg-transparent .fg-item-inner{background-color:transparent;color:#333;border-color:transparent}.fg-simple_portfolio.fg-transparent .fg-caption{color:#7f7f7f}.fg-simple_portfolio.fg-transparent .fg-caption a{color:#7f7f7f;border-bottom:1px solid #7f7f7f}.fg-simple_portfolio.fg-transparent .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-transparent .fg-caption-title,.fg-simple_portfolio.fg-transparent .fg-caption-title a{color:#333}.fg-simple_portfolio.fg-transparent .fg-caption-title a{border-bottom:1px solid #333}.fg-simple_portfolio.fg-transparent.fg-round-full .fg-item,.fg-simple_portfolio.fg-transparent.fg-round-full .fg-item-inner{border-radius:15px}.fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-wrap,.fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%;overflow:hidden}.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{overflow:hidden}.fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:5px}.fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:10px}.fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:15px}.fg-simple_portfolio.fg-transparent.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.fg-simple_portfolio.fg-transparent.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.fg-simple_portfolio.fg-transparent.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.fg-simple_portfolio.fg-transparent.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px rgba(128,128,128,.5)}.fg-simple_portfolio.fg-transparent.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(128,128,128,.5)}.fg-simple_portfolio.fg-transparent.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(128,128,128,.5)}.fg-simple_portfolio.fg-transparent.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(128,128,128,.5)}.foogallery.fg-preset.fg-polaroid .fg-item{-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .35s,background-color .65s}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1){-webkit-transform:rotate(3deg);transform:rotate(3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n){-webkit-transform:rotate(-3deg);transform:rotate(-3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(3n){-webkit-transform:rotate(1deg);transform:rotate(1deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(5n){-webkit-transform:rotate(-2deg);transform:rotate(-2deg)}.foogallery.fg-preset.fg-polaroid .fg-item:hover{-webkit-transform:rotate(0);transform:rotate(0)}.foogallery.fg-preset.fg-polaroid .fg-caption{position:relative;width:auto;font-family:"Segoe Print Regular",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.foogallery.fg-preset.fg-polaroid .fg-caption-inner,.foogallery.fg-preset.fg-polaroid .fg-caption-title{position:relative;width:auto}.foogallery.fg-preset.fg-polaroid .fg-caption-title{text-align:center}.foogallery.fg-preset.fg-polaroid .fg-caption-desc{display:none}.foogallery.fg-light.fg-preset.fg-polaroid .fg-caption-title,.foogallery.fg-preset.fg-polaroid .fg-caption-title{color:#333}.foogallery.fg-dark.fg-preset.fg-polaroid .fg-caption-title{color:#fff}.foogallery.fg-preset.fg-polaroid .fg-caption{border-style:solid;border-color:transparent;border-width:10px}.foogallery.fg-preset.fg-polaroid .fg-caption-title+.fg-caption-desc{margin-top:4px}.foogallery.fg-preset.fg-polaroid.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.foogallery.fg-preset.fg-polaroid.fg-border-medium .fg-caption{border-width:10px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption{border-width:16px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-image-viewer{display:block;font-family:'Open Sans','Helvetica Neue',Arial,sans-serif}.fg-image-viewer.fg-left{text-align:left}.fg-image-viewer.fg-center{text-align:center}.fg-image-viewer.fg-right{text-align:right}.fiv-inner{position:relative;display:inline-block;max-width:100%;overflow:hidden;z-index:6}.fiv-inner .fiv-inner-container{position:relative;overflow:hidden;max-width:100%;border-style:solid;border-width:0;border-bottom-width:4px;z-index:5}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:active,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:hover,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:visited{position:relative;display:block;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item{position:absolute;visibility:visible;opacity:1;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item:first-of-type{position:relative}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img{display:block;max-width:100%;height:auto;border:none;outline:0;text-decoration:none}.fg-image-viewer .fiv-inner .fiv-ctrls{display:block;text-align:center;font-size:14px;border-style:solid;line-height:34px}.fg-image-viewer .fiv-inner .fiv-ctrls:after{content:'';display:block;clear:both}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count{display:inline-block;font-weight:400;margin:0}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;min-width:80px;position:relative;overflow:hidden;transition:background-color .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{display:block;position:absolute;font-size:24px;line-height:30px;top:0;left:0;width:100%;transform:translateY(0);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover:before{transform:translateY(-100%)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev span{display:block;width:100%;transform:translateY(100%);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover span{transform:translateY(0)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{float:left}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{content:'\2190'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next{float:right}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before{content:'\2192'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count span{margin:0 4px}.foogallery.fg-image-viewer.fg-caption-always .fg-item-inner .fg-caption{padding:0;border:none}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-desc{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title+.fg-caption-desc{padding:0 10px 10px 10px}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-light .fiv-inner .fiv-inner-container{background-color:#fff;color:#333;border-color:#fff}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#f2f2f2}.fg-image-viewer.fg-light .fiv-next,.fg-image-viewer.fg-light .fiv-prev{box-shadow:inset 0 0 0 1px #ddd}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-dark .fiv-inner .fiv-inner-container{background-color:#333;color:#fff;border-color:#333}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#444}.fg-image-viewer.fg-dark .fiv-next,.fg-image-viewer.fg-dark .fiv-prev{box-shadow:inset 0 0 0 1px #222}.foogallery.fg-image-viewer.fg-border-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin .fg-item-inner{border-width:0}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-inner-container{border-width:4px}.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-inner-container{border-width:10px}.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-inner-container{border-width:16px}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-ctrls{border-top-width:1px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-round-small .fiv-inner{border-radius:5px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-round-medium .fiv-inner{border-radius:10px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-round-large .fiv-inner{border-radius:15px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-full .fiv-inner,.foogallery.fg-image-viewer.fg-round-full .fiv-next,.foogallery.fg-image-viewer.fg-round-full .fiv-prev{border-radius:50%}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fg-item-inner{box-shadow:none}.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fiv-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fiv-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fiv-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-thumbnail,.foogallery.fg-thumbnail.fg-center{text-align:center}.foogallery.fg-thumbnail.fg-left{text-align:left}.foogallery.fg-thumbnail.fg-right{text-align:right}.foogallery.fg-thumbnail.fg-float-left{float:left;width:auto}.foogallery.fg-thumbnail.fg-float-right{float:right;width:auto}.foogallery.fg-thumbnail .fg-item{display:inline-block;vertical-align:top;max-width:100%}.foogallery.fg-thumbnail .fg-image{max-width:100%}.foogallery.fg-thumbnail .fg-st-hidden{display:none}.foogallery-stack-album{text-align:center;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3}.foogallery-stack-album,.foogallery-stack-album *{box-sizing:border-box}.foogallery-stack-album.fg-align-left{text-align:left}.foogallery-stack-album.fg-align-center{text-align:center}.foogallery-stack-album.fg-align-right{text-align:right}.foogallery-stack-album.fg-disable-transitions,.foogallery-stack-album.fg-disable-transitions *{transition:none!important}.fg-header{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;position:relative;padding:0;margin:0;border-top:solid 1px #aaa;border-bottom:solid 1px #aaa}.fg-header-title{display:block;margin:0;padding:0 20px;width:100%;text-align:left}.fg-header-active{display:block;margin:0;padding:0 20px;visibility:hidden;opacity:0;width:100%;text-align:right;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-header-back{display:block;padding:0;margin:5px;visibility:hidden;opacity:0;min-width:40px;width:40px;height:40px;border-radius:50%;text-align:center;line-height:38px;color:#999;background:#ddd;background:rgba(200,200,200,.5);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-has-active .fg-header-active,.fg-has-active .fg-header-back{visibility:visible;opacity:1}.fg-piles{display:inline-block;position:relative;transition-property:width,height;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-pile{display:block;position:absolute;top:0;left:0;list-style:none;padding:0;margin:0;visibility:visible;opacity:1;transition-property:opacity,visibility,top,left,width,height;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-pile.fg-hidden{visibility:hidden;opacity:0}.fg-pile-item{display:block;position:absolute;top:25px;left:25px;visibility:visible;opacity:1;cursor:pointer;border:10px solid #fff;background-color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.2);transition-property:opacity,visibility,top,left,transform;transition-duration:.3s;transition-timing-function:ease-in-out;z-index:1;transform:rotate(0)}.fg-expanded .fg-pile-item{z-index:2;transform:rotate(0)!important}.fg-pile-item.fg-has-cover{z-index:10;transform:rotate(0)!important}.fg-pile-item:nth-child(2){z-index:9}.fg-pile-item:nth-child(3){z-index:8}.fg-pile-item:nth-child(4){z-index:7}.fg-pile-item:nth-child(1n+5){visibility:hidden;opacity:0}.fg-expanded .fg-pile-item:nth-child(1n+4){visibility:visible;opacity:1}.fg-pile-item-thumb{display:block}.fg-pile-item-image{display:block}.fg-pile-item-caption{display:flex;justify-content:center;flex-direction:column;position:absolute;top:0;left:0;bottom:0;right:0;width:100%;height:100%;margin:0;padding:10px;background-color:rgba(68,68,68,.5);color:#fff;text-align:center;visibility:hidden;opacity:0;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-pile-item-title{display:block;width:100%;padding:0 0 10px}.fg-pile-item-desc{display:block;width:100%;max-height:100%;border-top:solid 1px currentColor;padding:10px 0 0;overflow:hidden}.fg-pile-item-thumb:hover .fg-pile-item-caption{visibility:visible;opacity:1}.fg-pile-cover{display:flex;justify-content:left;align-items:center;position:absolute;top:0;left:0;bottom:0;right:0;width:100%;height:100%;visibility:visible;opacity:1;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-expanded .fg-pile-cover{visibility:hidden;opacity:0;pointer-events:none}.fg-pile-cover-content{display:flex;position:relative;background:#fff;color:#333;width:75%;font-weight:700;box-shadow:1px 1px 1px rgba(0,0,0,.1),5px 0 5px -3px rgba(0,0,0,.4),inset 0 0 5px rgba(0,0,0,.04)}.fg-pile-cover-title{text-align:center;padding:10px;width:100%}.fg-pile-cover-count{color:#aaa;padding:10px 5px;background:#f7f7f7;height:100%}
1
+ .foogallery,.foogallery *{box-sizing:border-box}.foogallery{display:block;z-index:1;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;position:relative;line-height:0;font-size:0;width:100%;max-width:100%}.foogallery .fg-item{display:inline-block;position:relative;background-color:transparent;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.foogallery .fg-item.fg-hidden{display:none!important}.foogallery .fg-item-inner{display:block;position:relative;visibility:hidden;overflow:hidden;opacity:0;z-index:3;margin:0;border:solid 0 transparent}.foogallery .fg-item.fg-error:before{content:"";display:block;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:32px;height:32px;background-image:url('../img/icons.svg#image');background-color:transparent;background-repeat:no-repeat;background-position:center center;background-size:32px 32px}.foogallery .fg-item.fg-loaded{z-index:4}.foogallery .fg-loaded .fg-item-inner{visibility:visible;opacity:1;z-index:5}.foogallery .fg-error .fg-item-inner{pointer-events:none;cursor:default}.foogallery .fg-thumb{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:4;box-shadow:none}.foogallery .fg-thumb:focus,.foogallery .fg-thumb:hover{border:none;outline:0;text-decoration:none;box-shadow:none}.foogallery .fg-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;visibility:hidden;opacity:0}.foogallery .fg-image-wrap{display:block;position:relative}.foogallery .fg-image{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:5;max-width:100%;height:auto;margin:0;width:auto}.foogallery picture.fg-image>img{display:block;position:relative;border:none;outline:0;text-decoration:none;max-width:100%;height:auto;margin:0;width:auto}.foogallery .fg-loaded .fg-thumb{z-index:6}.foogallery .fg-loaded .fg-image{z-index:7}.fg-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.foogallery.fg-light .fg-item-inner{background-color:#fff;color:#333;border-color:#fff}.foogallery.fg-dark .fg-item-inner{background-color:#333;color:#fff;border-color:#333}.foogallery.fg-light .fg-item.fg-error,.foogallery.fg-light .fg-item.fg-idle,.foogallery.fg-light .fg-item.fg-loading{background-color:#eee;box-shadow:inset 0 0 0 1px #ddd}.foogallery.fg-dark .fg-item.fg-error,.foogallery.fg-dark .fg-item.fg-idle,.foogallery.fg-dark .fg-item.fg-loading{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery .fg-caption{background-color:rgba(0,0,0,.6);color:#fff}.foogallery .fg-caption a{color:#fff;border-bottom:1px solid #fff}.foogallery.fg-light-overlays .fg-caption{background-color:rgba(255,255,255,.8);color:#333}.foogallery.fg-light-overlays .fg-caption a{color:#333;border-bottom-color:#333}.foogallery.fg-transparent-overlays .fg-caption{background-color:transparent;color:#fff}.foogallery.fg-transparent-overlays .fg-caption a{color:#fff;border-bottom-color:#fff}.foogallery .fg-image-overlay{background-color:rgba(0,0,0,.6);color:#fff}.foogallery.fg-light-overlays .fg-image-overlay{background-color:rgba(255,255,255,.8);color:#333}.foogallery.fg-transparent-overlays .fg-image-overlay{background-color:transparent;color:#fff}.fg-exif-light .fg-item.fg-item-exif .fg-image-wrap:after{background-color:#fff;color:#333}.fg-exif-dark .fg-item.fg-item-exif .fg-image-wrap:after{background-color:#333;color:#fff}.fg-exif-rounded .fg-item.fg-item-exif .fg-image-wrap:after{border-radius:3px}.fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after{display:inline-block;position:absolute;content:'EXIF';font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:11px;line-height:10px;padding:3px 4px;z-index:7}.fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after{bottom:5px;right:5px}.fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after{bottom:5px;left:5px}.fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after{top:5px;right:5px}.fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after{top:5px;left:5px}.foogallery.fg-border-thin .fg-item-inner{border-width:4px}.foogallery.fg-border-medium .fg-item-inner{border-width:10px}.foogallery.fg-border-thick .fg-item-inner{border-width:16px}.foogallery.fg-light.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-dark.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-light.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-light.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-light.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-shadow-inset-small .fg-thumb:after{display:block;content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:7}.foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%}.foogallery.fg-round-small .fg-item,.foogallery.fg-round-small .fg-item-inner{border-radius:5px}.foogallery.fg-round-medium .fg-item,.foogallery.fg-round-medium .fg-item-inner{border-radius:10px}.foogallery.fg-round-large .fg-item,.foogallery.fg-round-large .fg-item-inner{border-radius:15px}.foogallery.fg-round-full .fg-item,.foogallery.fg-round-full .fg-item-inner{border-radius:50%}.foogallery .fg-loader{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em;height:1em;font-size:5px;visibility:hidden;opacity:0;pointer-events:none}.foogallery .fg-loading .fg-loader{visibility:visible;opacity:1}.fg-loading-default .fg-loader{border-radius:50%;text-indent:-9999em;box-shadow:0 -2.6em 0 0 #828282,1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7);-webkit-animation:loading-default 1.1s infinite paused steps(8,start);animation:loading-default 1.1s infinite paused steps(8,start)}.fg-loading-default .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-default{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes loading-default{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fg-loading-bars .fg-loader,.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{background:#828282;width:1em;height:4em;-webkit-animation:loading-bars 1s infinite paused ease-in-out;animation:loading-bars 1s infinite paused ease-in-out}.fg-loading-bars .fg-loading .fg-loader,.fg-loading-bars .fg-loading .fg-loader:after,.fg-loading-bars .fg-loading .fg-loader:before{-webkit-animation-play-state:running;animation-play-state:running}.fg-loading-bars .fg-loader{color:#828282;text-indent:-9999em;font-size:4px;margin-top:-2em;margin-left:-.5em;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{position:absolute;top:0;content:''}.fg-loading-bars .fg-loader:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-bars .fg-loader:after{left:1.5em}@-webkit-keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.fg-loading-trail .fg-loader{color:#828282;margin-top:0;margin-left:0;font-size:20px;text-indent:-9999em;overflow:hidden;border-radius:50%;-webkit-animation:loading-trail-1 1.7s infinite paused ease,loading-trail-2 1.7s infinite paused ease;animation:loading-trail-1 1.7s infinite paused ease,loading-trail-2 1.7s infinite paused ease}.fg-loading-trail .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.fg-loading-pulse .fg-loader,.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{border-radius:50%;width:2.5em;height:2.5em;-webkit-animation:loading-pulse 1.8s infinite both paused ease-in-out;animation:loading-pulse 1.8s infinite both paused ease-in-out}.fg-loading-pulse .fg-loading .fg-loader,.fg-loading-pulse .fg-loading .fg-loader:after,.fg-loading-pulse .fg-loading .fg-loader:before{-webkit-animation-play-state:running;animation-play-state:running}.fg-loading-pulse .fg-loader{color:#828282;font-size:4px;margin-top:-3.75em;margin-left:-1.25em;text-indent:-9999em;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{content:'';position:absolute;top:0}.fg-loading-pulse .fg-loader:before{left:-3.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-pulse .fg-loader:after{left:3.5em}@-webkit-keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.fg-loading-dots .fg-loader{color:#828282;font-size:5px;border-radius:50%;text-indent:-9999em;-webkit-animation:loading-dots 1.3s infinite paused linear;animation:loading-dots 1.3s infinite paused linear}.fg-loading-dots .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}.fg-loading-partial .fg-loader,.fg-loading-partial .fg-loader:after{border-radius:50%;width:10em;height:10em}.fg-loading-partial .fg-loader{font-size:4px;text-indent:-9999em;margin-top:0;margin-left:0;border-top:1.1em solid rgba(130,130,130,.2);border-right:1.1em solid rgba(130,130,130,.2);border-bottom:1.1em solid rgba(130,130,130,.2);border-left:1.1em solid #828282;-webkit-animation:loading-partial 1.1s infinite paused linear;animation:loading-partial 1.1s infinite paused linear}.fg-loading-partial .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-fade-in .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-scale-up .fg-item.fg-loaded,.foogallery.fg-loaded-slide-down .fg-item.fg-loaded,.foogallery.fg-loaded-slide-left .fg-item.fg-loaded,.foogallery.fg-loaded-slide-right .fg-item.fg-loaded,.foogallery.fg-loaded-slide-up .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{transition-timing-function:ease;transition-duration:650ms;transition-property:background-color,transform}.foogallery.fg-loaded-drop .fg-loaded .fg-item-inner,.foogallery.fg-loaded-fade-in .fg-loaded .fg-item-inner,.foogallery.fg-loaded-flip .fg-loaded .fg-item-inner,.foogallery.fg-loaded-fly .fg-loaded .fg-item-inner,.foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner,.foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner{transition-timing-function:ease;transition-duration:650ms}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{perspective:1300px}.foogallery.fg-loaded-drop .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform:translateZ(400px) translateY(100%) rotateX(-90deg)}.foogallery.fg-loaded-drop .fg-loaded .fg-item-inner{transform:translateZ(0) translateY(0) rotateX(0)}.foogallery.fg-loaded-fade-in .fg-item-inner{transition-property:visibility,opacity}.foogallery.fg-loaded-flip .fg-item-inner{transition-property:visibility,opacity,transform;backface-visibility:hidden;transform-style:preserve-3d;transform:rotateY(-180deg)}.foogallery.fg-loaded-flip .fg-loaded .fg-item-inner{transform:rotateY(0)}.foogallery.fg-loaded-fly .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform-origin:50% 50% -300px;transform:rotateX(-180deg)}.foogallery.fg-loaded-fly .fg-loaded .fg-item-inner{transform:rotateX(0)}.foogallery.fg-loaded-scale-up .fg-item-inner{transition-property:visibility,opacity,transform;transform:scale(.6)}.foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner{transform:scale(1)}.foogallery.fg-loaded-slide-up .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateY(50%)}.foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner{transform:translateY(0)}.foogallery.fg-loaded-slide-down .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateY(-50%)}.foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner{transform:translateY(0)}.foogallery.fg-loaded-slide-left .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateX(50%)}.foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner{transform:translateX(0)}.foogallery.fg-loaded-slide-right .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateX(-50%)}.foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner{transform:translateX(0)}.foogallery.fg-loaded-swing-down .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform-origin:0 0;transform:rotateX(-80deg)}.foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner{transform:rotateX(0)}.foogallery .fg-caption{visibility:hidden;opacity:0;position:absolute;z-index:8;width:100%;max-height:100%;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3;border:none;text-align:center;cursor:pointer;margin:0}.foogallery .fg-caption a{text-decoration:none}.foogallery .fg-caption a:hover{border-bottom:none}.foogallery .fg-caption-title{box-sizing:content-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:400;padding:0;margin:.4em;height:1.3em;min-height:1.3em;line-height:1.3em}.foogallery .fg-caption-desc{padding:0;margin:.4em;overflow:hidden;height:100%;max-height:100%}.foogallery .fg-caption-title+.fg-caption-desc{margin-top:0}.foogallery .fg-caption-buttons{display:flex;position:relative;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;padding:5px;margin:0}.foogallery .fg-caption-buttons>a{display:inline-block;position:relative;padding:.4em .8em;margin:1px;max-width:100%;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none!important;border:1px solid transparent;border-radius:4px;box-shadow:none;outline:0;opacity:1;transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,opacity,border-color,background-color}@media only screen and (max-width:600px){.foogallery .fg-caption-buttons{align-items:stretch}.foogallery .fg-caption-buttons>a{flex:1}}.foogallery .fg-caption .fg-caption-buttons>a{color:#333;background-color:#fff;border-color:#ccc}.foogallery .fg-caption .fg-caption-buttons>a:not(.fg-disabled):hover{color:#333;background-color:#e6e6e6;border-color:#adadad;border-bottom:solid 1px}.foogallery .fg-caption .fg-caption-buttons>a.fg-disabled{color:#9d9d9d}.foogallery .fg-caption .fg-caption-buttons>a.fg-disabled:hover{border-bottom:solid 1px}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a{color:#fff;background-color:#444;border-color:#333}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a:not(.fg-disabled):hover{color:#9d9d9d;background-color:#333;border-color:#222}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a.fg-disabled{color:#9d9d9d}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a.fg-disabled:hover{border-bottom:solid 1px}.foogallery.fg-caption-always .fg-item .fg-caption .fg-caption-inner:before{display:none}.foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption{left:0;bottom:0;transition-timing-function:ease;transition-duration:.3s;transition-property:visibility,opacity;visibility:visible;opacity:1}.foogallery.fg-caption-always .fg-caption{text-align:left}.foogallery.fg-caption-hover .fg-caption .fg-caption-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%);padding:.4em}.foogallery.fg-caption-hover .fg-item.fg-loaded .fg-image-overlay{display:none}.foogallery.fg-c-l .fg-caption,.foogallery.fg-caption-always.fg-c-l .fg-caption{text-align:left}.foogallery.fg-c-c .fg-caption,.foogallery.fg-caption-always.fg-c-c .fg-caption{text-align:center}.foogallery.fg-c-r .fg-caption,.foogallery.fg-caption-always.fg-c-r .fg-caption{text-align:right}.foogallery.fg-c-j .fg-caption,.foogallery.fg-caption-always.fg-c-j .fg-caption{text-align:justify}.foogallery .fg-image-overlay:before{content:"";display:block;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:32px;height:32px;background-size:32px 32px;background-position:center center;background-repeat:no-repeat;min-width:32px;min-height:32px}.foogallery .fg-caption-inner:before{content:"";display:none;position:relative;width:32px;height:32px;margin:.4em;background-size:32px 32px;vertical-align:middle;background-position:center center;background-repeat:no-repeat;min-width:32px;min-height:32px}.foogallery.fg-hover-cart:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-external:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-eye:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-plus:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-tint:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom2:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom3:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-1:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-2:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-3:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-4:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-default:not(.fg-preset) .fg-caption-inner:before{display:block}.foogallery.fg-hover-cart:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-external:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-eye:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-tint:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom2:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom3:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-1:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-2:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-3:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-4:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-default:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-video-sticky .fg-type-video.fg-loaded .fg-item-inner .fg-image-overlay{background-color:transparent;visibility:visible;opacity:1;display:block}.foogallery.fg-video-sticky .fg-type-video .fg-caption-inner:before{display:none}.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom-light')}.foogallery.fg-light-overlays.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom-dark')}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom2-light')}.foogallery.fg-light-overlays.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom2 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom2-dark')}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom3-light')}.foogallery.fg-light-overlays.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom3 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom3-dark')}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#plus-light')}.foogallery.fg-light-overlays.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#plus-dark')}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#circle-plus-light')}.foogallery.fg-light-overlays.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-circle-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#circle-plus-dark')}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-image-overlay:before{background-image:url('../img/icons.svg#eye-light')}.foogallery.fg-light-overlays.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-eye .fg-image-overlay:before{background-image:url('../img/icons.svg#eye-dark')}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-image-overlay:before{background-image:url('../img/icons.svg#external-light')}.foogallery.fg-light-overlays.fg-hover-external .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-external .fg-image-overlay:before{background-image:url('../img/icons.svg#external-dark')}.foogallery.fg-hover-cart .fg-caption-inner:before,.foogallery.fg-hover-cart .fg-image-overlay:before{background-image:url('../img/icons.svg#cart-light')}.foogallery.fg-light-overlays.fg-hover-cart .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-cart .fg-image-overlay:before{background-image:url('../img/icons.svg#cart-dark')}.foogallery.fg-video-default .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-default .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-default-light')}.foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-default-dark')}.foogallery.fg-video-1 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-1 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-1-light')}.foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-1-dark')}.foogallery.fg-video-2 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-2 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-2-light')}.foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-2-dark')}.foogallery.fg-video-3 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-3 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-3-light')}.foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-3-dark')}.foogallery.fg-video-4 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-4 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-4-light')}.foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-4-dark')}.foogallery.fg-caption-hover.fg-hover-colorize .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-colorize .fg-loaded .fg-image,.foogallery.fg-hover-colorize .fg-loaded .fg-image-overlay,.foogallery.fg-hover-fade .fg-loaded .fg-image-overlay,.foogallery.fg-hover-grayscale .fg-loaded .fg-image,.foogallery.fg-hover-grayscale .fg-loaded .fg-image-overlay,.foogallery.fg-hover-instant .fg-loaded .fg-image-overlay,.foogallery.fg-hover-push .fg-loaded .fg-thumb,.foogallery.fg-hover-scale .fg-item.fg-loaded,.foogallery.fg-hover-scale .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,.foogallery.fg-hover-zoomed .fg-loaded .fg-image{transition-timing-function:ease;transition-duration:.3s;backface-visibility:hidden}.foogallery.fg-hover-colorize .fg-image{filter:grayscale(100%);transition-property:filter}.foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image{filter:grayscale(0%)}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-hover-colorize .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-hover-grayscale .fg-image{filter:grayscale(0%);transition-property:filter}.foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image{filter:grayscale(100%)}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-hover-grayscale .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:none}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transform:translateX(100%);visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb{transition-property:transform}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption{transform:translateY(0)}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,.foogallery.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,.foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb{transform:translateX(-100%)}.foogallery.fg-hover-scale .fg-item{transition-property:transform;z-index:4}.foogallery.fg-hover-scale .fg-item:focus-within,.foogallery.fg-hover-scale .fg-item:hover{transform:scale(1.048);z-index:10}.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-hover-scale .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-scale .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-scale .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-hover-zoomed .fg-image{transition-property:transform;z-index:4}.foogallery.fg-hover-zoomed .fg-item:focus-within .fg-image,.foogallery.fg-hover-zoomed .fg-item:hover .fg-image{transform:scale(1.15)}.foogallery.fg-hover-zoomed .fg-image-wrap{overflow:hidden}.foogallery.fg-caption-hover.fg-hover-zoomed .fg-caption,.foogallery.fg-hover-zoomed .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-zoomed .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-zoomed .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:transform,background-color,opacity,visibility;visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-rig