Carousel Slider - Version 1.7.2

Version Description

Download this release

Release Info

Developer sayful
Plugin Icon Carousel Slider
Version 1.7.2
Comparing to
See all releases

Code changes from version 1.6.3 to 1.7.2

assets/css/admin.css CHANGED
@@ -1,301 +1,2 @@
1
- div[id*="_carousel_slider"] .widget-top { background: #ddffff !important; border: 1px solid #2196f3 !important; }
2
- div[id*="_carousel_slider"] .widget-top:hover { background: #ffdddd !important; border: 1px solid #f44336 !important; }
3
-
4
- .shapla-toggle { margin: 0 0 1em 0; }
5
- .shapla-toggle-title { display: block; padding: 15px 10px; outline: 0; cursor: pointer; position: relative; }
6
- .shapla-toggle-title:after { position: absolute; right: 15px; font-size: 18px; font: 400 20px/1 dashicons; margin-left: -1px; padding-right: 3px; vertical-align: top; content: "\f132"; }
7
- .shapla-toggle-title.ui-state-active:after { content: "\f460"; }
8
- .shapla-toggle-content { padding: 20px; background-color: #f1f1f1; }
9
- .shapla-toggle--normal .shapla-toggle-title { background: #9e9e9e; color: white; font-weight: 600; }
10
- .shapla-toggle--stroke .shapla-toggle-title { border: 1px solid #363f48; font-weight: 600; }
11
- .shapla-toggle--stroke .shapla-toggle-title:after { color: #363f48; }
12
- .shapla-toggle--stroke .shapla-toggle-content { padding: 20px; background-color: #ffffff; border: 1px solid #363f48; border-top: none; }
13
-
14
- .overflowHidden { overflow: hidden; }
15
-
16
- .overflowVisible { overflow: visible; }
17
-
18
- .sp-input-group { margin-bottom: 10px; }
19
- .sp-input-group:after { content: ""; display: table; clear: both; }
20
- .sp-input-label label { font-weight: 600; margin-right: 30px; }
21
- .sp-input-label, .sp-input-field { float: left; width: 100%; }
22
- .sp-input-desc { color: #999; font-size: 0.9em; line-height: 1.3em; margin: 10px 30px 10px 0; }
23
- .sp-input-text { width: 100%; padding: 8px 8px 8px 16px; height: 35px !important; }
24
- .sp-input-text option { padding: 8px 4px; }
25
-
26
- @media only screen and (min-width: 600px) { .sp-input-label { width: 40%; }
27
- .sp-input-field { width: 60%; } }
28
- @media only screen and (min-width: 783px) { .sp-input-label { width: 30%; }
29
- .sp-input-field { width: 70%; }
30
- .sp-input-text { width: 25em; } }
31
- @media only screen and (min-width: 851px) { .sp-input-label, .sp-input-field { width: 100%; } }
32
- @media only screen and (min-width: 1200px) { .sp-input-label { width: 40%; }
33
- .sp-input-field { width: 60%; } }
34
- @media only screen and (min-width: 1600px) { .sp-input-label { width: 30%; }
35
- .sp-input-field { width: 70%; } }
36
- .carousel_slider_images:before, .carousel_slider_images:after { display: table; content: ""; }
37
- .carousel_slider_images:after { clear: both; }
38
- .carousel_slider_gallery_btn { border: 1px solid #616161; color: #616161; background-color: #f1f1f1; padding: 5px 15px; text-decoration: none; }
39
- .carousel_slider_gallery_btn:hover { background-color: #ffffff; color: #616161; }
40
- .carousel_slider_gallery_list { margin: 15px 0 0 0; padding: 0; list-style: none; box-sizing: border-box; }
41
- .carousel_slider_gallery_list:before, .carousel_slider_gallery_list:after { display: table; content: ""; }
42
- .carousel_slider_gallery_list:after { clear: both; }
43
- .carousel_slider_gallery_list li { float: left; margin: 0; padding: 0; }
44
- .carousel_slider_gallery_list li > img { margin-right: 10px; margin-bottom: 10px; display: block; box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); }
45
-
46
- #field-_post_date_after, #field-_post_date_before, #field-_post_categories, #field-_post_tags, #field-_post_in { display: none; }
47
-
48
- /* jQuery UI Datepicker */
49
- .ui-datepicker { background-color: #ffffff; border: 1px solid #cccccc; box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); padding: 8px; display: none; }
50
-
51
- .ui-datepicker-header { background-color: #f1f1f1; }
52
-
53
- .ui-datepicker-prev, .ui-datepicker-next { color: #000; padding: 6px; cursor: pointer; }
54
-
55
- .ui-datepicker-prev:hover, .ui-datepicker-next:hover { color: #000; }
56
-
57
- .ui-datepicker-prev { float: left; }
58
-
59
- .ui-datepicker-next { float: right; }
60
-
61
- .ui-datepicker-calendar td > a { border: 1px solid #ddd; display: block; padding: 6px; text-decoration: none; color: #000; background-color: #f1f1f1; }
62
-
63
- .ui-datepicker-calendar td.ui-datepicker-today > a { color: #000; background-color: #ffeb3b; }
64
-
65
- .ui-datepicker-calendar td.ui-datepicker-current-day > a { color: #fff; background-color: #f44336; }
66
-
67
- .sp-wp-editor-container { max-width: 560px; }
68
-
69
- .select2-container { box-sizing: border-box; display: inline-block; margin: 0; position: relative; vertical-align: middle; }
70
-
71
- .select2-container .select2-selection--single { box-sizing: border-box; cursor: pointer; display: block; height: 28px; user-select: none; -webkit-user-select: none; }
72
-
73
- .select2-container .select2-selection--single .select2-selection__rendered { display: block; padding-left: 8px; padding-right: 20px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
74
-
75
- .select2-container .select2-selection--single .select2-selection__clear { position: relative; }
76
-
77
- .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { padding-right: 8px; padding-left: 20px; }
78
-
79
- .select2-container .select2-selection--multiple { box-sizing: border-box; cursor: pointer; display: block; min-height: 32px; user-select: none; -webkit-user-select: none; }
80
-
81
- .select2-container .select2-selection--multiple .select2-selection__rendered { display: inline-block; overflow: hidden; padding-left: 8px; text-overflow: ellipsis; white-space: nowrap; }
82
-
83
- .select2-container .select2-search--inline { float: left; }
84
-
85
- .select2-container .select2-search--inline .select2-search__field { box-sizing: border-box; border: none; font-size: 100%; margin-top: 5px; padding: 0; }
86
-
87
- .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { -webkit-appearance: none; }
88
-
89
- .select2-dropdown { background-color: white; border: 1px solid #aaa; border-radius: 0; box-sizing: border-box; display: block; position: absolute; left: -100000px; width: 100%; z-index: 1051; }
90
-
91
- .select2-results { display: block; }
92
-
93
- .select2-results__options { list-style: none; margin: 0; padding: 0; }
94
-
95
- .select2-results__option { padding: 6px; user-select: none; -webkit-user-select: none; }
96
-
97
- .select2-results__option[aria-selected] { cursor: pointer; }
98
-
99
- .select2-container--open .select2-dropdown { left: 0; }
100
-
101
- .select2-container--open .select2-dropdown--above { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
102
-
103
- .select2-container--open .select2-dropdown--below { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; }
104
-
105
- .select2-search--dropdown { display: block; padding: 4px; }
106
-
107
- .select2-search--dropdown .select2-search__field { padding: 4px; width: 100%; box-sizing: border-box; }
108
-
109
- .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { -webkit-appearance: none; }
110
-
111
- .select2-search--dropdown.select2-search--hide { display: none; }
112
-
113
- .select2-close-mask { border: 0; margin: 0; padding: 0; display: block; position: fixed; left: 0; top: 0; min-height: 100%; min-width: 100%; height: auto; width: auto; opacity: 0; z-index: 99; background-color: #fff; filter: alpha(opacity=0); }
114
-
115
- .select2-hidden-accessible { border: 0 !important; clip: rect(0 0 0 0) !important; height: 1px !important; margin: -1px !important; overflow: hidden !important; padding: 0 !important; position: absolute !important; width: 1px !important; }
116
-
117
- .select2-container--default .select2-selection--single { background-color: #fff; border: 1px solid #aaa; border-radius: 0; }
118
-
119
- .select2-container--default .select2-selection--single .select2-selection__rendered { color: #444; line-height: 28px; }
120
-
121
- .select2-container--default .select2-selection--single .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; }
122
-
123
- .select2-container--default .select2-selection--single .select2-selection__placeholder { color: #999; }
124
-
125
- .select2-container--default .select2-selection--single .select2-selection__arrow { height: 26px; position: absolute; top: 1px; right: 1px; width: 20px; }
126
-
127
- .select2-container--default .select2-selection--single .select2-selection__arrow b { border-color: #888 transparent transparent transparent; border-style: solid; border-width: 5px 4px 0 4px; height: 0; left: 50%; margin-left: -4px; margin-top: -2px; position: absolute; top: 50%; width: 0; }
128
-
129
- .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; }
130
-
131
- .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { left: 1px; right: auto; }
132
-
133
- .select2-container--default.select2-container--disabled .select2-selection--single { background-color: #eee; cursor: default; }
134
-
135
- .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { display: none; }
136
-
137
- .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #888 transparent; border-width: 0 4px 5px 4px; }
138
-
139
- .select2-container--default .select2-selection--multiple { background-color: white; border: 1px solid #aaa; border-radius: 0; cursor: text; }
140
-
141
- .select2-container--default .select2-selection--multiple .select2-selection__rendered { box-sizing: border-box; list-style: none; margin: 0; padding: 0 5px; width: 100%; }
142
-
143
- .select2-container--default .select2-selection--multiple .select2-selection__rendered li { list-style: none; }
144
-
145
- .select2-container--default .select2-selection--multiple .select2-selection__placeholder { color: #999; margin-top: 5px; float: left; }
146
-
147
- .select2-container--default .select2-selection--multiple .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; margin-top: 5px; margin-right: 10px; }
148
-
149
- .select2-container--default .select2-selection--multiple .select2-selection__choice { background-color: #e4e4e4; border: 1px solid #aaa; border-radius: 0; cursor: default; float: left; margin-right: 5px; margin-top: 5px; padding: 0 5px; }
150
-
151
- .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { color: #999; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 2px; }
152
-
153
- .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { color: #333; }
154
-
155
- .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { float: right; }
156
-
157
- .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; }
158
-
159
- .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; }
160
-
161
- .select2-container--default.select2-container--focus .select2-selection--multiple { border: solid black 1px; outline: 0; }
162
-
163
- .select2-container--default.select2-container--disabled .select2-selection--multiple { background-color: #eee; cursor: default; }
164
-
165
- .select2-container--default.select2-container--disabled .select2-selection__choice__remove { display: none; }
166
-
167
- .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { border-top-left-radius: 0; border-top-right-radius: 0; }
168
-
169
- .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
170
-
171
- .select2-container--default .select2-search--dropdown .select2-search__field { border: 1px solid #aaa; }
172
-
173
- .select2-container--default .select2-search--inline .select2-search__field { background: transparent; border: none; outline: 0; box-shadow: none; -webkit-appearance: textfield; }
174
-
175
- .select2-container--default .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; }
176
-
177
- .select2-container--default .select2-results__option[role=group] { padding: 0; }
178
-
179
- .select2-container--default .select2-results__option[aria-disabled=true] { color: #999; }
180
-
181
- .select2-container--default .select2-results__option[aria-selected=true] { background-color: #ddd; }
182
-
183
- .select2-container--default .select2-results__option .select2-results__option { padding-left: 1em; }
184
-
185
- .select2-container--default .select2-results__option .select2-results__option .select2-results__group { padding-left: 0; }
186
-
187
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option { margin-left: -1em; padding-left: 2em; }
188
-
189
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -2em; padding-left: 3em; }
190
-
191
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -3em; padding-left: 4em; }
192
-
193
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -4em; padding-left: 5em; }
194
-
195
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -5em; padding-left: 6em; }
196
-
197
- .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #5897fb; color: white; }
198
-
199
- .select2-container--default .select2-results__group { cursor: default; display: block; padding: 6px; }
200
-
201
- .select2-container--classic .select2-selection--single { background-color: #f7f7f7; border: 1px solid #aaa; border-radius: 0; outline: 0; background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
202
-
203
- .select2-container--classic .select2-selection--single:focus { border: 1px solid #5897fb; }
204
-
205
- .select2-container--classic .select2-selection--single .select2-selection__rendered { color: #444; line-height: 28px; }
206
-
207
- .select2-container--classic .select2-selection--single .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; margin-right: 10px; }
208
-
209
- .select2-container--classic .select2-selection--single .select2-selection__placeholder { color: #999; }
210
-
211
- .select2-container--classic .select2-selection--single .select2-selection__arrow { background-color: #ddd; border: none; border-left: 1px solid #aaa; border-top-right-radius: 4px; border-bottom-right-radius: 4px; height: 26px; position: absolute; top: 1px; right: 1px; width: 20px; background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
212
-
213
- .select2-container--classic .select2-selection--single .select2-selection__arrow b { border-color: #888 transparent transparent transparent; border-style: solid; border-width: 5px 4px 0 4px; height: 0; left: 50%; margin-left: -4px; margin-top: -2px; position: absolute; top: 50%; width: 0; }
214
-
215
- .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; }
216
-
217
- .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { border: none; border-right: 1px solid #aaa; border-radius: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; left: 1px; right: auto; }
218
-
219
- .select2-container--classic.select2-container--open .select2-selection--single { border: 1px solid #5897fb; }
220
-
221
- .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { background: transparent; border: none; }
222
-
223
- .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #888 transparent; border-width: 0 4px 5px 4px; }
224
-
225
- .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
226
-
227
- .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
228
-
229
- .select2-container--classic .select2-selection--multiple { background-color: white; border: 1px solid #aaa; border-radius: 0; cursor: text; outline: 0; }
230
-
231
- .select2-container--classic .select2-selection--multiple:focus { border: 1px solid #5897fb; }
232
-
233
- .select2-container--classic .select2-selection--multiple .select2-selection__rendered { list-style: none; margin: 0; padding: 0 5px; }
234
-
235
- .select2-container--classic .select2-selection--multiple .select2-selection__clear { display: none; }
236
-
237
- .select2-container--classic .select2-selection--multiple .select2-selection__choice { background-color: #e4e4e4; border: 1px solid #aaa; border-radius: 0; cursor: default; float: left; margin-right: 5px; margin-top: 5px; padding: 0 5px; }
238
-
239
- .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { color: #888; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 2px; }
240
-
241
- .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { color: #555; }
242
-
243
- .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { float: right; }
244
-
245
- .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; }
246
-
247
- .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; }
248
-
249
- .select2-container--classic.select2-container--open .select2-selection--multiple { border: 1px solid #5897fb; }
250
-
251
- .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; }
252
-
253
- .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
254
-
255
- .select2-container--classic .select2-search--dropdown .select2-search__field { border: 1px solid #aaa; outline: 0; }
256
-
257
- .select2-container--classic .select2-search--inline .select2-search__field { outline: 0; box-shadow: none; }
258
-
259
- .select2-container--classic .select2-dropdown { background-color: white; border: 1px solid transparent; }
260
-
261
- .select2-container--classic .select2-dropdown--above { border-bottom: none; }
262
-
263
- .select2-container--classic .select2-dropdown--below { border-top: none; }
264
-
265
- .select2-container--classic .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; }
266
-
267
- .select2-container--classic .select2-results__option[role=group] { padding: 0; }
268
-
269
- .select2-container--classic .select2-results__option[aria-disabled=true] { color: grey; }
270
-
271
- .select2-container--classic .select2-results__option--highlighted[aria-selected] { background-color: #3875d7; color: white; }
272
-
273
- .select2-container--classic .select2-results__group { cursor: default; display: block; padding: 6px; }
274
-
275
- .select2-container--classic.select2-container--open .select2-dropdown { border-color: #5897fb; }
276
-
277
- .carousel_slider-modal { display: none; position: fixed; z-index: 10000; left: 0; top: 0; width: 100%; height: 100%; overflow: hidden; background-color: black; background-color: rgba(0, 0, 0, 0.8); }
278
- .carousel_slider-modal-content { position: relative; background-color: #fefefe; margin: 50px auto 18px; padding: 0; border: 1px solid #23282d; min-height: 300px; width: 412px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); }
279
- .carousel_slider-modal-header { background-color: #23282d; color: white; font-weight: bold; padding: 10px 16px; }
280
- .carousel_slider-modal-body { overflow-x: hidden; overflow-y: scroll; padding: 2px 16px; }
281
- .carousel_slider-modal-footer { background-color: #23282d; color: white; font-weight: bold; padding: 10px 16px; }
282
- .carousel_slider-modal-footer img { display: none; height: 14px; vertical-align: middle; width: 14px; }
283
- .carousel_slider-form { margin-left: -15px; margin-right: -15px; }
284
- .carousel_slider-fields { background-color: #f1f1f1; margin: 15px; padding: 15px 25px 15px 15px; position: relative; display: inline-block; float: left; }
285
- .carousel_slider-fields label.setting { display: block; margin-bottom: 5px; }
286
- .carousel_slider-fields label.setting .name { display: inline-block; vertical-align: top; width: 75px; }
287
- .carousel_slider-fields label.setting input, .carousel_slider-fields label.setting textarea { width: 250px; }
288
- .carousel_slider-fields .actions { position: absolute; right: 0; top: 0; }
289
- .carousel_slider-fields .actions > span { background: #fff none repeat scroll 0 0; display: block; float: none; cursor: pointer; }
290
- .carousel_slider-fields .actions > span .dashicons-plus-alt:hover { color: green; }
291
- .carousel_slider-fields .actions > span .dashicons-trash:hover { color: red; }
292
- .carousel_slider-close { color: #f1f1f1; float: right; font-size: 28px; font-weight: bold; }
293
- .carousel_slider-close:hover, .carousel_slider-close:focus { color: #fff; text-decoration: none; cursor: pointer; }
294
-
295
- .carousel_slider_url_images_list { margin: 15px 0 0; padding: 0; list-style: none; }
296
- .carousel_slider_url_images_list li { float: left; display: inline-block; margin: 0 5px 5px 0; }
297
-
298
- @media only screen and (min-width: 820px) { .carousel_slider-modal-content { width: 810px; } }
299
- @media only screen and (min-width: 1230px) { .carousel_slider-modal-content { width: 1220px; } }
300
-
301
  /*# sourceMappingURL=admin.css.map */
1
+ div[id*="_carousel_slider"] .widget-top{background:#ddffff !important;border:1px solid #2196f3 !important}div[id*="_carousel_slider"] .widget-top:hover{background:#ffdddd !important;border:1px solid #f44336 !important}.shapla-toggle{margin:0 0 1em !important}.shapla-toggle-title{display:block;padding:15px 10px;outline:0;cursor:pointer;position:relative}.shapla-toggle-title:after{position:absolute;right:15px;font-size:18px;font:400 20px/1 dashicons;margin-left:-1px;padding-right:3px;vertical-align:top;content:"\f132"}.shapla-toggle-title.ui-state-active:after{content:"\f460"}.shapla-toggle-content{padding:20px;background-color:#f1f1f1}.shapla-toggle--normal .shapla-toggle-title{background:#9e9e9e;color:white;font-weight:600}.shapla-toggle--stroke .shapla-toggle-title{border:1px solid #363f48;font-weight:600}.shapla-toggle--stroke .shapla-toggle-title:after{color:#363f48}.shapla-toggle--stroke .shapla-toggle-content{padding:20px;background-color:#ffffff;border:1px solid #363f48;border-top:none}.overflowHidden{overflow:hidden}.overflowVisible{overflow:visible}.sp-input-group{margin-bottom:10px}.sp-input-group:after{content:"";display:table;clear:both}.sp-input-label label{font-weight:600;margin-right:30px}.sp-input-label,.sp-input-field{float:left;width:100%}.sp-input-desc{color:#999;font-size:0.9em;line-height:1.3em;margin:10px 30px 10px 0}.sp-input-text{width:100%;padding:8px 8px 8px 16px;height:35px !important}.sp-input-text option{padding:8px 4px}@media only screen and (min-width: 600px){.sp-input-label{width:40%}.sp-input-field{width:60%}}@media only screen and (min-width: 783px){.sp-input-label{width:30%}.sp-input-field{width:70%}.sp-input-text{width:25em}}@media only screen and (min-width: 851px){.sp-input-label,.sp-input-field{width:100%}}@media only screen and (min-width: 1200px){.sp-input-label{width:40%}.sp-input-field{width:60%}}@media only screen and (min-width: 1600px){.sp-input-label{width:30%}.sp-input-field{width:70%}}.carousel_slider_images:before,.carousel_slider_images:after{display:table;content:""}.carousel_slider_images:after{clear:both}.carousel_slider_gallery_btn{border:1px solid #616161;color:#616161;background-color:#f1f1f1;padding:5px 15px;text-decoration:none}.carousel_slider_gallery_btn:hover{background-color:#ffffff;color:#616161}.carousel_slider_gallery_list{margin:15px 0 0 0;padding:0;list-style:none;box-sizing:border-box}.carousel_slider_gallery_list:before,.carousel_slider_gallery_list:after{display:table;content:""}.carousel_slider_gallery_list:after{clear:both}.carousel_slider_gallery_list li{float:left;margin:0;padding:0}.carousel_slider_gallery_list li>img{margin-right:10px;margin-bottom:10px;display:block;box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}#field-_post_date_after,#field-_post_date_before,#field-_post_categories,#field-_post_tags,#field-_post_in{display:none}#field-_product_query,#field-_product_categories,#field-_product_tags,#field-_product_in{display:none}.ui-datepicker{background-color:#ffffff;border:1px solid #cccccc;box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);padding:8px;display:none}.ui-datepicker-header{background-color:#f1f1f1}.ui-datepicker-prev,.ui-datepicker-next{color:#000;padding:6px;cursor:pointer}.ui-datepicker-prev:hover,.ui-datepicker-next:hover{color:#000}.ui-datepicker-prev{float:left}.ui-datepicker-next{float:right}.ui-datepicker-calendar td>a{border:1px solid #ddd;display:block;padding:6px;text-decoration:none;color:#000;background-color:#f1f1f1}.ui-datepicker-calendar td.ui-datepicker-today>a{color:#000;background-color:#ffeb3b}.ui-datepicker-calendar td.ui-datepicker-current-day>a{color:#fff;background-color:#f44336}.sp-wp-editor-container{max-width:560px}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:0;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:0}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:0;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:0;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:0;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:0;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:0;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:white;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:white}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}.carousel_slider-modal{display:none;position:fixed;z-index:10000;left:0;top:0;width:100%;height:100%;overflow:hidden;background-color:#000;background-color:rgba(0,0,0,0.8)}.carousel_slider-modal-content{position:relative;background-color:#fefefe;margin:50px auto 18px;padding:0;border:1px solid #23282d;min-height:300px;width:412px;box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.carousel_slider-modal-header{background-color:#23282d;color:white;font-weight:bold;padding:10px 16px}.carousel_slider-modal-body{overflow-x:hidden;overflow-y:scroll;padding:2px 16px}.carousel_slider-modal-footer{background-color:#23282d;color:white;font-weight:bold;padding:10px 16px}.carousel_slider-modal-footer img{display:none;height:14px;vertical-align:middle;width:14px}.carousel_slider-form{margin-left:-15px;margin-right:-15px}.carousel_slider-fields{background-color:#f1f1f1;margin:15px;padding:15px 25px 15px 15px;position:relative;display:inline-block;float:left}.carousel_slider-fields label.setting{display:block;margin-bottom:5px}.carousel_slider-fields label.setting .name{display:inline-block;vertical-align:top;width:75px}.carousel_slider-fields label.setting input,.carousel_slider-fields label.setting textarea{width:250px}.carousel_slider-fields .actions{position:absolute;right:0;top:0}.carousel_slider-fields .actions>span{background:#fff none repeat scroll 0 0;display:block;float:none;cursor:pointer}.carousel_slider-fields .actions>span .dashicons-plus-alt:hover{color:green}.carousel_slider-fields .actions>span .dashicons-trash:hover{color:red}.carousel_slider-close{color:#f1f1f1;float:right;font-size:28px;font-weight:bold}.carousel_slider-close:hover,.carousel_slider-close:focus{color:#fff;text-decoration:none;cursor:pointer}.carousel_slider_url_images_list{margin:15px 0 0;padding:0;list-style:none}.carousel_slider_url_images_list li{float:left;display:inline-block;margin:0 5px 5px 0}@media only screen and (min-width: 820px){.carousel_slider-modal-content{width:810px}}@media only screen and (min-width: 1230px){.carousel_slider-modal-content{width:1220px}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  /*# sourceMappingURL=admin.css.map */
assets/css/admin.css.map ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ {
2
+ "version": 3,
3
+ "mappings": "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",
4
+ "sources": ["../sass/admin/_widget.scss","../sass/admin/_toggle.scss","../sass/admin/_meta-box.scss","../sass/admin/_datepicker.scss","../sass/admin/_select2.scss","../sass/admin/_model.scss"],
5
+ "names": [],
6
+ "file": "admin.css"
7
+ }
assets/css/style.css CHANGED
@@ -67,4 +67,158 @@
67
  .carousel-slider__post-author-link { color: #8e8e8e; display: inline-block; max-width: 175px; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; white-space: nowrap; }
68
  .carousel-slider__post-category { color: #4cc1be; text-transform: uppercase; position: absolute; right: 15px; top: 50px; z-index: 1; }
69
 
70
- /*# sourceMappingURL=style.css.map */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  .carousel-slider__post-author-link { color: #8e8e8e; display: inline-block; max-width: 175px; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; white-space: nowrap; }
68
  .carousel-slider__post-category { color: #4cc1be; text-transform: uppercase; position: absolute; right: 15px; top: 50px; z-index: 1; }
69
 
70
+ .carousel-slider__product { position: relative; text-align: center; border: 1px solid #f1f1f1; }
71
+ .carousel-slider__product .woocommerce-LoopProduct-link { display: block; overflow: hidden; margin: 0 0 .5em; }
72
+ .carousel-slider__product .onsale { border: 0 none; line-height: 1; margin: 0; padding: 15px 5px; color: #f1f1f1; background-color: #96588a; position: absolute; left: 8px; top: 8px; border-radius: 50%; }
73
+ .carousel-slider__product h3 { padding: .5em 1em; text-align: left; margin: 0; font-size: 1em; color: #333333; }
74
+ .carousel-slider__product a { text-decoration: none; box-shadow: none; }
75
+ .carousel-slider__product a img { width: 100%; height: auto; display: block; box-shadow: none; }
76
+ .carousel-slider__product strong { display: block; }
77
+ .carousel-slider__product .price { color: #333333; display: inline-block; font-weight: normal; margin: .5em 1em; font-size: .857em; float: left; }
78
+ .carousel-slider__product .price del { color: inherit; background-color: transparent; opacity: 0.5; display: inline-block; }
79
+ .carousel-slider__product .price ins { color: inherit; background-color: transparent; font-weight: bold; }
80
+ .carousel-slider__product .star-rating { color: #96588a; display: inline-block; margin: .5em 1em; float: right; overflow: hidden; position: relative; height: 1em; line-height: 1; font-size: 1em; width: 5.4em; font-family: 'star'; }
81
+ .carousel-slider__product .star-rating:before { content: "\73\73\73\73\73"; float: left; top: 0; left: 0; position: absolute; }
82
+ .carousel-slider__product .star-rating span { overflow: hidden; float: left; top: 0; left: 0; position: absolute; padding-top: 1.5em; }
83
+ .carousel-slider__product .star-rating span:before { content: "\53\53\53\53\53"; top: 0; position: absolute; left: 0; }
84
+ .carousel-slider__product a.add_to_cart_button, .carousel-slider__product a.added_to_cart, .carousel-slider__product a.quick_view { color: #f1f1f1; background-color: #96588a; margin: 1em; line-height: 1; cursor: pointer; position: relative; text-decoration: none; overflow: visible; padding: .5em 1em; font-weight: normal; border-radius: 3px; left: auto; border: 0; white-space: nowrap; display: block; background-image: none; box-shadow: none; -webkit-box-shadow: none; text-shadow: none; }
85
+ .carousel-slider__product a.add_to_cart_button:hover, .carousel-slider__product a.added_to_cart:hover, .carousel-slider__product a.quick_view:hover { color: #f1f1f1; background-color: #96588a; text-decoration: none; background-image: none; }
86
+ .carousel-slider__product a.add_to_cart_button.loading { opacity: 0.25; padding-right: 2.618em; }
87
+ .carousel-slider__product a.add_to_cart_button.loading:after { font-family: "WooCommerce"; content: "\e01c"; vertical-align: top; -webkit-font-smoothing: antialiased; font-weight: normal; position: absolute; top: .618em; right: 1em; -webkit-animation: spin 2s linear infinite; -moz-animation: spin 2s linear infinite; animation: spin 2s linear infinite; }
88
+ .carousel-slider__product a.add_to_cart_button.added:after { font-family: 'WooCommerce'; content: "\e017"; margin-left: .53em; vertical-align: bottom; }
89
+
90
+ /* Magnific Popup CSS */
91
+ .mfp-bg { top: 0; left: 0; width: 100%; height: 100%; z-index: 1042; overflow: hidden; position: fixed; background: #0b0b0b; opacity: 0.8; }
92
+
93
+ .mfp-wrap { top: 0; left: 0; width: 100%; height: 100%; z-index: 1043; position: fixed; outline: none !important; -webkit-backface-visibility: hidden; }
94
+
95
+ .mfp-container { text-align: center; position: absolute; width: 100%; height: 100%; left: 0; top: 0; padding: 0 8px; box-sizing: border-box; }
96
+
97
+ .mfp-container:before { content: ''; display: inline-block; height: 100%; vertical-align: middle; }
98
+
99
+ .mfp-align-top .mfp-container:before { display: none; }
100
+
101
+ .mfp-content { position: relative; display: inline-block; vertical-align: middle; margin: 0 auto; text-align: left; z-index: 1045; }
102
+
103
+ .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content { width: 100%; cursor: auto; }
104
+
105
+ .mfp-ajax-cur { cursor: progress; }
106
+
107
+ .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close { cursor: -moz-zoom-out; cursor: -webkit-zoom-out; cursor: zoom-out; }
108
+
109
+ .mfp-zoom { cursor: pointer; cursor: -webkit-zoom-in; cursor: -moz-zoom-in; cursor: zoom-in; }
110
+
111
+ .mfp-auto-cursor .mfp-content { cursor: auto; }
112
+
113
+ .mfp-close, .mfp-arrow, .mfp-preloader, .mfp-counter { -webkit-user-select: none; -moz-user-select: none; user-select: none; }
114
+
115
+ .mfp-loading.mfp-figure { display: none; }
116
+
117
+ .mfp-hide { display: none !important; }
118
+
119
+ .mfp-preloader { color: #CCC; position: absolute; top: 50%; width: auto; text-align: center; margin-top: -0.8em; left: 8px; right: 8px; z-index: 1044; }
120
+ .mfp-preloader a { color: #CCC; }
121
+ .mfp-preloader a:hover { color: #FFF; }
122
+
123
+ .mfp-s-ready .mfp-preloader { display: none; }
124
+
125
+ .mfp-s-error .mfp-content { display: none; }
126
+
127
+ button.mfp-close, button.mfp-arrow { overflow: visible; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; display: block; outline: none; padding: 0; z-index: 1046; box-shadow: none; touch-action: manipulation; }
128
+ button::-moz-focus-inner { padding: 0; border: 0; }
129
+
130
+ .mfp-close { width: 44px; height: 44px; line-height: 44px; position: absolute; right: 0; top: 0; text-decoration: none; text-align: center; opacity: 0.65; padding: 0 0 18px 10px; color: #FFF; font-style: normal; font-size: 28px; font-family: Arial, Baskerville, monospace; }
131
+ .mfp-close:hover, .mfp-close:focus { opacity: 1; }
132
+ .mfp-close:active { top: 1px; }
133
+
134
+ .mfp-close-btn-in .mfp-close { color: #333; }
135
+
136
+ .mfp-image-holder .mfp-close, .mfp-iframe-holder .mfp-close { color: #FFF; right: -6px; text-align: right; padding-right: 6px; width: 100%; }
137
+
138
+ .mfp-counter { position: absolute; top: 0; right: 0; color: #CCC; font-size: 12px; line-height: 18px; white-space: nowrap; }
139
+
140
+ .mfp-arrow { position: absolute; opacity: 0.65; margin: 0; top: 50%; margin-top: -55px; padding: 0; width: 90px; height: 110px; -webkit-tap-highlight-color: transparent; }
141
+ .mfp-arrow:active { margin-top: -54px; }
142
+ .mfp-arrow:hover, .mfp-arrow:focus { opacity: 1; }
143
+ .mfp-arrow:before, .mfp-arrow:after { content: ''; display: block; width: 0; height: 0; position: absolute; left: 0; top: 0; margin-top: 35px; margin-left: 35px; border: medium inset transparent; }
144
+ .mfp-arrow:after { border-top-width: 13px; border-bottom-width: 13px; top: 8px; }
145
+ .mfp-arrow:before { border-top-width: 21px; border-bottom-width: 21px; opacity: 0.7; }
146
+
147
+ .mfp-arrow-left { left: 0; }
148
+ .mfp-arrow-left:after { border-right: 17px solid #FFF; margin-left: 31px; }
149
+ .mfp-arrow-left:before { margin-left: 25px; border-right: 27px solid #3F3F3F; }
150
+
151
+ .mfp-arrow-right { right: 0; }
152
+ .mfp-arrow-right:after { border-left: 17px solid #FFF; margin-left: 39px; }
153
+ .mfp-arrow-right:before { border-left: 27px solid #3F3F3F; }
154
+
155
+ .mfp-iframe-holder { padding-top: 40px; padding-bottom: 40px; }
156
+ .mfp-iframe-holder .mfp-content { line-height: 0; width: 100%; max-width: 900px; }
157
+ .mfp-iframe-holder .mfp-close { top: -40px; }
158
+
159
+ .mfp-iframe-scaler { width: 100%; height: 0; overflow: hidden; padding-top: 56.25%; }
160
+ .mfp-iframe-scaler iframe { position: absolute; display: block; top: 0; left: 0; width: 100%; height: 100%; box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); background: #000; }
161
+
162
+ /* Main image in popup */
163
+ img.mfp-img { width: auto; max-width: 100%; height: auto; display: block; line-height: 0; box-sizing: border-box; padding: 40px 0 40px; margin: 0 auto; }
164
+
165
+ /* The shadow behind the image */
166
+ .mfp-figure { line-height: 0; }
167
+ .mfp-figure:after { content: ''; position: absolute; left: 0; top: 40px; bottom: 40px; display: block; right: 0; width: auto; height: auto; z-index: -1; box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); background: #444; }
168
+ .mfp-figure small { color: #BDBDBD; display: block; font-size: 12px; line-height: 14px; }
169
+ .mfp-figure figure { margin: 0; }
170
+
171
+ .mfp-bottom-bar { margin-top: -36px; position: absolute; top: 100%; left: 0; width: 100%; cursor: auto; }
172
+
173
+ .mfp-title { text-align: left; line-height: 18px; color: #F3F3F3; word-wrap: break-word; padding-right: 36px; }
174
+
175
+ .mfp-image-holder .mfp-content { max-width: 100%; }
176
+
177
+ .mfp-gallery .mfp-image-holder .mfp-figure { cursor: pointer; }
178
+
179
+ @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { /** Remove all paddings around the image on small screen */
180
+ .mfp-img-mobile .mfp-image-holder { padding-left: 0; padding-right: 0; }
181
+ .mfp-img-mobile img.mfp-img { padding: 0; }
182
+ .mfp-img-mobile .mfp-figure:after { top: 0; bottom: 0; }
183
+ .mfp-img-mobile .mfp-figure small { display: inline; margin-left: 5px; }
184
+ .mfp-img-mobile .mfp-bottom-bar { background: rgba(0, 0, 0, 0.6); bottom: 0; margin: 0; top: auto; padding: 3px 5px; position: fixed; box-sizing: border-box; }
185
+ .mfp-img-mobile .mfp-bottom-bar:empty { padding: 0; }
186
+ .mfp-img-mobile .mfp-counter { right: 5px; top: 3px; }
187
+ .mfp-img-mobile .mfp-close { top: 0; right: 0; width: 35px; height: 35px; line-height: 35px; background: rgba(0, 0, 0, 0.6); position: fixed; text-align: center; padding: 0; } }
188
+ @media all and (max-width: 900px) { .mfp-arrow { -webkit-transform: scale(0.75); transform: scale(0.75); }
189
+ .mfp-arrow-left { -webkit-transform-origin: 0; transform-origin: 0; }
190
+ .mfp-arrow-right { -webkit-transform-origin: 100%; transform-origin: 100%; }
191
+ .mfp-container { padding-left: 6px; padding-right: 6px; } }
192
+ .mfp-with-zoom .mfp-container, .mfp-with-zoom.mfp-bg { opacity: 0; -webkit-backface-visibility: hidden; /* ideally, transition speed should match zoom duration */ -webkit-transition: all 0.3s ease-out; -moz-transition: all 0.3s ease-out; -o-transition: all 0.3s ease-out; transition: all 0.3s ease-out; }
193
+
194
+ .mfp-with-zoom.mfp-ready .mfp-container { opacity: 1; }
195
+
196
+ .mfp-with-zoom.mfp-ready.mfp-bg { opacity: 0.8; }
197
+
198
+ .mfp-with-zoom.mfp-removing .mfp-container, .mfp-with-zoom.mfp-removing.mfp-bg { opacity: 0; }
199
+
200
+ .mfp-content .product { background-color: #ffffff; display: table; margin: 0 auto; padding: 15px; }
201
+ .mfp-content .product .images { display: inline-block; float: left; max-width: 600px; }
202
+ .mfp-content .product .images img { display: block; }
203
+ .mfp-content .product .onsale { left: 24px; top: 24px; position: absolute; }
204
+ .mfp-content .product .summary { display: inline-block; margin-left: 15px; width: 300px; }
205
+ .mfp-content .product .product_title, .mfp-content .product .description { margin: 1em 0; }
206
+ .mfp-content .product .price { display: inline-block; font-weight: normal; margin: .5em 1em; font-size: .857em; float: left; }
207
+ .mfp-content .product .price del { color: inherit; background-color: transparent; opacity: 0.5; display: inline-block; }
208
+ .mfp-content .product .price ins { color: inherit; background-color: transparent; font-weight: bold; }
209
+ .mfp-content .product .star-rating { display: inline-block; margin: .5em 1em; float: right; overflow: hidden; position: relative; height: 1em; line-height: 1; font-size: 1em; width: 5.4em; font-family: 'star'; }
210
+ .mfp-content .product .star-rating:before { content: "\73\73\73\73\73"; float: left; top: 0; left: 0; position: absolute; }
211
+ .mfp-content .product .star-rating span { overflow: hidden; float: left; top: 0; left: 0; position: absolute; padding-top: 1.5em; }
212
+ .mfp-content .product .star-rating span:before { content: "\53\53\53\53\53"; top: 0; position: absolute; left: 0; }
213
+ .mfp-content .product a.add_to_cart_button, .mfp-content .product a.added_to_cart { margin: 0; line-height: 1; cursor: pointer; position: relative; text-decoration: none; overflow: visible; padding: .5em 1em; font-weight: normal; border-radius: 3px; left: auto; border: 0; white-space: nowrap; display: inline-block; background-image: none; box-shadow: none; -webkit-box-shadow: none; text-shadow: none; }
214
+ .mfp-content .product a.add_to_cart_button:hover, .mfp-content .product a.added_to_cart:hover { text-decoration: none; background-image: none; }
215
+ .mfp-content .product a.add_to_cart_button.loading { opacity: 0.25; padding-right: 2.618em; }
216
+ .mfp-content .product a.add_to_cart_button.loading:after { font-family: "WooCommerce"; content: "\e01c"; vertical-align: top; -webkit-font-smoothing: antialiased; font-weight: normal; position: absolute; top: .618em; right: 1em; -webkit-animation: spin 2s linear infinite; -moz-animation: spin 2s linear infinite; animation: spin 2s linear infinite; }
217
+ .mfp-content .product a.add_to_cart_button.added:after { font-family: 'WooCommerce'; content: "\e017"; margin-left: .53em; vertical-align: bottom; }
218
+
219
+ .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content { max-width: 945px; margin-top: 40px; margin-bottom: 40px; }
220
+
221
+ @media (max-width: 600px) { .mfp-content .product .images { margin-bottom: 30px; }
222
+ .mfp-content .product .summary { display: block; margin: 0; width: 100%; } }
223
+ @media (min-width: 601px) { .mfp-content .product .images { display: inline-block; width: 49%; }
224
+ .mfp-content .product .summary { display: inline-block; margin: 0 0 0 1%; width: 49%; } }
assets/img/arrows.png DELETED
Binary file
assets/img/spin.gif DELETED
Binary file
assets/js/admin.js CHANGED
@@ -45,6 +45,45 @@
45
  }
46
  });
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  $('#_carousel_slider_slide_type').on('change', function() {
49
 
50
  $('#section_images_settings').hide('fast');
@@ -68,6 +107,9 @@
68
  if (this.value == 'video-carousel') {
69
  $('#section_video_settings').slideDown();
70
  }
 
 
 
71
  });
72
 
73
  // Select2
45
  }
46
  });
47
 
48
+ if ( $('#_carousel_slider_slide_type').val() == 'product-carousel' ) {
49
+ var _productQueryType = $('#_product_query_type').val();
50
+ if ( _productQueryType == 'query_porduct' ) {
51
+ $('#field-_product_query').show();
52
+ }
53
+ if ( _productQueryType == 'product_categories' ) {
54
+ $('#field-_product_categories').show();
55
+ }
56
+ if ( _productQueryType == 'product_tags' ) {
57
+ $('#field-_product_tags').show();
58
+ }
59
+ if ( _productQueryType == 'specific_products' ) {
60
+ $('#field-_product_in').show();
61
+ }
62
+ }
63
+
64
+ $('#_product_query_type').on('change', function(){
65
+
66
+ $('#field-_product_query').hide('fast');
67
+ $('#field-_product_categories').hide('fast');
68
+ $('#field-_product_tags').hide('fast');
69
+ $('#field-_product_in').hide('fast');
70
+ $('#field-_products_per_page').show('fast');
71
+
72
+ if ( this.value == 'query_porduct' ) {
73
+ $('#field-_product_query').slideDown();
74
+ }
75
+ if ( this.value == 'product_categories' ) {
76
+ $('#field-_product_categories').slideDown();
77
+ }
78
+ if ( this.value == 'product_tags' ) {
79
+ $('#field-_product_tags').slideDown();
80
+ }
81
+ if ( this.value == 'specific_products' ) {
82
+ $('#field-_product_in').slideDown();
83
+ $('#field-_products_per_page').hide('fast');
84
+ }
85
+ });
86
+
87
  $('#_carousel_slider_slide_type').on('change', function() {
88
 
89
  $('#section_images_settings').hide('fast');
107
  if (this.value == 'video-carousel') {
108
  $('#section_video_settings').slideDown();
109
  }
110
+ if (this.value == 'product-carousel') {
111
+ $('#section_product_query').slideDown();
112
+ }
113
  });
114
 
115
  // Select2
assets/js/jquery.magnific-popup.min.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! Magnific Popup - v1.1.0 - 2016-02-20
2
+ * http://dimsemenov.com/plugins/magnific-popup/
3
+ * Copyright (c) 2016 Dmitry Semenov; */
4
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});
assets/sass/admin/_meta-box.scss CHANGED
@@ -157,4 +157,13 @@
157
  #field-_post_tags,
158
  #field-_post_in {
159
  display: none;
 
 
 
 
 
 
 
 
 
160
  }
157
  #field-_post_tags,
158
  #field-_post_in {
159
  display: none;
160
+ }
161
+
162
+ // Hide Post carousel fields
163
+ // Related fields will be open by jQuery
164
+ #field-_product_query,
165
+ #field-_product_categories,
166
+ #field-_product_tags,
167
+ #field-_product_in {
168
+ display: none;
169
  }
assets/sass/admin/_toggle.scss CHANGED
@@ -1,6 +1,6 @@
1
  // Toggle
2
  .shapla-toggle {
3
- margin: 0 0 1em 0;
4
 
5
  &-title {
6
  display: block;
1
  // Toggle
2
  .shapla-toggle {
3
+ margin: 0 0 1em !important;
4
 
5
  &-title {
6
  display: block;
assets/sass/public/_magnific-popup.scss ADDED
@@ -0,0 +1,610 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Magnific Popup CSS */
2
+
3
+ ////////////////////////
4
+ // Settings //
5
+ ////////////////////////
6
+
7
+ // overlay
8
+ $mfp-overlay-color: #0b0b0b !default; // Color of overlay screen
9
+ $mfp-overlay-opacity: 0.8 !default; // Opacity of overlay screen
10
+ $mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6) !default; // Shadow on image or iframe
11
+
12
+ // spacing
13
+ $mfp-popup-padding-left: 8px !default; // Padding from left and from right side
14
+ $mfp-popup-padding-left-mobile: 6px !default; // Same as above, but is applied when width of window is less than 800px
15
+
16
+ $mfp-z-index-base: 1040 !default; // Base z-index of popup
17
+
18
+ // controls
19
+ $mfp-include-arrows: true !default; // Include styles for nav arrows
20
+ $mfp-controls-opacity: 0.65 !default; // Opacity of controls
21
+ $mfp-controls-color: #FFF !default; // Color of controls
22
+ $mfp-controls-border-color: #3F3F3F !default; // Border color of controls
23
+ $mfp-inner-close-icon-color: #333 !default; // Color of close button when inside
24
+ $mfp-controls-text-color: #CCC !default; // Color of preloader and "1 of X" indicator
25
+ $mfp-controls-text-color-hover: #FFF !default; // Hover color of preloader and "1 of X" indicator
26
+
27
+ // Iframe-type options
28
+ $mfp-include-iframe-type: true !default; // Enable Iframe-type popups
29
+ $mfp-iframe-padding-top: 40px !default; // Iframe padding top
30
+ $mfp-iframe-background: #000 !default; // Background color of iframes
31
+ $mfp-iframe-max-width: 900px !default; // Maximum width of iframes
32
+ $mfp-iframe-ratio: 9/16 !default; // Ratio of iframe (9/16 = widescreen, 3/4 = standard, etc.)
33
+
34
+ // Image-type options
35
+ $mfp-include-image-type: true !default; // Enable Image-type popups
36
+ $mfp-image-background: #444 !default;
37
+ $mfp-image-padding-top: 40px !default; // Image padding top
38
+ $mfp-image-padding-bottom: 40px !default; // Image padding bottom
39
+ $mfp-include-mobile-layout-for-image: true !default; // Removes paddings from top and bottom
40
+
41
+ // Image caption options
42
+ $mfp-caption-title-color: #F3F3F3 !default; // Caption title color
43
+ $mfp-caption-subtitle-color: #BDBDBD !default; // Caption subtitle color
44
+
45
+ // A11y
46
+ $mfp-use-visuallyhidden: false !default; // Hide content from browsers, but make it available for screen readers
47
+
48
+
49
+ ////////////////////////
50
+ //
51
+ // Contents:
52
+ //
53
+ // 1. General styles
54
+ // - Transluscent overlay
55
+ // - Containers, wrappers
56
+ // - Cursors
57
+ // - Helper classes
58
+ // 2. Appearance
59
+ // - Preloader & text that displays error messages
60
+ // - CSS reset for buttons
61
+ // - Close icon
62
+ // - "1 of X" counter
63
+ // - Navigation (left/right) arrows
64
+ // - Iframe content type styles
65
+ // - Image content type styles
66
+ // - Media query where size of arrows is reduced
67
+ // - IE7 support
68
+ //
69
+ ////////////////////////
70
+
71
+
72
+
73
+ ////////////////////////
74
+ // 1. General styles
75
+ ////////////////////////
76
+
77
+ // Transluscent overlay
78
+ .mfp-bg {
79
+ top: 0;
80
+ left: 0;
81
+ width: 100%;
82
+ height: 100%;
83
+ z-index: $mfp-z-index-base + 2;
84
+ overflow: hidden;
85
+ position: fixed;
86
+
87
+ background: $mfp-overlay-color;
88
+ opacity: $mfp-overlay-opacity;
89
+ }
90
+
91
+ // Wrapper for popup
92
+ .mfp-wrap {
93
+ top: 0;
94
+ left: 0;
95
+ width: 100%;
96
+ height: 100%;
97
+ z-index: $mfp-z-index-base + 3;
98
+ position: fixed;
99
+ outline: none !important;
100
+ -webkit-backface-visibility: hidden; // fixes webkit bug that can cause "false" scrollbar
101
+ }
102
+
103
+ // Root container
104
+ .mfp-container {
105
+ text-align: center;
106
+ position: absolute;
107
+ width: 100%;
108
+ height: 100%;
109
+ left: 0;
110
+ top: 0;
111
+ padding: 0 $mfp-popup-padding-left;
112
+ box-sizing: border-box;
113
+ }
114
+
115
+ // Vertical centerer helper
116
+ .mfp-container {
117
+ &:before {
118
+ content: '';
119
+ display: inline-block;
120
+ height: 100%;
121
+ vertical-align: middle;
122
+ }
123
+ }
124
+
125
+ // Remove vertical centering when popup has class `mfp-align-top`
126
+ .mfp-align-top {
127
+ .mfp-container {
128
+ &:before {
129
+ display: none;
130
+ }
131
+ }
132
+ }
133
+
134
+ // Popup content holder
135
+ .mfp-content {
136
+ position: relative;
137
+ display: inline-block;
138
+ vertical-align: middle;
139
+ margin: 0 auto;
140
+ text-align: left;
141
+ z-index: $mfp-z-index-base + 5;
142
+ }
143
+ .mfp-inline-holder,
144
+ .mfp-ajax-holder {
145
+ .mfp-content {
146
+ width: 100%;
147
+ cursor: auto;
148
+ }
149
+ }
150
+
151
+ // Cursors
152
+ .mfp-ajax-cur {
153
+ cursor: progress;
154
+ }
155
+ .mfp-zoom-out-cur {
156
+ &, .mfp-image-holder .mfp-close {
157
+ cursor: -moz-zoom-out;
158
+ cursor: -webkit-zoom-out;
159
+ cursor: zoom-out;
160
+ }
161
+ }
162
+ .mfp-zoom {
163
+ cursor: pointer;
164
+ cursor: -webkit-zoom-in;
165
+ cursor: -moz-zoom-in;
166
+ cursor: zoom-in;
167
+ }
168
+ .mfp-auto-cursor {
169
+ .mfp-content {
170
+ cursor: auto;
171
+ }
172
+ }
173
+
174
+ .mfp-close,
175
+ .mfp-arrow,
176
+ .mfp-preloader,
177
+ .mfp-counter {
178
+ -webkit-user-select:none;
179
+ -moz-user-select: none;
180
+ user-select: none;
181
+ }
182
+
183
+ // Hide the image during the loading
184
+ .mfp-loading {
185
+ &.mfp-figure {
186
+ display: none;
187
+ }
188
+ }
189
+
190
+ // Helper class that hides stuff
191
+ @if $mfp-use-visuallyhidden {
192
+ // From HTML5 Boilerplate https://github.com/h5bp/html5-boilerplate/blob/v4.2.0/doc/css.md#visuallyhidden
193
+ .mfp-hide {
194
+ border: 0 !important;
195
+ clip: rect(0 0 0 0) !important;
196
+ height: 1px !important;
197
+ margin: -1px !important;
198
+ overflow: hidden !important;
199
+ padding: 0 !important;
200
+ position: absolute !important;
201
+ width: 1px !important;
202
+ }
203
+ } @else {
204
+ .mfp-hide {
205
+ display: none !important;
206
+ }
207
+ }
208
+
209
+
210
+ ////////////////////////
211
+ // 2. Appearance
212
+ ////////////////////////
213
+
214
+ // Preloader and text that displays error messages
215
+ .mfp-preloader {
216
+ color: $mfp-controls-text-color;
217
+ position: absolute;
218
+ top: 50%;
219
+ width: auto;
220
+ text-align: center;
221
+ margin-top: -0.8em;
222
+ left: 8px;
223
+ right: 8px;
224
+ z-index: $mfp-z-index-base + 4;
225
+ a {
226
+ color: $mfp-controls-text-color;
227
+ &:hover {
228
+ color: $mfp-controls-text-color-hover;
229
+ }
230
+ }
231
+ }
232
+
233
+ // Hide preloader when content successfully loaded
234
+ .mfp-s-ready {
235
+ .mfp-preloader {
236
+ display: none;
237
+ }
238
+ }
239
+
240
+ // Hide content when it was not loaded
241
+ .mfp-s-error {
242
+ .mfp-content {
243
+ display: none;
244
+ }
245
+ }
246
+
247
+ // CSS-reset for buttons
248
+ button {
249
+ &.mfp-close,
250
+ &.mfp-arrow {
251
+ overflow: visible;
252
+ cursor: pointer;
253
+ background: transparent;
254
+ border: 0;
255
+ -webkit-appearance: none;
256
+ display: block;
257
+ outline: none;
258
+ padding: 0;
259
+ z-index: $mfp-z-index-base + 6;
260
+ box-shadow: none;
261
+ touch-action: manipulation;
262
+ }
263
+ &::-moz-focus-inner {
264
+ padding: 0;
265
+ border: 0
266
+ }
267
+ }
268
+
269
+
270
+ // Close icon
271
+ .mfp-close {
272
+ width: 44px;
273
+ height: 44px;
274
+ line-height: 44px;
275
+
276
+ position: absolute;
277
+ right: 0;
278
+ top: 0;
279
+ text-decoration: none;
280
+ text-align: center;
281
+ opacity: $mfp-controls-opacity;
282
+ padding: 0 0 18px 10px;
283
+ color: $mfp-controls-color;
284
+
285
+ font-style: normal;
286
+ font-size: 28px;
287
+ font-family: Arial, Baskerville, monospace;
288
+
289
+ &:hover,
290
+ &:focus {
291
+ opacity: 1;
292
+ }
293
+
294
+ &:active {
295
+ top: 1px;
296
+ }
297
+ }
298
+ .mfp-close-btn-in {
299
+ .mfp-close {
300
+ color: $mfp-inner-close-icon-color;
301
+ }
302
+ }
303
+ .mfp-image-holder,
304
+ .mfp-iframe-holder {
305
+ .mfp-close {
306
+ color: $mfp-controls-color;
307
+ right: -6px;
308
+ text-align: right;
309
+ padding-right: 6px;
310
+ width: 100%;
311
+ }
312
+ }
313
+
314
+ // "1 of X" counter
315
+ .mfp-counter {
316
+ position: absolute;
317
+ top: 0;
318
+ right: 0;
319
+ color: $mfp-controls-text-color;
320
+ font-size: 12px;
321
+ line-height: 18px;
322
+ white-space: nowrap;
323
+ }
324
+
325
+ // Navigation arrows
326
+ @if $mfp-include-arrows {
327
+ .mfp-arrow {
328
+ position: absolute;
329
+ opacity: $mfp-controls-opacity;
330
+ margin: 0;
331
+ top: 50%;
332
+ margin-top: -55px;
333
+ padding: 0;
334
+ width: 90px;
335
+ height: 110px;
336
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
337
+ &:active {
338
+ margin-top: -54px;
339
+ }
340
+ &:hover,
341
+ &:focus {
342
+ opacity: 1;
343
+ }
344
+ &:before,
345
+ &:after {
346
+ content: '';
347
+ display: block;
348
+ width: 0;
349
+ height: 0;
350
+ position: absolute;
351
+ left: 0;
352
+ top: 0;
353
+ margin-top: 35px;
354
+ margin-left: 35px;
355
+ border: medium inset transparent;
356
+ }
357
+
358
+ &:after {
359
+
360
+ border-top-width: 13px;
361
+ border-bottom-width: 13px;
362
+ top:8px;
363
+ }
364
+
365
+ &:before {
366
+ border-top-width: 21px;
367
+ border-bottom-width: 21px;
368
+ opacity: 0.7;
369
+ }
370
+
371
+ }
372
+
373
+ .mfp-arrow-left {
374
+ left: 0;
375
+ &:after {
376
+ border-right: 17px solid $mfp-controls-color;
377
+ margin-left: 31px;
378
+ }
379
+ &:before {
380
+ margin-left: 25px;
381
+ border-right: 27px solid $mfp-controls-border-color;
382
+ }
383
+ }
384
+
385
+ .mfp-arrow-right {
386
+ right: 0;
387
+ &:after {
388
+ border-left: 17px solid $mfp-controls-color;
389
+ margin-left: 39px
390
+ }
391
+ &:before {
392
+ border-left: 27px solid $mfp-controls-border-color;
393
+ }
394
+ }
395
+ }
396
+
397
+
398
+
399
+ // Iframe content type
400
+ @if $mfp-include-iframe-type {
401
+ .mfp-iframe-holder {
402
+ padding-top: $mfp-iframe-padding-top;
403
+ padding-bottom: $mfp-iframe-padding-top;
404
+ .mfp-content {
405
+ line-height: 0;
406
+ width: 100%;
407
+ max-width: $mfp-iframe-max-width;
408
+ }
409
+ .mfp-close {
410
+ top: -40px;
411
+ }
412
+ }
413
+ .mfp-iframe-scaler {
414
+ width: 100%;
415
+ height: 0;
416
+ overflow: hidden;
417
+ padding-top: $mfp-iframe-ratio * 100%;
418
+ iframe {
419
+ position: absolute;
420
+ display: block;
421
+ top: 0;
422
+ left: 0;
423
+ width: 100%;
424
+ height: 100%;
425
+ box-shadow: $mfp-shadow;
426
+ background: $mfp-iframe-background;
427
+ }
428
+ }
429
+ }
430
+
431
+
432
+
433
+ // Image content type
434
+ @if $mfp-include-image-type {
435
+
436
+ /* Main image in popup */
437
+ img {
438
+ &.mfp-img {
439
+ width: auto;
440
+ max-width: 100%;
441
+ height: auto;
442
+ display: block;
443
+ line-height: 0;
444
+ box-sizing: border-box;
445
+ padding: $mfp-image-padding-top 0 $mfp-image-padding-bottom;
446
+ margin: 0 auto;
447
+ }
448
+ }
449
+
450
+ /* The shadow behind the image */
451
+ .mfp-figure {
452
+ line-height: 0;
453
+ &:after {
454
+ content: '';
455
+ position: absolute;
456
+ left: 0;
457
+ top: $mfp-image-padding-top;
458
+ bottom: $mfp-image-padding-bottom;
459
+ display: block;
460
+ right: 0;
461
+ width: auto;
462
+ height: auto;
463
+ z-index: -1;
464
+ box-shadow: $mfp-shadow;
465
+ background: $mfp-image-background;
466
+ }
467
+ small {
468
+ color: $mfp-caption-subtitle-color;
469
+ display: block;
470
+ font-size: 12px;
471
+ line-height: 14px;
472
+ }
473
+ figure {
474
+ margin: 0;
475
+ }
476
+ }
477
+ .mfp-bottom-bar {
478
+ margin-top: -$mfp-image-padding-bottom + 4;
479
+ position: absolute;
480
+ top: 100%;
481
+ left: 0;
482
+ width: 100%;
483
+ cursor: auto;
484
+ }
485
+ .mfp-title {
486
+ text-align: left;
487
+ line-height: 18px;
488
+ color: $mfp-caption-title-color;
489
+ word-wrap: break-word;
490
+ padding-right: 36px; // leave some space for counter at right side
491
+ }
492
+
493
+ .mfp-image-holder {
494
+ .mfp-content {
495
+ max-width: 100%;
496
+ }
497
+ }
498
+
499
+ .mfp-gallery {
500
+ .mfp-image-holder {
501
+ .mfp-figure {
502
+ cursor: pointer;
503
+ }
504
+ }
505
+ }
506
+
507
+
508
+ @if $mfp-include-mobile-layout-for-image {
509
+ @media screen and (max-width: 800px) and (orientation:landscape), screen and (max-height: 300px) {
510
+ /**
511
+ * Remove all paddings around the image on small screen
512
+ */
513
+ .mfp-img-mobile {
514
+ .mfp-image-holder {
515
+ padding-left: 0;
516
+ padding-right: 0;
517
+ }
518
+ img {
519
+ &.mfp-img {
520
+ padding: 0;
521
+ }
522
+ }
523
+ .mfp-figure {
524
+ // The shadow behind the image
525
+ &:after {
526
+ top: 0;
527
+ bottom: 0;
528
+ }
529
+ small {
530
+ display: inline;
531
+ margin-left: 5px;
532
+ }
533
+ }
534
+ .mfp-bottom-bar {
535
+ background: rgba(0,0,0,0.6);
536
+ bottom: 0;
537
+ margin: 0;
538
+ top: auto;
539
+ padding: 3px 5px;
540
+ position: fixed;
541
+ box-sizing: border-box;
542
+ &:empty {
543
+ padding: 0;
544
+ }
545
+ }
546
+ .mfp-counter {
547
+ right: 5px;
548
+ top: 3px;
549
+ }
550
+ .mfp-close {
551
+ top: 0;
552
+ right: 0;
553
+ width: 35px;
554
+ height: 35px;
555
+ line-height: 35px;
556
+ background: rgba(0, 0, 0, 0.6);
557
+ position: fixed;
558
+ text-align: center;
559
+ padding: 0;
560
+ }
561
+ }
562
+ }
563
+ }
564
+ }
565
+
566
+
567
+
568
+ // Scale navigation arrows and reduce padding from sides
569
+ @media all and (max-width: 900px) {
570
+ .mfp-arrow {
571
+ -webkit-transform: scale(0.75);
572
+ transform: scale(0.75);
573
+ }
574
+ .mfp-arrow-left {
575
+ -webkit-transform-origin: 0;
576
+ transform-origin: 0;
577
+ }
578
+ .mfp-arrow-right {
579
+ -webkit-transform-origin: 100%;
580
+ transform-origin: 100%;
581
+ }
582
+ .mfp-container {
583
+ padding-left: $mfp-popup-padding-left-mobile;
584
+ padding-right: $mfp-popup-padding-left-mobile;
585
+ }
586
+ }
587
+
588
+
589
+ .mfp-with-zoom .mfp-container,
590
+ .mfp-with-zoom.mfp-bg {
591
+ opacity: 0;
592
+ -webkit-backface-visibility: hidden;
593
+ /* ideally, transition speed should match zoom duration */
594
+ -webkit-transition: all 0.3s ease-out;
595
+ -moz-transition: all 0.3s ease-out;
596
+ -o-transition: all 0.3s ease-out;
597
+ transition: all 0.3s ease-out;
598
+ }
599
+
600
+ .mfp-with-zoom.mfp-ready .mfp-container {
601
+ opacity: 1;
602
+ }
603
+ .mfp-with-zoom.mfp-ready.mfp-bg {
604
+ opacity: 0.8;
605
+ }
606
+
607
+ .mfp-with-zoom.mfp-removing .mfp-container,
608
+ .mfp-with-zoom.mfp-removing.mfp-bg {
609
+ opacity: 0;
610
+ }
assets/sass/public/_product-carousel.scss ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ $text-color: #333333;
2
+ $btn-color: #f1f1f1;
3
+ $btn-background: #96588a;
4
+
5
+ .carousel-slider {
6
+
7
+ &__product {
8
+ position: relative;
9
+ text-align: center;
10
+ border: 1px solid #f1f1f1;
11
+
12
+ .woocommerce-LoopProduct-link {
13
+ display: block;
14
+ overflow: hidden;
15
+ margin: 0 0 .5em;
16
+ }
17
+
18
+ .onsale {
19
+ border: 0 none;
20
+ line-height: 1;
21
+ margin: 0;
22
+ padding: 15px 5px;
23
+ color: $btn-color;
24
+ background-color: $btn-background;
25
+ position: absolute;
26
+ left: 8px;
27
+ top: 8px;
28
+ border-radius: 50%;
29
+ }
30
+
31
+ h3 {
32
+ padding: .5em 1em;
33
+ text-align: left;
34
+ margin: 0;
35
+ font-size: 1em;
36
+ color: $text-color;
37
+ }
38
+
39
+ a {
40
+ text-decoration: none;
41
+ box-shadow: none;
42
+
43
+ img {
44
+ width: 100%;
45
+ height: auto;
46
+ display: block;
47
+ box-shadow: none;
48
+ }
49
+ }
50
+
51
+ strong {
52
+ display: block;
53
+ }
54
+
55
+ // Price
56
+ .price {
57
+ color: $text-color;
58
+ display: inline-block;
59
+ font-weight: normal;
60
+ margin: .5em 1em;
61
+ font-size: .857em;
62
+ float: left;
63
+
64
+ del {
65
+ color: inherit;
66
+ background-color: transparent;
67
+ opacity: 0.5;
68
+ display: inline-block;
69
+ }
70
+
71
+ ins {
72
+ color: inherit;
73
+ background-color: transparent;
74
+ font-weight: bold;
75
+ }
76
+ }
77
+
78
+ // Star ratings
79
+ .star-rating {
80
+ color: $btn-background;
81
+ display: inline-block;
82
+ margin: .5em 1em;
83
+ float: right;
84
+ overflow: hidden;
85
+ position: relative;
86
+ height: 1em;
87
+ line-height: 1;
88
+ font-size: 1em;
89
+ width: 5.4em;
90
+ font-family: 'star';
91
+
92
+ &:before {
93
+ content: "\73\73\73\73\73";
94
+ float: left;
95
+ top: 0;
96
+ left: 0;
97
+ position: absolute;
98
+ }
99
+
100
+ span {
101
+ overflow: hidden;
102
+ float: left;
103
+ top: 0;
104
+ left: 0;
105
+ position: absolute;
106
+ padding-top: 1.5em;
107
+ }
108
+
109
+ span:before {
110
+ content: "\53\53\53\53\53";
111
+ top: 0;
112
+ position: absolute;
113
+ left: 0;
114
+ }
115
+ }
116
+
117
+ a.add_to_cart_button,
118
+ a.added_to_cart,
119
+ a.quick_view {
120
+ color: $btn-color;
121
+ background-color: $btn-background;
122
+ margin: 1em;
123
+ line-height: 1;
124
+ cursor: pointer;
125
+ position: relative;
126
+ text-decoration: none;
127
+ overflow: visible;
128
+ padding: .5em 1em;
129
+ font-weight: normal;
130
+ border-radius: 3px;
131
+ left: auto;
132
+ border: 0;
133
+ white-space: nowrap;
134
+ display: block;
135
+ background-image: none;
136
+ box-shadow: none;
137
+ -webkit-box-shadow: none;
138
+ text-shadow: none;
139
+
140
+ &:hover {
141
+ color: $btn-color;
142
+ background-color: $btn-background;
143
+ text-decoration: none;
144
+ background-image: none;
145
+ }
146
+ }
147
+
148
+ // Buttons
149
+ a.add_to_cart_button {
150
+
151
+ &.loading {
152
+ opacity: 0.25;
153
+ padding-right: 2.618em;
154
+
155
+ &:after {
156
+ font-family: "WooCommerce";
157
+ content: "\e01c";
158
+ vertical-align: top;
159
+ -webkit-font-smoothing: antialiased;
160
+ font-weight: normal;
161
+ position: absolute;
162
+ top: .618em;
163
+ right: 1em;
164
+ -webkit-animation: spin 2s linear infinite;
165
+ -moz-animation: spin 2s linear infinite;
166
+ animation: spin 2s linear infinite;
167
+ }
168
+ }
169
+
170
+ &.added {
171
+ &:after {
172
+ font-family: 'WooCommerce';
173
+ content: "\e017";
174
+ margin-left: .53em;
175
+ vertical-align: bottom;
176
+ }
177
+ }
178
+ }
179
+ }
180
+ }
assets/sass/public/_product_modal.scss ADDED
@@ -0,0 +1,197 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .mfp-content {
2
+
3
+ .product {
4
+ background-color: #ffffff;
5
+ display: table;
6
+ margin: 0 auto;
7
+ padding: 15px;
8
+
9
+ .images {
10
+ display: inline-block;
11
+ float: left;
12
+ max-width: 600px;
13
+
14
+ img {
15
+ display: block;
16
+ }
17
+ }
18
+
19
+ .onsale {
20
+ left: 24px;
21
+ top: 24px;
22
+ position: absolute;
23
+ }
24
+
25
+ .summary {
26
+ display: inline-block;
27
+ margin-left: 15px;
28
+ width: 300px;
29
+ }
30
+
31
+ .product_title,
32
+ .description {
33
+ margin: 1em 0;
34
+ }
35
+
36
+ // Price
37
+ .price {
38
+ // color: $text-color;
39
+ display: inline-block;
40
+ font-weight: normal;
41
+ margin: .5em 1em;
42
+ font-size: .857em;
43
+ float: left;
44
+
45
+ del {
46
+ color: inherit;
47
+ background-color: transparent;
48
+ opacity: 0.5;
49
+ display: inline-block;
50
+ }
51
+
52
+ ins {
53
+ color: inherit;
54
+ background-color: transparent;
55
+ font-weight: bold;
56
+ }
57
+ }
58
+
59
+ // Star ratings
60
+ .star-rating {
61
+ // color: $btn-background;
62
+ display: inline-block;
63
+ margin: .5em 1em;
64
+ float: right;
65
+ overflow: hidden;
66
+ position: relative;
67
+ height: 1em;
68
+ line-height: 1;
69
+ font-size: 1em;
70
+ width: 5.4em;
71
+ font-family: 'star';
72
+
73
+ &:before {
74
+ content: "\73\73\73\73\73";
75
+ float: left;
76
+ top: 0;
77
+ left: 0;
78
+ position: absolute;
79
+ }
80
+
81
+ span {
82
+ overflow: hidden;
83
+ float: left;
84
+ top: 0;
85
+ left: 0;
86
+ position: absolute;
87
+ padding-top: 1.5em;
88
+ }
89
+
90
+ span:before {
91
+ content: "\53\53\53\53\53";
92
+ top: 0;
93
+ position: absolute;
94
+ left: 0;
95
+ }
96
+ }
97
+
98
+ // Buttons
99
+
100
+ a.add_to_cart_button,
101
+ a.added_to_cart {
102
+ // color: $btn-color;
103
+ // background-color: $btn-background;
104
+ margin: 0;
105
+ line-height: 1;
106
+ cursor: pointer;
107
+ position: relative;
108
+ text-decoration: none;
109
+ overflow: visible;
110
+ padding: .5em 1em;
111
+ font-weight: normal;
112
+ border-radius: 3px;
113
+ left: auto;
114
+ border: 0;
115
+ white-space: nowrap;
116
+ display: inline-block;
117
+ background-image: none;
118
+ box-shadow: none;
119
+ -webkit-box-shadow: none;
120
+ text-shadow: none;
121
+
122
+ &:hover {
123
+ // color: $btn-color;
124
+ // background-color: $btn-background;
125
+ text-decoration: none;
126
+ background-image: none;
127
+ }
128
+ }
129
+ a.add_to_cart_button {
130
+
131
+ &.loading {
132
+ opacity: 0.25;
133
+ padding-right: 2.618em;
134
+
135
+ &:after {
136
+ font-family: "WooCommerce";
137
+ content: "\e01c";
138
+ vertical-align: top;
139
+ -webkit-font-smoothing: antialiased;
140
+ font-weight: normal;
141
+ position: absolute;
142
+ top: .618em;
143
+ right: 1em;
144
+ -webkit-animation: spin 2s linear infinite;
145
+ -moz-animation: spin 2s linear infinite;
146
+ animation: spin 2s linear infinite;
147
+ }
148
+ }
149
+
150
+ &.added {
151
+ &:after {
152
+ font-family: 'WooCommerce';
153
+ content: "\e017";
154
+ margin-left: .53em;
155
+ vertical-align: bottom;
156
+ }
157
+ }
158
+ }
159
+ }
160
+ }
161
+
162
+ .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content {
163
+ max-width: 945px;
164
+ margin-top: 40px;
165
+ margin-bottom: 40px;
166
+ }
167
+
168
+ @media ( max-width: 600px ) {
169
+ .mfp-content {
170
+ .product {
171
+ .images {
172
+ margin-bottom: 30px;
173
+ }
174
+ .summary {
175
+ display: block;
176
+ margin: 0;
177
+ width: 100%;
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ @media ( min-width: 601px ) {
184
+ .mfp-content {
185
+ .product {
186
+ .images {
187
+ display: inline-block;
188
+ width: 49%;
189
+ }
190
+ .summary {
191
+ display: inline-block;
192
+ margin: 0 0 0 1%;
193
+ width: 49%;
194
+ }
195
+ }
196
+ }
197
+ }
assets/sass/public/_variables.scss CHANGED
@@ -1,6 +1,5 @@
1
  // Variables
2
  $background-color : #9e9e9e;
3
  $background-hover-color : #4caf50;
4
- $nav-arrows-url : "../img/arrows.png";
5
  $owl-video-play-icon : "../img/play.svg";
6
  $ajax-loader-url : "../img/ajax-loader.gif";
1
  // Variables
2
  $background-color : #9e9e9e;
3
  $background-hover-color : #4caf50;
 
4
  $owl-video-play-icon : "../img/play.svg";
5
  $ajax-loader-url : "../img/ajax-loader.gif";
assets/sass/style.scss CHANGED
@@ -6,3 +6,7 @@
6
  @import 'public/video';
7
  @import 'public/theme';
8
  @import 'public/post-carousel';
 
 
 
 
6
  @import 'public/video';
7
  @import 'public/theme';
8
  @import 'public/post-carousel';
9
+ @import 'public/product-carousel';
10
+
11
+ @import 'public/magnific-popup';
12
+ @import 'public/product_modal';
carousel-slider.php CHANGED
@@ -2,10 +2,10 @@
2
  /*
3
  Plugin Name: Carousel Slider
4
  Plugin URI: http://wordpress.org/plugins/carousel-slider
5
- Description: Touch enabled WordPress plugin that lets you create beautiful responsive carousel slider.
6
- Version: 1.6.3
7
  Author: Sayful Islam
8
- Author URI: http://sayfulit.com
9
  Text Domain: carousel-slider
10
  Domain Path: /languages/
11
  License: GPLv2 or later
@@ -19,7 +19,7 @@ if ( ! defined( 'WPINC' ) ) {
19
 
20
  // Define Carousel Slider Version
21
  if ( ! defined( 'CAROUSEL_SLIDER_VERSION' ) ) {
22
- define( 'CAROUSEL_SLIDER_VERSION', '1.6.3' );
23
  }
24
 
25
  if ( ! class_exists( 'Carousel_Slider' ) ):
@@ -64,7 +64,7 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
64
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ), 10 );
65
  add_action( 'wp_footer', array( $this, 'inline_script' ), 30 );
66
  add_action( 'init', array( $this, 'load_textdomain' ) );
67
- add_filter( 'widget_text', 'do_shortcode' );
68
  $this->includes();
69
  }
70
 
@@ -73,14 +73,14 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
73
  */
74
  public function load_textdomain() {
75
  // Set filter for plugin's languages directory
76
- $shaplatools_lang_dir = dirname( plugin_basename( __FILE__ ) ) . '/languages/';
77
 
78
  // Traditional WordPress plugin locale filter
79
  $locale = apply_filters( 'plugin_locale', get_locale(), 'carousel-slider' );
80
  $mofile = sprintf( '%1$s-%2$s.mo', 'carousel-slider', $locale );
81
 
82
  // Setup paths to current locale file
83
- $mofile_local = $shaplatools_lang_dir . $mofile;
84
  $mofile_global = WP_LANG_DIR . '/carousel-slider/' . $mofile;
85
 
86
  if ( file_exists( $mofile_global ) ) {
@@ -91,7 +91,7 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
91
  load_textdomain( $this->plugin_name, $mofile_local );
92
  } else {
93
  // Load the default language files
94
- load_plugin_textdomain( $this->plugin_name, false, $shaplatools_lang_dir );
95
  }
96
  }
97
 
@@ -124,6 +124,7 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
124
  }
125
 
126
  require_once $this->plugin_path() . '/widgets/widget-carousel_slider.php';
 
127
  }
128
 
129
  /**
@@ -144,6 +145,7 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
144
  public function frontend_includes() {
145
  require_once $this->plugin_path() . '/shortcodes/class-carousel-slider-shortcode.php';
146
  require_once $this->plugin_path() . '/shortcodes/class-carousel-slider-deprecated-shortcode.php';
 
147
 
148
  new Carousel_Slider_Shortcode( $this->plugin_path(), $this->plugin_url() );
149
  new Carousel_Slider_Deprecated_Shortcode( $this->plugin_path() );
@@ -155,6 +157,7 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
155
  public function frontend_scripts() {
156
  wp_register_style( $this->plugin_name, $this->plugin_url() . '/assets/css/style.css', array(), $this->plugin_version, 'all' );
157
  wp_register_script( 'owl-carousel', $this->plugin_url() . '/assets/js/owl.carousel.min.js', array( 'jquery' ), '2.2.0', true );
 
158
 
159
  if ( $this->should_load_scripts() ) {
160
  wp_enqueue_style( $this->plugin_name );
@@ -189,7 +192,6 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
189
  'save_btn_text' => __( 'Save Gallery', 'carousel-slider' ),
190
  'progress_btn_text' => __( 'Saving...', 'carousel-slider' ),
191
  'insert_btn_text' => __( 'Insert', 'carousel-slider' ),
192
- 'video_frame_title' => __( 'Choose Video', 'carousel-slider' ),
193
  ) );
194
  }
195
  }
@@ -203,13 +205,31 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
203
  ?>
204
  <script type="text/javascript">
205
  jQuery(document).ready(function ($) {
206
- if (jQuery().owlCarousel) {
207
- $('body').find('.carousel-slider').each(function () {
208
- var _this = $(this);
209
- var isVideo = _this.data('slide-type') == 'video-carousel' ? true : false;
210
- var videoWidth = isVideo ? _this.data('video-width') : false;
211
- var videoHeight = isVideo ? _this.data('video-height') : false;
212
- var autoWidth = isVideo ? true : false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  _this.owlCarousel({
214
  nav: _this.data('nav'),
215
  dots: _this.data('dots'),
@@ -235,8 +255,8 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
235
  1921: {items: _this.data('colums')}
236
  }
237
  });
238
- });
239
- }
240
  });
241
  </script><?php
242
  endif;
@@ -249,13 +269,29 @@ if ( ! class_exists( 'Carousel_Slider' ) ):
249
  */
250
  private function should_load_scripts() {
251
  global $post;
252
- $load_scripts = is_active_widget( false, false, 'widget_carousel_slider', true ) ||
253
- ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'carousel_slide' ) ) ||
254
- ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'carousel' ) );
255
 
256
  return apply_filters( 'carousel_slider_load_scripts', $load_scripts );
257
  }
258
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
  /**
260
  * Plugin path.
261
  *
@@ -292,19 +328,4 @@ endif;
292
  * then kicking off the plugin from this point in the file does
293
  * not affect the page life cycle.
294
  */
295
- if ( defined( 'CAROUSEL_SLIDER_PRO_VERSION' ) ) {
296
-
297
- add_action( 'admin_init', function(){
298
- deactivate_plugins( plugin_basename( __FILE__ ) );
299
- });
300
-
301
- add_action( 'admin_notices', function () {
302
- ?>
303
- <div class="notice notice-error">
304
- <p><?php _e( 'You can\'t activate the free version of Carousel Slider while you are using the premium one.', 'carousel-slider' ); ?></p>
305
- </div>
306
- <?php
307
- } );
308
- } else {
309
- Carousel_Slider::instance();
310
- }
2
  /*
3
  Plugin Name: Carousel Slider
4
  Plugin URI: http://wordpress.org/plugins/carousel-slider
5
+ Description: The Easiest Way to Create SEO friendly Image, Logo, Video, Post and WooCommerce Product Carousel.
6
+ Version: 1.7.2
7
  Author: Sayful Islam
8
+ Author URI: https://sayfulislam.com
9
  Text Domain: carousel-slider
10
  Domain Path: /languages/
11
  License: GPLv2 or later
19
 
20
  // Define Carousel Slider Version
21
  if ( ! defined( 'CAROUSEL_SLIDER_VERSION' ) ) {
22
+ define( 'CAROUSEL_SLIDER_VERSION', '1.7.2' );
23
  }
24
 
25
  if ( ! class_exists( 'Carousel_Slider' ) ):
64
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ), 10 );
65
  add_action( 'wp_footer', array( $this, 'inline_script' ), 30 );
66
  add_action( 'init', array( $this, 'load_textdomain' ) );
67
+ add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) );
68
  $this->includes();
69
  }
70
 
73
  */
74
  public function load_textdomain() {
75
  // Set filter for plugin's languages directory
76
+ $lang_dir = dirname( plugin_basename( __FILE__ ) ) . '/languages/';
77
 
78
  // Traditional WordPress plugin locale filter
79
  $locale = apply_filters( 'plugin_locale', get_locale(), 'carousel-slider' );
80
  $mofile = sprintf( '%1$s-%2$s.mo', 'carousel-slider', $locale );
81
 
82
  // Setup paths to current locale file
83
+ $mofile_local = $lang_dir . $mofile;
84
  $mofile_global = WP_LANG_DIR . '/carousel-slider/' . $mofile;
85
 
86
  if ( file_exists( $mofile_global ) ) {
91
  load_textdomain( $this->plugin_name, $mofile_local );
92
  } else {
93
  // Load the default language files
94
+ load_plugin_textdomain( $this->plugin_name, false, $lang_dir );
95
  }
96
  }
97
 
124
  }
125
 
126
  require_once $this->plugin_path() . '/widgets/widget-carousel_slider.php';
127
+ require_once $this->plugin_path() . '/includes/class-carousel-slider-product.php';
128
  }
129
 
130
  /**
145
  public function frontend_includes() {
146
  require_once $this->plugin_path() . '/shortcodes/class-carousel-slider-shortcode.php';
147
  require_once $this->plugin_path() . '/shortcodes/class-carousel-slider-deprecated-shortcode.php';
148
+ require_once $this->plugin_path() . '/includes/class-carousel-slider-structured-data.php';
149
 
150
  new Carousel_Slider_Shortcode( $this->plugin_path(), $this->plugin_url() );
151
  new Carousel_Slider_Deprecated_Shortcode( $this->plugin_path() );
157
  public function frontend_scripts() {
158
  wp_register_style( $this->plugin_name, $this->plugin_url() . '/assets/css/style.css', array(), $this->plugin_version, 'all' );
159
  wp_register_script( 'owl-carousel', $this->plugin_url() . '/assets/js/owl.carousel.min.js', array( 'jquery' ), '2.2.0', true );
160
+ wp_register_script( 'magnific-popup', $this->plugin_url() . '/assets/js/jquery.magnific-popup.min.js', array(), '1.1.0', true );
161
 
162
  if ( $this->should_load_scripts() ) {
163
  wp_enqueue_style( $this->plugin_name );
192
  'save_btn_text' => __( 'Save Gallery', 'carousel-slider' ),
193
  'progress_btn_text' => __( 'Saving...', 'carousel-slider' ),
194
  'insert_btn_text' => __( 'Insert', 'carousel-slider' ),
 
195
  ) );
196
  }
197
  }
205
  ?>
206
  <script type="text/javascript">
207
  jQuery(document).ready(function ($) {
208
+
209
+ $('body').find('.carousel-slider').each(function () {
210
+ var _this = $(this);
211
+ var isVideo = _this.data('slide-type') == 'video-carousel' ? true : false;
212
+ var videoWidth = isVideo ? _this.data('video-width') : false;
213
+ var videoHeight = isVideo ? _this.data('video-height') : false;
214
+ var autoWidth = isVideo ? true : false;
215
+
216
+ if (jQuery().magnificPopup) {
217
+ var popupType = _this.data('slide-type') == 'product-carousel' ? 'ajax' : 'image';
218
+ var popupGallery = _this.data('slide-type') != 'product-carousel' ? true : false;
219
+ $(this).find('.magnific-popup').magnificPopup({
220
+ type: popupType,
221
+ gallery:{
222
+ enabled: popupGallery
223
+ },
224
+ zoom: {
225
+ enabled: popupGallery,
226
+ duration: 300,
227
+ easing: 'ease-in-out'
228
+ }
229
+ });
230
+ }
231
+
232
+ if (jQuery().owlCarousel) {
233
  _this.owlCarousel({
234
  nav: _this.data('nav'),
235
  dots: _this.data('dots'),
255
  1921: {items: _this.data('colums')}
256
  }
257
  });
258
+ }
259
+ });
260
  });
261
  </script><?php
262
  endif;
269
  */
270
  private function should_load_scripts() {
271
  global $post;
272
+ $load_scripts = is_active_widget( false, false, 'widget_carousel_slider', true ) || ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'carousel_slide' ) ) || ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'carousel' ) );
 
 
273
 
274
  return apply_filters( 'carousel_slider_load_scripts', $load_scripts );
275
  }
276
 
277
+ /**
278
+ * Add custom footer text on plugins page.
279
+ *
280
+ * @param string $text
281
+ */
282
+ public function admin_footer_text( $text )
283
+ {
284
+ global $post_type, $hook_suffix;
285
+
286
+ $footer_text = sprintf(__('If you like %1$s Carousel Slider %2$s please leave us a %3$s rating. A huge thanks in advance!', 'carousel-slider' ), '<strong>', '</strong>', '<a href="https://wordpress.org/support/view/plugin-reviews/carousel-slider?filter=5#postform" target="_blank" data-rated="Thanks :)">&starf;&starf;&starf;&starf;&starf;</a>');
287
+
288
+ if ($post_type == 'carousels' || $hook_suffix == 'carousels_page_carousel-slider-documentation') {
289
+ return $footer_text;
290
+ }
291
+
292
+ return $text;
293
+ }
294
+
295
  /**
296
  * Plugin path.
297
  *
328
  * then kicking off the plugin from this point in the file does
329
  * not affect the page life cycle.
330
  */
331
+ Carousel_Slider::instance();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-admin.php CHANGED
@@ -177,12 +177,13 @@ class Carousel_Slider_Admin
177
 
178
  global $post;
179
  $slide_type = get_post_meta( $post->ID, '_slide_type', true );
180
- $slide_type = in_array($slide_type, array('image-carousel', 'post-carousel', 'image-carousel-url', 'video-carousel')) ? $slide_type : 'image-carousel';
181
 
182
  require_once $this->plugin_path . '/templates/admin/types.php';
183
  require_once $this->plugin_path . '/templates/admin/images-media.php';
184
  require_once $this->plugin_path . '/templates/admin/images-url.php';
185
  require_once $this->plugin_path . '/templates/admin/post-carousel.php';
 
186
  require_once $this->plugin_path . '/templates/admin/video-carousel.php';
187
  require_once $this->plugin_path . '/templates/admin/images-settings.php';
188
  require_once $this->plugin_path . '/templates/admin/general.php';
@@ -393,6 +394,16 @@ class Carousel_Slider_Admin
393
 
394
  return $post;
395
  }
 
 
 
 
 
 
 
 
 
 
396
  }
397
 
398
  endif;
177
 
178
  global $post;
179
  $slide_type = get_post_meta( $post->ID, '_slide_type', true );
180
+ $slide_type = in_array($slide_type, array('image-carousel', 'post-carousel', 'image-carousel-url', 'video-carousel', 'product-carousel')) ? $slide_type : 'image-carousel';
181
 
182
  require_once $this->plugin_path . '/templates/admin/types.php';
183
  require_once $this->plugin_path . '/templates/admin/images-media.php';
184
  require_once $this->plugin_path . '/templates/admin/images-url.php';
185
  require_once $this->plugin_path . '/templates/admin/post-carousel.php';
186
+ require_once $this->plugin_path . '/templates/admin/product-carousel.php';
187
  require_once $this->plugin_path . '/templates/admin/video-carousel.php';
188
  require_once $this->plugin_path . '/templates/admin/images-settings.php';
189
  require_once $this->plugin_path . '/templates/admin/general.php';
394
 
395
  return $post;
396
  }
397
+
398
+ private function is_woocommerce_active()
399
+ {
400
+ if(in_array('woocommerce/woocommerce.php', get_option('active_plugins'))) {
401
+
402
+ return true;
403
+ }
404
+
405
+ return false;
406
+ }
407
  }
408
 
409
  endif;
includes/class-carousel-slider-form.php CHANGED
@@ -8,11 +8,6 @@ if( ! class_exists('Carousel_Slider_Form') ):
8
 
9
  class Carousel_Slider_Form
10
  {
11
- /**
12
- * Generate text input field
13
- *
14
- * @param array $args
15
- */
16
  public function text( array $args )
17
  {
18
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -23,12 +18,6 @@ class Carousel_Slider_Form
23
  echo sprintf( '<input type="text" class="sp-input-text" value="%1$s" id="%2$s" name="%3$s">', $value, $args['id'], $name);
24
  echo $this->field_after();
25
  }
26
-
27
- /**
28
- * Generate textarea input field
29
- *
30
- * @param array $args
31
- */
32
  public function textarea( array $args )
33
  {
34
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -42,11 +31,6 @@ class Carousel_Slider_Form
42
  echo $this->field_after();
43
  }
44
 
45
- /**
46
- * Generate color input field
47
- *
48
- * @param array $args
49
- */
50
  public function color( array $args )
51
  {
52
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -59,11 +43,6 @@ class Carousel_Slider_Form
59
  echo $this->field_after();
60
  }
61
 
62
- /**
63
- * Generate date input field
64
- *
65
- * @param array $args
66
- */
67
  public function date( array $args )
68
  {
69
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -76,10 +55,6 @@ class Carousel_Slider_Form
76
  echo $this->field_after();
77
  }
78
 
79
- /**
80
- * Generate number input field
81
- * @param array $args
82
- */
83
  public function number( array $args )
84
  {
85
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -93,11 +68,6 @@ class Carousel_Slider_Form
93
  echo $this->field_after();
94
  }
95
 
96
- /**
97
- * Generate checkbox input field
98
- *
99
- * @param array $args
100
- */
101
  public function checkbox( array $args )
102
  {
103
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -112,11 +82,6 @@ class Carousel_Slider_Form
112
  echo $this->field_after();
113
  }
114
 
115
- /**
116
- * Generate select input field
117
- *
118
- * @param $args
119
- */
120
  public function select( $args )
121
  {
122
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -135,11 +100,6 @@ class Carousel_Slider_Form
135
  echo $this->field_after();
136
  }
137
 
138
- /**
139
- * Generate select field for post list
140
- *
141
- * @param $args
142
- */
143
  public function posts_list( $args )
144
  {
145
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -147,10 +107,11 @@ class Carousel_Slider_Form
147
  list($name, $value) = $this->field_common( $args );
148
  $value = explode(',', $value);
149
  $multiple = isset($args['multiple']) ? 'multiple' : '';
 
150
 
151
  echo $this->field_before( $args );
152
  echo sprintf('<select name="%1$s" id="%2$s" class="select2 sp-input-text" %3$s>',$name, $args['id'], $multiple);
153
- $posts = get_posts( array( 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => -1 ) );
154
 
155
  foreach( $posts as $post ){
156
  $selected = in_array($post->ID, $value) ? ' selected="selected"' : '';
@@ -160,11 +121,6 @@ class Carousel_Slider_Form
160
  echo $this->field_after();
161
  }
162
 
163
- /**
164
- * Generate field for image galleries
165
- *
166
- * @param $args
167
- */
168
  public function images_gallery( $args )
169
  {
170
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -191,11 +147,6 @@ class Carousel_Slider_Form
191
  echo $html;
192
  }
193
 
194
- /**
195
- * Generate gallery from images url
196
- *
197
- * @param array $args
198
- */
199
  public function images_url( array $args )
200
  {
201
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -208,9 +159,7 @@ class Carousel_Slider_Form
208
  $html .= '<ul class="carousel_slider_url_images_list">';
209
  if ( is_array($value) && count($value) > 0){
210
  foreach ($value as $image ) {
211
- if (filter_var($image['url'], FILTER_VALIDATE_URL)) {
212
- $html .= sprintf('<li><img src="%s" alt="%s" width="75" height="75"></li>', esc_url($image['url']), $image['alt']);
213
- }
214
  }
215
  }
216
  $html .= '</ul>';
@@ -218,10 +167,6 @@ class Carousel_Slider_Form
218
  echo $html;
219
  }
220
 
221
- /**
222
- * Generate field for file
223
- * @param array $args
224
- */
225
  public function file( array $args )
226
  {
227
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -234,11 +179,6 @@ class Carousel_Slider_Form
234
  echo $this->field_after();
235
  }
236
 
237
- /**
238
- * Generate select field for available image sizes
239
- *
240
- * @param array $args
241
- */
242
  public function image_sizes( array $args )
243
  {
244
  if( ! isset( $args['id'], $args['name'] ) ) return;
@@ -281,11 +221,6 @@ class Carousel_Slider_Form
281
  echo $this->field_after();
282
  }
283
 
284
- /**
285
- * Generate field for post terms
286
- *
287
- * @param array $args
288
- */
289
  public function post_terms( array $args )
290
  {
291
  global $wp_version;
@@ -319,13 +254,6 @@ class Carousel_Slider_Form
319
  echo $this->field_after();
320
  }
321
 
322
- /**
323
- * Generate name for value for input fields
324
- *
325
- * @param $args
326
- *
327
- * @return array
328
- */
329
  private function field_common( $args )
330
  {
331
  global $post;
@@ -346,13 +274,6 @@ class Carousel_Slider_Form
346
  return array( $name, $value );
347
  }
348
 
349
- /**
350
- * Generate field before content
351
- *
352
- * @param $args
353
- *
354
- * @return string
355
- */
356
  private function field_before( $args )
357
  {
358
  $table = sprintf( '<div class="sp-input-group" id="field-%s">', $args['id'] );
@@ -366,11 +287,6 @@ class Carousel_Slider_Form
366
  return $table;
367
  }
368
 
369
- /**
370
- * Generate field after content
371
- *
372
- * @return string
373
- */
374
  private function field_after()
375
  {
376
  return '</div></div>';
8
 
9
  class Carousel_Slider_Form
10
  {
 
 
 
 
 
11
  public function text( array $args )
12
  {
13
  if( ! isset( $args['id'], $args['name'] ) ) return;
18
  echo sprintf( '<input type="text" class="sp-input-text" value="%1$s" id="%2$s" name="%3$s">', $value, $args['id'], $name);
19
  echo $this->field_after();
20
  }
 
 
 
 
 
 
21
  public function textarea( array $args )
22
  {
23
  if( ! isset( $args['id'], $args['name'] ) ) return;
31
  echo $this->field_after();
32
  }
33
 
 
 
 
 
 
34
  public function color( array $args )
35
  {
36
  if( ! isset( $args['id'], $args['name'] ) ) return;
43
  echo $this->field_after();
44
  }
45
 
 
 
 
 
 
46
  public function date( array $args )
47
  {
48
  if( ! isset( $args['id'], $args['name'] ) ) return;
55
  echo $this->field_after();
56
  }
57
 
 
 
 
 
58
  public function number( array $args )
59
  {
60
  if( ! isset( $args['id'], $args['name'] ) ) return;
68
  echo $this->field_after();
69
  }
70
 
 
 
 
 
 
71
  public function checkbox( array $args )
72
  {
73
  if( ! isset( $args['id'], $args['name'] ) ) return;
82
  echo $this->field_after();
83
  }
84
 
 
 
 
 
 
85
  public function select( $args )
86
  {
87
  if( ! isset( $args['id'], $args['name'] ) ) return;
100
  echo $this->field_after();
101
  }
102
 
 
 
 
 
 
103
  public function posts_list( $args )
104
  {
105
  if( ! isset( $args['id'], $args['name'] ) ) return;
107
  list($name, $value) = $this->field_common( $args );
108
  $value = explode(',', $value);
109
  $multiple = isset($args['multiple']) ? 'multiple' : '';
110
+ $post_type = isset($args['post_type']) ? $args['post_type'] : 'post';
111
 
112
  echo $this->field_before( $args );
113
  echo sprintf('<select name="%1$s" id="%2$s" class="select2 sp-input-text" %3$s>',$name, $args['id'], $multiple);
114
+ $posts = get_posts( array( 'post_type' => $post_type, 'post_status' => 'publish', 'posts_per_page' => -1 ) );
115
 
116
  foreach( $posts as $post ){
117
  $selected = in_array($post->ID, $value) ? ' selected="selected"' : '';
121
  echo $this->field_after();
122
  }
123
 
 
 
 
 
 
124
  public function images_gallery( $args )
125
  {
126
  if( ! isset( $args['id'], $args['name'] ) ) return;
147
  echo $html;
148
  }
149
 
 
 
 
 
 
150
  public function images_url( array $args )
151
  {
152
  if( ! isset( $args['id'], $args['name'] ) ) return;
159
  $html .= '<ul class="carousel_slider_url_images_list">';
160
  if ( is_array($value) && count($value) > 0){
161
  foreach ($value as $image ) {
162
+ $html .= sprintf('<li><img src="%s" alt="%s" width="75" height="75"></li>', $image['url'], $image['alt']);
 
 
163
  }
164
  }
165
  $html .= '</ul>';
167
  echo $html;
168
  }
169
 
 
 
 
 
170
  public function file( array $args )
171
  {
172
  if( ! isset( $args['id'], $args['name'] ) ) return;
179
  echo $this->field_after();
180
  }
181
 
 
 
 
 
 
182
  public function image_sizes( array $args )
183
  {
184
  if( ! isset( $args['id'], $args['name'] ) ) return;
221
  echo $this->field_after();
222
  }
223
 
 
 
 
 
 
224
  public function post_terms( array $args )
225
  {
226
  global $wp_version;
254
  echo $this->field_after();
255
  }
256
 
 
 
 
 
 
 
 
257
  private function field_common( $args )
258
  {
259
  global $post;
274
  return array( $name, $value );
275
  }
276
 
 
 
 
 
 
 
 
277
  private function field_before( $args )
278
  {
279
  $table = sprintf( '<div class="sp-input-group" id="field-%s">', $args['id'] );
287
  return $table;
288
  }
289
 
 
 
 
 
 
290
  private function field_after()
291
  {
292
  return '</div></div>';
includes/class-carousel-slider-product.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! class_exists('Carousel_Slider_Product')):
3
+
4
+ class Carousel_Slider_Product
5
+ {
6
+ public function __construct()
7
+ {
8
+ add_action( 'wp_ajax_carousel_slider_quick_view', array( $this, 'quick_view') );
9
+ add_action( 'wp_ajax_nopriv_carousel_slider_quick_view', array( $this, 'quick_view') );
10
+ }
11
+
12
+ public function quick_view()
13
+ {
14
+ if ( ! isset($_GET['_wpnonce'], $_GET['product_id'], $_GET['slide_id'])) {
15
+ wp_die();
16
+ }
17
+
18
+ if ( ! wp_verify_nonce($_GET['_wpnonce'], 'carousel_slider_quick_view')) {
19
+ wp_die();
20
+ }
21
+
22
+ global $product;
23
+ $product = get_product( $_GET['product_id'] );
24
+
25
+ ?>
26
+ <div id="pmid-<?php echo intval($_GET['slide_id']); ?>" class="product carousel-slider__product-modal">
27
+
28
+ <div class="images">
29
+ <?php echo get_the_post_thumbnail( $product->id, 'medium_large' ); ?>
30
+ <?php if ( $product->is_on_sale() ) : ?>
31
+ <?php echo apply_filters( 'woocommerce_sale_flash', '<span class="onsale">' . __( 'Sale!', 'carousel-slider' ) . '</span>', $post, $product ); ?>
32
+ <?php endif; ?>
33
+ </div>
34
+
35
+ <div class="summary entry-summary">
36
+
37
+ <h1 class="product_title entry-title">
38
+ <?php echo esc_attr($product->get_title()); ?>
39
+ </h1>
40
+
41
+ <div class="woocommerce-product-rating">
42
+ <?php
43
+ if($product->get_rating_html()){
44
+ echo $product->get_rating_html();
45
+ }
46
+ ?>
47
+ </div>
48
+
49
+ <div class="price">
50
+ <?php
51
+ if($product->get_price_html()){
52
+ echo $product->get_price_html();
53
+ }
54
+ ?>
55
+ </div>
56
+
57
+ <div class="description">
58
+ <?php
59
+ echo '<div style="clear: both;"></div>';
60
+ echo apply_filters( 'woocommerce_short_description', $product->post->post_excerpt );
61
+ ?>
62
+ </div>
63
+
64
+ <div>
65
+ <?php
66
+ // Show button
67
+ echo '<div style="clear: both;"></div>';
68
+ if ( function_exists('woocommerce_template_loop_add_to_cart')) {
69
+ woocommerce_template_loop_add_to_cart();
70
+ }
71
+ ?>
72
+ </div>
73
+
74
+ </div>
75
+ </div>
76
+ <?php
77
+ wp_die();
78
+ }
79
+ }
80
+
81
+ new Carousel_Slider_Product();
82
+
83
+ endif;
includes/class-carousel-slider-structured-data.php ADDED
@@ -0,0 +1,194 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ /**
8
+ * Structured data's handler and generator using JSON-LD format.
9
+ *
10
+ * @class Carousel_Slider_Structured_Data
11
+ * @since 1.7.2
12
+ * @author Sayful Islam <sayful.islam001@gmail.com>
13
+ */
14
+ class Carousel_Slider_Structured_Data {
15
+
16
+ private $_product_data = array();
17
+ private $_image_data = array();
18
+
19
+ /**
20
+ * Constructor.
21
+ */
22
+ public function __construct() {
23
+ add_action( 'carousel_slider_product_loop', array( $this, 'generate_product_data' ) );
24
+ add_action( 'carousel_slider_image_gallery_loop', array( $this, 'generate_image_data' ) );
25
+ // Output structured data.
26
+ add_action( 'wp_footer', array( $this, 'output_structured_data' ), 10 );
27
+ }
28
+
29
+ /**
30
+ * Outputs structured data.
31
+ *
32
+ * Hooked into `wp_footer` action hook.
33
+ */
34
+ public function output_structured_data()
35
+ {
36
+ $data = $this->get_structured_product_data();
37
+ if ( $data ) {
38
+ echo '<script type="application/ld+json">' . wp_json_encode( $data ) . '</script>' . "\n";
39
+ }
40
+ $gallery_data = $this->get_structured_image_data();
41
+ if ( $gallery_data ) {
42
+ echo '<script type="application/ld+json">' . wp_json_encode( $gallery_data ) . '</script>' . "\n";
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Sets data.
48
+ *
49
+ * @param array $data Structured data.
50
+ * @return bool
51
+ */
52
+ public function set_data( $data ) {
53
+ if ( ! isset( $data['@type'] ) || ! preg_match( '|^[a-zA-Z]{1,20}$|', $data['@type'] ) ) {
54
+ return false;
55
+ }
56
+
57
+ if ( $data['@type'] == 'ImageObject' ) {
58
+ if ( ! $this->maybe_image_added( $data['contentUrl'] ) ) {
59
+ $this->_image_data[] = $data;
60
+ }
61
+ }
62
+
63
+ if ( $data['@type'] == 'Product' ) {
64
+ if ( ! $this->maybe_product_added( $data['@id'] ) ) {
65
+ $this->_product_data[] = $data;
66
+ }
67
+ }
68
+
69
+ return true;
70
+ }
71
+
72
+ /**
73
+ * Check if product is already added to list
74
+ *
75
+ * @param string $product_id
76
+ * @return boolean
77
+ */
78
+ private function maybe_product_added( $product_id = null )
79
+ {
80
+ $product_data = $this->get_product_data();
81
+ if ( count($product_data) > 0 ) {
82
+ $product_data = array_map( function( $data ){ return $data['@id']; }, $product_data );
83
+ return in_array( $product_id, $product_data );
84
+ }
85
+
86
+ return false;
87
+ }
88
+
89
+ /**
90
+ * Check if image is already added to list
91
+ *
92
+ * @param string $image_id
93
+ * @return boolean
94
+ */
95
+ private function maybe_image_added( $image_id = null )
96
+ {
97
+ $image_data = $this->get_image_data();
98
+ if ( count($image_data) > 0 ) {
99
+ $image_data = array_map( function( $data ){ return $data['contentUrl']; }, $image_data );
100
+ return in_array( $image_id, $image_data );
101
+ }
102
+
103
+ return false;
104
+ }
105
+
106
+ /**
107
+ * Gets product data.
108
+ *
109
+ * @return array
110
+ */
111
+ public function get_product_data() {
112
+ return $this->_product_data;
113
+ }
114
+
115
+ /**
116
+ * Get image data
117
+ *
118
+ * @return array
119
+ */
120
+ public function get_image_data()
121
+ {
122
+ return $this->_image_data;
123
+ }
124
+
125
+ /**
126
+ * Structures and returns image data.
127
+ * @return array
128
+ */
129
+ public function get_structured_image_data()
130
+ {
131
+ $data = array(
132
+ '@context' => 'http://schema.org/',
133
+ "@type" => "ImageGallery",
134
+ "associatedMedia" => $this->get_image_data()
135
+ );
136
+ return $this->get_image_data() ? $data : array();
137
+ }
138
+
139
+ /**
140
+ * Structures and returns product data.
141
+ * @return array
142
+ */
143
+ public function get_structured_product_data()
144
+ {
145
+ $data = array(
146
+ '@context' => 'http://schema.org/',
147
+ "@graph" => $this->get_product_data()
148
+ );
149
+
150
+ return $this->get_product_data() ? $data : array();
151
+ }
152
+
153
+ /**
154
+ * Generates Product structured data.
155
+ *
156
+ * Hooked into `carousel_slider_product_loop` action hook.
157
+ *
158
+ * @param WC_Product $product Product data (default: null).
159
+ */
160
+ public function generate_product_data( $product = null ) {
161
+ if ( ! is_object( $product ) ) {
162
+ global $product;
163
+ }
164
+
165
+ $markup['@type'] = 'Product';
166
+ $markup['@id'] = get_permalink( $product->get_id() );
167
+ $markup['url'] = $markup['@id'];
168
+ $markup['name'] = $product->get_name();
169
+
170
+ $this->set_data( apply_filters( 'carousel_slider_structured_data_product', $markup, $product ) );
171
+ }
172
+
173
+ /**
174
+ * Generates Image structured data.
175
+ *
176
+ * Hooked into `carousel_slider_image_gallery_loop` action hook.
177
+ *
178
+ * @param WP_Post $cs_post Post data (default: null).
179
+ */
180
+ public function generate_image_data( $cs_post = null ) {
181
+ if ( ! is_object( $cs_post ) ) {
182
+ global $cs_post;
183
+ }
184
+
185
+ $image = wp_get_attachment_image_src( $cs_post->ID, 'full' );
186
+ $markup['@type'] = 'ImageObject';
187
+ $markup['contentUrl'] = $image[0];
188
+ $markup['name'] = $cs_post->post_title;
189
+
190
+ $this->set_data( apply_filters( 'carousel_slider_structured_data_image', $markup, $cs_post ) );
191
+ }
192
+ }
193
+
194
+ new Carousel_Slider_Structured_Data();
readme.txt CHANGED
@@ -1,27 +1,29 @@
1
  === Carousel Slider ===
2
  Contributors: sayful
3
- Tags: widget, shortcode, images, carousel, carousel slider, image carousel, slider, owl carousel
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3LZWQTHEVYWCY
5
- Requires at least: 3.5
6
  Tested up to: 4.8
7
- Stable tag: 1.6.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- Touch enabled wordpress plugin that lets you create beautiful multipurpose responsive carousel slider.
12
 
13
  == Description ==
14
 
15
- **The Easiest Way to Create Image, Video and Post Carousel.**
16
  Carousel Slider is a touch enabled WordPress plugin that lets you create highly customizable, stylish responsive carousel slider. With Carousel Slider, you can create image carousel using media gallery or custom url, post carousel, video carousel. We have integrated [Owl Carousel 2](http://www.owlcarousel.owlgraphic.com/) into our plugin for the ultimate device support.
17
 
18
  **If you like this plugin, please give us [5 star](https://wordpress.org/support/plugin/carousel-slider/reviews/?rate=5#new-post) to encourage for future improvement.**
19
 
20
  = Full Feature Set =
21
 
22
- * **Multiple types carousel**, images from media gallery, images from URL, videos from youtube and vimeo, and posts carousel
23
  * **Posts carousel**, support Specific posts, Post Categories, Post Tags, Posts per page, Date range query and ordering
24
  * **Video carousel**, support custom height and width (Currently only support video from Youtube and Vimeo)
 
 
25
  * **Fully responsive**, configure the number of items to display for desktop, small desktop, tablet and mobile devices
26
  * **Lightweight**, only loads stuff when carousel is used
27
  * **Navigation and pagination**, choose what type of navigation is displayed for your carousel with unlimited colors option
@@ -42,6 +44,9 @@ https://www.youtube.com/watch?v=a7hqn1yNzwM
42
  = Posts Carousel =
43
  https://www.youtube.com/watch?v=ImJB946azy0
44
 
 
 
 
45
  = With Page Builder by SiteOrigin =
46
  https://www.youtube.com/watch?v=-OaYQZfr1RM
47
 
@@ -63,7 +68,31 @@ https://www.youtube.com/watch?v=kYgp6wp27lM
63
  If you still need help. visit [WordPress codex](https://codex.wordpress.org/Managing_Plugins#Installing_Plugins)
64
 
65
  == Frequently Asked Questions ==
66
- Do you have questions or issues with Carousel Slider? [Ask for support here](http://wordpress.org/support/plugin/carousel-slider)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
 
68
  == Screenshots ==
69
 
@@ -71,9 +100,28 @@ Do you have questions or issues with Carousel Slider? [Ask for support here](htt
71
  2. Front-end example of posts carousel slider.
72
  3. Front-end example of videos carousel slider.
73
  4. Front-end example of images carousel slider.
 
 
 
74
 
75
  == Changelog ==
76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  = version 1.6.3 - 2017-01-31 =
78
  * Added - Added title option for carousel slider widget.
79
  * Tweak - Tweak at post carousel admin interface.
1
  === Carousel Slider ===
2
  Contributors: sayful
3
+ Tags: woocommerce, shortcode, images, carousel, carousel slider, image carousel, product carousel, slider, owl carousel
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3LZWQTHEVYWCY
5
+ Requires at least: 4.0
6
  Tested up to: 4.8
7
+ Stable tag: 1.7.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
+ The Easiest Way to Create SEO friendly Image, Logo, Video, Post and Product Carousel.
12
 
13
  == Description ==
14
 
15
+ **The Easiest Way to Create SEO friendly Image, Logo, Video, Post and Product Carousel.**
16
  Carousel Slider is a touch enabled WordPress plugin that lets you create highly customizable, stylish responsive carousel slider. With Carousel Slider, you can create image carousel using media gallery or custom url, post carousel, video carousel. We have integrated [Owl Carousel 2](http://www.owlcarousel.owlgraphic.com/) into our plugin for the ultimate device support.
17
 
18
  **If you like this plugin, please give us [5 star](https://wordpress.org/support/plugin/carousel-slider/reviews/?rate=5#new-post) to encourage for future improvement.**
19
 
20
  = Full Feature Set =
21
 
22
+ * **Multiple types carousel**, images from media gallery, images from URL, videos from youtube and vimeo, posts, and WooCommerce products carousel slider
23
  * **Posts carousel**, support Specific posts, Post Categories, Post Tags, Posts per page, Date range query and ordering
24
  * **Video carousel**, support custom height and width (Currently only support video from Youtube and Vimeo)
25
+ * **WooCommerce Product carousel**, support Product Categories, Product Tags, Specific Products, Featured Products, Recent Products, Sale Products, Best-Selling Products, Top Rated Products
26
+ * Options to hide/show product Title, Rating, Price, Cart Button, Sale Tag, Wishlist Button, Quick View button and options to change color for Title, Button Background, Button text
27
  * **Fully responsive**, configure the number of items to display for desktop, small desktop, tablet and mobile devices
28
  * **Lightweight**, only loads stuff when carousel is used
29
  * **Navigation and pagination**, choose what type of navigation is displayed for your carousel with unlimited colors option
44
  = Posts Carousel =
45
  https://www.youtube.com/watch?v=ImJB946azy0
46
 
47
+ = WooCommerce Products Carousel =
48
+ https://www.youtube.com/watch?v=yiAkvXyfakg
49
+
50
  = With Page Builder by SiteOrigin =
51
  https://www.youtube.com/watch?v=-OaYQZfr1RM
52
 
68
  If you still need help. visit [WordPress codex](https://codex.wordpress.org/Managing_Plugins#Installing_Plugins)
69
 
70
  == Frequently Asked Questions ==
71
+
72
+ = How to use shortcode/slider in theme template file? =
73
+ By default, Carousel slider only load scripts when you use shortcode in TinyMCE editor or use Carousel Slider Widget. This helps to reduce two unnecessary HTTP request for Style and Script when you are not using the slider.
74
+ If you want to use shortcode in your theme directly, you need to tell the plugin to load scripts for your perticular page or template in your (theme/child theme) functions.php file. To load scripts, you can use the following filter hook.
75
+ For example, if you want to use shortcode only for your front page, add the following filter hook in your theme functions.php file.
76
+
77
+ `add_filter('carousel_slider_load_scripts', 'carousel_slider_load_scripts');
78
+ function carousel_slider_load_scripts( $load_scripts ) {
79
+ // To use only for front page
80
+ if ( is_front_page() ) {
81
+ return true;
82
+ }
83
+ return $load_scripts;
84
+ }`
85
+
86
+ or write the following code to always load the slider scripts and style.
87
+
88
+ `add_filter('carousel_slider_load_scripts', 'carousel_slider_load_scripts');
89
+ function carousel_slider_load_scripts( $load_scripts ) {
90
+ return true;
91
+ }`
92
+
93
+ Now you can use the following function at your theme template file replacing `YOUR_SLIDER_ID` with actual carousel slider id.
94
+
95
+ `echo do_shortcode('[carousel_slide id='YOUR_SLIDER_ID']");`
96
 
97
  == Screenshots ==
98
 
100
  2. Front-end example of posts carousel slider.
101
  3. Front-end example of videos carousel slider.
102
  4. Front-end example of images carousel slider.
103
+ 5. Front-end example of products carousel slider.
104
+ 6. Front-end example of products Quick View.
105
+ 7. Front-end example of image lightbox.
106
 
107
  == Changelog ==
108
 
109
+ = version 1.7.2 - 2017-04-07 =
110
+ * New - Structured data generator using JSON-LD format for Product Carousel and Gallery Image Carousel.
111
+
112
+ = version 1.7.1 - 2017-04-05 =
113
+ * New - WooCommerce 3.0.0 compatibility
114
+ * Fixed - get_product() has been replaced with wc_get_product()
115
+ * Fixed - get_rating_html() has been replaced with wc_get_rating_html()
116
+ * Fixed - Fixed id was called incorrectly (Product properties should not be accessed directly) notice.
117
+
118
+ = version 1.7.0 - 2017-03-12 =
119
+ * Added - WooCommerce Product carousel.
120
+ * Added - WooCommerce Product Quick View button.
121
+ * Added - WooCommerce Product wishlist button (Required YITH WooCommerce Wishlist).
122
+ * Added - Unlimited colors for Product button and title.
123
+ * Added - Lightbox support for images carousel.
124
+
125
  = version 1.6.3 - 2017-01-31 =
126
  * Added - Added title option for carousel slider widget.
127
  * Tweak - Tweak at post carousel admin interface.
screenshot-5.jpg ADDED
Binary file
screenshot-6.jpg ADDED
Binary file
screenshot-7.jpg ADDED
Binary file
shortcodes/class-carousel-slider-shortcode.php CHANGED
@@ -44,7 +44,7 @@ class Carousel_Slider_Shortcode
44
  if ( ! $id ) return;
45
 
46
  $slide_type = get_post_meta( $id, '_slide_type', true );
47
- $slide_type = in_array($slide_type, array('image-carousel', 'post-carousel', 'image-carousel-url', 'video-carousel')) ? $slide_type : 'image-carousel';
48
 
49
  if ($slide_type == 'post-carousel') {
50
  ob_start();
@@ -77,6 +77,14 @@ class Carousel_Slider_Shortcode
77
  ob_end_clean();
78
  return apply_filters( 'carousel_slider_gallery_images_carousel', $html, $id );
79
  }
 
 
 
 
 
 
 
 
80
 
81
  return;
82
  }
44
  if ( ! $id ) return;
45
 
46
  $slide_type = get_post_meta( $id, '_slide_type', true );
47
+ $slide_type = in_array($slide_type, array('image-carousel', 'post-carousel', 'image-carousel-url', 'video-carousel', 'product-carousel')) ? $slide_type : 'image-carousel';
48
 
49
  if ($slide_type == 'post-carousel') {
50
  ob_start();
77
  ob_end_clean();
78
  return apply_filters( 'carousel_slider_gallery_images_carousel', $html, $id );
79
  }
80
+
81
+ if ($slide_type == 'product-carousel') {
82
+ ob_start();
83
+ require $this->plugin_path . '/templates/product-carousel.php';
84
+ $html = ob_get_contents();
85
+ ob_end_clean();
86
+ return apply_filters( 'carousel_slider_product_carousel', $html, $id );
87
+ }
88
 
89
  return;
90
  }
templates/admin/images-settings.php CHANGED
@@ -30,6 +30,13 @@
30
  '_blank' => __('Open in a new window or tab', 'carousel-slider'),
31
  ),
32
  ));
 
 
 
 
 
 
 
33
  ?>
34
  </div>
35
  </div>
30
  '_blank' => __('Open in a new window or tab', 'carousel-slider'),
31
  ),
32
  ));
33
+ $this->form->checkbox(array(
34
+ 'id' => '_image_lightbox',
35
+ 'name' => __('Show Lightbox Gallery', 'carousel-slider'),
36
+ 'label' => __('Show Lightbox Gallery', 'carousel-slider'),
37
+ 'desc' => __('Check to show lightbox gallery.', 'carousel-slider'),
38
+ 'std' => 'off'
39
+ ));
40
  ?>
41
  </div>
42
  </div>
templates/admin/product-carousel.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div data-id="open" id="section_product_query" class="shapla-toggle shapla-toggle--stroke" style="display: <?php echo $slide_type != 'product-carousel' ? 'none' : 'block'; ?>">
2
+ <span class="shapla-toggle-title">
3
+ <?php _e('Product Query', 'carousel-slider'); ?>
4
+ </span>
5
+ <div class="shapla-toggle-inner">
6
+ <div class="shapla-toggle-content">
7
+ <?php
8
+ $this->form->select(array(
9
+ 'id' => '_product_query_type',
10
+ 'name' => __('Query Type', 'carousel-slider'),
11
+ 'std' => 'query_porduct',
12
+ 'options' => array(
13
+ 'query_porduct' => __('Query Products', 'carousel-slider'),
14
+ 'product_categories' => __('Product Categories', 'carousel-slider'),
15
+ 'product_tags' => __('Product Tags', 'carousel-slider'),
16
+ 'specific_products' => __('Specific Products', 'carousel-slider'),
17
+ ),
18
+ ));
19
+ $this->form->select(array(
20
+ 'id' => '_product_query',
21
+ 'name' => __('Choose Query', 'carousel-slider'),
22
+ 'std' => 'featured',
23
+ 'options' => array(
24
+ 'featured' => __('Featured Products', 'carousel-slider'),
25
+ 'recent' => __('Recent Products', 'carousel-slider'),
26
+ 'sale' => __('Sale Products', 'carousel-slider'),
27
+ 'best_selling' => __('Best-Selling Products', 'carousel-slider'),
28
+ 'top_rated' => __('Top Rated Products', 'carousel-slider'),
29
+ ),
30
+ ));
31
+ $this->form->post_terms(array(
32
+ 'id' => '_product_categories',
33
+ 'taxonomy' => 'product_cat',
34
+ 'multiple' => true,
35
+ 'name' => __('Product Categories', 'carousel-slider'),
36
+ 'desc' => __('Show products associated with selected categories.', 'carousel-slider'),
37
+ ));
38
+ $this->form->post_terms(array(
39
+ 'id' => '_product_tags',
40
+ 'taxonomy' => 'product_tag',
41
+ 'multiple' => true,
42
+ 'name' => __('Product Tags', 'carousel-slider'),
43
+ 'desc' => __('Show products associated with selected tags.', 'carousel-slider'),
44
+ ));
45
+ $this->form->posts_list(array(
46
+ 'id' => '_product_in',
47
+ 'post_type' => 'product',
48
+ 'multiple' => true,
49
+ 'name' => __('Specific products', 'carousel-slider'),
50
+ 'desc' => __('Select products that you want to show as slider. Select at least 5 products', 'carousel-slider'),
51
+ ));
52
+ $this->form->number(array(
53
+ 'id' => '_products_per_page',
54
+ 'name' => __('Product per page', 'carousel-slider'),
55
+ 'std' => 12,
56
+ 'desc' => __('How many products you want to show on carousel slide.', 'carousel-slider'),
57
+ ));
58
+ $this->form->checkbox( array(
59
+ 'id' => '_product_title',
60
+ 'name' => __('Show Title', 'carousel-slider'),
61
+ 'label' => __('Show Title.', 'carousel-slider'),
62
+ 'desc' => __('Check to show product title.', 'carousel-slider'),
63
+ 'std' => 'on'
64
+ ));
65
+ $this->form->checkbox( array(
66
+ 'id' => '_product_rating',
67
+ 'name' => __('Show Rating', 'carousel-slider'),
68
+ 'label' => __('Show Rating.', 'carousel-slider'),
69
+ 'desc' => __('Check to show product rating.', 'carousel-slider'),
70
+ 'std' => 'on'
71
+ ));
72
+ $this->form->checkbox( array(
73
+ 'id' => '_product_price',
74
+ 'name' => __('Show Price', 'carousel-slider'),
75
+ 'label' => __('Show Price.', 'carousel-slider'),
76
+ 'desc' => __('Check to show product price.', 'carousel-slider'),
77
+ 'std' => 'on'
78
+ ));
79
+ $this->form->checkbox( array(
80
+ 'id' => '_product_cart_button',
81
+ 'name' => __('Show Cart Button', 'carousel-slider'),
82
+ 'label' => __('Show Cart Button.', 'carousel-slider'),
83
+ 'desc' => __('Check to show product add to cart button.', 'carousel-slider'),
84
+ 'std' => 'on'
85
+ ));
86
+ $this->form->checkbox( array(
87
+ 'id' => '_product_onsale',
88
+ 'name' => __('Show Sale Tag', 'carousel-slider'),
89
+ 'label' => __('Show Sale Tag', 'carousel-slider'),
90
+ 'desc' => __('Check to show product sale tag for onsale products.', 'carousel-slider'),
91
+ 'std' => 'on'
92
+ ));
93
+ $this->form->checkbox( array(
94
+ 'id' => '_product_wishlist',
95
+ 'name' => __('Show Wishlist Button', 'carousel-slider'),
96
+ 'label' => __('Show Wishlist Button', 'carousel-slider'),
97
+ 'std' => 'off',
98
+ 'desc' => sprintf( esc_html__('Check to show wishlist button. This feature needs %s plugin to be installed.', 'carousel-slider'), sprintf('<a href="https://wordpress.org/plugins/yith-woocommerce-wishlist/" target="_blank" >%s</a>', __('YITH WooCommerce Wishlist', 'carousel-slider'))),
99
+ ));
100
+ $this->form->checkbox( array(
101
+ 'id' => '_product_quick_view',
102
+ 'name' => __('Show Quick View', 'carousel-slider'),
103
+ 'label' => __('Show Quick View', 'carousel-slider'),
104
+ 'desc' => __('Check to show quick view button.', 'carousel-slider'),
105
+ 'std' => 'on'
106
+ ));
107
+ $this->form->color(array(
108
+ 'id' => '_product_title_color',
109
+ 'type' => 'color',
110
+ 'name' => __('Title Color', 'carousel-slider'),
111
+ 'desc' => __('Pick a color for product title. This color will also apply to sale tag and price.', 'carousel-slider'),
112
+ 'std' => '#333333'
113
+ ));
114
+ $this->form->color(array(
115
+ 'id' => '_product_button_bg_color',
116
+ 'type' => 'color',
117
+ 'name' => __('Button Background Color', 'carousel-slider'),
118
+ 'desc' => __('Pick a color for button background color. This color will also apply to product rating.', 'carousel-slider'),
119
+ 'std' => '#96588a'
120
+ ));
121
+ $this->form->color(array(
122
+ 'id' => '_product_button_text_color',
123
+ 'type' => 'color',
124
+ 'name' => __('Button Text Color', 'carousel-slider'),
125
+ 'desc' => __('Pick a color for button text color.', 'carousel-slider'),
126
+ 'std' => '#f1f1f1'
127
+ ));
128
+ ?>
129
+ </div>
130
+ </div>
131
+ </div>
templates/admin/types.php CHANGED
@@ -18,7 +18,8 @@
18
  <option value="video-carousel"<?php echo $slide_type == 'video-carousel' ? 'selected': ''; ?>>
19
  <?php _e('Video Carousel', 'carousel-slider'); ?>
20
  </option>
21
- <option value="product-carousel" disabled>
 
22
  <?php _e('WooCommerce Product Carousel', 'carousel-slider'); ?>
23
  </option>
24
  </select>
18
  <option value="video-carousel"<?php echo $slide_type == 'video-carousel' ? 'selected': ''; ?>>
19
  <?php _e('Video Carousel', 'carousel-slider'); ?>
20
  </option>
21
+ <?php $disabled = $this->is_woocommerce_active() ? '' : 'disabled'; ?>
22
+ <option value="product-carousel" <?php echo $slide_type == 'product-carousel' ? 'selected': ''; ?> <?php echo $disabled; ?>>
23
  <?php _e('WooCommerce Product Carousel', 'carousel-slider'); ?>
24
  </option>
25
  </select>
templates/documentation.php CHANGED
@@ -59,6 +59,16 @@ if ( ! defined( 'WPINC' ) ) {
59
  </div>
60
  </td>
61
  </tr>
 
 
 
 
 
 
 
 
 
 
62
  <tr>
63
  <th scope="row">
64
  <label>In Widget Areas</label>
59
  </div>
60
  </td>
61
  </tr>
62
+ <tr>
63
+ <th scope="row">
64
+ <label>WooCommerce Products Carousel</label>
65
+ </th>
66
+ <td>
67
+ <div class="iframe_wrapper">
68
+ <iframe width="1280" height="720" src="https://www.youtube.com/embed/yiAkvXyfakg" frameborder="0" allowfullscreen></iframe>
69
+ </div>
70
+ </td>
71
+ </tr>
72
  <tr>
73
  <th scope="row">
74
  <label>In Widget Areas</label>
templates/images-carousel.php CHANGED
@@ -16,6 +16,7 @@ $_nav_active_color = get_post_meta( $id, '_nav_active_color', true );
16
  $_lazy_load_image = get_post_meta( $id, '_lazy_load_image', true );
17
  $_show_attachment_title = get_post_meta( $id, '_show_attachment_title', true );
18
  $_show_attachment_caption = get_post_meta( $id, '_show_attachment_caption', true );
 
19
  ?>
20
  <style>
21
  #id-<?php echo $id; ?> .owl-dots .owl-dot span {
@@ -36,7 +37,10 @@ $_show_attachment_caption = get_post_meta( $id, '_show_attachment_caption', tru
36
  <?php
37
  foreach ( $images_ids as $image_id ):
38
 
39
- $get_post = get_post( $image_id );
 
 
 
40
  $image_title = $get_post->post_title;
41
  $image_caption = $get_post->post_excerpt;
42
  $image_description = $get_post->post_content;
@@ -79,7 +83,12 @@ $_show_attachment_caption = get_post_meta( $id, '_show_attachment_caption', tru
79
  $image = wp_get_attachment_image( $image_id, $_image_size, false, array( 'alt' => $image_alt_text ) );
80
  }
81
 
82
- if ( filter_var( $image_link_url, FILTER_VALIDATE_URL) ) {
 
 
 
 
 
83
 
84
  echo sprintf('<a href="%1$s" target="%4$s">%2$s%3$s</a>', esc_url($image_link_url), $image, $full_caption, $_image_target);
85
 
16
  $_lazy_load_image = get_post_meta( $id, '_lazy_load_image', true );
17
  $_show_attachment_title = get_post_meta( $id, '_show_attachment_title', true );
18
  $_show_attachment_caption = get_post_meta( $id, '_show_attachment_caption', true );
19
+ $_show_lightbox = get_post_meta( $id, '_image_lightbox', true );
20
  ?>
21
  <style>
22
  #id-<?php echo $id; ?> .owl-dots .owl-dot span {
37
  <?php
38
  foreach ( $images_ids as $image_id ):
39
 
40
+ $get_post = get_post( $image_id );
41
+ $GLOBALS['cs_post'] = $get_post;
42
+ do_action( 'carousel_slider_image_gallery_loop' );
43
+
44
  $image_title = $get_post->post_title;
45
  $image_caption = $get_post->post_excerpt;
46
  $image_description = $get_post->post_content;
83
  $image = wp_get_attachment_image( $image_id, $_image_size, false, array( 'alt' => $image_alt_text ) );
84
  }
85
 
86
+ if ( $_show_lightbox == 'on' ) {
87
+ wp_enqueue_script( 'magnific-popup' );
88
+ $image_src = wp_get_attachment_image_src( $image_id, 'full' );
89
+ echo sprintf('<a href="%1$s" class="magnific-popup">%2$s%3$s</a>', esc_url($image_src[0]), $image, $full_caption, $id );
90
+ }
91
+ elseif ( filter_var( $image_link_url, FILTER_VALIDATE_URL) ) {
92
 
93
  echo sprintf('<a href="%1$s" target="%4$s">%2$s%3$s</a>', esc_url($image_link_url), $image, $full_caption, $_image_target);
94
 
templates/product-carousel.php ADDED
@@ -0,0 +1,246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // If this file is called directly, abort.
3
+ if ( ! defined( 'WPINC' ) ) {
4
+ die;
5
+ }
6
+
7
+ if ( ! defined( 'WC_VERSION' ) ) {
8
+ if ( current_user_can( 'manage_options' ) ){
9
+ echo sprintf( esc_html__( 'Carousel Slider needs %s to work for products carousel.', 'carousel-slider' ), sprintf('<a href="https://wordpress.org/plugins/woocommerce/" target="_blank" >%s</a>', __('WooCommerce', 'carousel-slider')) );
10
+ }
11
+ return;
12
+ }
13
+
14
+ $args = array(
15
+ 'post_type' => 'product',
16
+ 'post_status' => 'publish',
17
+ 'ignore_sticky_post' => 1,
18
+ 'posts_per_page' => intval(get_post_meta( $id, '_products_per_page', true ))
19
+ );
20
+
21
+
22
+ $order = get_post_meta( $id, '_product_order', true );
23
+ $orderby = get_post_meta( $id, '_product_orderby', true );
24
+ $posts_per_page = intval(get_post_meta( $id, '_products_per_page', true ));
25
+
26
+ $query_type = get_post_meta( $id, '_product_query_type', true );
27
+ $query_type = empty($query_type) ? 'query_porduct' : $query_type;
28
+ $product_query = get_post_meta( $id, '_product_query', true );
29
+ $products = array();
30
+
31
+ // Get products by product IDs
32
+ if ( $query_type == 'specific_products' ) {
33
+ $products_ids = explode(',', get_post_meta( $id, '_product_in', true ));
34
+
35
+ $posts = array_map(function($value){
36
+ return get_post( intval( $value ) );
37
+ }, $products_ids);
38
+ }
39
+
40
+ if ( $query_type == 'query_porduct' ) {
41
+
42
+ // Get features products
43
+ if ( $product_query == 'featured' ) {
44
+ $args = array_merge($args, array(
45
+ 'meta_key' => '_featured',
46
+ 'meta_value' => 'yes',
47
+ 'orderby' => 'date',
48
+ 'order' => 'desc'
49
+ ));
50
+ $posts = get_posts( $args );
51
+ }
52
+
53
+ // Get recent products
54
+ if ( $product_query == 'recent' ) {
55
+ $args = array_merge($args, array(
56
+ 'ignore_sticky_posts' => 1,
57
+ 'orderby' => 'date',
58
+ 'order' => 'desc',
59
+ 'meta_query' => WC()->query->get_meta_query()
60
+ ));
61
+ $posts = get_posts( $args );
62
+ }
63
+
64
+ // Get sale products
65
+ if ( $product_query == 'sale' ) {
66
+
67
+ $args = array_merge($args, array(
68
+ 'orderby' => 'title',
69
+ 'order' => 'asc',
70
+ 'no_found_rows' => 1,
71
+ 'meta_query' => WC()->query->get_meta_query(),
72
+ 'post__in' => array_merge( array( 0 ), wc_get_product_ids_on_sale() )
73
+ ));
74
+ $posts = get_posts( $args );
75
+ }
76
+
77
+ // Get best_selling products
78
+ if ( $product_query == 'best_selling' ) {
79
+ $args = array(
80
+ 'ignore_sticky_posts' => 1,
81
+ 'meta_key' => 'total_sales',
82
+ 'orderby' => 'meta_value_num',
83
+ 'meta_query' => WC()->query->get_meta_query()
84
+ );
85
+ $posts = get_posts( $args );
86
+ }
87
+
88
+ // Get top_rated products
89
+ if ( $product_query == 'top_rated' ) {
90
+
91
+ add_filter( 'posts_clauses', array( WC()->query, 'order_by_rating_post_clauses' ) );
92
+ $args = array_merge($args, array(
93
+ 'no_found_rows' => 1,
94
+ 'meta_query' => WC()->query->get_meta_query(),
95
+ ));
96
+ $posts = get_posts( $args );
97
+ }
98
+
99
+ }
100
+
101
+ // Get posts by post catagories IDs
102
+ if ( $query_type == 'product_categories' ) {
103
+ $product_categories = get_post_meta( $id, '_product_categories', true );
104
+ $args = array_merge($args, array(
105
+ 'tax_query' => array(
106
+ array(
107
+ 'taxonomy' => 'product_cat',
108
+ 'field' => 'term_id',
109
+ 'terms' => explode(",", $product_categories),
110
+ 'operator' => 'IN',
111
+ ),
112
+ ),
113
+ ));
114
+ $posts = get_posts( $args );
115
+ }
116
+
117
+ // Get posts by post tags IDs
118
+ if ( $query_type == 'product_tags' ) {
119
+ $product_tags = get_post_meta( $id, '_product_tags', true );
120
+ $product_tags = array_map('intval', explode(',', $product_tags));
121
+ $args = array_merge( $args, array(
122
+ 'tax_query' => array(
123
+ array(
124
+ 'taxonomy' => 'product_tag',
125
+ 'field' => 'term_id',
126
+ 'terms' => $product_tags,
127
+ 'operator' => 'IN',
128
+ ),
129
+ ),
130
+ ));
131
+ $posts = get_posts( $args );
132
+ }
133
+
134
+
135
+ $_image_size = get_post_meta( $id, '_image_size', true );
136
+ $_nav_color = get_post_meta( $id, '_nav_color', true );
137
+ $_nav_active_color = get_post_meta( $id, '_nav_active_color', true );
138
+ $_lazy_load_image = get_post_meta( $id, '_lazy_load_image', true );
139
+
140
+ $_product_title = get_post_meta( $id, '_product_title', true );
141
+ $_product_rating = get_post_meta( $id, '_product_rating', true );
142
+ $_product_price = get_post_meta( $id, '_product_price', true );
143
+ $_product_cart_btn = get_post_meta( $id, '_product_cart_button', true );
144
+ $_product_onsale = get_post_meta( $id, '_product_onsale', true );
145
+ $_product_wishlist = get_post_meta( $id, '_product_wishlist', true );
146
+ $_product_quick_view = get_post_meta( $id, '_product_quick_view', true );
147
+
148
+ $_product_title_color = get_post_meta( $id, '_product_title_color', true );
149
+ $_product_btn_bg_color = get_post_meta( $id, '_product_button_bg_color', true );
150
+ $_product_btn_text_color = get_post_meta( $id, '_product_button_text_color', true );
151
+ ?>
152
+ <style>
153
+ #id-<?php echo $id; ?> .owl-dots .owl-dot span {
154
+ background-color: <?php echo esc_attr($_nav_color); ?>
155
+ }
156
+ #id-<?php echo $id; ?> .owl-dots .owl-dot.active span,
157
+ #id-<?php echo $id; ?> .owl-dots .owl-dot:hover span {
158
+ background-color: <?php echo esc_attr($_nav_active_color); ?>
159
+ }
160
+ #id-<?php echo $id; ?> .carousel-slider-nav-icon {
161
+ fill: <?php echo esc_attr($_nav_color); ?>;
162
+ }
163
+ #id-<?php echo $id; ?> .carousel-slider-nav-icon:hover {
164
+ fill: <?php echo esc_attr($_nav_active_color); ?>;
165
+ }
166
+ #id-<?php echo $id; ?> .carousel-slider__product h3,
167
+ #id-<?php echo $id; ?> .carousel-slider__product .price {
168
+ color: <?php echo esc_attr($_product_title_color); ?>;
169
+ }
170
+ #id-<?php echo $id; ?> .carousel-slider__product a.add_to_cart_button,
171
+ #id-<?php echo $id; ?> .carousel-slider__product a.added_to_cart,
172
+ #id-<?php echo $id; ?> .carousel-slider__product a.quick_view,
173
+ #id-<?php echo $id; ?> .carousel-slider__product .onsale {
174
+ background-color: <?php echo esc_attr($_product_btn_bg_color); ?>;
175
+ color: <?php echo esc_attr($_product_btn_text_color); ?>;
176
+ }
177
+ #id-<?php echo $id; ?> .carousel-slider__product .star-rating {
178
+ color: <?php echo esc_attr($_product_btn_bg_color); ?>;
179
+ }
180
+ </style>
181
+ <div <?php echo join(" ", $this->carousel_options($id)); ?>>
182
+ <?php foreach ( $posts as $post ): setup_postdata( $post );?>
183
+ <?php
184
+ $product = wc_get_product( $post->ID );
185
+ do_action( 'carousel_slider_product_loop' );
186
+ ?>
187
+ <div class="product carousel-slider__product">
188
+ <?php
189
+ echo sprintf('<a class="woocommerce-LoopProduct-link" href="%s">', get_the_permalink( $post->ID ));
190
+ // Post Thumbnail
191
+ if( has_post_thumbnail($post->ID) ) {
192
+ if ( $_lazy_load_image == 'on' ) {
193
+ $image_src = get_the_post_thumbnail_url( $post->ID, $_image_size );
194
+ echo sprintf( '<img class="owl-lazy" data-src="%1$s" />', $image_src );
195
+ }
196
+ else {
197
+ $image_src = get_the_post_thumbnail_url( $post->ID, $_image_size );
198
+ echo sprintf( '<img src="%1$s" />', $image_src );
199
+ }
200
+ }
201
+ echo "</a>";
202
+
203
+ // Show title
204
+ if ($_product_title == 'on') {
205
+ echo sprintf('<a href="%1$s"><h3>%2$s</h3></a>', get_the_permalink( $post->ID ), get_the_title( $post->ID ));
206
+ }
207
+
208
+ // Show Rating
209
+ if($_product_rating == 'on'){
210
+ if ( version_compare( WC_VERSION, "3.0.0", ">=" )) {
211
+ echo wc_get_rating_html( $product->get_average_rating() );
212
+ } else {
213
+ echo $product->get_rating_html();
214
+ }
215
+
216
+ }
217
+ // Sale Product batch
218
+ if ( $product->is_on_sale() && $_product_onsale == 'on' ){
219
+ echo apply_filters( 'woocommerce_sale_flash', '<span class="onsale">' . __( 'Sale!', 'carousel-slider' ) . '</span>', $product );
220
+ }
221
+ // Show Price
222
+ if($_product_price == 'on'){
223
+ echo '<span class="price">' . $product->get_price_html() . '</span>';
224
+ }
225
+ // Show button
226
+ if($_product_cart_btn == 'on'){
227
+ echo '<div style="clear: both;"></div>';
228
+ if ( function_exists('woocommerce_template_loop_add_to_cart')) {
229
+ woocommerce_template_loop_add_to_cart();
230
+ }
231
+ }
232
+
233
+ if ( $_product_quick_view == 'on' ) {
234
+ wp_enqueue_script( 'magnific-popup' );
235
+ $ajax_url = wp_nonce_url( add_query_arg( array( 'ajax' => 'true', 'action' => 'carousel_slider_quick_view', 'product_id' => $post->ID, 'slide_id' => $id ), admin_url( 'admin-ajax.php' ) ), 'carousel_slider_quick_view');
236
+ echo sprintf('<a class="magnific-popup button quick_view" href="%1$s" data-product-id="%2$s">%3$s</a>', $ajax_url, $post->ID, __('Quick View', 'carousel-slider'));
237
+ }
238
+
239
+ // WooCommerce Wishlist
240
+ if ( class_exists( 'YITH_WCWL' ) && $_product_wishlist == 'on') {
241
+ echo do_shortcode('[yith_wcwl_add_to_wishlist]');
242
+ }
243
+ ?>
244
+ </div>
245
+ <?php endforeach; wp_reset_postdata();?>
246
+ </div>