Event Calendar WD – Responsive Event Calendar plugin - Version 1.1.16

Version Description

= * New: GDPR compliance help * New: WD library updated * New: Use theme template for single event CPT * Improved: UX when editing calendar and choosing and adding event to calendar * Fixed: Event order on category/archive page by event date * Fixed: Other minor bugs * Fixed: Password protected events * Changed: Date inputs hidden from event quick edit params * Changed: Other optimizations under the hood

Download this release

Release Info

Developer webdorado
Plugin Icon 128x128 Event Calendar WD – Responsive Event Calendar plugin
Version 1.1.16
Comparing to
See all releases

Code changes from version 1.1.15 to 1.1.16

changelog.txt ADDED
@@ -0,0 +1,452 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ = 1.1.16 ==
2
+ * New: GDPR compliance help
3
+ * New: WD library updated
4
+ * New: Use theme template for single event CPT
5
+ * Improved: UX when editing calendar and choosing and adding event to calendar
6
+ * Fixed: Event order on category/archive page by event date
7
+ * Fixed: Other minor bugs
8
+ * Fixed: Password protected events
9
+ * Changed: Date inputs hidden from event quick edit params
10
+ * Changed: Other optimizations under the hood
11
+
12
+
13
+ = 1.1.15 ==
14
+ * Improved: Fully translatable calendar plugin and extensions. Suggest your translations here: https://translate.wordpress.org/projects/wp-plugins/event-calendar-wd
15
+ * Improved: Frontend styles of single event, venue and organizer CPT
16
+ * Changed: Styles of filters extension (Premium)
17
+ * Changed: Some metaboxes moved to higher position
18
+
19
+ = 1.1.14 ==
20
+ * Changed: create_function is deprecated in PHP 7.2
21
+ * Changed: Sort organizers and venues by title not slug in post type archive
22
+ * Improved: Styles of Gutenberg block popup
23
+ * Fixed: Styles of free and premium versions synchronized
24
+
25
+ = 1.1.13 ==
26
+ * Added: Gutenberg integration
27
+ * Fixed: Google maps zoom
28
+ * Improved: Russian translation
29
+
30
+ = 1.1.12 ==
31
+ * Improved: Change default calendar using calendar list in dashboard
32
+ * Changed: Calendar add-ons and themes do not have separate menu anymore
33
+ * Changed: Updates and functionality removed (Premium)
34
+
35
+ = 1.1.11 ==
36
+ Fixed: Bug on PHP 5.3 version
37
+
38
+ = 1.1.10 =
39
+ * Changed: Introducing brand new free plugin: SEO by 10Web
40
+
41
+ = 1.1.9 =
42
+ * Changed: Deactivation popup.
43
+ * Fixed: Notice in single event page
44
+ * Fixed: Import/Integration of all day events from gcal
45
+
46
+ = 1.1.7 =
47
+ * New: Option to set zoom level in maps view (Pro)
48
+ * Fixed: Map displayed without any event for that month (Pro)
49
+ * Changed: Minor: WD library updated to version 1.0.12
50
+
51
+ = 1.1.6 =
52
+ * Fixed: Conflict with some plugins on calendar frontend
53
+
54
+ = 1.1.5 =
55
+ * Changed: Show notification to install Backup WD plugin only on plugin pages.
56
+
57
+ = 1.1.4 =
58
+ * Changed: Introducing Backup WD plugin
59
+
60
+ = 1.1.3 =
61
+ * Changed: Redirect after activation removed
62
+ * Changed: WD library updated to version 1.0.11
63
+
64
+ = 1.1.2 =
65
+ * New: Option to show event timezones on frontend
66
+
67
+ = 1.1.1 =
68
+ * Changed: Add "ecwd_hide_old_events"=1 as a custom meta field to calendar in order to hide past events and months
69
+ * Fixed: PHP notice in events category page when there is no event
70
+ * Fixed: JS error when trying to save event with no date
71
+ * Fixed: DB changes on silent activation
72
+ * Improved: Compatibility of templates for single event and event taxonomy with WooCommerce-compatible themes
73
+
74
+ = 1.1.0 =
75
+ * Changed: Improved UI of venue editor in event page
76
+ * Fixed: Displayed date and time for one day event
77
+ * Fixed: Fatal error if PHP Calendar module not loaded
78
+ * Fixed: Add new venue from event editor page
79
+
80
+ = 1.0.97 =
81
+ * Fixed: Remove duplicated post contents form venues and organizers
82
+
83
+ = 1.0.96 =
84
+ * Fixed: Description on event post
85
+
86
+ = 1.0.95 =
87
+ * Changed: Plugin interface
88
+ * Fixed: Minor bugs
89
+
90
+ = 1.0.94 =
91
+ * Fixed: Security issue
92
+
93
+ = 1.0.93 =
94
+ * Fixed: Bug on organizer view
95
+
96
+ = 1.0.91 =
97
+ * Added: Visible event count per day
98
+ * Fixed: Weekly repeating events
99
+
100
+ = 1.0.90 =
101
+ * Fixed: Helper bar
102
+ * Fixed: events archive page
103
+ * Fixed: events category archive page
104
+
105
+ = 1.0.89 =
106
+ * Fixed: Theme update issue
107
+ * Fixed: Notices
108
+
109
+ = 1.0.88 =
110
+ * Added: Helper bar
111
+
112
+ = 1.0.87 =
113
+ * Added: Overview page
114
+ * Changed: Deactivation
115
+
116
+ = 1.0.86 =
117
+ * Added: "Do not show past events" option
118
+
119
+ = 1.0.85 =
120
+ * Fixed: Minor bug
121
+ * Fixed: Bug on day view
122
+
123
+ = 1.0.84 =
124
+ * Added: Script keys
125
+ * Fixed: Bug on widget
126
+ * Fixed: Styles
127
+ * Fixed: Back link
128
+
129
+ = 1.0.83 =
130
+ * Fixed: Calendar search
131
+
132
+ = 1.0.82 =
133
+ * Changed: Featured plugins
134
+
135
+ = 1.0.81 =
136
+ * Fixed: Bug on widget list view
137
+ * Fixed: Styles
138
+
139
+ = 1.0.80 =
140
+ * Fixed: Clear cache option notice
141
+ * Added: Translations
142
+
143
+ = 1.0.79 =
144
+ * Added: Widget theme
145
+
146
+ = 1.0.78 =
147
+ * Added: Event description max length option
148
+
149
+ = 1.0.77 =
150
+ * Added: Google maps style option
151
+ * Added: Latitude,Longitude inputs in event-meta,venue-meta pages
152
+
153
+ = 1.0.76 =
154
+ * Fixed: Data structures
155
+ * Fixed: Bug on Repeating events
156
+
157
+ = 1.0.75 =
158
+ * Changed: Backend menu
159
+
160
+ = 1.0.74 =
161
+ * Changed: Organizers, venues cache
162
+ * Fixed: Venue edit in event
163
+ * Fixed: Gmap js issue
164
+
165
+ = 1.0.73 =
166
+ * Changed: Settings structure
167
+ * Fixed: Minor bug
168
+
169
+ = 1.0.72 =
170
+ * Fixed: Minor bug
171
+
172
+ = 1.0.71 =
173
+ * Added: Enable sidebar in event page option
174
+
175
+ = 1.0.70 =
176
+ * Fixed: Bug on Google Maps
177
+
178
+ = 1.0.69 =
179
+ * Fixed: Bug on Views add-on
180
+ * Changed: Featured themes, plugins pages
181
+
182
+ = 1.0.68 =
183
+ * Fixed: List view pagination
184
+ * Fixed: Week view start
185
+
186
+ = 1.0.67 =
187
+ * Added: Calendar start date option
188
+
189
+ = 1.0.65 =
190
+ * Added: Google Maps API Key
191
+
192
+ = 1.0.64 =
193
+ * Fixed: Translations
194
+ * Changed: Open Google map when Marker is clicked option
195
+ * Fixed: Mark all days of multi-day event
196
+
197
+ = 1.0.63 =
198
+ * Added: Show events detail on hover option
199
+
200
+ = 1.0.62 =
201
+ * Added: Grab the first post image option
202
+
203
+ = 1.0.61 =
204
+ * Fixed: Conflict with Page Builder by SiteOrigin
205
+ * Fixed: Bug on trashed events
206
+
207
+ = 1.0.60 =
208
+ * Added: Embed add-on
209
+
210
+ = 1.0.59 =
211
+ * Fixed: Bug on mini calendar
212
+ * Fixed: Bug on multi-day events
213
+ * Fixed: Bug on event pop-up
214
+ * Fixed: Bug on widget
215
+
216
+ = 1.0.58 =
217
+ * Added: Order of events archive page option
218
+ * Fixed: Minor bug
219
+
220
+ = 1.0.57 =
221
+ * Fixed: Translation
222
+
223
+ = 1.0.56 =
224
+ * Fixed: Minor bug
225
+ * Changed: Event popup position
226
+
227
+ = 1.0.55 =
228
+ * Fixed: List view events order
229
+ * Added: Organaizer on single event
230
+ * Added: Portuguese (Brazil) Translation
231
+ * Fixed: Description formatting
232
+
233
+ = 1.0.54 =
234
+ * New: Related events count option
235
+
236
+ = 1.0.53 =
237
+ * Added: Export to GCal/ICal add-on
238
+
239
+ = 1.0.52 =
240
+ * Added: Mark all days of multi-day event option
241
+
242
+ = 1.0.51 =
243
+ * Added: Config page
244
+ * Changed: Spanish Translation
245
+ * Changed: German Translation
246
+ * Changed: Featured plugins/themes page
247
+ * Changed: Event details popup direction for 4th day
248
+ * Fixed: Scroll issue in mobile
249
+
250
+ = 1.0.50 =
251
+ * Added: Event Subscribe add-on
252
+
253
+ = 1.0.49 =
254
+ * Added: Swedish translation by Marcel Króča and Slovak translation by Magnus Juven
255
+ * Fixed: Issue with featured image
256
+ * Fixed: Pointer bug
257
+
258
+ = 1.0.48 =
259
+ * Added: Wizard
260
+ * Added: Tour
261
+ * Added: Czech and Danish translation
262
+
263
+ = 1.0.47 =
264
+ * Added: Shortcode support on event description
265
+
266
+ = 1.0.46 =
267
+ * Added: Romanian translation (by Oana Tarce)
268
+ * Fixed: Bug for php version < 5.3
269
+
270
+ = 1.0.45 =
271
+ * Added: Latvian translation (by Intars G.)
272
+ * Fixed: Issue with venues dropdown in the back end
273
+ * Fixed: CSS issue in calendar views section for 'right to left' languages (e.g. arabic)
274
+
275
+ = 1.0.44 =
276
+ * Added: Croatian translation
277
+ * Added: Sample data
278
+
279
+ = 1.0.43 =
280
+ * Added: Option for no additional details text
281
+
282
+ = 1.0.42 =
283
+ * Fixed: Google structured data errors
284
+ * Changed: Event hover popup styles
285
+
286
+ = 1.0.41 =
287
+ * Added: New year promo notice
288
+
289
+ = 1.0.40 =
290
+ * Added: New theme
291
+
292
+ = 1.0.39 =
293
+ * Fixed: Date issue for php version < 5.3
294
+ * Fixed: German translations
295
+
296
+ = 1.0.38 =
297
+ * Added: Custom css option
298
+
299
+ = 1.0.37 =
300
+ * Added: Catalan language support(by Vicenc Huguet)
301
+ * Fixed: Views slider js issue
302
+
303
+ = 1.0.36 =
304
+ * Changed: Responsive pop-up styles
305
+ * Changed: Featured plugins
306
+
307
+ = 1.0.35 =
308
+ * Changed: Category page
309
+ * Added: Polish translation
310
+
311
+ = 1.0.34 =
312
+ * Fixed: Show events issue in list view
313
+ * Increased: Date range of events in venue and organizer pages
314
+ * Added: Event Tickets add-on
315
+
316
+ = 1.0.33 =
317
+ * Added: Date format option for list, week and day views
318
+ * Fixed: "Back" link in single event page
319
+ * Fixed: Shortcode default view issue
320
+ * Fixed: Norwegian language files
321
+
322
+ = 1.0.32 =
323
+ * Fixed: Dates translation issue in posterboard view
324
+ * Fixed: Venues show map issue for ajaxed themes
325
+ * Fixed: Views slider js issue
326
+
327
+ = 1.0.31 =
328
+ * Added: Day view option as default to widget
329
+ * Added: Close popup by escape
330
+ * Added: Finnish translation (by Håkan Mitts)
331
+
332
+ = 1.0.30 =
333
+ * Added: Mini calendar view for page
334
+
335
+ = 1.0.29 =
336
+ * Fixed: Norwegian language files name
337
+
338
+ = 1.0.28 =
339
+ * Added: ECWD Views add-on
340
+ * Added: Norwegian (Bokmål) and Norwegian (Nynorsk) languages support(by Vegard Innerdal)
341
+
342
+ = 1.0.27 =
343
+ * Changed: Added padding to event details for screens < 768
344
+ * Changed: Hide next/prev month names for screen < 768
345
+ * Fixed: More events popup bug
346
+
347
+ = 1.0.26 =
348
+ * New: Display Events in popup option
349
+
350
+ = 1.0.25 =
351
+ * Fixed: Sidebar css in event page for twentyfourteen theme
352
+ * Fixed: Calendar widget center css
353
+ * Changed: Notices show order
354
+
355
+ = 1.0.24 =
356
+ * Fixed: Events monthly repeat rate issue
357
+ * Added: Week view option to widget
358
+ * Added: Custom Fields add-on
359
+
360
+ = 1.0.23 =
361
+ * Added: Frontend events management add-on
362
+ * Fixed: Rewrite rules for custom permalinks structure
363
+ * Fixed: JS error in related events slider
364
+ * Added: Hungarian language support
365
+ * Added: Serbian language support
366
+ * Fixed: Translations for Dutch
367
+
368
+ = 1.0.22 =
369
+ * Added: Ajaxed themes support
370
+ * Fixed: Next month link issue
371
+ * Changed: More events dialog
372
+ * Added: Support/rate us messages
373
+
374
+ = 1.0.21 =
375
+ * Fixed: JS error in widgets page
376
+
377
+ = 1.0.20 =
378
+ * Fixed: Show event url issue
379
+ * Added: "noindex, nofollow" to calendar links
380
+ * Added: Open pop in new tab option
381
+ * Added: Japanese support
382
+
383
+ = 1.0.19 =
384
+ * Minor bug fixed
385
+
386
+ = 1.0.18 =
387
+ * Added: Themes folder
388
+ * Changed: Related events title style
389
+ * Added: Apply category color to event title in event page option
390
+
391
+ = 1.0.17 =
392
+ * Fixed: Time format issue
393
+
394
+ = 1.0.16 =
395
+ * Added: Show the repeat rate in event page option
396
+
397
+ = 1.0.15 =
398
+ * Added: Show AM/PM option
399
+
400
+ = 1.0.14 =
401
+ * Fixed: Conflict with Avada theme
402
+ * Added: Date to events link
403
+
404
+ = 1.0.13 =
405
+ * Changed: Calendar Add-ons page
406
+
407
+ = 1.0.11 =
408
+ * Changed: Calendar Add-ons page
409
+
410
+ = 1.0.10 =
411
+ * Added: Organizers and venues archive page order option
412
+ * Added: Show categories and tags in event page option
413
+ * Fixed: Featured image sizes in widget
414
+
415
+ = 1.0.9 =
416
+ * Fixed: Show google maps conflict with other plugins
417
+ * Fixed: Geolocation bug
418
+ * Fixed: Save organizer featured image issue
419
+
420
+ = 1.0.8 =
421
+ * Changed: Event page
422
+ * Added: Portuguese language
423
+
424
+ = 1.0.7 =
425
+ * New: Related events slider
426
+ * New: Enable/disable rewrite rule option
427
+
428
+ = 1.0.6 =
429
+ * Changed: Removed Add Venue link
430
+ * Fixed: Delete event from calendar page issue
431
+
432
+ = 1.0.5 =
433
+ * New: Events Filters in backend
434
+ * Fixed: Bug in shortcode
435
+
436
+ = 1.0.4 =
437
+ * Fixed: Bug in add/edit calendar
438
+
439
+ = 1.0.3 =
440
+ * New: Event template
441
+ * New: "Show map in event page" option
442
+ * Changed: "Repeat until" field is required
443
+
444
+ = 1.0.2 =
445
+ * Fixed: Minor bugs
446
+
447
+ = 1.0.1 =
448
+ * Fixed: Bug in Week view
449
+ * Fixed: Permalink bug
450
+
451
+ = 1.0.0 =
452
+ * Initial version
css/DataTables-1.10.16/images/sort_asc.png ADDED
Binary file
css/DataTables-1.10.16/images/sort_asc_disabled.png ADDED
Binary file
css/DataTables-1.10.16/images/sort_both.png ADDED
Binary file
css/DataTables-1.10.16/images/sort_desc.png ADDED
Binary file
css/DataTables-1.10.16/images/sort_desc_disabled.png ADDED
Binary file
css/admin/admin.css CHANGED
@@ -1019,4 +1019,7 @@ body.wp-admin.post-type-ecwd_event #posts-filter .alignleft.actions a.button {
1019
  font-weight: bold;
1020
  padding: 0 18px 0 18px;
1021
  vertical-align: middle;
 
 
 
1022
  }
1019
  font-weight: bold;
1020
  padding: 0 18px 0 18px;
1021
  vertical-align: middle;
1022
+ }
1023
+ .post-type-ecwd_event fieldset.inline-edit-date {
1024
+ display: none;
1025
  }
css/datatables.min.css ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * This combined file was created by the DataTables downloader builder:
3
+ * https://datatables.net/download
4
+ *
5
+ * To rebuild or modify this file with the latest versions of the included
6
+ * software please visit:
7
+ * https://datatables.net/download/#dt/dt-1.10.16
8
+ *
9
+ * Included libraries:
10
+ * DataTables 1.10.16
11
+ */
12
+
13
+ table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("DataTables-1.10.16/images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("DataTables-1.10.16/images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("DataTables-1.10.16/images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("DataTables-1.10.16/images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("DataTables-1.10.16/images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}
14
+
15
+
css/magnific-popup.css ADDED
@@ -0,0 +1,351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Magnific Popup CSS */
2
+ .mfp-bg {
3
+ top: 0;
4
+ left: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ z-index: 1042;
8
+ overflow: hidden;
9
+ position: fixed;
10
+ background: #0b0b0b;
11
+ opacity: 0.8; }
12
+
13
+ .mfp-wrap {
14
+ top: 0;
15
+ left: 0;
16
+ width: 100%;
17
+ height: 100%;
18
+ z-index: 1043;
19
+ position: fixed;
20
+ outline: none !important;
21
+ -webkit-backface-visibility: hidden; }
22
+
23
+ .mfp-container {
24
+ text-align: center;
25
+ position: absolute;
26
+ width: 100%;
27
+ height: 100%;
28
+ left: 0;
29
+ top: 0;
30
+ padding: 0 8px;
31
+ box-sizing: border-box; }
32
+
33
+ .mfp-container:before {
34
+ content: '';
35
+ display: inline-block;
36
+ height: 100%;
37
+ vertical-align: middle; }
38
+
39
+ .mfp-align-top .mfp-container:before {
40
+ display: none; }
41
+
42
+ .mfp-content {
43
+ position: relative;
44
+ display: inline-block;
45
+ vertical-align: middle;
46
+ margin: 0 auto;
47
+ text-align: left;
48
+ z-index: 1045; }
49
+
50
+ .mfp-inline-holder .mfp-content,
51
+ .mfp-ajax-holder .mfp-content {
52
+ width: 100%;
53
+ cursor: auto; }
54
+
55
+ .mfp-ajax-cur {
56
+ cursor: progress; }
57
+
58
+ .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
59
+ cursor: -moz-zoom-out;
60
+ cursor: -webkit-zoom-out;
61
+ cursor: zoom-out; }
62
+
63
+ .mfp-zoom {
64
+ cursor: pointer;
65
+ cursor: -webkit-zoom-in;
66
+ cursor: -moz-zoom-in;
67
+ cursor: zoom-in; }
68
+
69
+ .mfp-auto-cursor .mfp-content {
70
+ cursor: auto; }
71
+
72
+ .mfp-close,
73
+ .mfp-arrow,
74
+ .mfp-preloader,
75
+ .mfp-counter {
76
+ -webkit-user-select: none;
77
+ -moz-user-select: none;
78
+ user-select: none; }
79
+
80
+ .mfp-loading.mfp-figure {
81
+ display: none; }
82
+
83
+ .mfp-hide {
84
+ display: none !important; }
85
+
86
+ .mfp-preloader {
87
+ color: #CCC;
88
+ position: absolute;
89
+ top: 50%;
90
+ width: auto;
91
+ text-align: center;
92
+ margin-top: -0.8em;
93
+ left: 8px;
94
+ right: 8px;
95
+ z-index: 1044; }
96
+ .mfp-preloader a {
97
+ color: #CCC; }
98
+ .mfp-preloader a:hover {
99
+ color: #FFF; }
100
+
101
+ .mfp-s-ready .mfp-preloader {
102
+ display: none; }
103
+
104
+ .mfp-s-error .mfp-content {
105
+ display: none; }
106
+
107
+ button.mfp-close,
108
+ button.mfp-arrow {
109
+ overflow: visible;
110
+ cursor: pointer;
111
+ background: transparent;
112
+ border: 0;
113
+ -webkit-appearance: none;
114
+ display: block;
115
+ outline: none;
116
+ padding: 0;
117
+ z-index: 1046;
118
+ box-shadow: none;
119
+ touch-action: manipulation; }
120
+
121
+ button::-moz-focus-inner {
122
+ padding: 0;
123
+ border: 0; }
124
+
125
+ .mfp-close {
126
+ width: 44px;
127
+ height: 44px;
128
+ line-height: 44px;
129
+ position: absolute;
130
+ right: 0;
131
+ top: 0;
132
+ text-decoration: none;
133
+ text-align: center;
134
+ opacity: 0.65;
135
+ padding: 0 0 18px 10px;
136
+ color: #FFF;
137
+ font-style: normal;
138
+ font-size: 28px;
139
+ font-family: Arial, Baskerville, monospace; }
140
+ .mfp-close:hover,
141
+ .mfp-close:focus {
142
+ opacity: 1; }
143
+ .mfp-close:active {
144
+ top: 1px; }
145
+
146
+ .mfp-close-btn-in .mfp-close {
147
+ color: #333; }
148
+
149
+ .mfp-image-holder .mfp-close,
150
+ .mfp-iframe-holder .mfp-close {
151
+ color: #FFF;
152
+ right: -6px;
153
+ text-align: right;
154
+ padding-right: 6px;
155
+ width: 100%; }
156
+
157
+ .mfp-counter {
158
+ position: absolute;
159
+ top: 0;
160
+ right: 0;
161
+ color: #CCC;
162
+ font-size: 12px;
163
+ line-height: 18px;
164
+ white-space: nowrap; }
165
+
166
+ .mfp-arrow {
167
+ position: absolute;
168
+ opacity: 0.65;
169
+ margin: 0;
170
+ top: 50%;
171
+ margin-top: -55px;
172
+ padding: 0;
173
+ width: 90px;
174
+ height: 110px;
175
+ -webkit-tap-highlight-color: transparent; }
176
+ .mfp-arrow:active {
177
+ margin-top: -54px; }
178
+ .mfp-arrow:hover,
179
+ .mfp-arrow:focus {
180
+ opacity: 1; }
181
+ .mfp-arrow:before,
182
+ .mfp-arrow:after {
183
+ content: '';
184
+ display: block;
185
+ width: 0;
186
+ height: 0;
187
+ position: absolute;
188
+ left: 0;
189
+ top: 0;
190
+ margin-top: 35px;
191
+ margin-left: 35px;
192
+ border: medium inset transparent; }
193
+ .mfp-arrow:after {
194
+ border-top-width: 13px;
195
+ border-bottom-width: 13px;
196
+ top: 8px; }
197
+ .mfp-arrow:before {
198
+ border-top-width: 21px;
199
+ border-bottom-width: 21px;
200
+ opacity: 0.7; }
201
+
202
+ .mfp-arrow-left {
203
+ left: 0; }
204
+ .mfp-arrow-left:after {
205
+ border-right: 17px solid #FFF;
206
+ margin-left: 31px; }
207
+ .mfp-arrow-left:before {
208
+ margin-left: 25px;
209
+ border-right: 27px solid #3F3F3F; }
210
+
211
+ .mfp-arrow-right {
212
+ right: 0; }
213
+ .mfp-arrow-right:after {
214
+ border-left: 17px solid #FFF;
215
+ margin-left: 39px; }
216
+ .mfp-arrow-right:before {
217
+ border-left: 27px solid #3F3F3F; }
218
+
219
+ .mfp-iframe-holder {
220
+ padding-top: 40px;
221
+ padding-bottom: 40px; }
222
+ .mfp-iframe-holder .mfp-content {
223
+ line-height: 0;
224
+ width: 100%;
225
+ max-width: 900px; }
226
+ .mfp-iframe-holder .mfp-close {
227
+ top: -40px; }
228
+
229
+ .mfp-iframe-scaler {
230
+ width: 100%;
231
+ height: 0;
232
+ overflow: hidden;
233
+ padding-top: 56.25%; }
234
+ .mfp-iframe-scaler iframe {
235
+ position: absolute;
236
+ display: block;
237
+ top: 0;
238
+ left: 0;
239
+ width: 100%;
240
+ height: 100%;
241
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
242
+ background: #000; }
243
+
244
+ /* Main image in popup */
245
+ img.mfp-img {
246
+ width: auto;
247
+ max-width: 100%;
248
+ height: auto;
249
+ display: block;
250
+ line-height: 0;
251
+ box-sizing: border-box;
252
+ padding: 40px 0 40px;
253
+ margin: 0 auto; }
254
+
255
+ /* The shadow behind the image */
256
+ .mfp-figure {
257
+ line-height: 0; }
258
+ .mfp-figure:after {
259
+ content: '';
260
+ position: absolute;
261
+ left: 0;
262
+ top: 40px;
263
+ bottom: 40px;
264
+ display: block;
265
+ right: 0;
266
+ width: auto;
267
+ height: auto;
268
+ z-index: -1;
269
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
270
+ background: #444; }
271
+ .mfp-figure small {
272
+ color: #BDBDBD;
273
+ display: block;
274
+ font-size: 12px;
275
+ line-height: 14px; }
276
+ .mfp-figure figure {
277
+ margin: 0; }
278
+
279
+ .mfp-bottom-bar {
280
+ margin-top: -36px;
281
+ position: absolute;
282
+ top: 100%;
283
+ left: 0;
284
+ width: 100%;
285
+ cursor: auto; }
286
+
287
+ .mfp-title {
288
+ text-align: left;
289
+ line-height: 18px;
290
+ color: #F3F3F3;
291
+ word-wrap: break-word;
292
+ padding-right: 36px; }
293
+
294
+ .mfp-image-holder .mfp-content {
295
+ max-width: 100%; }
296
+
297
+ .mfp-gallery .mfp-image-holder .mfp-figure {
298
+ cursor: pointer; }
299
+
300
+ @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
301
+ /**
302
+ * Remove all paddings around the image on small screen
303
+ */
304
+ .mfp-img-mobile .mfp-image-holder {
305
+ padding-left: 0;
306
+ padding-right: 0; }
307
+ .mfp-img-mobile img.mfp-img {
308
+ padding: 0; }
309
+ .mfp-img-mobile .mfp-figure:after {
310
+ top: 0;
311
+ bottom: 0; }
312
+ .mfp-img-mobile .mfp-figure small {
313
+ display: inline;
314
+ margin-left: 5px; }
315
+ .mfp-img-mobile .mfp-bottom-bar {
316
+ background: rgba(0, 0, 0, 0.6);
317
+ bottom: 0;
318
+ margin: 0;
319
+ top: auto;
320
+ padding: 3px 5px;
321
+ position: fixed;
322
+ box-sizing: border-box; }
323
+ .mfp-img-mobile .mfp-bottom-bar:empty {
324
+ padding: 0; }
325
+ .mfp-img-mobile .mfp-counter {
326
+ right: 5px;
327
+ top: 3px; }
328
+ .mfp-img-mobile .mfp-close {
329
+ top: 0;
330
+ right: 0;
331
+ width: 35px;
332
+ height: 35px;
333
+ line-height: 35px;
334
+ background: rgba(0, 0, 0, 0.6);
335
+ position: fixed;
336
+ text-align: center;
337
+ padding: 0; } }
338
+
339
+ @media all and (max-width: 900px) {
340
+ .mfp-arrow {
341
+ -webkit-transform: scale(0.75);
342
+ transform: scale(0.75); }
343
+ .mfp-arrow-left {
344
+ -webkit-transform-origin: 0;
345
+ transform-origin: 0; }
346
+ .mfp-arrow-right {
347
+ -webkit-transform-origin: 100%;
348
+ transform-origin: 100%; }
349
+ .mfp-container {
350
+ padding-left: 6px;
351
+ padding-right: 6px; } }
css/style.css CHANGED
@@ -2728,6 +2728,8 @@ table.ecwd_calendar_container > tbody > tr >td{
2728
 
2729
  #ecwd-events-content .event-venue > div,
2730
  #ecwd-events-content .event-detalis-org > div,
 
 
2731
  .entry-content .ecwd-venue > div,
2732
  .entry-content .ecwd-organizer .ecwd_organizer_phone,
2733
  .entry-content .ecwd-organizer .ecwd_organizer_website{
@@ -2740,6 +2742,8 @@ table.ecwd_calendar_container > tbody > tr >td{
2740
 
2741
  #ecwd-events-content .event-venue > div span:first-child,
2742
  #ecwd-events-content .event-detalis-org > div span:first-child,
 
 
2743
  .entry-content .ecwd-venue > div span:first-child,
2744
  .entry-content .ecwd-organizer .ecwd_organizer_phone span:first-child,
2745
  .entry-content .ecwd-organizer .ecwd_organizer_website span:first-child{
@@ -2761,3 +2765,20 @@ table.ecwd_calendar_container > tbody > tr >td{
2761
  .ecwd_calendar td .day-number{
2762
  padding: 2px 0 4px 2px;
2763
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2728
 
2729
  #ecwd-events-content .event-venue > div,
2730
  #ecwd-events-content .event-detalis-org > div,
2731
+ .ecwd-single-event .event-venue > div,
2732
+ .ecwd-single-event .event-detalis-org > div,
2733
  .entry-content .ecwd-venue > div,
2734
  .entry-content .ecwd-organizer .ecwd_organizer_phone,
2735
  .entry-content .ecwd-organizer .ecwd_organizer_website{
2742
 
2743
  #ecwd-events-content .event-venue > div span:first-child,
2744
  #ecwd-events-content .event-detalis-org > div span:first-child,
2745
+ .ecwd-single-event .event-venue > div span:first-child,
2746
+ .ecwd-single-event .event-detalis-org > div span:first-child,
2747
  .entry-content .ecwd-venue > div span:first-child,
2748
  .entry-content .ecwd-organizer .ecwd_organizer_phone span:first-child,
2749
  .entry-content .ecwd-organizer .ecwd_organizer_website span:first-child{
2765
  .ecwd_calendar td .day-number{
2766
  padding: 2px 0 4px 2px;
2767
  }
2768
+ .ecwd-single-event a:not(.export_link):focus, .ecwd-single-event a:not(.export_link):hover, .ecwd-single-event a:not(.export_link){
2769
+ box-shadow:none !important;
2770
+ border-bottom:0 !important;
2771
+ }
2772
+ .ecwd-single-event .entry-content-event{
2773
+ margin:20px 0;
2774
+ }
2775
+ .ecwd-single-event.ecwd-event {
2776
+ padding: 10px 0;
2777
+ }
2778
+ .ecwd-single-event .event_cageory_and_tags ul {
2779
+ list-style:none;
2780
+ }
2781
+ .ecwd-single-event .event_cageory_and_tags ul li{
2782
+ display:inline-block;
2783
+ margin: 5px;
2784
+ }
ecwd.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Event Calendar WD
4
  * Plugin URI: https://web-dorado.com/products/wordpress-event-calendar-wd.html
5
  * Description: Event Calendar WD is an easy event management and planning tool with advanced features.
6
- * Version: 1.1.15
7
  * Author: WebDorado
8
  * Author URI: https://web-dorado.com/wordpress-plugins-bundle.html
9
  * Text Domain: event-calendar-wd
@@ -25,7 +25,7 @@ if (!defined('ECWD_URL')) {
25
  }
26
 
27
  if (!defined('ECWD_VERSION')) {
28
- define('ECWD_VERSION', "1.1.15");
29
  }
30
 
31
  if (!defined('ECWD_PLUGIN_MAIN_FILE')) {
@@ -35,6 +35,9 @@ if (!defined('ECWD_PLUGIN_MAIN_FILE')) {
35
  if (!defined('ECWD_MENU_SLUG')) {
36
  define('ECWD_MENU_SLUG', "edit.php?post_type=ecwd_event");
37
  }
 
 
 
38
 
39
  add_action('plugins_loaded', array('ECWD', 'get_instance'));
40
 
@@ -49,4 +52,18 @@ if (is_admin()) {
49
  add_action('init', array('ECWD_Admin', 'ecwd_freemius'), 9);
50
  }
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
3
  * Plugin Name: Event Calendar WD
4
  * Plugin URI: https://web-dorado.com/products/wordpress-event-calendar-wd.html
5
  * Description: Event Calendar WD is an easy event management and planning tool with advanced features.
6
+ * Version: 1.1.16
7
  * Author: WebDorado
8
  * Author URI: https://web-dorado.com/wordpress-plugins-bundle.html
9
  * Text Domain: event-calendar-wd
25
  }
26
 
27
  if (!defined('ECWD_VERSION')) {
28
+ define('ECWD_VERSION', "1.1.16");
29
  }
30
 
31
  if (!defined('ECWD_PLUGIN_MAIN_FILE')) {
35
  if (!defined('ECWD_MENU_SLUG')) {
36
  define('ECWD_MENU_SLUG', "edit.php?post_type=ecwd_event");
37
  }
38
+ if (!defined('ECWD_REST_NAMESPACE')) {
39
+ define('ECWD_REST_NAMESPACE', 'ecwd/v1');
40
+ }
41
 
42
  add_action('plugins_loaded', array('ECWD', 'get_instance'));
43
 
52
  add_action('init', array('ECWD_Admin', 'ecwd_freemius'), 9);
53
  }
54
 
55
+ add_filter('wp_get_default_privacy_policy_content', 'ecwd_privacy_policy');
56
+ function ecwd_privacy_policy($content){
57
+ $title = __('Event Calendar WD', "event-calendar-wd");
58
+
59
+ $pp_link = '<a target="_blank" href="https://policies.google.com/privacy">' . __('Privacy Policy', "event-calendar-wd") . '</a>';
60
+ $text = sprintf(__('Event Calendar WD plugin optionally embeds Google Maps on front end to display events on the map. Embedded Google Maps behave in the exact same way as if you has visited Google Maps site. Google may collect data about visitors, use cookies and tracking, included your logged-in experience interaction with Google platform. Google Maps are regulated under terms of Google %s.', "event-calendar-wd"), $pp_link);
61
+ $text .= "<br/>";
62
+ $text .= __('Web-Dorado Disclaimer: The above text is for informational purposes only and is not a legal advice. You must not rely on it as an alternative to legal advice. You should contact your legal counsel to obtain advice with respect to your particular case.', "event-calendar-wd");
63
+ $pp_text = '<h3>' . $title . '</h3>' . '<p class="wp-policy-help">' . $text . '</p>';
64
+
65
+ $content .= $pp_text;
66
+ return $content;
67
+ }
68
+
69
 
ecwd_admin_class.php CHANGED
@@ -244,7 +244,13 @@ class ECWD_Admin {
244
  self::update_to_95($calendars);
245
  }
246
 
247
-
 
 
 
 
 
 
248
 
249
 
250
  update_option('ecwd_version',ECWD_VERSION);
@@ -645,6 +651,8 @@ class ECWD_Admin {
645
  //wp_enqueue_style($this->prefix . '-main', plugins_url('css/calendar.css', __FILE__), '', $styles_key);
646
  wp_enqueue_style('ecwd-admin-css', plugins_url('css/admin/admin.css', __FILE__), array(), $styles_key, 'all');
647
  wp_enqueue_style('ecwd-admin-datetimepicker-css', plugins_url('css/admin/jquery.datetimepicker.css', __FILE__), array(), $styles_key, 'all');
 
 
648
  wp_enqueue_style('ecwd-admin-colorpicker-css', plugins_url('css/admin/evol.colorpicker.css', __FILE__), array(), $styles_key, 'all');
649
  wp_enqueue_style($this->prefix . '-calendar-style', plugins_url('css/style.css', __FILE__), '', $styles_key, 'all');
650
  wp_enqueue_style($this->prefix . '_font-awesome', plugins_url('/css/font-awesome/font-awesome.css', __FILE__), '', $styles_key, 'all');
@@ -678,10 +686,30 @@ class ECWD_Admin {
678
  'jquery-ui-datepicker',
679
  'jquery-ui-tabs',
680
  'jquery-ui-selectable',
 
 
681
  $this->prefix . '-public',
682
  $this->prefix . '-admin-ecwd-popup'
683
  ), $scripts_key, true);
684
- wp_enqueue_script($this->prefix . '-admin-datetimepicker-scripts', plugins_url('js/admin/datepicker.js', __FILE__), array('jquery'), $scripts_key, true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
685
 
686
  $params['ajaxurl'] = admin_url('admin-ajax.php');
687
  $params['version'] = get_bloginfo('version');
@@ -712,6 +740,8 @@ class ECWD_Admin {
712
  ));
713
 
714
  wp_enqueue_script($this->prefix . '-admin-scripts');
 
 
715
  }
716
  $screen = get_current_screen();
717
  if (!$this->ecwd_page() || $screen->post_type == "ecwd_calendar") {
244
  self::update_to_95($calendars);
245
  }
246
 
247
+ if ($version_option == false || version_compare(substr($version_option, 2), '1.16', '<')) {
248
+ $events_opt = get_option('ecwd_settings_events');
249
+ if(!isset($events_opt["use_custom_template"])){
250
+ $events_opt["use_custom_template"] = ($version_option === false) ? "0" : "1";
251
+ update_option('ecwd_settings_events', $events_opt);
252
+ }
253
+ }
254
 
255
 
256
  update_option('ecwd_version',ECWD_VERSION);
651
  //wp_enqueue_style($this->prefix . '-main', plugins_url('css/calendar.css', __FILE__), '', $styles_key);
652
  wp_enqueue_style('ecwd-admin-css', plugins_url('css/admin/admin.css', __FILE__), array(), $styles_key, 'all');
653
  wp_enqueue_style('ecwd-admin-datetimepicker-css', plugins_url('css/admin/jquery.datetimepicker.css', __FILE__), array(), $styles_key, 'all');
654
+ wp_enqueue_style($this->prefix . '-magnific-popup_css', plugins_url('css/magnific-popup.css', __FILE__), array(), $styles_key, 'all');
655
+ wp_enqueue_style($this->prefix . '-datatables_css', plugins_url('css/datatables.min.css', __FILE__), array(), $styles_key, 'all');
656
  wp_enqueue_style('ecwd-admin-colorpicker-css', plugins_url('css/admin/evol.colorpicker.css', __FILE__), array(), $styles_key, 'all');
657
  wp_enqueue_style($this->prefix . '-calendar-style', plugins_url('css/style.css', __FILE__), '', $styles_key, 'all');
658
  wp_enqueue_style($this->prefix . '_font-awesome', plugins_url('/css/font-awesome/font-awesome.css', __FILE__), '', $styles_key, 'all');
686
  'jquery-ui-datepicker',
687
  'jquery-ui-tabs',
688
  'jquery-ui-selectable',
689
+ $this->prefix . '-magnific_popup_js',
690
+ $this->prefix . '-datatables_js',
691
  $this->prefix . '-public',
692
  $this->prefix . '-admin-ecwd-popup'
693
  ), $scripts_key, true);
694
+ $rest_route = add_query_arg(array(
695
+ 'rest_route' => '/'.ECWD_REST_NAMESPACE . '/'
696
+ ), get_home_url()."/");
697
+ wp_localize_script($this->prefix . '-admin-scripts', $this->prefix .'ServerVars', array(
698
+ 'root' => esc_url_raw(rest_url()),
699
+ 'pluginRestPath' => 'ecwd/v1/',
700
+ 'rest_route' => $rest_route,
701
+ 'includesUrl' => includes_url(),
702
+ 'wpRestNonce' => wp_create_nonce('wp_rest'),
703
+ 'ecwdRestNonce' => wp_create_nonce('ecwd_rest_nonce'),
704
+ 'version' => ECWD_VERSION,
705
+ ));
706
+ wp_register_script($this->prefix . '-magnific_popup_js', plugins_url('js/magnific-popup.min.js', __FILE__), array(
707
+ 'jquery',
708
+ ), $scripts_key, true);
709
+ wp_register_script($this->prefix . '-datatables_js', plugins_url('js/datatables.min.js', __FILE__), array(
710
+ 'jquery',
711
+ ), $scripts_key, true);
712
+ wp_enqueue_script($this->prefix . '-admin-datetimepicker-scripts', plugins_url('js/admin/datepicker.js', __FILE__), array('jquery'), $scripts_key, true);
713
 
714
  $params['ajaxurl'] = admin_url('admin-ajax.php');
715
  $params['version'] = get_bloginfo('version');
740
  ));
741
 
742
  wp_enqueue_script($this->prefix . '-admin-scripts');
743
+ wp_enqueue_script($this->prefix . '-magnific_popup_js');
744
+ wp_enqueue_script($this->prefix . '-datatables_js');
745
  }
746
  $screen = get_current_screen();
747
  if (!$this->ecwd_page() || $screen->post_type == "ecwd_calendar") {
ecwd_class.php CHANGED
@@ -23,10 +23,20 @@ class ECWD {
23
  add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'), 5);
24
  add_action('wp_enqueue_scripts', array($this, 'enqueue_styles'));
25
  add_action('ecwd_show_related_events', array($this, 'show_related_events'), 10, 2);
 
 
 
 
 
 
 
 
26
  }
27
-
28
  public function show_related_events($events, $upcoming_events = false) {
29
  global $ecwd_options;
 
 
 
30
  $today = date('Y-m-d');
31
  $date_format = 'Y-m-d';
32
  $time_format = 'H:i';
@@ -52,6 +62,13 @@ class ECWD {
52
  include_once 'views/related_events.php';
53
  }
54
 
 
 
 
 
 
 
 
55
  /**
56
  * Setup constants
57
  */
23
  add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'), 5);
24
  add_action('wp_enqueue_scripts', array($this, 'enqueue_styles'));
25
  add_action('ecwd_show_related_events', array($this, 'show_related_events'), 10, 2);
26
+ add_action('init', array($this, 'register_hooks'));
27
+ }
28
+ public function register_hooks(){
29
+ add_action('rest_api_init', array($this, 'init_rest_api'));
30
+ }
31
+ public function init_rest_api(){
32
+ require_once ECWD_DIR . '/includes/ecwd_class-rest-api.php';
33
+ EcwdRestApi::get_instance();
34
  }
 
35
  public function show_related_events($events, $upcoming_events = false) {
36
  global $ecwd_options;
37
+ if(!empty($events)) {
38
+ usort($events, array($this, 'order_events'));
39
+ }
40
  $today = date('Y-m-d');
41
  $date_format = 'Y-m-d';
42
  $time_format = 'H:i';
62
  include_once 'views/related_events.php';
63
  }
64
 
65
+ public function order_events($event1, $event2){
66
+ $sec_1 = strtotime($event1['from']);
67
+ $sec_2 = strtotime($event2['from']);
68
+
69
+ return strcmp($sec_1, $sec_2);
70
+ }
71
+
72
  /**
73
  * Setup constants
74
  */
includes/ecwd-cpt-class.php CHANGED
@@ -964,7 +964,8 @@ class ECWD_Cpt {
964
  $calendar_id = esc_attr($_POST[ECWD_PLUGIN_PREFIX . '_calendar_id']);
965
  $new_event = array(
966
  'post_type' => ECWD_PLUGIN_PREFIX . '_event',
967
- 'post_title' => esc_attr($_POST[ECWD_PLUGIN_PREFIX . '_event_name'])
 
968
  );
969
  $new_event_id = wp_insert_post($new_event);
970
  if ($new_event_id) {
@@ -1171,7 +1172,9 @@ class ECWD_Cpt {
1171
  $values = array();
1172
  $data = json_encode($values);
1173
  update_post_meta($post_id, $post_type . '_params', $data);
1174
- } else {
 
 
1175
  foreach ($ecwd_post_meta_fields[$post_type] as $pmf) {
1176
  if (isset($_POST[$pmf]) && !empty($_POST[$pmf])) {
1177
  if ($post_type == ECWD_PLUGIN_PREFIX . '_calendar') {
@@ -1205,6 +1208,26 @@ class ECWD_Cpt {
1205
  return $post_id;
1206
  }
1207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1208
  public function error_messages($m) {
1209
  global $post;
1210
 
@@ -1436,8 +1459,9 @@ class ECWD_Cpt {
1436
  }
1437
 
1438
  public function ecwd_templates($template) {
 
1439
  $post_types = array(self::EVENT_POST_TYPE);
1440
- if (is_singular($post_types) && !file_exists(get_stylesheet_directory() . '/single-event.php')) {
1441
  $template = ECWD_DIR . '/views/single-event.php';
1442
  } elseif (is_tax('ecwd_event_category')) {
1443
  global $ecwd_options;
@@ -1516,7 +1540,7 @@ class ECWD_Cpt {
1516
 
1517
  public function events_archive_page_query($query) {
1518
  if (is_archive() && !is_admin()) {
1519
- if (isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'ecwd_event') {
1520
  global $ecwd_options;
1521
  $query->set('meta_key', 'ecwd_event_date_from');
1522
  $query->set('orderby', 'meta_value');
964
  $calendar_id = esc_attr($_POST[ECWD_PLUGIN_PREFIX . '_calendar_id']);
965
  $new_event = array(
966
  'post_type' => ECWD_PLUGIN_PREFIX . '_event',
967
+ 'post_title' => esc_attr($_POST[ECWD_PLUGIN_PREFIX . '_event_name']),
968
+ 'post_status' => 'publish'
969
  );
970
  $new_event_id = wp_insert_post($new_event);
971
  if ($new_event_id) {
1172
  $values = array();
1173
  $data = json_encode($values);
1174
  update_post_meta($post_id, $post_type . '_params', $data);
1175
+ } if ($post_type == ECWD_PLUGIN_PREFIX . '_event') {
1176
+ $this->save_event_metas($post_id);
1177
+ }else {
1178
  foreach ($ecwd_post_meta_fields[$post_type] as $pmf) {
1179
  if (isset($_POST[$pmf]) && !empty($_POST[$pmf])) {
1180
  if ($post_type == ECWD_PLUGIN_PREFIX . '_calendar') {
1208
  return $post_id;
1209
  }
1210
 
1211
+ private function save_event_metas($post_id){
1212
+ include_once 'events/ecwd-single-event.php';
1213
+ include_once 'events/ecwd-events-controller.php';
1214
+
1215
+ $event = new ecwd_single_event($post_id);
1216
+ $event->start_date = $_POST['ecwd_event_date_from'];
1217
+ $event->end_date = $_POST['ecwd_event_date_to'];
1218
+ $event->all_day = ((isset($_POST['ecwd_all_day_event'])) && $_POST['ecwd_all_day_event'] === '1');
1219
+ $event->calendars = !empty($_POST['ecwd_event_calendars']) ? $_POST['ecwd_event_calendars'] : array();
1220
+ $event->set_venue($_POST['ecwd_event_venue']);
1221
+ $event->organizers = !empty($_POST['ecwd_event_organizers']) ? $_POST['ecwd_event_organizers'] : array();
1222
+ $event->event_url = $_POST['ecwd_event_url'];
1223
+ $event->video_url = $_POST['ecwd_event_video'];
1224
+ $event->set_repeat();
1225
+
1226
+ $event_controller = new ecwd_events_controller();
1227
+ $event_controller->update_meta_values($event);
1228
+
1229
+ }
1230
+
1231
  public function error_messages($m) {
1232
  global $post;
1233
 
1459
  }
1460
 
1461
  public function ecwd_templates($template) {
1462
+ global $ecwd_options;
1463
  $post_types = array(self::EVENT_POST_TYPE);
1464
+ if (is_singular($post_types) && !file_exists(get_stylesheet_directory() . '/single-event.php') && (isset($ecwd_options['use_custom_template']) && $ecwd_options['use_custom_template'] == '1')) {
1465
  $template = ECWD_DIR . '/views/single-event.php';
1466
  } elseif (is_tax('ecwd_event_category')) {
1467
  global $ecwd_options;
1540
 
1541
  public function events_archive_page_query($query) {
1542
  if (is_archive() && !is_admin()) {
1543
+ if ((isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'ecwd_event') || is_tax('ecwd_event_category') || is_tax('ecwd_event_tag')) {
1544
  global $ecwd_options;
1545
  $query->set('meta_key', 'ecwd_event_date_from');
1546
  $query->set('orderby', 'meta_value');
includes/ecwd-functions.php CHANGED
@@ -304,6 +304,10 @@ function ecwd_event_content($content) {
304
  ob_start();
305
  include(ECWD_DIR . '/views/ecwd-venue-content.php');
306
  $content = ob_get_clean();
 
 
 
 
307
  }
308
  }
309
 
@@ -333,16 +337,6 @@ function getAndReplaceFirstImage($content) {
333
 
334
  add_filter('the_content', ECWD_PLUGIN_PREFIX . '_event_content');
335
 
336
- //add_filter('template_include', ECWD_PLUGIN_PREFIX . '_set_template');
337
-
338
- function ecwd_set_template($template) {
339
- if (is_singular(ECWD_PLUGIN_PREFIX . '_event') && ECWD_DIR . '/views/ecwd-event-content.php' != $template) {
340
- $template = ECWD_DIR . '/views/ecwd-event-content.php';
341
- }
342
-
343
- return $template;
344
- }
345
-
346
  function ecwd_event_post($post) {
347
  global $ecwd_options;
348
  if (is_single() && isset($post->comment_status) && $post->post_type == ECWD_PLUGIN_PREFIX . '_event') {
304
  ob_start();
305
  include(ECWD_DIR . '/views/ecwd-venue-content.php');
306
  $content = ob_get_clean();
307
+ } elseif ($post->post_type == ECWD_PLUGIN_PREFIX . '_event' && isset($ecwd_options['use_custom_template']) && $ecwd_options['use_custom_template'] == '0' && !isset($_GET['iframe'])) {
308
+ ob_start();
309
+ include(ECWD_DIR . '/views/ecwd-event-content.php');
310
+ $content = ob_get_clean();
311
  }
312
  }
313
 
337
 
338
  add_filter('the_content', ECWD_PLUGIN_PREFIX . '_event_content');
339
 
 
 
 
 
 
 
 
 
 
 
340
  function ecwd_event_post($post) {
341
  global $ecwd_options;
342
  if (is_single() && isset($post->comment_status) && $post->post_type == ECWD_PLUGIN_PREFIX . '_event') {
includes/ecwd_class-rest-api.php ADDED
@@ -0,0 +1,311 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Created by PhpStorm.
4
+ * User: mher
5
+ * Date: 9/13/17
6
+ * Time: 4:33 PM
7
+ */
8
+
9
+ class EcwdRestApi
10
+ {
11
+
12
+ private static $instance = null;
13
+
14
+ private $namespace = ECWD_REST_NAMESPACE;
15
+
16
+ private $bases = array(
17
+ 'events' => array('/events', true, false, false),//get,post,delete
18
+ 'add_event' => array('/add_event', false, true, false),//get,post,delete
19
+ );
20
+
21
+ /**
22
+ * Register the routes for the objects of the controller.
23
+ */
24
+ public function register_routes()
25
+ {
26
+ foreach ($this->bases as $key => $route_config) {
27
+ $endpoint = $this->get_endpoint($key);
28
+
29
+ // readable
30
+ if ($route_config[1]) {
31
+
32
+ register_rest_route($this->namespace, $endpoint,
33
+ array(
34
+ 'methods' => \WP_REST_Server::READABLE,
35
+ 'callback' => array($this, 'get_item'),
36
+ 'permission_callback' => array($this, 'get_items_permissions_check'),
37
+ 'args' => array(),
38
+ )
39
+ );
40
+
41
+ }
42
+
43
+ // writable
44
+ if ($route_config[2]) {
45
+
46
+ register_rest_route($this->namespace, $endpoint,
47
+ array(
48
+ 'methods' => \WP_REST_Server::CREATABLE,
49
+ 'callback' => array($this, 'update_item'),
50
+ 'permission_callback' => array($this, 'create_item_permissions_check'),
51
+ 'args' => array(),
52
+ )
53
+ );
54
+
55
+ }
56
+
57
+ // deletable
58
+ if ($route_config[3]) {
59
+
60
+ register_rest_route($this->namespace, $endpoint,
61
+ array(
62
+ 'methods' => \WP_REST_Server::DELETABLE,
63
+ 'callback' => array($this, 'delete_item'),
64
+ 'permission_callback' => array($this, 'delete_item_permissions_check'),
65
+ 'args' => array(),
66
+ )
67
+ );
68
+
69
+ }
70
+ }
71
+
72
+ }
73
+
74
+ /**
75
+ * get endpoint route by its key(string identificator )
76
+ *
77
+ */
78
+ private function get_endpoint($key)
79
+ {
80
+ if (array_key_exists($key, $this->bases)) {
81
+ return $this->bases[$key][0];
82
+ }
83
+ return false;
84
+
85
+ }
86
+
87
+ /**
88
+ * get endpoint key by its route
89
+ *
90
+ */
91
+ private function parse_endpoint($route)
92
+ {
93
+ $route_url = substr($route, 6);
94
+
95
+ foreach ($this->bases as $key => $value) {
96
+ $route_regex = '/' . substr($value[0], 1) . '/';
97
+
98
+ if (preg_match($route_regex, substr($route_url, 1))) {
99
+ return $key;
100
+ }
101
+ }
102
+
103
+ return null;
104
+
105
+ }
106
+ /**
107
+ * Get a collection of items
108
+ *
109
+ * @param \WP_REST_Request $request Full data about the request.
110
+ * @return \WP_Error|\WP_REST_Response
111
+ */
112
+ public function get_item($request)
113
+ {
114
+ $parameters = self::wp_unslash_conditional($request->get_query_params());
115
+ if(wp_verify_nonce($parameters["nonce"] , 'ecwd_rest_nonce')){
116
+ $route = $request->get_route();
117
+ $endpoint = $this->parse_endpoint($route);
118
+ switch ($endpoint) {
119
+ case 'events':
120
+ $status = 200;
121
+ $data_for_response = array(
122
+ "code" => "ok",
123
+ "data" => self::all_events()
124
+ );
125
+ return new \WP_REST_Response($data_for_response, $status);
126
+ break;
127
+ }
128
+ }
129
+ }
130
+
131
+ public function update_item($request) {
132
+ $parameters = self::wp_unslash_conditional($request->get_body_params());
133
+ if(wp_verify_nonce($parameters["nonce"] , 'ecwd_rest_nonce')) {
134
+ $route = $request->get_route();
135
+ $endpoint = $this->parse_endpoint($route);
136
+ switch ($endpoint) {
137
+ case 'add_event':
138
+ $status = 200;
139
+ $data_for_response = array(
140
+ "success" => self::add_events($parameters)
141
+ );
142
+
143
+ return new \WP_REST_Response($data_for_response, $status);
144
+ break;
145
+ }
146
+ }
147
+ }
148
+
149
+ private static function all_events(){
150
+ $args = array(
151
+ 'numberposts' => - 1,
152
+ 'post_type' => 'ecwd_event',
153
+ );
154
+ $events = get_posts($args);
155
+ self::add_private_posts($events,$args);
156
+
157
+ foreach ($events as $key=>$val){
158
+ $ecwd_event_date_from = get_post_meta($val->ID, 'ecwd_event_date_from',true);
159
+ $ecwd_event_date_to = get_post_meta($val->ID, 'ecwd_event_date_to',true);
160
+ $events[$key]->ecwd_event_date_from = $ecwd_event_date_from;
161
+ $events[$key]->ecwd_event_date_to = $ecwd_event_date_to;
162
+ }
163
+ return $events;
164
+ }
165
+ private static function add_private_posts(&$posts, $args){
166
+ if(!current_user_can('read_private_posts')) {
167
+ return;
168
+ }
169
+
170
+ $args['post_status'] = 'private';
171
+ $private_posts = get_posts($args);
172
+ if(!empty($private_posts)) {
173
+ foreach($private_posts as $private_post) {
174
+ $posts[] = $private_post;
175
+ }
176
+ }
177
+
178
+ }
179
+ private static function add_events($parameters){
180
+ $status = false;
181
+ if (isset($parameters["ecwd_data"])) {
182
+ $ecwd_events_list = $parameters["ecwd_data"];
183
+ foreach ($ecwd_events_list as $val){
184
+ if(isset($val['event_id']) && isset($val['calendar_id'])){
185
+ $event_id = esc_attr($val['event_id']);
186
+ $calendar_id = esc_attr($val['calendar_id']);
187
+ $event_calendars = get_post_meta($event_id, ECWD_PLUGIN_PREFIX . '_event_calendars', true);
188
+ if (!$event_calendars) {
189
+ $event_calendars = array();
190
+ }
191
+
192
+ if (is_array($event_calendars) && !in_array($calendar_id, $event_calendars)) {
193
+ $event_calendars[] = $calendar_id;
194
+ $status = true;
195
+ }
196
+ update_post_meta($event_id, ECWD_PLUGIN_PREFIX . '_event_calendars', $event_calendars);
197
+ }
198
+ }
199
+
200
+
201
+ }
202
+ return $status;
203
+ }
204
+
205
+ /**
206
+ * Check if a given request has access to get items
207
+ *
208
+ * @param WP_REST_Request $request Full data about the request.
209
+ * @return WP_Error|bool
210
+ */
211
+ public function get_items_permissions_check($request)
212
+ {
213
+ //return true; <--use to make readable by all
214
+ return true; //current_user_can( 'edit_something' );
215
+ }
216
+
217
+ /**
218
+ * Check if a given request has access to get a specific item
219
+ *
220
+ * @param WP_REST_Request $request Full data about the request.
221
+ * @return WP_Error|bool
222
+ */
223
+ public function get_item_permissions_check($request)
224
+ {
225
+ return $this->get_items_permissions_check($request);
226
+ }
227
+
228
+ /**
229
+ * Check if a given request has access to create items
230
+ *
231
+ * @param WP_REST_Request $request Full data about the request.
232
+ * @return WP_Error|bool
233
+ */
234
+ public function create_item_permissions_check($request)
235
+ {
236
+ return true; //current_user_can( 'edit_something' );
237
+ }
238
+
239
+ /**
240
+ * Check if a given request has access to update a specific item
241
+ *
242
+ * @param WP_REST_Request $request Full data about the request.
243
+ * @return WP_Error|bool
244
+ */
245
+ public function update_item_permissions_check($request)
246
+ {
247
+ return $this->create_item_permissions_check($request);
248
+ }
249
+
250
+ /**
251
+ * Check if a given request has access to delete a specific item
252
+ *
253
+ * @param WP_REST_Request $request Full data about the request.
254
+ * @return WP_Error|bool
255
+ */
256
+ public function delete_item_permissions_check($request)
257
+ {
258
+ return true;
259
+ }
260
+
261
+ /**
262
+ * Prepare the item for create or update operation
263
+ *
264
+ * @param WP_REST_Request $request Request object
265
+ * @return WP_Error|object $prepared_item
266
+ */
267
+ protected function prepare_item_for_database($request)
268
+ {
269
+ return array();
270
+ }
271
+
272
+ /**
273
+ * Prepare the item for the REST response
274
+ *
275
+ * @param mixed $item WordPress representation of the item.
276
+ * @param WP_REST_Request $request Request object.
277
+ * @return mixed
278
+ */
279
+ public function prepare_item_for_response($item, $request)
280
+ {
281
+ return array();
282
+ }
283
+
284
+
285
+
286
+ /*
287
+ * wp 4.4 adds slashes, removes them
288
+ *
289
+ * https://core.trac.wordpress.org/ticket/36419
290
+ **/
291
+ private static function wp_unslash_conditional($data)
292
+ {
293
+
294
+ global $wp_version;
295
+ if ($wp_version < 4.5) {
296
+ $data = wp_unslash($data);
297
+ }
298
+
299
+ return $data;
300
+ }
301
+
302
+ public static function get_instance()
303
+ {
304
+ if (null == self::$instance) {
305
+ self::$instance = new self;
306
+ self::$instance->register_routes();
307
+ }
308
+ return self::$instance;
309
+ }
310
+
311
+ }
includes/events/ecwd-events-controller.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Created by PhpStorm.
4
+ * User: mher
5
+ * Date: 5/14/18
6
+ * Time: 4:26 PM
7
+ */
8
+
9
+ class ecwd_events_controller {
10
+
11
+
12
+ public function create_event(){
13
+ //insert post
14
+ }
15
+
16
+ public function update_post(){
17
+ //title, contet, etc
18
+ }
19
+
20
+ /**
21
+ * @param $ev ecwd_single_event
22
+ * */
23
+ public function update_meta_values($ev){
24
+
25
+ update_post_meta($ev->id, 'ecwd_event_date_from', $this->sanitize_text($ev->start_date));
26
+ update_post_meta($ev->id, 'ecwd_event_date_to', $this->sanitize_text($ev->end_date));
27
+ if($ev->all_day === true) {
28
+ update_post_meta($ev->id, 'ecwd_all_day_event', '1');
29
+ } else {
30
+ delete_post_meta($ev->id, 'ecwd_all_day_event');
31
+ }
32
+ update_post_meta($ev->id, 'ecwd_event_calendars', $this->sanitize_text($ev->calendars));
33
+ //venue and venue data
34
+ $location_info = $ev->get_location_info();
35
+ if($location_info['complete_data'] === false) {
36
+
37
+ delete_post_meta($ev->id, 'ecwd_event_venue');
38
+ delete_post_meta($ev->id, 'ecwd_event_location');
39
+ delete_post_meta($ev->id, 'ecwd_lat_long');
40
+ delete_post_meta($ev->id, 'ecwd_event_show_map');
41
+ delete_post_meta($ev->id, 'ecwd_map_zoom');
42
+
43
+ } else {
44
+
45
+ update_post_meta($ev->id, 'ecwd_event_venue', $this->sanitize_text($ev->venue['post']->ID));
46
+ update_post_meta($ev->id, 'ecwd_event_location', $this->sanitize_text($location_info['location']));
47
+ update_post_meta($ev->id, 'ecwd_lat_long', $this->sanitize_text($location_info['lat_long']));
48
+ update_post_meta($ev->id, 'ecwd_event_show_map', $this->sanitize_text($location_info['show_map']));
49
+ update_post_meta($ev->id, 'ecwd_map_zoom', $this->sanitize_text($location_info['zoom']));
50
+
51
+ }
52
+
53
+ update_post_meta($ev->id, 'ecwd_event_organizers', $this->sanitize_text($ev->organizers));
54
+ update_post_meta($ev->id, 'ecwd_event_url', $this->sanitize_text($ev->event_url));
55
+ update_post_meta($ev->id, 'ecwd_event_video', $this->sanitize_text($ev->video_url));
56
+
57
+ foreach($ev->repeat as $meta_key => $value) {
58
+
59
+ if($value !== null) {
60
+ update_post_meta($ev->id, $meta_key, $this->sanitize_text($value));
61
+ } else {
62
+ delete_post_meta($ev->id, $meta_key);
63
+ }
64
+
65
+ }
66
+
67
+ }
68
+
69
+ public function sanitize_text($str){
70
+ if(!is_array($str)) {
71
+ return sanitize_text_field($str);
72
+ } else {
73
+ foreach($str as $key => $value) {
74
+ $str[$key] = $this->sanitize_text($value);
75
+ }
76
+ return $str;
77
+ }
78
+
79
+ }
80
+
81
+
82
+ }
includes/events/ecwd-single-event.php ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Created by PhpStorm.
4
+ * User: mher
5
+ * Date: 5/14/18
6
+ * Time: 3:55 PM
7
+ */
8
+
9
+ class ecwd_single_event {
10
+
11
+ public $id;// null|int
12
+ public $title;
13
+ public $content;
14
+ public $featured_image_id;
15
+ public $featured_image_url;
16
+ public $permalink;
17
+ public $start_date;
18
+ public $end_date;
19
+ public $all_day;//boolean
20
+ public $calendars = array();//array calendar ids
21
+ public $organizers = array();//array organizers list (id, title, description, metas)
22
+ public $venue = null;//null|array('post'=> WP_Post, 'metas' => array)
23
+ public $tags = array();//tags list
24
+ public $categories = array();//categories list
25
+ public $post;//wp_post
26
+ public $repeat = array(
27
+ 'ecwd_event_repeat_event' => "no_repeat",//no_repeat,daily,weekly,monthly,yearly
28
+ 'ecwd_event_day' => array(),//[monday,tuesday,wednesday,thursday,friday,saturday,sunday]
29
+ 'ecwd_event_repeat_how' => "",//number|""
30
+ 'ecwd_event_repeat_month_on_days' => "1",//number
31
+ 'ecwd_event_repeat_year_on_days' => "1",//number
32
+ 'ecwd_event_repeat_on_the_m' => null,
33
+ 'ecwd_event_repeat_on_the_y' => null,
34
+ 'ecwd_monthly_list_monthly' => null,
35
+ 'ecwd_monthly_week_monthly' => null,
36
+ 'ecwd_monthly_list_yearly' => null,
37
+ 'ecwd_monthly_week_yearly' => null,
38
+ 'ecwd_event_repeat_repeat_until' => "",
39
+ 'ecwd_event_year_month' => null,
40
+ ); //array
41
+ public $event_url;
42
+ public $video_url;
43
+ public $other_metas = array();//array meta_key:meta_value
44
+
45
+ public function __construct($id = null, $title = "", $content = ""){
46
+ $this->id = $id;
47
+ $this->title = $title;
48
+ $this->content = $content;
49
+ }
50
+
51
+ public function set_venue($venue_id){
52
+
53
+ $venue_id = intval($venue_id);
54
+ if($venue_id === 0) {
55
+ return;
56
+ }
57
+
58
+ $venue = get_post($venue_id);
59
+ $metas = get_post_meta($venue_id, "", true);
60
+
61
+ $this->venue = array(
62
+ 'post' => $venue,
63
+ 'metas' => $metas
64
+ );
65
+
66
+ }
67
+
68
+ public function set_repeat(){
69
+
70
+ foreach($this->repeat as $meta_key => $default_value) {
71
+ if(isset($_POST[$meta_key])) {
72
+ $this->repeat[$meta_key] = $_POST[$meta_key];
73
+ }
74
+ }
75
+
76
+ }
77
+
78
+ public function get_location_info(){
79
+
80
+ $location_info = array(
81
+ 'location' => '',
82
+ 'show_map' => '',
83
+ 'lat_long' => '',
84
+ 'zoom' => '',
85
+ 'complete_data' => false
86
+ );
87
+
88
+
89
+ if($this->venue === null || $this->venue['post'] === null) {
90
+ return $location_info;
91
+ }
92
+
93
+ $location_info = array();
94
+ $complete_data = true;
95
+
96
+ if(!empty($this->venue['metas']['ecwd_venue_location'][0])) {
97
+ $location_info['location'] = $this->venue['metas']['ecwd_venue_location'][0];
98
+ } else {
99
+ $complete_data = false;
100
+ }
101
+
102
+ if(!empty($this->venue['metas']['ecwd_venue_show_map'][0])) {
103
+ $location_info['show_map'] = $this->venue['metas']['ecwd_venue_show_map'][0];
104
+ } else {
105
+ $complete_data = false;
106
+ }
107
+
108
+ if(!empty($this->venue['metas']['ecwd_venue_lat_long'][0])) {
109
+ $location_info['lat_long'] = $this->venue['metas']['ecwd_venue_lat_long'][0];
110
+ } else {
111
+ $complete_data = false;
112
+ }
113
+
114
+ if(!empty($this->venue['metas']['ecwd_map_zoom'][0])) {
115
+ $location_info['zoom'] = $this->venue['metas']['ecwd_map_zoom'][0];
116
+ } else {
117
+ $complete_data = false;
118
+ }
119
+
120
+ $location_info['complete_data'] = $complete_data;
121
+ return $location_info;
122
+ }
123
+
124
+ }
includes/register-settings.php CHANGED
@@ -303,6 +303,13 @@ function ecwd_register_settings() {
303
  'type' => 'radio',
304
  'default' => 0
305
  ),
 
 
 
 
 
 
 
306
  ),
307
  'category_archive' => array(
308
  'category_archive_slug' => array(
303
  'type' => 'radio',
304
  'default' => 0
305
  ),
306
+ 'use_custom_template' => array(
307
+ 'id' => 'use_custom_template',
308
+ 'name' => __('Use custom template', 'event-calendar-wd'),
309
+ 'desc' => '',
310
+ 'type' => 'radio',
311
+ 'default' => 0
312
+ ),
313
  ),
314
  'category_archive' => array(
315
  'category_archive_slug' => array(
js/admin/admin.js CHANGED
@@ -252,6 +252,20 @@
252
  {
253
  res = JSON.parse(data);
254
  if (res.status == 'ok') {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
255
  $(clicked_el).removeClass('ecwd-calendar-event-delete');
256
  $(clicked_el).addClass('ecwd-calendar-event-add');
257
  $(clicked_el).text('+');
@@ -371,7 +385,7 @@
371
  res = JSON.parse(data);
372
  if (res.status == 'success') {
373
  $('#add_event_to_cal').hide();
374
- $('.ecwd_notification').html('Event \'' + name + '\' has been saved as draft. <a href="?post=' + res.data.event_id + '&action=edit">Edit details</a>');
375
  }
376
  });
377
  } else {
@@ -409,11 +423,11 @@
409
  });
410
 
411
 
412
- $('.ecwd_add_event_to_calendar').ecwd_popup({
413
  button: $('.ecwd_events_popup_button'),
414
  title: ecwd_admin_translation.event_list,
415
  container_class: 'ecwd_add_event_calendar'
416
- });
417
  $('#ecwd_preview_add_event_popup').ecwd_popup({
418
  button: $('#ecwd_preview_add_event'),
419
  title: ecwd_admin_translation.calendar,
@@ -1147,3 +1161,188 @@ function loadScript()
1147
  '&callback=initialize&libraries=places&key=' + ecwd.gmap_key;
1148
  document.body.appendChild(script);
1149
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  {
253
  res = JSON.parse(data);
254
  if (res.status == 'ok') {
255
+ if($(".ecwd_events_popup_button").length === 0){
256
+ var data_new_event_url = $(clicked_el).closest(".ecwd-events").data("new_event_url");
257
+ $(".ecwd_events_popup_button").remove();
258
+ $(".ecwd-calendar-event-add").html('<a class="ecwd_events_popup_button" data-new_event_url="'+data_new_event_url+'" href="#ecwd_event_list_popup">Select Events from the list</a><a class="ecwd_events_popup_button" data-new_event_url="\'+data_new_event_url+\'" href="#ecwd_event_list_popup"><span class="add_event_plus">+</span></a>');
259
+ var ecwd_events_popup_button = $('.ecwd_events_popup_button');
260
+ if(ecwd_events_popup_button.length>0){
261
+ ecwd_events_popup_button.magnificPopup({
262
+ type:'inline',
263
+ callbacks: {
264
+
265
+ }
266
+ });
267
+ }
268
+ }
269
  $(clicked_el).removeClass('ecwd-calendar-event-delete');
270
  $(clicked_el).addClass('ecwd-calendar-event-add');
271
  $(clicked_el).text('+');
385
  res = JSON.parse(data);
386
  if (res.status == 'success') {
387
  $('#add_event_to_cal').hide();
388
+ $('.ecwd_notification').html('Event \'' + name + '\' has been saved. <a href="?post=' + res.data.event_id + '&action=edit" target="_blank">Edit details</a>');
389
  }
390
  });
391
  } else {
423
  });
424
 
425
 
426
+ /* $('.ecwd_add_event_to_calendar').ecwd_popup({
427
  button: $('.ecwd_events_popup_button'),
428
  title: ecwd_admin_translation.event_list,
429
  container_class: 'ecwd_add_event_calendar'
430
+ });*/
431
  $('#ecwd_preview_add_event_popup').ecwd_popup({
432
  button: $('#ecwd_preview_add_event'),
433
  title: ecwd_admin_translation.calendar,
1161
  '&callback=initialize&libraries=places&key=' + ecwd.gmap_key;
1162
  document.body.appendChild(script);
1163
  }
1164
+
1165
+
1166
+ var ecwd_table;
1167
+
1168
+
1169
+ $(document).ready(function(){
1170
+ var ecwd_events_popup_button = $('.ecwd_events_popup_button');
1171
+ if(ecwd_events_popup_button.length>0){
1172
+ ecwd_events_popup_button.magnificPopup({
1173
+ type:'inline',
1174
+ callbacks: {
1175
+
1176
+ }
1177
+ });
1178
+ }
1179
+ });
1180
+
1181
+
1182
+ $('body').on('click', '.ecwd_events_popup_button', function (){
1183
+ if(typeof ecwd_table !== "undefined"){
1184
+ ecwd_table.destroy();
1185
+ }
1186
+ $(".ecwd_event_table").remove();
1187
+ ecwd_get_events();
1188
+ });
1189
+ var ecwd_all_events_count;
1190
+ function ecwd_get_events() {
1191
+ var url = ecwdServerVars.rest_route+'events';
1192
+ var request_url = ecwd_updateQueryStringParameter(url, 'nonce', ecwdServerVars.ecwdRestNonce);
1193
+ $(".ecwd_event_list_popup_loader").css({
1194
+ 'display':'block'
1195
+ });
1196
+ $(".ecwd_add_events").addClass('ecwd_add_events_button');
1197
+ $.ajax({
1198
+ url: request_url,
1199
+ type: 'GET',
1200
+ dataType: 'json',
1201
+ success: function(data) {
1202
+ $(".ecwd_event_list_popup_loader").css({
1203
+ 'display':'none'
1204
+ });
1205
+ $(".ecwd_add_events").removeClass('ecwd_add_events_button');
1206
+ var ecwd_event_list = "";
1207
+ var calendar_event_list = $("#ecwd_calendar_meta table .ecwd-events .ecwd-calendar-event input");
1208
+ ecwd_all_events_count = data.data.length;
1209
+ $.each(data.data, function (key, value ) {
1210
+ var flag = true;
1211
+ $.each(calendar_event_list, function (num,val) {
1212
+ var event_ides = parseInt(value.ID);
1213
+ var calendar_event_ides = parseInt($(val).val());
1214
+
1215
+ if(event_ides===calendar_event_ides){
1216
+ flag = false;
1217
+ }
1218
+ });
1219
+ if(flag){
1220
+ ecwd_event_list+="<tr data-id='"+value.ID+"' data-title='"+value.post_title+"'><td></td><td>"+value.post_title+"</td><td>"+value.ecwd_event_date_from+"</td><td>"+value.ecwd_event_date_to+"</td></tr>";
1221
+ }
1222
+ });
1223
+ var ecwd_event_table = '' +
1224
+ '<table class="ecwd_event_table display" style="width:100%">' +
1225
+ '<thead>' +
1226
+ '<th><input type="checkbox" name="select_all" value="1" id="ecwd-select-all"></th>'+
1227
+ '<th>Title</th>' +
1228
+ '<th>Start date</th>' +
1229
+ '<th>End date</th>' +
1230
+ '</thead>' +
1231
+ '<tbody>' +
1232
+ ecwd_event_list+
1233
+ '</tbody>' +
1234
+ '<tfoot>' +
1235
+
1236
+ '</tfoot>' +
1237
+ '<th></th>'+
1238
+ '<th>Title</th>' +
1239
+ '<th>Start date</th>' +
1240
+ '<th>End date</th>' +
1241
+ '</tfoot>' +
1242
+ '</table>';
1243
+
1244
+
1245
+
1246
+ $(".ecwd_event_table").remove();
1247
+ $("#ecwd_event_list_popup").prepend(ecwd_event_table);
1248
+ ecwd_table = $('.ecwd_event_table').DataTable({
1249
+ 'columnDefs': [{
1250
+ 'targets': 0,
1251
+ 'searchable':false,
1252
+ 'orderable':false,
1253
+ 'className': 'dt-body-center',
1254
+ 'render': function (data, type, full, meta){
1255
+ return '<input type="checkbox" name="id[]" value="">';
1256
+ }
1257
+ }],
1258
+ 'order': [[1, 'asc']]
1259
+ });
1260
+
1261
+ $('body').on('click', '#ecwd-select-all', function (){
1262
+ var rows = ecwd_table.rows({ 'search': 'applied' }).nodes();
1263
+ $('input[type="checkbox"]', rows).prop('checked', this.checked);
1264
+ });
1265
+
1266
+
1267
+ $('.ecwd_event_table tbody').on('change', 'input[type="checkbox"]', function(){
1268
+ if(!this.checked){
1269
+ $('#ecwd-select-all').attr('checked', false);
1270
+ }
1271
+ });
1272
+ },
1273
+ error: function() {
1274
+
1275
+ },
1276
+ beforeSend: setHeader
1277
+ });
1278
+
1279
+ function setHeader(xhr) {
1280
+ xhr.setRequestHeader('X-WP-Nonce', ecwdServerVars.wpRestNonce);
1281
+ }
1282
+ }
1283
+
1284
+ $('body').on('click','.ecwd_add_events',function (e) {
1285
+ e.preventDefault();
1286
+ $('#ecwd_event_list_popup').magnificPopup('close');
1287
+ var ecwd_event_data = [];
1288
+
1289
+
1290
+ ecwd_table.$('input[type="checkbox"]').each(function(){
1291
+ if(this.checked){
1292
+ var main_tr = this.closest("tr");
1293
+ var event_id = $(main_tr).data("id");
1294
+ var event_title = $(main_tr).data("title");
1295
+ var calendar_id = $('#post_ID').val();
1296
+
1297
+ ecwd_event_data.push({
1298
+ event_id:event_id,
1299
+ calendar_id:calendar_id,
1300
+ });
1301
+ var ecwd_added_event = '<span class="ecwd-calendar-event"> <span>'+event_title+'</span>\n' +
1302
+ ' <input type="hidden" name="ecwd-calendar-event-id[]" value="'+event_id+'">\n' +
1303
+ ' <span class="ecwd-calendar-event-edit"><a href="post.php?post=21&amp;action=edit" target="_blank">e</a></span>\n' +
1304
+ ' <span class="ecwd-calendar-event-delete">x</span>\n' +
1305
+ ' </span>';
1306
+ $("#ecwd_calendar_meta table .ecwd-events").append(ecwd_added_event);
1307
+ }
1308
+ });
1309
+ ecwd_ajax_add_events(ecwd_event_data);
1310
+ });
1311
+
1312
+ function ecwd_ajax_add_events(ecwd_event_data ) {
1313
+ var url = ecwdServerVars.rest_route+'add_event';
1314
+ var request_url = ecwd_updateQueryStringParameter(url, 'nonce', ecwdServerVars.ecwdRestNonce);
1315
+ $.ajax({
1316
+ url: request_url,
1317
+ type: 'POST',
1318
+ dataType: 'json',
1319
+ data: { ecwd_data:ecwd_event_data ,nonce: ecwdServerVars.ecwdRestNonce },
1320
+ success: function(data) {
1321
+ if(data.success){
1322
+ ecwd_table.destroy();
1323
+ var calendar_event_list = $("#ecwd_calendar_meta table .ecwd-events .ecwd-calendar-event input");
1324
+ var calendar_event_list_length = calendar_event_list.length;
1325
+ if(ecwd_all_events_count === calendar_event_list_length){
1326
+ var new_post_url = $(".ecwd_events_popup_button").data('new_event_url');
1327
+ $(".ecwd_events_popup_button").remove();
1328
+ $(".ecwd-calendar-event-add").html('<a href="'+new_post_url+'" target="_blank">Create more events</a><a href="\'+new_post_url+\'" target="_blank"><span class="add_event_plus">+</span></a></span>');
1329
+ }
1330
+ }
1331
+ },
1332
+ error: function() {},
1333
+ beforeSend: setHeader
1334
+ });
1335
+ function setHeader(xhr) {
1336
+ xhr.setRequestHeader('X-WP-Nonce', ecwdServerVars.wpRestNonce);
1337
+ }
1338
+ }
1339
+ function ecwd_updateQueryStringParameter(uri, key, value) {
1340
+ var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
1341
+ var separator = uri.indexOf('?') !== -1 ? "&" : "?";
1342
+ if (uri.match(re)) {
1343
+ return uri.replace(re, '$1' + key + "=" + value + '$2');
1344
+ }
1345
+ else {
1346
+ return uri + separator + key + "=" + value;
1347
+ }
1348
+ }
js/datatables.min.js ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * This combined file was created by the DataTables downloader builder:
3
+ * https://datatables.net/download
4
+ *
5
+ * To rebuild or modify this file with the latest versions of the included
6
+ * software please visit:
7
+ * https://datatables.net/download/#dt/dt-1.10.16
8
+ *
9
+ * Included libraries:
10
+ * DataTables 1.10.16
11
+ */
12
+
13
+ /*!
14
+ DataTables 1.10.16
15
+ ©2008-2017 SpryMedia Ltd - datatables.net/license
16
+ */
17
+ (function(h){"function"===typeof define&&define.amd?define(["jquery"],function(E){return h(E,window,document)}):"object"===typeof exports?module.exports=function(E,G){E||(E=window);G||(G="undefined"!==typeof window?require("jquery"):require("jquery")(E));return h(G,E,E.document)}:h(jQuery,window,document)})(function(h,E,G,k){function X(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),
18
+ d[c]=e,"o"===b[1]&&X(a[e])});a._hungarianMap=d}function I(a,b,c){a._hungarianMap||X(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),I(a[d],b[d],c)):b[d]=b[e]})}function Ca(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords");
19
+ a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX=
20
+ a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&I(m.models.oSearch,a[b])}function eb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"===typeof b&&!h.isArray(b)&&(a.aDataSort=[b])}function fb(a){if(!m.__browser){var b={};m.__browser=b;var c=h("<div/>").css({position:"fixed",top:0,left:-1*h(E).scrollLeft(),height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",
21
+ top:1,left:1,width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function gb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==
22
+ e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Da(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:G.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);ja(a,d,h(b).data())}function ja(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=
23
+ e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(eb(c),I(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=Q(g),i=b.mRender?Q(b.mRender):null,c=function(a){return"string"===
24
+ typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return R(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=
25
+ d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Y(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ea(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&ka(a);r(a,null,"column-sizing",[a])}function Z(a,b){var c=la(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=
26
+ la(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){var b=0;h.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==h(d.nTh).css("display")&&b++});return b}function la(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Fa(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,j,i,h,l,q,t;e=0;for(f=b.length;e<f;e++)if(l=b[e],t=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=d.length;g<j;g++){i=0;for(h=c.length;i<h;i++){t[i]===
27
+ k&&(t[i]=B(a,i,e,"type"));q=d[g](t[i],a);if(!q&&g!==d.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function hb(a,b,c,d){var e,f,g,j,i,n,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var q=n.targets!==k?n.targets:n.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Da(a);d(q[f],n)}else if("number"===typeof q[f]&&0>q[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;j<
28
+ i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&d(j,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function M(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,j=0,i=g.length;j<i;j++)g[j].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ga(a,e,c,d);return e}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=Ha(a,e);return M(a,
29
+ c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,i=f.fnGetData(g,d,{settings:a,row:b,col:c});if(i===k)return a.iDrawError!=e&&null===j&&(J(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),j;if((i===g||null===i)&&null!==j&&d!==k)i=j;else if("function"===typeof i)return i.call(g);return null===i&&"display"==d?"":i}function ib(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,
30
+ d,{settings:a,row:b,col:c})}function Ia(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function Q(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=Q(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,
31
+ b,f){var g,j;if(""!==f){j=Ia(f);for(var i=0,n=j.length;i<n;i++){f=j[i].match(ba);g=j[i].match(U);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");if(h.isArray(a)){i=0;for(n=a.length;i<n;i++)g.push(c(a[i],b,j))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(U,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===k)return k;a=a[j[i]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function R(a){if(h.isPlainObject(a))return R(a._);
32
+ if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=Ia(e),f;f=e[e.length-1];for(var g,j,i=0,n=e.length-1;i<n;i++){g=e[i].match(ba);j=e[i].match(U);if(g){e[i]=e[i].replace(ba,"");a[e[i]]=[];f=e.slice();f.splice(0,i+1);g=f.join(".");if(h.isArray(d)){j=0;for(n=d.length;j<n;j++)f={},b(f,d[j],g),a[e[i]].push(f)}else a[e[i]]=d;return}j&&(e[i]=e[i].replace(U,
33
+ ""),a=a[e[i]](d));if(null===a[e[i]]||a[e[i]]===k)a[e[i]]={};a=a[e[i]]}if(f.match(U))a[f.replace(U,"")](d);else a[f.replace(ba,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ja(a){return D(a.aoData,"_aData")}function na(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function oa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ca(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);
34
+ c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ha(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;Ka(a,e)}}function Ha(a,b,c,d){var e=[],f=b.firstChild,g,j,i=0,n,l=a.aoColumns,q=a._rowReadObject,d=d!==k?d:q?{}:[],t=function(a,b){if("string"===typeof a){var c=a.indexOf("@");
35
+ -1!==c&&(c=a.substring(c+1),R(a)(d,b.getAttribute(c)))}},m=function(a){if(c===k||c===i)j=l[i],n=h.trim(a.innerHTML),j&&j._bAttrSrc?(R(j.mData._)(d,n),t(j.mData.sort,a),t(j.mData.type,a),t(j.mData.filter,a)):q?(j._setter||(j._setter=R(j.mData)),j._setter(d,n)):d[i]=n;i++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)m(f),e.push(f);f=f.nextSibling}else{e=b.anCells;f=0;for(g=e.length;f<g;f++)m(e[f])}if(b=b.firstChild?b:b.nTr)(b=b.getAttribute("id"))&&R(a.rowId)(d,b);return{data:d,cells:e}}
36
+ function Ga(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],j,i,n,l,q;if(null===e.nTr){j=c||G.createElement("tr");e.nTr=j;e.anCells=g;j._DT_RowIndex=b;Ka(a,e);l=0;for(q=a.aoColumns.length;l<q;l++){n=a.aoColumns[l];i=c?d[l]:G.createElement(n.sCellType);i._DT_CellIndex={row:b,column:l};g.push(i);if((!c||n.mRender||n.mData!==l)&&(!h.isPlainObject(n.mData)||n.mData._!==l+".display"))i.innerHTML=B(a,b,l,"display");n.sClass&&(i.className+=" "+n.sClass);n.bVisible&&!c?j.appendChild(i):!n.bVisible&&c&&i.parentNode.removeChild(i);
37
+ n.fnCreatedCell&&n.fnCreatedCell.call(a.oInstance,i,B(a,b,l),f,b,l)}r(a,"aoRowCreatedCallback",null,[j,f,b])}e.nTr.setAttribute("role","row")}function Ka(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?qa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function jb(a){var b,c,d,e,f,g=a.nTHead,j=a.nTFoot,i=0===
38
+ h("th, td",g).length,n=a.oClasses,l=a.aoColumns;i&&(e=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),i&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),La(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Ma(a,"header")(a,d,f,n);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH);
39
+ if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var d,e,f,g=[],j=[],i=a.aoColumns.length,n;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);j.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(n=i=1,j[d][f]===k){a.appendChild(g[d][f].cell);
40
+ for(j[d][f]=1;g[d+i]!==k&&g[d][f].cell==g[d+i][f].cell;)j[d+i][f]=1,i++;for(;g[d][f+n]!==k&&g[d][f].cell==g[d][f+n].cell;){for(c=0;c<i;c++)j[d+c][f+n]=1;n++}h(g[d][f].cell).attr("rowspan",i).attr("colspan",n)}}}}function N(a){var b=r(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==y(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=
41
+ -1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ga(a,l);l=q.nTr;if(0!==e){var t=d[c%e];q._sRowStripe!=t&&(h(l).removeClass(q._sRowStripe).addClass(t),q._sRowStripe=t)}r(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords:
42
+ f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];r(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ja(a),g,n,i]);r(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ja(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));r(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function S(a,b){var c=a.oFeatures,d=c.bFilter;
43
+ c.bSort&&lb(a);d?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;N(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,k=0;k<f.length;k++){g=null;j=f[k];if("<"==j){i=h("<div/>")[0];
44
+ n=f[k+1];if("'"==n||'"'==n){l="";for(q=2;f[k+q]!=n;)l+=f[k+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;k+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=nb(a);else if("f"==j&&d.bFilter)g=ob(a);else if("r"==j&&d.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==j&&d.bInfo)g=rb(a);else if("p"==
45
+ j&&d.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q<n;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function da(a,b){var c=h(b).children("tr"),d,e,f,g,j,i,n,l,q,k;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan");
46
+ q=1*e.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;n=g;k=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][n+j]={cell:e,unique:k},a[f+g].nTr=d}e=e.nextSibling}}}function ra(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function sa(a,b,c){r(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={},
47
+ e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,j=a.oInstance,i=function(b){r(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var n=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&n?n:h.extend(!0,b,n);delete g.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&J(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=r(a,null,"xhr",
48
+ [a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==c?J(a,0,"Invalid JSON response",1):4===b.readyState&&J(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;r(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(n,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(n,g)),g.data=f)}function kb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,
49
+ !0),sa(a,tb(a),function(b){ub(a,b)}),!1):!0}function tb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,n,l,k=V(a);g=a._iDisplayStart;i=!1!==d.bPaginate?a._iDisplayLength:-1;var t=function(a,b){j.push({name:a,value:b})};t("sEcho",a.iDraw);t("iColumns",c);t("sColumns",D(b,"sName").join(","));t("iDisplayStart",g);t("iDisplayLength",i);var pa={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)n=b[g],
50
+ l=f[g],i="function"==typeof n.mData?"function":n.mData,pa.columns.push({data:i,name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),t("mDataProp_"+g,i),d.bFilter&&(t("sSearch_"+g,l.sSearch),t("bRegex_"+g,l.bRegex),t("bSearchable_"+g,n.bSearchable)),d.bSort&&t("bSortable_"+g,n.bSortable);d.bFilter&&(t("sSearch",e.sSearch),t("bRegex",e.bRegex));d.bSort&&(h.each(k,function(a,b){pa.order.push({column:b.col,dir:b.dir});t("iSortCol_"+a,b.col);t("sSortDir_"+
51
+ a,b.dir)}),t("iSortingCols",k.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:pa:b?j:pa}function ub(a,b){var c=ta(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}na(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)M(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;N(a);a._bInitComplete||
52
+ ua(a,b);a.bAjaxDataGet=!0;C(a,!1)}function ta(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?Q(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value?
53
+ "":this.value;b!=e.sSearch&&(fa(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,N(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,i=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",g?Na(f,g):f).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==G.activeElement&&i.val(e.sSearch)}catch(d){}});
54
+ return b[0]}function fa(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Fa(a);if("ssp"!=y(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)wb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered=!0;r(a,null,"search",[a])}function xb(a){for(var b=
55
+ m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var j=[],i=0,n=c.length;i<n;i++)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,i)&&j.push(e);c.length=0;h.merge(c,j)}}function wb(a,b,c,d,e,f){if(""!==b){for(var g=[],j=a.aiDisplay,d=Oa(b,d,e,f),e=0;e<j.length;e++)b=a.aoData[j[e]]._aFilterData[c],d.test(b)&&g.push(j[e]);a.aiDisplay=g}}function vb(a,b,c,d,e,f){var d=Oa(b,d,e,f),f=a.oPreviousSearch.sSearch,g=a.aiDisplayMaster,j,e=[];0!==m.ext.search.length&&(c=!0);j=yb(a);if(0>=b.length)a.aiDisplay=
56
+ g.slice();else{if(j||c||f.length>b.length||0!==b.indexOf(f)||a.bSorted)a.aiDisplay=g.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)d.test(a.aoData[b[c]]._sFilterRow)&&e.push(b[c]);a.aiDisplay=e}}function Oa(a,b,c,d){a=b?a:Pa(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function yb(a){var b=a.aoColumns,c,d,e,f,g,j,i,h,l=m.ext.type.search;c=!1;
57
+ d=0;for(f=a.aoData.length;d<f;d++)if(h=a.aoData[d],!h._aFilterData){j=[];e=0;for(g=b.length;e<g;e++)c=b[e],c.bSearchable?(i=B(a,d,e,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(va.innerHTML=i,i=Wb?va.textContent:va.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c}function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,
58
+ caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Bb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+
59
+ 1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,d,e,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,
60
+ f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ga(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ea(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=v(f.sWidth));r(a,null,"preInit",[a]);S(a);e=y(a);if("ssp"!=e||g)"ajax"==e?sa(a,[],function(c){var f=ta(a,c);for(b=0;b<f.length;b++)M(a,f[b]);a.iInitDisplayStart=
61
+ d;S(a);C(a,!1);ua(a,c)},a):(C(a,!1),ua(a))}else setTimeout(function(){ga(a)},200)}function ua(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Y(a);r(a,null,"plugin-init",[a,b]);r(a,"aoInitComplete","init",[a,b])}function Qa(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Ra(a);r(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)e[0][g]=
62
+ new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).on("change.DT",function(){Qa(a,h(this).val());N(a)});h(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){N(a)},
63
+ b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;l<k;l++)Ma(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Sa(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===
64
+ e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:J(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(r(a,null,"page",[a]),c&&N(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",
65
+ b?"block":"none");r(a,null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",
66
+ {"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:v(d)}).append(b));l&&i.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",
67
+ 0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],t=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(t.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=t;a.aoDrawCallback.push({fn:ka,sName:"scrolling"});return i[0]}function ka(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"),
68
+ j=a.nScrollBody,l=h(j),q=j.style,t=h(a.nScrollFoot).children("div"),m=t.children("table"),o=h(a.nTHead),p=h(a.nTable),s=p[0],r=s.style,u=a.nTFoot?h(a.nTFoot):null,x=a.oBrowser,T=x.bScrollOversize,Xb=D(a.aoColumns,"nTh"),O,K,P,w,Ta=[],y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};K=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==K&&a.scrollBarVis!==k)a.scrollBarVis=K,Y(a);else{a.scrollBarVis=K;p.children("thead, tfoot").remove();
69
+ u&&(P=u.clone().prependTo(p),O=u.find("tr"),P=P.find("tr"));w=o.clone().prependTo(p);o=o.find("tr");K=w.find("tr");w.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(ra(a,w),function(b,c){B=Z(a,b);c.style.width=a.aoColumns[B].sWidth});u&&H(function(a){a.style.width=""},P);f=p.outerWidth();if(""===c){r.width="100%";if(T&&(p.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(p.outerWidth()-b);f=p.outerWidth()}else""!==d&&(r.width=
70
+ v(d),f=p.outerWidth());H(C,K);H(function(a){z.push(a.innerHTML);Ta.push(v(h(a).css("width")))},K);H(function(a,b){if(h.inArray(a,Xb)!==-1)a.style.width=Ta[b]},o);h(K).height(0);u&&(H(C,P),H(function(a){A.push(a.innerHTML);y.push(v(h(a).css("width")))},P),H(function(a,b){a.style.width=y[b]},O),h(P).height(0));H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+z[b]+"</div>";a.style.width=Ta[b]},K);u&&H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+
71
+ A[b]+"</div>";a.style.width=y[b]},P);if(p.outerWidth()<f){O=j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(T&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(O-b);(""===c||""!==d)&&J(a,1,"Possible column misalignment",6)}else O="100%";q.width=v(O);g.width=v(O);u&&(a.nScrollFoot.style.width=v(O));!e&&T&&(q.height=v(s.offsetHeight+b));c=p.outerWidth();n[0].style.width=v(c);i.width=v(c);d=p.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+
72
+ (x.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";u&&(m[0].style.width=v(c),t[0].style.width=v(c),t[0].style[e]=d?b+"px":"0px");p.children("colgroup").insertBefore(p.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function H(a,b,c){for(var d=0,e=0,f=b.length,g,j;e<f;){g=b[e].firstChild;for(j=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,d):a(g,d),d++),g=g.nextSibling,j=c?j.nextSibling:null;e++}}function Ea(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,
73
+ e=d.sY,f=d.sX,g=d.sXInner,j=c.length,i=la(a,"bVisible"),n=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,t=!1,m,o,p=a.oBrowser,d=p.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<i.length;m++)o=c[i[m]],null!==o.sWidth&&(o.sWidth=Db(o.sWidthOrig,k),t=!0);if(d||!t&&!f&&!e&&j==aa(a)&&j==n.length)for(m=0;m<j;m++)i=Z(a,m),null!==i&&(c[i].sWidth=v(n.eq(m).width()));else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var s=h("<tr/>").appendTo(j.find("tbody"));
74
+ j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=ra(a,j.find("thead")[0]);for(m=0;m<i.length;m++)o=c[i[m]],n[m].style.width=null!==o.sWidthOrig&&""!==o.sWidthOrig?v(o.sWidthOrig):"",o.sWidthOrig&&f&&h(n[m]).append(h("<div/>").css({width:o.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m<i.length;m++)t=i[m],o=c[t],h(Eb(a,t)).clone(!1).append(o.sContentPadding).appendTo(s);h("[name]",
75
+ j).removeAttr("name");o=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()<k.clientWidth&&l&&j.width(k.clientWidth)):e?j.width(k.clientWidth):l&&j.width(l);for(m=e=0;m<i.length;m++)k=h(n[m]),g=k.outerWidth()-k.width(),k=p.bBounding?Math.ceil(n[m].getBoundingClientRect().width):k.outerWidth(),e+=k,c[i[m]].sWidth=v(k-g);b.style.width=v(e);o.remove()}l&&(b.style.width=
76
+ v(l));if((l||f)&&!a._reszEvt)b=function(){h(E).on("resize.DT-"+a.sInstance,Na(function(){Y(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",v(a)).appendTo(b||G.body),d=c[0].offsetWidth;c.remove();return d}function Eb(a,b){var c=Fb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Fb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace(Yb,
77
+ ""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=f);return e}function v(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function V(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){i=n[a][0];f=e[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=e[g].sType||
78
+ "string",n[a]._idx===k&&(n[a]._idx=h.inArray(n[a][1],e[g].asSorting)),d.push({src:i,col:g,dir:n[a][1],index:n[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return d}function lb(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;Fa(a);h=V(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Gb(a,j.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)d[i[b]]=b;g===h.length?i.sort(function(a,b){var c,e,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=
79
+ 0;g<i;g++)if(j=h[g],c=k[j.col],e=m[j.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,o=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=o[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Hb(a){for(var b,c,d=a.aoColumns,e=V(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,
80
+ "");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(i.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=j[e[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Ua(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,
81
+ D(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);S(a);"function"==typeof d&&d(a)}function La(a,b,c,d){var e=a.aoColumns[c];Va(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,d))})}
82
+ function wa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=V(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)g=d[e].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Gb(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],
83
+ c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[j]:B(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function xa(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[d])}})};r(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,
84
+ b)}}function Ib(a,b,c){var d,e,f=a.aoColumns,b=function(b){if(b&&b.time){var g=r(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1===h.inArray(!1,g)&&(g=a.iStateDuration,!(0<g&&b.time<+new Date-1E3*g)&&!(b.columns&&f.length!==b.columns.length))){a.oLoadedState=h.extend(!0,{},b);b.start!==k&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==k&&(a._iDisplayLength=b.length);b.order!==k&&(a.aaSorting=[],h.each(b.order,function(b,c){a.aaSorting.push(c[0]>=f.length?[0,c[1]]:c)}));b.search!==
85
+ k&&h.extend(a.oPreviousSearch,Ab(b.search));if(b.columns){d=0;for(e=b.columns.length;d<e;d++)g=b.columns[d],g.visible!==k&&(f[d].bVisible=g.visible),g.search!==k&&h.extend(a.aoPreSearchCols[d],Ab(g.search))}r(a,"aoStateLoaded","stateLoaded",[a,b])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==k&&b(g)}else c()}function ya(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function J(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+
86
+ " - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)E.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&r(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function F(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?F(a,b,d[0],d[1]):F(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Jb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],
87
+ h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Va(a,b,c){h(a).on("click.DT",b,function(b){a.blur();c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function r(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+
88
+ ".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Ra(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Ma(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ha(a,b){var c=[],c=Kb.numbers_length,d=Math.floor(c/2);b<=c?c=W(0,b):a<=d?(c=W(0,
89
+ c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=W(b-(c-2),b):(c=W(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function cb(a){h.each({num:function(b){return za(b,a)},"num-fmt":function(b){return za(b,a,Wa)},"html-num":function(b){return za(b,a,Aa)},"html-num-fmt":function(b){return za(b,a,Aa,Wa)}},function(b,c){x.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(x.type.search[b+a]=x.type.search.html)})}function Lb(a){return function(){var b=
90
+ [ya(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new s(ya(this[x.iApiIndex])):new s(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=
91
+ function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ka(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};
92
+ this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();
93
+ return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ya(this[x.iApiIndex])};
94
+ this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=x.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=x.internal;for(var e in m.ext.internal)e&&(this[e]=Lb(e));this.each(function(){var e={},g=1<d?Jb(e,a,!0):
95
+ a,j=0,i,e=this.getAttribute("id"),n=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())J(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{db(l);eb(l.column);I(l,l,!0);I(l.column,l.column,!0);I(l,h.extend(g,q.data()));var t=m.settings,j=0;for(i=t.length;j<i;j++){var o=t[j];if(o.nTable==this||o.nTHead.parentNode==this||o.nTFoot&&o.nTFoot.parentNode==this){var s=g.bRetrieve!==k?g.bRetrieve:l.bRetrieve;if(c||s)return o.oInstance;if(g.bDestroy!==k?g.bDestroy:l.bDestroy){o.oInstance.fnDestroy();
96
+ break}else{J(o,0,"Cannot reinitialise DataTable",3);return}}if(o.sTableId==this.id){t.splice(j,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+m.ext._unique++;var p=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:e,sTableId:e});p.nTable=this;p.oApi=b.internal;p.oInit=g;t.push(p);p.oInstance=1===b.length?b:q.dataTable();db(g);g.oLanguage&&Ca(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=h.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);
97
+ g=Jb(h.extend(!0,{},l),g);F(p.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));F(p,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],
98
+ ["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);F(p.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(p.oLanguage,g,"fnInfoCallback");z(p,"aoDrawCallback",g.fnDrawCallback,"user");z(p,"aoServerParams",g.fnServerParams,"user");z(p,"aoStateSaveParams",g.fnStateSaveParams,"user");z(p,"aoStateLoadParams",g.fnStateLoadParams,"user");z(p,"aoStateLoaded",g.fnStateLoaded,"user");z(p,"aoRowCallback",
99
+ g.fnRowCallback,"user");z(p,"aoRowCreatedCallback",g.fnCreatedRow,"user");z(p,"aoHeaderCallback",g.fnHeaderCallback,"user");z(p,"aoFooterCallback",g.fnFooterCallback,"user");z(p,"aoInitComplete",g.fnInitComplete,"user");z(p,"aoPreDrawCallback",g.fnPreDrawCallback,"user");p.rowIdFn=Q(g.rowId);fb(p);var u=p.oClasses;h.extend(u,m.ext.classes,g.oClasses);q.addClass(u.sTable);p.iInitDisplayStart===k&&(p.iInitDisplayStart=g.iDisplayStart,p._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(p.bDeferLoading=
100
+ !0,e=h.isArray(g.iDeferLoading),p._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,p._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var v=p.oLanguage;h.extend(!0,v,g.oLanguage);v.sUrl&&(h.ajax({dataType:"json",url:v.sUrl,success:function(a){Ca(a);I(l.oLanguage,a);h.extend(true,v,a);ga(p)},error:function(){ga(p)}}),n=!0);null===g.asStripeClasses&&(p.asStripeClasses=[u.sStripeOdd,u.sStripeEven]);var e=p.asStripeClasses,x=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(e,function(a){return x.hasClass(a)}))&&
101
+ (h("tbody tr",this).removeClass(e.join(" ")),p.asDestroyStripes=e.slice());e=[];t=this.getElementsByTagName("thead");0!==t.length&&(da(p.aoHeader,t[0]),e=ra(p));if(null===g.aoColumns){t=[];j=0;for(i=e.length;j<i;j++)t.push(null)}else t=g.aoColumns;j=0;for(i=t.length;j<i;j++)Da(p,e?e[j]:null);hb(p,g.aoColumnDefs,t,function(a,b){ja(p,a,b)});if(x.length){var w=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(x[0]).children("th, td").each(function(a,b){var c=p.aoColumns[a];if(c.mData===
102
+ a){var d=w(b,"sort")||w(b,"order"),e=w(b,"filter")||w(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ja(p,a)}}})}var T=p.oFeatures,e=function(){if(g.aaSorting===k){var a=p.aaSorting;j=0;for(i=a.length;j<i;j++)a[j][1]=p.aoColumns[j].asSorting[0]}wa(p);T.bSort&&z(p,"aoDrawCallback",function(){if(p.bSorted){var a=V(p),b={};h.each(a,function(a,c){b[c.src]=c.dir});r(p,null,"order",[p,a,b]);Hb(p)}});
103
+ z(p,"aoDrawCallback",function(){(p.bSorted||y(p)==="ssp"||T.bDeferRender)&&wa(p)},"sc");var a=q.children("caption").each(function(){this._captionSide=h(this).css("caption-side")}),b=q.children("thead");b.length===0&&(b=h("<thead/>").appendTo(q));p.nTHead=b[0];b=q.children("tbody");b.length===0&&(b=h("<tbody/>").appendTo(q));p.nTBody=b[0];b=q.children("tfoot");if(b.length===0&&a.length>0&&(p.oScroll.sX!==""||p.oScroll.sY!==""))b=h("<tfoot/>").appendTo(q);if(b.length===0||b.children().length===0)q.addClass(u.sNoFooter);
104
+ else if(b.length>0){p.nTFoot=b[0];da(p.aoFooter,p.nTFoot)}if(g.aaData)for(j=0;j<g.aaData.length;j++)M(p,g.aaData[j]);else(p.bDeferLoading||y(p)=="dom")&&ma(p,h(p.nTBody).children("tr"));p.aiDisplay=p.aiDisplayMaster.slice();p.bInitialised=true;n===false&&ga(p)};g.bStateSave?(T.bStateSave=!0,z(p,"aoDrawCallback",xa,"state_save"),Ib(p,g,e)):e()}});b=null;return this},x,s,o,u,Xa={},Mb=/[\r\n]/g,Aa=/<.*?>/g,Zb=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,$b=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)",
105
+ "g"),Wa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,L=function(a){return!a||!0===a||"-"===a?!0:!1},Nb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Ob=function(a,b){Xa[b]||(Xa[b]=RegExp(Pa(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Xa[b],"."):a},Ya=function(a,b,c){var d="string"===typeof a;if(L(a))return!0;b&&d&&(a=Ob(a,b));c&&d&&(a=a.replace(Wa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Pb=function(a,b,c){return L(a)?!0:!(L(a)||"string"===
106
+ typeof a)?null:Ya(a.replace(Aa,""),b,c)?!0:null},D=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},ia=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},W=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Qb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);
107
+ return b},qa=function(a){var b;a:{if(!(2>a.length)){b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];var e=a.length,f,g=0,d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b};m.util={throttle:function(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,j=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=k;a.apply(b,j)},c)):(d=g,a.apply(b,j))}},escapeRegex:function(a){return a.replace($b,
108
+ "\\$1")}};var A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,U=/\(\)$/,Pa=m.util.escapeRegex,va=h("<div>")[0],Wb=va.textContent!==k,Yb=/<.*?>/g,Na=m.util.throttle,Rb=[],w=Array.prototype,ac=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof
109
+ h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};s=function(a,b){if(!(this instanceof s))return new s(a,b);var c=[],d=function(a){(a=ac(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=qa(c);b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};s.extend(this,this,Rb)};m.Api=s;h.extend(s.prototype,{any:function(){return 0!==this.count()},concat:w.concat,context:[],count:function(){return this.flatten().length},
110
+ each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new s(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new s(this.context,b)},flatten:function(){var a=[];return new s(this.context,a.concat.apply(a,this.toArray()))},join:w.join,indexOf:w.indexOf||function(a,b){for(var c=b||0,
111
+ d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,j,h,n,l=this.context,m,o,u=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(j=l.length;g<j;g++){var r=new s(l[g]);if("table"===b)f=c.call(r,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(r,l[g],this[g],g),f!==k&&e.push(f);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){o=this[g];"column-rows"===b&&(m=Ba(l[g],u.opts));h=0;for(n=o.length;h<n;h++)f=o[h],f=
112
+ "cell"===b?c.call(r,l[g],f.row,f.column,g,h):c.call(r,l[g],f,g,h,m),f!==k&&e.push(f)}}return e.length||d?(a=new s(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=u.rows,b.cols=u.cols,b.opts=u.opts,a):this},lastIndexOf:w.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(w.map)b=w.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new s(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},
113
+ pop:w.pop,push:w.push,reduce:w.reduce||function(a,b){return gb(this,a,b,0,this.length,1)},reduceRight:w.reduceRight||function(a,b){return gb(this,a,b,this.length-1,-1,-1)},reverse:w.reverse,selector:null,shift:w.shift,slice:function(){return new s(this.context,this)},sort:w.sort,splice:w.splice,toArray:function(){return w.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},unique:function(){return new s(this.context,qa(this))},unshift:w.unshift});s.extend=function(a,
114
+ b,c){if(c.length&&b&&(b instanceof s||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);s.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,s.extend(a,b[f.name],f.propExt)}};s.register=o=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<d;c++)s.register(a[c],b);else for(var e=a.split("."),f=Rb,g,j,c=0,d=e.length;c<d;c++){g=(j=-1!==
115
+ e[c].indexOf("()"))?e[c].replace("()",""):e[c];var i;a:{i=0;for(var n=f.length;i<n;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===d-1?i.val=b:f=j?i.methodExt:i.propExt}};s.registerPlural=u=function(a,b,c){s.register(a,c);s.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof s?a.length?h.isArray(a[0])?new s(a.context,a[0]):a[0]:k:a})};o("tables()",function(a){var b;if(a){b=s;var c=this.context;if("number"===
116
+ typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});o("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new s(b[0]):a});u("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});u("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});u("tables().header()",
117
+ "table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});u("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});u("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});o("draw()",function(a){return this.iterator("table",function(b){"page"===a?N(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),S(b,!1===a))})});o("page()",function(a){return a===
118
+ k?this.page.info().page:this.iterator("table",function(b){Sa(b,a)})});o("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===y(a)}});o("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:
119
+ k:this.iterator("table",function(b){Qa(b,a)})});var Sb=function(a,b,c){if(c){var d=new s(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))S(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();sa(a,[],function(c){na(a);for(var c=ta(a,c),d=0,e=c.length;d<e;d++)M(a,c[d]);S(a,b);C(a,!1)})}};o("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});o("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});o("ajax.reload()",function(a,
120
+ b){return this.iterator("table",function(c){Sb(c,!1===b,a)})});o("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});o("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Sb(c,!1===b,a)})});var Za=function(a,b,c,d,e){var f=[],g,j,i,n,l,m;i=typeof b;if(!b||"string"===i||"function"===
121
+ i||b.length===k)b=[b];i=0;for(n=b.length;i<n;i++){j=b[i]&&b[i].split&&!b[i].match(/[\[\(:]/)?b[i].split(","):[b[i]];l=0;for(m=j.length;l<m;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&(f=f.concat(g))}a=x.selector[a];if(a.length){i=0;for(n=a.length;i<n;i++)f=a[i](d,e,f)}return qa(f)},$a=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=
122
+ a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ba=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===j?[]:W(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==d||"applied"==d)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<
123
+ d;c++)"none"==j?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==j||0<=e&&"applied"==j)&&f.push(c))}return f};o("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=b,f;return Za("row",a,function(a){var b=Nb(a);if(b!==null&&!e)return[b];f||(f=Ba(c,e));if(b!==null&&h.inArray(b,f)!==-1)return[b];if(a===null||a===k||a==="")return f;if(typeof a==="function")return h.map(f,function(b){var e=c.aoData[b];return a(b,e._aData,e.nTr)?b:null});
124
+ b=Qb(ia(c.aoData,f,"nTr"));if(a.nodeName){if(a._DT_RowIndex!==k)return[a._DT_RowIndex];if(a._DT_CellIndex)return[a._DT_CellIndex.row];b=h(a).closest("*[data-dt-row]");return b.length?[b.data("dt-row")]:[]}if(typeof a==="string"&&a.charAt(0)==="#"){var i=c.aIds[a.replace(/^#/,"")];if(i!==k)return[i.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});o("rows().nodes()",function(){return this.iterator("row",function(a,
125
+ b){return a.aoData[b].nTr||k},1)});o("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});u("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});u("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ca(b,c,a)})});u("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,
126
+ b){return b},1)});u("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new s(c,b)});u("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,h,i,n,l;e.splice(c,1);g=0;for(h=e.length;g<h;g++)if(i=e[g],l=i.anCells,null!==i.nTr&&(i.nTr._DT_RowIndex=g),null!==l){i=0;for(n=l.length;i<
127
+ n;i++)l[i]._DT_CellIndex.row=g}oa(b.aiDisplayMaster,c);oa(b.aiDisplay,c);oa(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;Ra(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});o("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(M(b,c));return h},1),c=this.rows(-1);
128
+ c.pop();h.merge(c,b);return c});o("row()",function(a,b){return ab(this.rows(a,b))});o("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});o("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});o("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&
129
+ "TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:M(b,a)});return this.row(b[0])});var bb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Tb=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new s(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,
130
+ "_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&bb(f,c)}))}}};o("row().child()",function(a,b){var c=this.context;
131
+ if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)bb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=aa(d),e.push(c[0]))};f(a,b);c._details&&c._details.detach();c._details=h(e);c._detailsShow&&
132
+ c._details.insertAfter(c.nTr)}return this});o(["row().child.show()","row().child().show()"],function(){Tb(this,!0);return this});o(["row().child.hide()","row().child().hide()"],function(){Tb(this,!1);return this});o(["row().child.remove()","row().child().remove()"],function(){bb(this);return this});o("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var bc=/^([^:]+):(name|visIdx|visible)$/,Ub=function(a,b,c,d,e){for(var c=
133
+ [],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));return c};o("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return Za("column",e,function(a){var b=Nb(a);if(a==="")return W(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Ba(c,f);return h.map(g,function(b,f){return a(f,Ub(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(bc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=
134
+ parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[Z(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});u("columns().header()",
135
+ "column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});u("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});u("columns().data()","column().data()",function(){return this.iterator("column-rows",Ub,1)});u("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});u("columns().cache()","column().cache()",
136
+ function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});u("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ia(a.aoData,e,"anCells",b)},1)});u("columns().visible()","column().visible()",function(a,b){var c=this.iterator("column",function(b,c){if(a===k)return b.aoColumns[c].bVisible;var f=b.aoColumns,g=f[c],j=b.aoData,i,n,l;if(a!==k&&g.bVisible!==a){if(a){var m=
137
+ h.inArray(!0,D(f,"bVisible"),c+1);i=0;for(n=j.length;i<n;i++)l=j[i].nTr,f=j[i].anCells,l&&l.insertBefore(f[c],f[m]||null)}else h(D(b.aoData,"anCells",c)).detach();g.bVisible=a;ea(b,b.aoHeader);ea(b,b.aoFooter);xa(b)}});a!==k&&(this.iterator("column",function(c,e){r(c,null,"column-visibility",[c,e,a,b])}),(b===k||b)&&this.columns.adjust());return c});u("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});o("columns.adjust()",
138
+ function(){return this.iterator("table",function(a){Y(a)},1)});o("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return Z(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});o("column()",function(a,b){return ab(this.columns(a,b))});o("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=$a(c),f=
139
+ b.aoData,g=Ba(b,e),j=Qb(ia(f,g,"anCells")),i=h([].concat.apply([],j)),l,n=b.aoColumns.length,m,o,u,s,r,v;return Za("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){m=[];o=0;for(u=g.length;o<u;o++){l=g[o];for(s=0;s<n;s++){r={row:l,column:s};if(c){v=f[l];a(r,B(b,l,s),v.anCells?v.anCells[s]:null)&&m.push(r)}else m.push(r)}}return m}if(h.isPlainObject(a))return[a];c=i.filter(a).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length||
140
+ !a.nodeName)return c;v=h(a).closest("*[data-dt-row]");return v.length?[{row:v.data("dt-row"),column:v.data("dt-column")}]:[]},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,j,i,n,l=this.iterator("table",function(a,b){f=[];g=0;for(j=e[b].length;g<j;g++){i=0;for(n=d[b].length;i<n;i++)f.push({row:e[b][g],column:d[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});u("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&
141
+ a.anCells?a.anCells[c]:k},1)});o("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});u("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});u("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});u("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,
142
+ b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});u("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ca(b,c,a,d)})});o("cell()",function(a,b,c){return ab(this.cells(a,b,c))});o("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;ib(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});o("order()",function(a,b){var c=this.context;if(a===k)return 0!==
143
+ c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:a.length&&!h.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});o("order.listener()",function(a,b,c){return this.iterator("table",function(d){La(d,a,b,c)})});o("order.fixed()",function(a){if(!a){var b=this.context,b=b.length?b[0].aaSortingFixed:k;return h.isArray(b)?{pre:b}:b}return this.iterator("table",function(b){b.aaSortingFixed=h.extend(!0,{},a)})});o(["columns().order()",
144
+ "column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});o("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&fa(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});u("columns().search()","column().search()",function(a,
145
+ b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),fa(e,e.oPreviousSearch,1))})});o("state()",function(){return this.context.length?this.context[0].oSavedState:null});o("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});o("state.loaded()",function(){return this.context.length?
146
+ this.context[0].oLoadedState:null});o("state.save()",function(){return this.iterator("table",function(a){xa(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;if(a instanceof m.Api)return!0;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?
147
+ h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new s(c):c};m.camelToHungarian=I;o("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){o(b+"()",function(){var a=Array.prototype.slice.call(arguments);
148
+ a[0]=h.map(a[0].split(/\s/),function(a){return!a.match(/\.dt\b/)?a+".dt":a}).join(" ");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});o("clear()",function(){return this.iterator("table",function(a){na(a)})});o("settings()",function(){return new s(this.context,this.context)});o("init()",function(){var a=this.context;return a.length?a[0].oInit:null});o("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});o("destroy()",function(a){a=a||
149
+ !1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),o;b.bDestroying=!0;r(b,"aoDestroyCallback","destroy",[b]);a||(new s(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");h(E).off(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));
150
+ b.aaSorting=[];b.aaSortingFixed=[];wa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",b.sDestroyWidth).removeClass(d.sTable),(o=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%o])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,
151
+ 1)})});h.each(["column","row","cell"],function(a,b){o(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,n){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,n)})})});o("i18n()",function(a,b,c){var d=this.context[0],a=Q(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.16";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow=
152
+ {nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,
153
+ sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
154
+ this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+
155
+ "_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",
156
+ sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};
157
+ X(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};X(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,
158
+ bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],
159
+ aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,
160
+ aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,
161
+ b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=x={buttons:{},classes:{},build:"dt/dt-1.10.16",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},
162
+ order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(x,{afnFiltering:x.search,aTypes:x.type.detect,ofnSearch:x.type.search,oSort:x.type.order,afnSortData:x.order,aoFeatures:x.feature,oApi:x.internal,oStdClasses:x.classes,oPagination:x.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",
163
+ sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",
164
+ sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Kb=m.ext.pager;h.extend(Kb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ha(a,
165
+ b)]},simple_numbers:function(a,b){return["previous",ha(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ha(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ha(a,b),"last"]},_numbers:ha,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},n,l,m=0,o=function(b,d){var k,s,u,r,v=function(b){Sa(a,b.data.action,true)};k=0;for(s=d.length;k<s;k++){r=d[k];if(h.isArray(r)){u=
166
+ h("<"+(r.DT_el||"div")+"/>").appendTo(b);o(u,r)}else{n=null;l="";switch(r){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":n=j.sFirst;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":n=j.sPrevious;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":n=j.sNext;l=r+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":n=j.sLast;l=r+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:n=r+1;l=e===r?g.sPageButtonActive:""}if(n!==null){u=h("<a>",{"class":g.sPageButton+
167
+ " "+l,"aria-controls":a.sTableId,"aria-label":i[r],"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof r==="string"?a.sTableId+"_"+r:null}).html(n).appendTo(b);Va(u,{action:r},v);m++}}}},s;try{s=h(b).find(G.activeElement).data("dt-idx")}catch(u){}o(h(b).empty(),d);s!==k&&h(b).find("[data-dt-idx="+s+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&!Zb.test(a))return null;var b=Date.parse(a);
168
+ return null!==b&&!isNaN(b)||L(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c,!0)?"html-num-fmt"+c:null},function(a){return L(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return L(a)?a:"string"===typeof a?a.replace(Mb," ").replace(Aa,""):""},string:function(a){return L(a)?
169
+ a:"string"===typeof a?a.replace(Mb," "):a}});var za=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Ob(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(x.type.order,{"date-pre":function(a){return Date.parse(a)||-Infinity},"html-pre":function(a){return L(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return L(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<
170
+ b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});cb("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);
171
+ h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Vb=function(a){return"string"===typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,
172
+ "&quot;"):a};m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Vb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Vb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Lb,_fnBuildAjax:sa,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub,
173
+ _fnAjaxDataSrc:ta,_fnAddColumn:Da,_fnColumnOptions:ja,_fnAdjustColumnSizing:Y,_fnVisibleToColumnIndex:Z,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:la,_fnColumnTypes:Fa,_fnApplyColumnDefs:hb,_fnHungarianMap:X,_fnCamelToHungarian:I,_fnLanguageCompat:Ca,_fnBrowserDetect:fb,_fnAddData:M,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:ib,
174
+ _fnSplitObjNotation:Ia,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:R,_fnGetDataMaster:Ja,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:Ha,_fnCreateTr:Ga,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:N,_fnReDraw:S,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:ra,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Oa,_fnEscapeRegex:Pa,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga,
175
+ _fnInitComplete:ua,_fnLengthChange:Qa,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Sa,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:ka,_fnApplyToChildren:H,_fnCalculateColumnWidths:Ea,_fnThrottle:Na,_fnConvertToWidth:Db,_fnGetWidestNode:Eb,_fnGetMaxLenString:Fb,_fnStringToCss:v,_fnSortFlatten:V,_fnSort:lb,_fnSortAria:Hb,_fnSortListener:Ua,_fnSortAttachListener:La,_fnSortingClasses:wa,_fnSortData:Gb,_fnSaveState:xa,_fnLoadState:Ib,_fnSettingsFromNode:ya,
176
+ _fnLog:J,_fnMap:F,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:r,_fnLengthOverflow:Ra,_fnRenderer:Ma,_fnDataSource:y,_fnRowAttributes:Ka,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable});
177
+
178
+
js/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()});
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: calendar, date, event, event calendar, events, events calendar, meeting, o
4
  Requires at least: 3.9
5
  Tested up to: 4.9
6
  Requires PHP: 5.2
7
- Stable tag: 1.1.15
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -18,11 +18,11 @@ Event Calendar WD is a responsive calendar plugin for organizing events. This Wo
18
 
19
  = Event Calendar WD =
20
 
21
- [Special Offer for all Premium Plugins](https://web-dorado.com/wordpress-plugins-bundle.html)
22
- [WordPress Event Calendar WD](http://web-dorado.com/products/wordpress-event-calendar-wd.html)
23
- [Demo](http://wpdemo.web-dorado.com/event-calendar-wd/)
24
- [User Guide](https://web-dorado.com/wordpress-event-calendar-wd/installing.html)
25
- [Support Forum](https://wordpress.org/support/plugin/event-calendar-wd)
26
 
27
 
28
  https://www.youtube.com/watch?v=htmdAkRuIzw
@@ -32,23 +32,23 @@ Event Calendar WD is a user friendly plugin to create an event promotion website
32
 
33
 
34
  == Benefits ==
35
- * **Organize as many events as you wish** - With Event Calendar WD you can add unlimited number of events and calendars to your website. Whether you want to go for a one-time event, or add calendars to multiple posts and pages, that’s absolutely doable.
36
- * **Events are easier to find** - Event Calendar WD is SEO-friendly, which means every event you add to your website is optimized for better visibility in search results.
37
- * **Leverage power of social networks** - Don’t let your events go unnoticed. Enable social sharing buttons option on the calendar, and spread a word about your events across the major social platforms. Also, you can sell event tickets directly from your website if you get the Event Tickets Add-on available for the Premium version users.
38
  * **Attract with detailed descriptions** - Give your visitors the most important information they need to know about any event. Provide event venue, mention the hosts and organizers, include images, relevant videos, event link, and mark up the event location on the Google Map.
39
- * **Distinct appearance** - With the available view options, themes and the extensive list of the customization settings, you can fully personalize your calendars and give them a distinct look.
40
- * **Full Control and flexibility** - Event Calendar WD is highly configurable, meaning you’ll get full control over how you display the events and calendars on your site. The user-friendly interface of the plugin, will make it easy to manage and customize your calendars.
41
- * **Support** - The team provides timely and effective support to all its users. We keep standards high and response time low.
42
 
43
 
44
  == What’s in it ==
45
-
46
  = RESPONSIVE LAYOUT =
47
- Event Calendar WD is responsive, designed to provide flawless calendar display across various devices and screen sizes.
48
 
49
  = UNLIMITED EVENTS AND CALENDARS =
50
 
51
- The number of the events as well as the calendars you can add to your website has no limit. Go ahead and fill your website with as many calendars as you want.
52
 
53
  = EVENT CATEGORIES AND TAGS =
54
 
@@ -56,23 +56,23 @@ Organizing events on your calendars is super easy. You can assign categories to
56
 
57
  = MULTIPLE EVENT DISPLAY VIEWS =
58
 
59
- With Event Calendar WD you can have your calendars displayed in a number of cool views. Currently Month, Week, Day and List views are available in the free option of the plugin, whereas Posterboard, 4-Days and Map views come with the premium option.
60
 
61
  = RECURRING EVENTS =
62
 
63
- If you want to display repeating events on your calendar which are held on a regular basis recurring events option will save you a great deal of time (Premium version). Just specify the event repeating rate under the evet settings and it will automatically be displayed on the calendar.
64
 
65
- = SOCIAL SHARING =
66
 
67
- You can display social sharing buttons on the calendars and let your visitors share your events on Facebook, Google Plus, and Twitter with just a click.
68
 
69
  = CALENDAR WIDGET =
70
 
71
- The calendars are added to the posts and pages with a shortcode, but if you want to display a nice calendar widget on the sidebar areas of your site, you can publish the calendar as a widget.
72
 
73
  = CUSTOMIZABLE THEMES =
74
 
75
- The Premium version of the plugin comes with five customizable calendar themes, that let you personalize the design of you calendars. You can set custom settings for almost every part of the calendar, including overall calendar colors, header, views,pagination, and events. Moreover, you can add new calendar themes with your own styling features.
76
 
77
  = GOOGLE MAPS INTEGRATION =
78
 
@@ -82,49 +82,49 @@ The plugin is integrated with Google Maps to help you display event locations. S
82
 
83
  If you want some additional functionality, like displaying upcoming events, selling online tickets, showing countdown for the events, and let your visitors add events on the calendar from the frontend, there are 14 available add-ons to choose from. Please note that calendar add-ons work with Premium version only. Find the full list of the add-on below.
84
 
85
- [Event Tickets](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/event-tickets.html)
86
- [Frontend Event Management](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/frontend-event-management.html)
87
- [Upcoming Events Widget](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/upcoming-events.html)
88
- [Filter](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/filter.html)
89
- [Subscribe](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/subscribe.html)
90
- [Countdown](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/countdown.html)
91
- [Google Calendar Integration](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/google-calendar-integration.html)
92
- [iCal Integration](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/ical-integration.html)
93
- [Facebook Integration](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/facebook-integration.html)
94
- [Import/Export](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/import-export.html)
95
- [Custom Fields](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/custom-fields.html)
96
- [Views](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/views.html)
97
- [Export to GCal/ICal](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/export.html)
98
- [Embed](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/embed.html)
99
 
100
  = SETTINGS/CUSTOMIZATION =
101
  *Some customizations described here are available in Premium version. Please refer to feature summary for additional info.
102
 
103
- You can add calendars to your website either by inserting the generated shortcode into your posts and pages, or display it as a widget on the sidebar areas of your site. The admin panel of the plugin is pretty straightforward and user-friendly. To add a new calendar you just have to go to the admin panel, click on the “Add a new Calendar” tab and it will open up a new page. Afterwards you need to give a title to the calendar and choose a theme for it. Once you’re done you can preview the calendar, save it as a draft, or publish it right away. You can add events to the calendar either from the admin panel and later assign them to the selected calendars, or by clicking on the date on the calendar itself. To have your event added to the calendar , you need to specify the event name,choose the dates, select the event venue,provide a URL and a relevant video URL if available.For recurring events, you just need to specify the event repeating cycles, such as daily, weekly, monthly, or yearly. Under the settings tab you’ll find an extensive list of the general settings for the calendars that you can adjust to your needs. Here you can select the date display format, enable comments for the events, choose how the events will be organized, enable social icons, and a lot more. You can create new event categories and tags by giving them a title, adding a slug and a description. You can apply the tags and categories to multiple events at ones. For more information about the customization of the calendar settings, please refer to the plugin installation instructions below.
104
 
105
 
106
- [Premium version adds](http://web-dorado.com/products/wordpress-event-calendar-wd.html)
107
 
108
- * Recurring events
109
- * 5 beautiful customizable themes
110
- * 3 premium views: Posterboard, 4-days and Map
111
- * 14 add-ons to expand default functionality
112
 
113
 
114
- ###IMPORTANT:
115
  If you think you found a bug in Event Calendar WD, or have a problem/question concerning the plugin, please check out [Support Forum](https://wordpress.org/support/plugin/event-calendar-wd) . In case you do not find a solution here, feel free to contact us using [this form](https://web-dorado.com/support/contact-us.html).
116
 
117
 
118
-
119
  == Screenshots ==
120
 
121
- 1. WordPress Event Calendar WD - Grey theme
122
- 2. WordPress Event Calendar WD - Calendar
123
- 3. WordPress Event Calendar WD - Calendar With Filter
124
- 4. WordPress Event Calendar WD - Week View
125
- 5. WordPress Event Calendar WD - Event
126
- 6. WordPress Event Calendar WD - Theme Settings
127
- 7. WordPress Event Calendar WD - Create Event
128
  8. WordPress Event Calendar WD - Edit Venue
129
 
130
  == Frequently Asked Questions ==
@@ -269,367 +269,430 @@ This add-on comes handy, when you require meeting scheduling and appointment boo
269
 
270
  Tune up Event Calendar WD Pro with Frontend Event Management add-on, and set up a powerful online reservation calendar on your WordPress website!
271
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
 
273
 
274
  == Installation ==
275
 
276
- #### Thank you for your interest in Event Calendar WD.
277
 
278
- ### Minimum requirements.
279
- * Wordpress 3.9+
280
- * PHP 5.x
281
- * MySQL 5.x
282
 
283
- ### Perform a new installation
284
 
285
- After downloading the ZIP file of the Event Calendar WD plugin,
286
 
287
- 1. Log in to the administrator panel.
288
- 2. Go to Plugins Add > New > Upload.
289
- 3. Click "Choose file" ("Browse") and select the downloaded zip file of the event calendar.
290
- *For Mac Users*
291
- *Go to your Downloads folder and locate the folder with the Event Calendar WD. Right-click on the folder and select Compress. Now you have a newly created .zip file which can be installed as described here.*
292
- 4. Click "Install Now" button.
293
- 5. Click "Activate Plugin" button for activating the Event Calendar WD.
294
  6. If the installation does not succeed, please [click here to contact us](https://web-dorado.com/support/contact-us.html).
295
 
 
 
 
296
  == Changelog ==
297
 
 
 
 
 
 
 
 
 
 
 
 
298
  = 1.1.15 ==
299
- * Improved: Fully translatable calendar plugin and extensions. Suggest your translations here: https://translate.wordpress.org/projects/wp-plugins/event-calendar-wd
300
- * Improved: Frontend styles of single event, venue and organizer CPT
301
- * Changed: Styles of filters extension (Premium)
302
- * Changed: Some metaboxes moved to higher position
303
 
304
  = 1.1.14 =
305
- * Changed: create_function is deprecated in PHP 7.2
306
- * Changed: Sort organizers and venues by title not slug in post type archive
307
- * Improved: Styles of Gutenberg block popup
308
- * Fixed: Styles of free and premium versions synchronized
309
 
310
  = 1.1.13 =
311
- * Added: Gutenberg integration
312
- * Fixed: Google Maps zoom
313
- * Improved: Russian translation
314
 
315
  = 1.1.12 =
316
- * Improved: Change default calendar using calendar list in dashboard
317
- * Changed: Calendar add-ons and themes do not have separate menu anymore
318
- * Changed: Updates and functionality removed (Premium)
319
 
320
  = 1.1.11 =
321
- * Fixed: Bug on PHP 5.3 version
322
 
323
  = 1.1.10 =
324
- * Changed: Introducing brand new free plugin: SEO by 10Web
325
 
326
  = 1.1.9 =
327
- * Changed: Deactivation popup.
328
- * Fixed: Notice in single event page.
329
 
330
  = 1.1.8 =
331
- * Changed: Web-Dorado links
332
 
333
  = 1.1.7 =
334
- * New: Option to set zoom level in maps view (Pro)
335
- * Fixed: Map displayed without any event for that month (Pro)
336
- * Changed: Minor: WD library updated to version 1.0.12
337
 
338
  = 1.1.6 =
339
- * Fixed: Conflict with some plugins on calendar frontend
340
 
341
  = 1.1.5 =
342
- * Changed: Show notification to install Backup WD plugin only on plugin pages.
343
 
344
  = 1.1.4 =
345
- * Changed: Introducing Backup WD plugin
346
 
347
  = 1.1.3 =
348
  * Changed: Redirect after activation removed
349
  * Changed: WD library updated to version 1.0.11
350
 
351
  = 1.1.2 =
352
- * New: Option to show event timezones on frontend
353
 
354
  = 1.1.1 =
355
- * Changed: Add "ecwd_hide_old_events"=1 as a custom meta field to calendar in order to hide past events and months
356
- * Fixed: PHP notice in events category page when there is no event
357
- * Fixed: JS error when trying to save event with no date
358
- * Fixed: DB changes on silent activation
359
- * Improved: Compatibility of templates for single event and event taxonomy with WooCommerce-compatible themes
360
 
361
  = 1.1.0 =
362
- * Changed: Improved UI of venue editor in event page
363
- * Fixed: Displayed date and time for one day event
364
- * Fixed: Fatal error if PHP Calendar module not loaded
365
- * Fixed: Add new venue from event editor page
366
 
367
  = 1.0.97 =
368
- * Fixed: Remove duplicated post contents form venues and organizers
369
 
370
  = 1.0.96 =
371
- * Fixed: Description on event post
372
 
373
  = 1.0.95 =
374
- * Changed: Plugin interface
375
- * Fixed: Minor bugs
376
 
377
  = 1.0.94 =
378
- * Fixed: Security issue
379
 
380
  = 1.0.93 =
381
- * Fixed: Bug on organizer view
382
 
383
  = 1.0.91 =
384
- * Added: Visible event count per day
385
- * Fixed: Weekly repeating events
386
 
387
  = 1.0.90 =
388
- * Fixed: Helper bar
389
- * Fixed: events archive page
390
- * Fixed: events category archive page
391
 
392
  = 1.0.89 =
393
- * Fixed: Theme update issue
394
- * Fixed: Notices
395
 
396
  = 1.0.88 =
397
- * Added: Helper bar
398
 
399
  = 1.0.87 =
400
- * Added: Overview page
401
- * Changed: Deactivation
402
 
403
  = 1.0.86 =
404
- * Added: "Do not show past events" option
405
 
406
  = 1.0.85 =
407
- * Fixed: Minor bug
408
- * Fixed: Bug on day view
409
 
410
  = 1.0.84 =
411
- * Added: Script keys
412
- * Fixed: Bug on widget
413
- * Fixed: Styles
414
- * Fixed: Back link
415
 
416
  = 1.0.83 =
417
- * Fixed: Calendar search
418
 
419
  = 1.0.82 =
420
- * Changed: Featured plugins
421
 
422
  = 1.0.81 =
423
- * Fixed: Bug on widget list view
424
- * Fixed: Styles
425
 
426
  = 1.0.80 =
427
- * Fixed: Clear cache option notice
428
- * Added: Translations
429
 
430
  = 1.0.79 =
431
- * Added: Widget theme
432
 
433
  = 1.0.78 =
434
- * Added: Event description max length option
435
 
436
  = 1.0.77 =
437
- * Added: Google maps style option
438
- * Added: Latitude,Longitude inputs in event-meta,venue-meta pages
439
 
440
  = 1.0.76 =
441
- * Fixed: Data structures
442
- * Fixed: Bug on Repeating events
443
 
444
  = 1.0.75 =
445
- * Changed: Backend menu
446
 
447
  = 1.0.74 =
448
- * Changed: Organizers, venues cache
449
- * Fixed: Venue edit in event
450
- * Fixed: Gmap js issue
451
 
452
  = 1.0.73 =
453
- * Changed: Settings structure
454
- * Fixed: Minor bug
455
 
456
  = 1.0.72 =
457
- * Fixed: Minor bug
458
 
459
  = 1.0.71 =
460
- * Added: Enable sidebar in event page option
461
 
462
  = 1.0.70 =
463
- * Fixed: Bug on Google Maps
464
 
465
  = 1.0.69 =
466
- * Fixed: Bug on Views add-on
467
- * Changed: Featured themes, plugins pages
468
 
469
  = 1.0.68 =
470
- * Fixed: List view pagination
471
- * Fixed: Week view start
472
 
473
  = 1.0.67 =
474
- * Added: Calendar start date option
475
 
476
- = 1.0.65 =
477
  * Added: Google Maps API Key
478
 
479
- = 1.0.64 =
480
- * Fixed: Translations
481
- * Changed: Open Google map when Marker is clicked option
482
- * Fixed: Mark all days of multi-day event
483
 
484
- = 1.0.63 =
485
- * Added: Show events detail on hover option
486
 
487
- = 1.0.62 =
488
- * Added: Grab the first post image option
489
 
490
  = 1.0.61 =
491
- * Fixed: Conflict with Page Builder by SiteOrigin
492
- * Fixed: Bug on trashed events
493
 
494
  = 1.0.60 =
495
- * Added: Embed add-on
496
 
497
  = 1.0.59 =
498
- * Fixed: Bug on mini calendar
499
- * Fixed: Bug on multi-day events
500
- * Fixed: Bug on event pop-up
501
- * Fixed: Bug on widget
502
 
503
  = 1.0.58 =
504
- * Added: Order of events archive page option
505
- * Fixed: Minor bug
506
 
507
  = 1.0.57 =
508
- * Fixed: Translation
509
 
510
  = 1.0.56 =
511
- * Fixed: Minor bug
512
- * Changed: Event popup position
513
 
514
  = 1.0.55 =
515
- * Fixed: List view events order
516
- * Added: Organaizer on single event
517
- * Added: Portuguese (Brazil) Translation
518
- * Fixed: Description formatting
519
 
520
  = 1.0.54 =
521
- * New: Related events count option
522
 
523
  = 1.0.53 =
524
- * Added: Export to GCal/ICal add-on
525
 
526
  = 1.0.52 =
527
- * Added: Mark all days of multi-day event option
528
 
529
  = 1.0.51 =
530
- * Added: Config page
531
- * Changed: Spanish Translation
532
- * Changed: German Translation
533
- * Changed: Featured plugins/themes page
534
- * Changed: Event details popup direction for 4th day
535
- * Fixed: Scroll issue in mobile
536
 
537
  = 1.0.50 =
538
- * Added: Event Subscribe add-on
539
 
540
  = 1.0.49 =
541
- * Added: Swedish translation by Marcel Króča and Slovak translation by Magnus Juven
542
- * Fixed: Issue with featured image
543
- * Fixed: Pointer bug
544
 
545
  = 1.0.48 =
546
- * Added: Wizard
547
- * Added: Tour
548
- * Added: Czech and Danish translation
549
 
550
  = 1.0.47 =
551
- * Added: Shortcode support on event description
552
 
553
  = 1.0.46 =
554
  * Added: Romanian translation (by Oana Tarce)
555
- * Fixed: Bug for php version < 5.3
556
 
557
  = 1.0.45 =
558
- * Added: Latvian translation (by Intars G.)
559
- * Fixed: Issue with venues dropdown in the back end
560
- * Fixed: CSS issue in calendar views section for 'right to left' languages (e.g. arabic)
561
 
562
  = 1.0.44 =
563
- * Added: Croatian translation
564
- * Added: Sample data
565
 
566
  = 1.0.43 =
567
- * Added: Option for no additional details text
568
 
569
  = 1.0.42 =
570
- * Fixed: Google structured data errors
571
- * Changed: Event hover popup styles
572
 
573
  = 1.0.41 =
574
- * Added: New year promo notice
575
 
576
  = 1.0.40 =
577
- * Added: New theme
578
 
579
  = 1.0.39 =
580
- * Fixed: Date issue for php version < 5.3
581
- * Fixed: German translations
582
 
583
  = 1.0.38 =
584
- * Added: Custom css option
585
 
586
  = 1.0.37 =
587
- * Added: Catalan language support(by Vicenc Huguet)
588
- * Fixed: Views slider js issue
589
 
590
  = 1.0.36 =
591
  * Changed: Responsive pop-up styles
592
  * Changed: Featured plugins
593
 
594
  = 1.0.35 =
595
- * Changed: Category page
596
  * Added: Polish translation
597
 
598
  = 1.0.34 =
599
- * Fixed: Show events issue in list view
600
- * Increased: Date range of events in venue and organizer pages
601
- * Added: Event Tickets add-on
602
 
603
  = 1.0.33 =
604
- * Added: Date format option for list, week and day views
605
- * Fixed: "Back" link in single event page
606
- * Fixed: Shortcode default view issue
607
- * Fixed: Norwegian language files
608
 
609
  = 1.0.32 =
610
- * Fixed: Dates translation issue in posterboard view
611
- * Fixed: Venues show map issue for ajaxed themes
612
- * Fixed: Views slider js issue
613
 
614
  = 1.0.31 =
615
- * Added: Day view option as default to widget
616
- * Added: Close popup by escape
617
- * Added: Finnish translation (by Håkan Mitts)
618
 
619
  = 1.0.30 =
620
- * Added: Mini calendar view for page
621
 
622
  = 1.0.29 =
623
- * Fixed: Norwegian language files name
624
 
625
  = 1.0.28 =
626
- * Added: ECWD Views add-on
627
- * Added: Norwegian (Bokmål) and Norwegian (Nynorsk) languages support(by Vegard Innerdal)
628
 
629
  = 1.0.27 =
630
- * Changed: Added padding to event details for screens < 768
631
- * Changed: Hide next/prev month names for screen < 768
632
- * Fixed: More events popup bug
633
 
634
  = 1.0.26 =
635
  * New: Display Events in popup option
@@ -640,40 +703,40 @@ After downloading the ZIP file of the Event Calendar WD plugin,
640
  * Changed: Notices show order
641
 
642
  = 1.0.24 =
643
- * Fixed: Events monthly repeat rate issue
644
- * Added: Week view option to widget
645
- * Added: Custom Fields add-on
646
 
647
  = 1.0.23 =
648
- * Added: Frontend events management add-on
649
- * Fixed: Rewrite rules for custom permalinks structure
650
- * Fixed: JS error in related events slider
651
- * Added: Hungarian language support
652
- * Added: Serbian language support
653
- * Fixed: Translations for Dutch
654
 
655
  = 1.0.22 =
656
- * Added: Ajaxed themes support
657
- * Fixed: Next month link issue
658
- * Changed: More events dialog
659
- * Added: Support/rate us messages
660
 
661
  = 1.0.21 =
662
- * Fixed: JS error in widgets page
663
 
664
  = 1.0.20 =
665
- * Fixed: Show event url issue
666
- * Added: "noindex, nofollow" to calendar links
667
- * Added: Open pop in new tab option
668
- * Added: Japanese support
669
 
670
  = 1.0.19 =
671
  * Minor bug fixed
672
 
673
  = 1.0.18 =
674
- * Added: Themes folder
675
- * Changed: Related events title style
676
- * Added: Apply category color to event title in event page option
677
 
678
  = 1.0.17 =
679
  * Fixed: Time format issue
@@ -685,7 +748,7 @@ After downloading the ZIP file of the Event Calendar WD plugin,
685
  * Added: Show AM/PM option
686
 
687
  = 1.0.14 =
688
- * Fixed: Conflict with Avada theme
689
  * Added: Date to events link
690
 
691
  = 1.0.13 =
@@ -695,45 +758,45 @@ After downloading the ZIP file of the Event Calendar WD plugin,
695
  * Changed: Calendar Add-ons page
696
 
697
  = 1.0.10 =
698
- * Added: Organizers and venues archive page order option
699
- * Added: Show categories and tags in event page option
700
  * Fixed: Featured image sizes in widget
701
 
702
  = 1.0.9 =
703
- * Fixed: Show google maps conflict with other plugins
704
- * Fixed: Geolocation bug
705
- * Fixed: Save organizer featured image issue
706
 
707
  = 1.0.8 =
708
- * Changed: Event page
709
- * Added: Portuguese language
710
 
711
  = 1.0.7 =
712
- * New: Related events slider
713
- * New: Enable/disable rewrite rule option
714
 
715
  = 1.0.6 =
716
- * Changed: Removed Add Venue link
717
- * Fixed: Delete event from calendar page issue
718
 
719
  = 1.0.5 =
720
- * New: Events Filters in backend
721
- * Fixed: Bug in shortcode
722
 
723
  = 1.0.4 =
724
- * Fixed: Bug in add/edit calendar
725
 
726
  = 1.0.3 =
727
- * New: Event template
728
- * New: "Show map in event page" option
729
- * Changed: "Repeat until" field is required
730
 
731
  = 1.0.2 =
732
- * Fixed: Minor bugs
733
 
734
  = 1.0.1 =
735
- * Fixed: Bug in Week view
736
- * Fixed: Permalink bug
737
 
738
  = 1.0.0 =
739
  * Initial version
4
  Requires at least: 3.9
5
  Tested up to: 4.9
6
  Requires PHP: 5.2
7
+ Stable tag: 1.1.16
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
18
 
19
  = Event Calendar WD =
20
 
21
+ [Special Offer for all Premium Plugins](https://web-dorado.com/wordpress-plugins-bundle.html)
22
+ [WordPress Event Calendar WD](http://web-dorado.com/products/wordpress-event-calendar-wd.html)
23
+ [Demo](http://wpdemo.web-dorado.com/event-calendar-wd/)
24
+ [User Guide](https://web-dorado.com/wordpress-event-calendar-wd/installing.html)
25
+ [Support Forum](https://wordpress.org/support/plugin/event-calendar-wd)
26
 
27
 
28
  https://www.youtube.com/watch?v=htmdAkRuIzw
32
 
33
 
34
  == Benefits ==
35
+ * **Organize as many events as you wish** - With Event Calendar WD you can add unlimited number of events and calendars to your website. Whether you want to go for a one-time event, or add calendars to multiple posts and pages, that’s absolutely doable.
36
+ * **Events are easier to find** - Event Calendar WD is SEO-friendly, which means every event you add to your website is optimized for better visibility in search results.
37
+ * **Leverage power of social networks** - Don’t let your events go unnoticed. Enable social sharing buttons option on the calendar, and spread a word about your events across the major social platforms. Also, you can sell event tickets directly from your website if you get the Event Tickets Add-on available for the Premium version users.
38
  * **Attract with detailed descriptions** - Give your visitors the most important information they need to know about any event. Provide event venue, mention the hosts and organizers, include images, relevant videos, event link, and mark up the event location on the Google Map.
39
+ * **Distinct appearance** - With the available view options, themes and the extensive list of the customization settings, you can fully personalize your calendars and give them a distinct look.
40
+ * **Full Control and flexibility** - Event Calendar WD is highly configurable, meaning you’ll get full control over how you display the events and calendars on your site. The user-friendly interface of the plugin, will make it easy to manage and customize your calendars.
41
+ * **Support** - The team provides timely and effective support to all its users. We keep standards high and response time low.
42
 
43
 
44
  == What’s in it ==
45
+
46
  = RESPONSIVE LAYOUT =
47
+ Event Calendar WD is responsive, designed to provide flawless calendar display across various devices and screen sizes.
48
 
49
  = UNLIMITED EVENTS AND CALENDARS =
50
 
51
+ The number of the events as well as the calendars you can add to your website has no limit. Go ahead and fill your website with as many calendars as you want.
52
 
53
  = EVENT CATEGORIES AND TAGS =
54
 
56
 
57
  = MULTIPLE EVENT DISPLAY VIEWS =
58
 
59
+ With Event Calendar WD you can have your calendars displayed in a number of cool views. Currently Month, Week, Day and List views are available in the free option of the plugin, whereas Posterboard, 4-Days and Map views come with the premium option.
60
 
61
  = RECURRING EVENTS =
62
 
63
+ If you want to display repeating events on your calendar which are held on a regular basis recurring events option will save you a great deal of time (Premium version). Just specify the event repeating rate under the evet settings and it will automatically be displayed on the calendar.
64
 
65
+ = SOCIAL SHARING =
66
 
67
+ You can display social sharing buttons on the calendars and let your visitors share your events on Facebook, Google Plus, and Twitter with just a click.
68
 
69
  = CALENDAR WIDGET =
70
 
71
+ The calendars are added to the posts and pages with a shortcode, but if you want to display a nice calendar widget on the sidebar areas of your site, you can publish the calendar as a widget.
72
 
73
  = CUSTOMIZABLE THEMES =
74
 
75
+ The Premium version of the plugin comes with five customizable calendar themes, that let you personalize the design of you calendars. You can set custom settings for almost every part of the calendar, including overall calendar colors, header, views,pagination, and events. Moreover, you can add new calendar themes with your own styling features.
76
 
77
  = GOOGLE MAPS INTEGRATION =
78
 
82
 
83
  If you want some additional functionality, like displaying upcoming events, selling online tickets, showing countdown for the events, and let your visitors add events on the calendar from the frontend, there are 14 available add-ons to choose from. Please note that calendar add-ons work with Premium version only. Find the full list of the add-on below.
84
 
85
+ [Event Tickets](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/event-tickets.html)
86
+ [Frontend Event Management](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/frontend-event-management.html)
87
+ [Upcoming Events Widget](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/upcoming-events.html)
88
+ [Filter](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/filter.html)
89
+ [Subscribe](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/subscribe.html)
90
+ [Countdown](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/countdown.html)
91
+ [Google Calendar Integration](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/google-calendar-integration.html)
92
+ [iCal Integration](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/ical-integration.html)
93
+ [Facebook Integration](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/facebook-integration.html)
94
+ [Import/Export](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/import-export.html)
95
+ [Custom Fields](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/custom-fields.html)
96
+ [Views](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/views.html)
97
+ [Export to GCal/ICal](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/export.html)
98
+ [Embed](https://web-dorado.com/products/wordpress-event-calendar-wd/add-ons/embed.html)
99
 
100
  = SETTINGS/CUSTOMIZATION =
101
  *Some customizations described here are available in Premium version. Please refer to feature summary for additional info.
102
 
103
+ You can add calendars to your website either by inserting the generated shortcode into your posts and pages, or display it as a widget on the sidebar areas of your site. The admin panel of the plugin is pretty straightforward and user-friendly. To add a new calendar you just have to go to the admin panel, click on the “Add a new Calendar” tab and it will open up a new page. Afterwards you need to give a title to the calendar and choose a theme for it. Once you’re done you can preview the calendar, save it as a draft, or publish it right away. You can add events to the calendar either from the admin panel and later assign them to the selected calendars, or by clicking on the date on the calendar itself. To have your event added to the calendar , you need to specify the event name,choose the dates, select the event venue,provide a URL and a relevant video URL if available.For recurring events, you just need to specify the event repeating cycles, such as daily, weekly, monthly, or yearly. Under the settings tab you’ll find an extensive list of the general settings for the calendars that you can adjust to your needs. Here you can select the date display format, enable comments for the events, choose how the events will be organized, enable social icons, and a lot more. You can create new event categories and tags by giving them a title, adding a slug and a description. You can apply the tags and categories to multiple events at ones. For more information about the customization of the calendar settings, please refer to the plugin installation instructions below.
104
 
105
 
106
+ [Premium version adds](http://web-dorado.com/products/wordpress-event-calendar-wd.html)
107
 
108
+ * Recurring events
109
+ * 5 beautiful customizable themes
110
+ * 3 premium views: Posterboard, 4-days and Map
111
+ * 14 add-ons to expand default functionality
112
 
113
 
114
+ ###IMPORTANT:
115
  If you think you found a bug in Event Calendar WD, or have a problem/question concerning the plugin, please check out [Support Forum](https://wordpress.org/support/plugin/event-calendar-wd) . In case you do not find a solution here, feel free to contact us using [this form](https://web-dorado.com/support/contact-us.html).
116
 
117
 
118
+
119
  == Screenshots ==
120
 
121
+ 1. WordPress Event Calendar WD - Grey theme
122
+ 2. WordPress Event Calendar WD - Calendar
123
+ 3. WordPress Event Calendar WD - Calendar With Filter
124
+ 4. WordPress Event Calendar WD - Week View
125
+ 5. WordPress Event Calendar WD - Event
126
+ 6. WordPress Event Calendar WD - Theme Settings
127
+ 7. WordPress Event Calendar WD - Create Event
128
  8. WordPress Event Calendar WD - Edit Venue
129
 
130
  == Frequently Asked Questions ==
269
 
270
  Tune up Event Calendar WD Pro with Frontend Event Management add-on, and set up a powerful online reservation calendar on your WordPress website!
271
 
272
+ = 12. Is it possible to bring iCalendar events into Event Calendar? =
273
+
274
+ You can retrieve iCal events lists into the Premium version of this events management plugin using its iCal Integration add-on. Start importing iCal event list to your website calendar in a simple and practical way.
275
+
276
+ The iCal Integration add-on allows you to incorporate the events with the following ways:
277
+ * Fetch them from iCalendar, without physically having the events in Event Calendar plugin.
278
+ * Import the events and bring them to your WordPress site.
279
+
280
+ By importing the iCal events, you will bring their descriptions, details, location and settings. You can also choose the category from which you wish to import the events.
281
+
282
+ **Note:** Make sure the iCalendar you are trying to incorporate is shared publicly.
283
+
284
+ = 13. Can I allow users to buy tickets of events from my calendar? =
285
+
286
+ Sell the event subscription through Premium version of this WordPress events manager plugin and its Event Ticketing add-on. It allows you to organize event tickets and reservation easily.
287
+
288
+ This add-on is the solution for event ticketing feature, incorporating Event Calendar WD with WooCommerce. The tickets manager tool is easy-to-use. The integration between the add-on and WooCommerce plugin is automatic. With just a few clicks, users are able to buy tickets and make reservation for your event.
289
+
290
+ You can set the available dates for ticket sales, price, and stock on the event page. While the tickets are created within Event Calendar WD plugin, the payment of event ticketing is processed by WooCommerce. As the tickets are sold out, visitors will get notified about it with "Sold Out" banner.
291
+
292
+ **Note:** Make sure to install/activate WooCommerce plugin to your site in order to use Event Ticketing add-on.
293
+
294
+ = 14. How can I show a map of my event location? =
295
+
296
+ You can incorporate Google Maps with this event subscription plugin the following way. Edit the venue of your event, then mark **Show Google Maps** checkbox.
297
+
298
+ This WordPress events manager plugin will allow you to fill in **Address** of your venue, and Google Maps marker will be placed on the pointed location. You can also specify **Latitude** and **Longitude** of your address. This will make the event reservation process for your users easier.
299
+
300
+ Note, that Google Maps API key is required for the maps to display correctly on your events management plugin. To get it, visit [Google API Console](https://console.cloud.google.com/apis/).
301
+
302
+ = 15. Can I design the events lists on Month view with colored backgrounds? =
303
+
304
+ Using Event Calendar WD WordPress reservation plugin, you can add different background colors to events of each category. To do that, edit the category of your event list, and use **Category color** option to set the background.
305
+
306
+ Additionally, you can use **Image** option to place an icon for your event category.
307
+
308
+ = 16. How can I have separate event organizers for my events? =
309
+
310
+ Event Calendar WD plugin allows you to indicate organizers for each of your events. To begin creating organizers, visit Events > Organizers page, or use Add Organizer link at the bottom of event editor dashboard. Fill in the following information first:
311
+
312
+ * Title,
313
+ * Description,
314
+ * Phone,
315
+ * Website.
316
+
317
+ Press Save Organizer button. All created organizers will display here as a list.
318
+
319
+ In addition to simply showing the host of the event, organizers can contribute to event subscription feature of Subscribe add-on. Users are able to subscribe to events that belong to a selected organizer.
320
+
321
 
322
 
323
  == Installation ==
324
 
325
+ #### Thank you for your interest in Event Calendar WD.
326
 
327
+ ### Minimum requirements.
328
+ * Wordpress 3.9+
329
+ * PHP 5.x
330
+ * MySQL 5.x
331
 
332
+ ### Perform a new installation
333
 
334
+ After downloading the ZIP file of the Event Calendar WD plugin,
335
 
336
+ 1. Log in to the administrator panel.
337
+ 2. Go to Plugins Add > New > Upload.
338
+ 3. Click "Choose file" ("Browse") and select the downloaded zip file of the event calendar.
339
+ *For Mac Users*
340
+ *Go to your Downloads folder and locate the folder with the Event Calendar WD. Right-click on the folder and select Compress. Now you have a newly created .zip file which can be installed as described here.*
341
+ 4. Click "Install Now" button.
342
+ 5. Click "Activate Plugin" button for activating the Event Calendar WD.
343
  6. If the installation does not succeed, please [click here to contact us](https://web-dorado.com/support/contact-us.html).
344
 
345
+ == Privacy Policy ==
346
+ Event Calendar WD plugin optionally embeds Google Maps on front end to display events on the map. Embedded Google Maps behave in the exact same way as if visitor has opened Google Maps site. Google may collect data about visitors, use cookies and tracking, included their logged-in experience interaction with Google platform. Google Maps are regulated under terms of Google privacy policy https://policies.google.com/privacy. The plugin asks for your consent to collect site administrator’s email address and site URL to offer customer support, deals and discounts on premium products and more.
347
+
348
  == Changelog ==
349
 
350
+ = 1.1.16 ==
351
+ * New: GDPR compliance help
352
+ * New: WD library updated
353
+ * New: Use theme template for single event CPT
354
+ * Improved: UX when editing calendar and choosing and adding event to calendar
355
+ * Fixed: Event order on category/archive page by event date
356
+ * Fixed: Other minor bugs
357
+ * Fixed: Password protected events
358
+ * Changed: Date inputs hidden from event quick edit params
359
+ * Changed: Other optimizations under the hood
360
+
361
  = 1.1.15 ==
362
+ * Improved: Fully translatable calendar plugin and extensions. Suggest your translations here: https://translate.wordpress.org/projects/wp-plugins/event-calendar-wd
363
+ * Improved: Frontend styles of single event, venue and organizer CPT
364
+ * Changed: Styles of filters extension (Premium)
365
+ * Changed: Some metaboxes moved to higher position
366
 
367
  = 1.1.14 =
368
+ * Changed: create_function is deprecated in PHP 7.2
369
+ * Changed: Sort organizers and venues by title not slug in post type archive
370
+ * Improved: Styles of Gutenberg block popup
371
+ * Fixed: Styles of free and premium versions synchronized
372
 
373
  = 1.1.13 =
374
+ * Added: Gutenberg integration
375
+ * Fixed: Google Maps zoom
376
+ * Improved: Russian translation
377
 
378
  = 1.1.12 =
379
+ * Improved: Change default calendar using calendar list in dashboard
380
+ * Changed: Calendar add-ons and themes do not have separate menu anymore
381
+ * Changed: Updates and functionality removed (Premium)
382
 
383
  = 1.1.11 =
384
+ * Fixed: Bug on PHP 5.3 version
385
 
386
  = 1.1.10 =
387
+ * Changed: Introducing brand new free plugin: SEO by 10Web
388
 
389
  = 1.1.9 =
390
+ * Changed: Deactivation popup.
391
+ * Fixed: Notice in single event page.
392
 
393
  = 1.1.8 =
394
+ * Changed: Web-Dorado links
395
 
396
  = 1.1.7 =
397
+ * New: Option to set zoom level in maps view (Pro)
398
+ * Fixed: Map displayed without any event for that month (Pro)
399
+ * Changed: Minor: WD library updated to version 1.0.12
400
 
401
  = 1.1.6 =
402
+ * Fixed: Conflict with some plugins on calendar frontend
403
 
404
  = 1.1.5 =
405
+ * Changed: Show notification to install Backup WD plugin only on plugin pages.
406
 
407
  = 1.1.4 =
408
+ * Changed: Introducing Backup WD plugin
409
 
410
  = 1.1.3 =
411
  * Changed: Redirect after activation removed
412
  * Changed: WD library updated to version 1.0.11
413
 
414
  = 1.1.2 =
415
+ * New: Option to show event timezones on frontend
416
 
417
  = 1.1.1 =
418
+ * Changed: Add "ecwd_hide_old_events"=1 as a custom meta field to calendar in order to hide past events and months
419
+ * Fixed: PHP notice in events category page when there is no event
420
+ * Fixed: JS error when trying to save event with no date
421
+ * Fixed: DB changes on silent activation
422
+ * Improved: Compatibility of templates for single event and event taxonomy with WooCommerce-compatible themes
423
 
424
  = 1.1.0 =
425
+ * Changed: Improved UI of venue editor in event page
426
+ * Fixed: Displayed date and time for one day event
427
+ * Fixed: Fatal error if PHP Calendar module not loaded
428
+ * Fixed: Add new venue from event editor page
429
 
430
  = 1.0.97 =
431
+ * Fixed: Remove duplicated post contents form venues and organizers
432
 
433
  = 1.0.96 =
434
+ * Fixed: Description on event post
435
 
436
  = 1.0.95 =
437
+ * Changed: Plugin interface
438
+ * Fixed: Minor bugs
439
 
440
  = 1.0.94 =
441
+ * Fixed: Security issue
442
 
443
  = 1.0.93 =
444
+ * Fixed: Bug on organizer view
445
 
446
  = 1.0.91 =
447
+ * Added: Visible event count per day
448
+ * Fixed: Weekly repeating events
449
 
450
  = 1.0.90 =
451
+ * Fixed: Helper bar
452
+ * Fixed: events archive page
453
+ * Fixed: events category archive page
454
 
455
  = 1.0.89 =
456
+ * Fixed: Theme update issue
457
+ * Fixed: Notices
458
 
459
  = 1.0.88 =
460
+ * Added: Helper bar
461
 
462
  = 1.0.87 =
463
+ * Added: Overview page
464
+ * Changed: Deactivation
465
 
466
  = 1.0.86 =
467
+ * Added: "Do not show past events" option
468
 
469
  = 1.0.85 =
470
+ * Fixed: Minor bug
471
+ * Fixed: Bug on day view
472
 
473
  = 1.0.84 =
474
+ * Added: Script keys
475
+ * Fixed: Bug on widget
476
+ * Fixed: Styles
477
+ * Fixed: Back link
478
 
479
  = 1.0.83 =
480
+ * Fixed: Calendar search
481
 
482
  = 1.0.82 =
483
+ * Changed: Featured plugins
484
 
485
  = 1.0.81 =
486
+ * Fixed: Bug on widget list view
487
+ * Fixed: Styles
488
 
489
  = 1.0.80 =
490
+ * Fixed: Clear cache option notice
491
+ * Added: Translations
492
 
493
  = 1.0.79 =
494
+ * Added: Widget theme
495
 
496
  = 1.0.78 =
497
+ * Added: Event description max length option
498
 
499
  = 1.0.77 =
500
+ * Added: Google maps style option
501
+ * Added: Latitude,Longitude inputs in event-meta,venue-meta pages
502
 
503
  = 1.0.76 =
504
+ * Fixed: Data structures
505
+ * Fixed: Bug on Repeating events
506
 
507
  = 1.0.75 =
508
+ * Changed: Backend menu
509
 
510
  = 1.0.74 =
511
+ * Changed: Organizers, venues cache
512
+ * Fixed: Venue edit in event
513
+ * Fixed: Gmap js issue
514
 
515
  = 1.0.73 =
516
+ * Changed: Settings structure
517
+ * Fixed: Minor bug
518
 
519
  = 1.0.72 =
520
+ * Fixed: Minor bug
521
 
522
  = 1.0.71 =
523
+ * Added: Enable sidebar in event page option
524
 
525
  = 1.0.70 =
526
+ * Fixed: Bug on Google Maps
527
 
528
  = 1.0.69 =
529
+ * Fixed: Bug on Views add-on
530
+ * Changed: Featured themes, plugins pages
531
 
532
  = 1.0.68 =
533
+ * Fixed: List view pagination
534
+ * Fixed: Week view start
535
 
536
  = 1.0.67 =
537
+ * Added: Calendar start date option
538
 
539
+ = 1.0.65 =
540
  * Added: Google Maps API Key
541
 
542
+ = 1.0.64 =
543
+ * Fixed: Translations
544
+ * Changed: Open Google map when Marker is clicked option
545
+ * Fixed: Mark all days of multi-day event
546
 
547
+ = 1.0.63 =
548
+ * Added: Show events detail on hover option
549
 
550
+ = 1.0.62 =
551
+ * Added: Grab the first post image option
552
 
553
  = 1.0.61 =
554
+ * Fixed: Conflict with Page Builder by SiteOrigin
555
+ * Fixed: Bug on trashed events
556
 
557
  = 1.0.60 =
558
+ * Added: Embed add-on
559
 
560
  = 1.0.59 =
561
+ * Fixed: Bug on mini calendar
562
+ * Fixed: Bug on multi-day events
563
+ * Fixed: Bug on event pop-up
564
+ * Fixed: Bug on widget
565
 
566
  = 1.0.58 =
567
+ * Added: Order of events archive page option
568
+ * Fixed: Minor bug
569
 
570
  = 1.0.57 =
571
+ * Fixed: Translation
572
 
573
  = 1.0.56 =
574
+ * Fixed: Minor bug
575
+ * Changed: Event popup position
576
 
577
  = 1.0.55 =
578
+ * Fixed: List view events order
579
+ * Added: Organaizer on single event
580
+ * Added: Portuguese (Brazil) Translation
581
+ * Fixed: Description formatting
582
 
583
  = 1.0.54 =
584
+ * New: Related events count option
585
 
586
  = 1.0.53 =
587
+ * Added: Export to GCal/ICal add-on
588
 
589
  = 1.0.52 =
590
+ * Added: Mark all days of multi-day event option
591
 
592
  = 1.0.51 =
593
+ * Added: Config page
594
+ * Changed: Spanish Translation
595
+ * Changed: German Translation
596
+ * Changed: Featured plugins/themes page
597
+ * Changed: Event details popup direction for 4th day
598
+ * Fixed: Scroll issue in mobile
599
 
600
  = 1.0.50 =
601
+ * Added: Event Subscribe add-on
602
 
603
  = 1.0.49 =
604
+ * Added: Swedish translation by Marcel Króča and Slovak translation by Magnus Juven
605
+ * Fixed: Issue with featured image
606
+ * Fixed: Pointer bug
607
 
608
  = 1.0.48 =
609
+ * Added: Wizard
610
+ * Added: Tour
611
+ * Added: Czech and Danish translation
612
 
613
  = 1.0.47 =
614
+ * Added: Shortcode support on event description
615
 
616
  = 1.0.46 =
617
  * Added: Romanian translation (by Oana Tarce)
618
+ * Fixed: Bug for php version < 5.3
619
 
620
  = 1.0.45 =
621
+ * Added: Latvian translation (by Intars G.)
622
+ * Fixed: Issue with venues dropdown in the back end
623
+ * Fixed: CSS issue in calendar views section for 'right to left' languages (e.g. arabic)
624
 
625
  = 1.0.44 =
626
+ * Added: Croatian translation
627
+ * Added: Sample data
628
 
629
  = 1.0.43 =
630
+ * Added: Option for no additional details text
631
 
632
  = 1.0.42 =
633
+ * Fixed: Google structured data errors
634
+ * Changed: Event hover popup styles
635
 
636
  = 1.0.41 =
637
+ * Added: New year promo notice
638
 
639
  = 1.0.40 =
640
+ * Added: New theme
641
 
642
  = 1.0.39 =
643
+ * Fixed: Date issue for php version < 5.3
644
+ * Fixed: German translations
645
 
646
  = 1.0.38 =
647
+ * Added: Custom css option
648
 
649
  = 1.0.37 =
650
+ * Added: Catalan language support(by Vicenc Huguet)
651
+ * Fixed: Views slider js issue
652
 
653
  = 1.0.36 =
654
  * Changed: Responsive pop-up styles
655
  * Changed: Featured plugins
656
 
657
  = 1.0.35 =
658
+ * Changed: Category page
659
  * Added: Polish translation
660
 
661
  = 1.0.34 =
662
+ * Fixed: Show events issue in list view
663
+ * Increased: Date range of events in venue and organizer pages
664
+ * Added: Event Tickets add-on
665
 
666
  = 1.0.33 =
667
+ * Added: Date format option for list, week and day views
668
+ * Fixed: "Back" link in single event page
669
+ * Fixed: Shortcode default view issue
670
+ * Fixed: Norwegian language files
671
 
672
  = 1.0.32 =
673
+ * Fixed: Dates translation issue in posterboard view
674
+ * Fixed: Venues show map issue for ajaxed themes
675
+ * Fixed: Views slider js issue
676
 
677
  = 1.0.31 =
678
+ * Added: Day view option as default to widget
679
+ * Added: Close popup by escape
680
+ * Added: Finnish translation (by Håkan Mitts)
681
 
682
  = 1.0.30 =
683
+ * Added: Mini calendar view for page
684
 
685
  = 1.0.29 =
686
+ * Fixed: Norwegian language files name
687
 
688
  = 1.0.28 =
689
+ * Added: ECWD Views add-on
690
+ * Added: Norwegian (Bokmål) and Norwegian (Nynorsk) languages support(by Vegard Innerdal)
691
 
692
  = 1.0.27 =
693
+ * Changed: Added padding to event details for screens < 768
694
+ * Changed: Hide next/prev month names for screen < 768
695
+ * Fixed: More events popup bug
696
 
697
  = 1.0.26 =
698
  * New: Display Events in popup option
703
  * Changed: Notices show order
704
 
705
  = 1.0.24 =
706
+ * Fixed: Events monthly repeat rate issue
707
+ * Added: Week view option to widget
708
+ * Added: Custom Fields add-on
709
 
710
  = 1.0.23 =
711
+ * Added: Frontend events management add-on
712
+ * Fixed: Rewrite rules for custom permalinks structure
713
+ * Fixed: JS error in related events slider
714
+ * Added: Hungarian language support
715
+ * Added: Serbian language support
716
+ * Fixed: Translations for Dutch
717
 
718
  = 1.0.22 =
719
+ * Added: Ajaxed themes support
720
+ * Fixed: Next month link issue
721
+ * Changed: More events dialog
722
+ * Added: Support/rate us messages
723
 
724
  = 1.0.21 =
725
+ * Fixed: JS error in widgets page
726
 
727
  = 1.0.20 =
728
+ * Fixed: Show event url issue
729
+ * Added: "noindex, nofollow" to calendar links
730
+ * Added: Open pop in new tab option
731
+ * Added: Japanese support
732
 
733
  = 1.0.19 =
734
  * Minor bug fixed
735
 
736
  = 1.0.18 =
737
+ * Added: Themes folder
738
+ * Changed: Related events title style
739
+ * Added: Apply category color to event title in event page option
740
 
741
  = 1.0.17 =
742
  * Fixed: Time format issue
748
  * Added: Show AM/PM option
749
 
750
  = 1.0.14 =
751
+ * Fixed: Conflict with Avada theme
752
  * Added: Date to events link
753
 
754
  = 1.0.13 =
758
  * Changed: Calendar Add-ons page
759
 
760
  = 1.0.10 =
761
+ * Added: Organizers and venues archive page order option
762
+ * Added: Show categories and tags in event page option
763
  * Fixed: Featured image sizes in widget
764
 
765
  = 1.0.9 =
766
+ * Fixed: Show google maps conflict with other plugins
767
+ * Fixed: Geolocation bug
768
+ * Fixed: Save organizer featured image issue
769
 
770
  = 1.0.8 =
771
+ * Changed: Event page
772
+ * Added: Portuguese language
773
 
774
  = 1.0.7 =
775
+ * New: Related events slider
776
+ * New: Enable/disable rewrite rule option
777
 
778
  = 1.0.6 =
779
+ * Changed: Removed Add Venue link
780
+ * Fixed: Delete event from calendar page issue
781
 
782
  = 1.0.5 =
783
+ * New: Events Filters in backend
784
+ * Fixed: Bug in shortcode
785
 
786
  = 1.0.4 =
787
+ * Fixed: Bug in add/edit calendar
788
 
789
  = 1.0.3 =
790
+ * New: Event template
791
+ * New: "Show map in event page" option
792
+ * Changed: "Repeat until" field is required
793
 
794
  = 1.0.2 =
795
+ * Fixed: Minor bugs
796
 
797
  = 1.0.1 =
798
+ * Fixed: Bug in Week view
799
+ * Fixed: Permalink bug
800
 
801
  = 1.0.0 =
802
  * Initial version
views/admin/ecwd-calendar-meta.php CHANGED
@@ -60,7 +60,7 @@ $ecwd_calendar_default_theme_color = (isset($ecwd_calendar_theme) && $ecwd_calen
60
  <tr>
61
  <th scope="row"><?php _e('Events', 'event-calendar-wd'); ?></th>
62
  <td>
63
- <div class="ecwd-events">
64
  <?php if ($events) { ?>
65
  <?php foreach ($events as $event) { ?>
66
  <span class="ecwd-calendar-event"> <span><?php echo $event->post_title; ?></span>
@@ -72,14 +72,16 @@ $ecwd_calendar_default_theme_color = (isset($ecwd_calendar_theme) && $ecwd_calen
72
  <?php } ?>
73
  </div>
74
 
75
- <span class="ecwd-calendar-event-add">
76
  <?php if ($excluded_events) { ?>
77
- <a class="ecwd_events_popup_button"><?php _e('Select Events from the list', 'event-calendar-wd'); ?></a>
78
- <a class="ecwd_events_popup_button"><span class="add_event_plus">+</span></a></span>
79
- <?php } else { ?>
80
- <a href="<?php echo get_admin_url() ?>post-new.php?post_type=ecwd_event&cal_id=<?php echo $post_id; ?>" target="_blank"><?php _e('Add Event', 'event-calendar-wd'); ?></a>
81
- <a href="<?php echo get_admin_url() ?>post-new.php?post_type=ecwd_event&cal_id=<?php echo $post_id; ?>" target="_blank"><span class="add_event_plus">+</span></a></span>
82
- <?php } ?>
 
 
83
 
84
  <div id="ecwd_add_event_to_calendar" class="ecwd_add_event_to_calendar" style="display: none">
85
  <?php if ($excluded_events) { ?>
@@ -114,4 +116,35 @@ $ecwd_calendar_default_theme_color = (isset($ecwd_calendar_theme) && $ecwd_calen
114
  <!--<a href="<?php //echo admin_url('admin.php?page=ecwd_themes');?>"><?php //_e('Default', 'ecwd');?></a> <sup style="color: #ba281e;">pro</sup>-->
115
  </td>
116
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  </table>
60
  <tr>
61
  <th scope="row"><?php _e('Events', 'event-calendar-wd'); ?></th>
62
  <td>
63
+ <div data-new_event_url="<?php echo get_admin_url() ?>post-new.php?post_type=ecwd_event&cal_id=<?php echo $post_id; ?>" class="ecwd-events">
64
  <?php if ($events) { ?>
65
  <?php foreach ($events as $event) { ?>
66
  <span class="ecwd-calendar-event"> <span><?php echo $event->post_title; ?></span>
72
  <?php } ?>
73
  </div>
74
 
75
+ <span class="ecwd-calendar-event-add">
76
  <?php if ($excluded_events) { ?>
77
+
78
+ <a class="ecwd_events_popup_button" data-new_event_url="<?php echo get_admin_url() ?>post-new.php?post_type=ecwd_event&cal_id=<?php echo $post_id; ?>" href="#ecwd_event_list_popup"><?php _e('Select Events from the list', 'event-calendar-wd'); ?></a>
79
+ <a class="ecwd_events_popup_button" data-new_event_url="<?php echo get_admin_url() ?>post-new.php?post_type=ecwd_event&cal_id=<?php echo $post_id; ?>" href="#ecwd_event_list_popup"><span class="add_event_plus">+</span></a>
80
+ </span>
81
+ <?php } else { ?>
82
+ <a href="<?php echo get_admin_url() ?>post-new.php?post_type=ecwd_event&cal_id=<?php echo $post_id; ?>" target="_blank"><?php _e('Create more events', 'event-calendar-wd'); ?></a>
83
+ <a href="<?php echo get_admin_url() ?>post-new.php?post_type=ecwd_event&cal_id=<?php echo $post_id; ?>" target="_blank"><span class="add_event_plus">+</span></a></span>
84
+ <?php } ?>
85
 
86
  <div id="ecwd_add_event_to_calendar" class="ecwd_add_event_to_calendar" style="display: none">
87
  <?php if ($excluded_events) { ?>
116
  <!--<a href="<?php //echo admin_url('admin.php?page=ecwd_themes');?>"><?php //_e('Default', 'ecwd');?></a> <sup style="color: #ba281e;">pro</sup>-->
117
  </td>
118
  </tr>
119
+
120
+ <div id="ecwd_event_list_popup" class="ecwd_event_list_popup mfp-hide">
121
+
122
+ <img class="ecwd_event_list_popup_loader" src="<?php echo ECWD_URL;?>/assets/loading.gif">
123
+ <button class="button button-primary button-large ecwd_add_events ecwd_add_events_button">Add</button>
124
+ </div>
125
+ <style>
126
+ .ecwd_event_list_popup_loader{
127
+ display: none;
128
+ margin: 0 auto;
129
+ width: 70px;
130
+ margin-top: calc(100px - 35px);
131
+ }
132
+ .ecwd_add_events_button{
133
+ display: none !important;
134
+ }
135
+ .ecwd_add_events{
136
+ float: left;
137
+ }
138
+ #open-popup {padding:20px}
139
+ .ecwd_event_list_popup {
140
+ position: relative;
141
+ background: #FFF;
142
+ padding: 40px;
143
+ width: auto;
144
+ max-width: 800px;
145
+ margin: 20px auto;
146
+ text-align: center;
147
+ min-height: 200px;
148
+ }
149
+ </style>
150
  </table>
views/admin/ecwd-event-calendars-meta.php CHANGED
@@ -34,7 +34,7 @@ if(isset($_GET['cal_id']) && $_GET['cal_id']){
34
  }
35
 
36
  global $pagenow;
37
- if ($pagenow == "post-new.php") {
38
  $ecwd_default_calendar = get_option('ecwd_default_calendar');
39
  if ($ecwd_default_calendar !== false && $ecwd_default_calendar !== null) {
40
  $event_calendars[] = $ecwd_default_calendar;
34
  }
35
 
36
  global $pagenow;
37
+ if ($pagenow == "post-new.php" && empty($event_calendars)) {
38
  $ecwd_default_calendar = get_option('ecwd_default_calendar');
39
  if ($ecwd_default_calendar !== false && $ecwd_default_calendar !== null) {
40
  $event_calendars[] = $ecwd_default_calendar;
views/ecwd-event-content.php CHANGED
@@ -2,215 +2,507 @@
2
  /**
3
  * Display for Event Custom Post Types
4
  */
 
 
 
 
5
  global $post;
6
  global $wp;
7
  global $ecwd_options;
 
8
 
9
  $post_id = $post->ID;
10
- $meta = get_post_meta( $post_id );
11
 
12
- $date_format = 'Y-m-d';
13
- $time_format = 'H:i';
14
  $ecwd_social_icons = false;
15
- if ( isset( $ecwd_options['date_format'] ) && $ecwd_options['date_format'] != '' ) {
16
- $date_format = $ecwd_options['date_format'];
17
  }
18
- if ( isset( $ecwd_options['time_format'] ) && $ecwd_options['time_format'] != '' ) {
19
- $time_format = $ecwd_options['time_format'];
20
  }
21
- $time_format .= (isset( $ecwd_options['time_type'])?' '.$ecwd_options['time_type']: '');
22
- if(isset($ecwd_options['time_type']) && $ecwd_options['time_type'] !=''){
23
- $time_format = str_replace('H', 'g', $time_format);
24
- $time_format = str_replace('h', 'g', $time_format);
25
  }
26
- if ( isset( $ecwd_options['social_icons'] ) && $ecwd_options['social_icons'] != '' ) {
27
- $ecwd_social_icons = $ecwd_options['social_icons'];
28
  }
29
  // Load up all post meta data
30
- $ecwd_event_location = get_post_meta( $post->ID, ECWD_PLUGIN_PREFIX . '_event_location', true );
31
- $ecwd_event_latlong = get_post_meta( $post->ID, ECWD_PLUGIN_PREFIX . '_lat_long', true );
32
-
33
- $ecwd_event_organizers = get_post_meta( $post->ID, ECWD_PLUGIN_PREFIX . '_event_organizers', true );
34
- $ecwd_event_date_from = get_post_meta( $post->ID, ECWD_PLUGIN_PREFIX . '_event_date_from', true );
35
- $ecwd_event_date_to = get_post_meta( $post->ID, ECWD_PLUGIN_PREFIX . '_event_date_to', true );
36
- $ecwd_event_url = get_post_meta( $post->ID, ECWD_PLUGIN_PREFIX . '_event_url', true );
37
- $ecwd_event_video = get_post_meta( $post->ID, ECWD_PLUGIN_PREFIX . '_event_video', true );
38
- $ecwd_all_day_event = get_post_meta( $post->ID, ECWD_PLUGIN_PREFIX . '_all_day_event', true );
39
- $venue = '';
40
- $venue_permalink = '';
41
- $venue_post_id = get_post_meta( $post->ID, ECWD_PLUGIN_PREFIX . '_event_venue', true );
42
- $ecwd_event_zoom = "";
43
- if ( $venue_post_id ) {
44
- $venue_post = get_post( $venue_post_id );
45
- if ( $venue_post ) {
46
- $venue = $venue_post->post_title;
47
- $venue_permalink = get_permalink( $venue_post->ID );
48
- $ecwd_event_zoom = get_post_meta($venue_post_id, 'ecwd_map_zoom', true);
49
- }
50
- }
51
-
52
- if(!$ecwd_event_zoom){
53
- $ecwd_event_zoom = 17;
54
- }
55
-
56
- $this_event_url = get_permalink( $post->ID );
57
- $organizers = array();
58
- if ( is_array( $ecwd_event_organizers ) || is_object( $ecwd_event_organizers ) ) {
59
- foreach ( $ecwd_event_organizers as $ecwd_event_organizer ) {
60
- $organizers[] = get_post( $ecwd_event_organizer, ARRAY_A );
61
- }
62
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  ?>
64
 
65
- <div class="ecwd-event" itemscope itemtype="http://schema.org/Event">
66
- <div class="event-detalis">
67
- <?php if ( $feat_image && $feat_image !== '' ) { ?>
68
- <div class="event-featured-image">
69
- <img src="<?php echo $feat_image; ?>"/>
70
- </div>
71
- <?php } ?>
72
- <div class="event-detalis-date">
73
- <label class="ecwd-event-date-info" title="<?php _e( 'Date', 'event-calendar-wd' ); ?>"></label>
74
- <span class="ecwd-event-date" itemprop="startDate"
75
- content="<?php echo date( 'Y-m-d', strtotime( $ecwd_event_date_from ) ) . 'T' . date( 'H:i', strtotime( $ecwd_event_date_from ) ) ?>">
76
- <?php if ( $ecwd_all_day_event == 1 ) {
77
- echo date( $date_format, strtotime( $ecwd_event_date_from ) );
78
- if ( $ecwd_all_day_event == 1 ) {
79
- if ( $ecwd_event_date_to && date( $date_format, strtotime( $ecwd_event_date_from ) ) !== date( $date_format, strtotime( $ecwd_event_date_to ) ) ) {
80
- echo ' - ' . date( $date_format, strtotime( $ecwd_event_date_to ) );
81
- }
82
- echo ' ' . __( 'All day', 'event-calendar-wd' );
83
- }
84
- } else {
85
- echo date( $date_format, strtotime( $ecwd_event_date_from ) ) . ' ' . date( $time_format, strtotime( $ecwd_event_date_from ) );
86
-
87
- if ( $ecwd_event_date_to ) {
88
- echo ' - ' . date( $date_format, strtotime( $ecwd_event_date_to ) ) . ' ' . date( $time_format, strtotime( $ecwd_event_date_to ) );
89
- }
90
- } ?>
91
- </span>
92
- </div>
93
- <?php if ( $ecwd_event_url ) { ?>
94
- <div class="ecwd-url">
95
 
96
- <a href="<?php echo $ecwd_event_url; ?>" target="_blank"><label class="ecwd-event-url-info"
97
- title="<?php _e( 'Url', 'event-calendar-wd' ); ?>"></label> <?php echo $ecwd_event_url; ?>
98
- </a>
 
 
 
99
  </div>
100
- <?php } ?>
101
- <?php if ( count( $organizers ) > 0 ) { ?>
 
 
102
  <div class="event-detalis-org">
103
- <label class="ecwd-event-org-info" title="<?php _e( 'Organizers', 'event-calendar-wd' ); ?>"></label>
104
- <?php if ( $organizers ) {
105
- foreach ( $organizers as $organizer ) { ?>
106
- <span itemprop="organizer">
107
- <a href="<?php echo get_permalink( $organizer['ID'] ) ?>"><?php echo $organizer['post_title'] ?></a>
108
- </span>
109
- <?php }
110
- } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  </div>
112
- <?php } ?>
113
- <div class="event-venue" itemprop="location" itemscope itemtype="http://schema.org/Place">
114
- <?php if ( $venue_post_id ) { ?>
115
- <span itemprop="name"><a href="<?php echo $venue_permalink ?>"><?php echo $venue; ?></a></span>
116
- <div class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
117
- <?php echo $ecwd_event_location; ?>
118
- <?php
119
- if ( $ecwd_event_latlong ) {
120
- ?>
121
- <?php } ?>
122
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
 
124
- <?php } elseif ( $ecwd_event_location ) { ?>
125
- <span class="ecwd_hidden" itemprop="name"><?php echo $ecwd_event_location; ?></span>
126
  <div class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
127
- <?php echo $ecwd_event_location; ?>
 
128
  </div>
 
 
 
 
 
 
 
 
 
 
 
129
  <?php } ?>
 
 
130
  </div>
131
- </div>
132
- <?php if ( $ecwd_social_icons ) {
133
- ?>
134
  <div class="ecwd-social">
135
- <span class="share-links">
136
- <a href="http://twitter.com/home?status=<?php echo get_permalink( $post_id ) ?>" class="ecwd-twitter"
137
- target="_blank" data-original-title="Tweet It">
138
- <span class="visuallyhidden">Twitter</span></a>
139
- <a href="http://www.facebook.com/sharer.php?u=<?php echo get_permalink( $post_id ) ?>" class="ecwd-facebook"
140
- target="_blank" data-original-title="Share on Facebook">
141
- <span class="visuallyhidden">Facebook</span></a>
142
- <a href="http://plus.google.com/share?url=<?php echo get_permalink( $post_id ) ?>" class="ecwd-google-plus"
143
- target="_blank" data-original-title="Share on Google+">
144
- <span class="visuallyhidden">Google+</span></a>
145
- </span>
 
 
 
146
  </div>
147
- <?php } ?>
148
- <?php
149
- if ( $ecwd_event_latlong ) {
150
- $map_events = array();
151
- $map_events[0]['latlong'] = explode( ',', $ecwd_event_latlong );
152
- if ( $ecwd_event_location != '' ) {
153
- $map_events[0]['location'] = $ecwd_event_location;
 
 
 
 
 
154
  }
155
- $map_events[0]['zoom'] = $ecwd_event_zoom;
 
 
156
  $map_events[0]['infow'] = '<div class="ecwd_map_event">';
157
  $map_events[0]['infow'] .= '<span class="location">' . $ecwd_event_location . '</span>';
158
  $map_events[0]['infow'] .= '</div>';
159
  $map_events[0]['infow'] .= '<div class="event-detalis-date">
160
- <label class="ecwd-event-date-info" title="' . __( 'Date', 'event-calendar-wd' ) . '"></label>
161
- <span class="ecwd-event-date" itemprop="startDate" content="' . date( 'Y-m-d', strtotime( $ecwd_event_date_from ) ) . 'T' . date( 'H:i', strtotime( $ecwd_event_date_from ) ) . '">';
162
- if ( $ecwd_all_day_event == 1 ) {
163
- $map_events[0]['infow'] .= date( $date_format, strtotime( $ecwd_event_date_from ) );
164
- if ( $ecwd_event_date_to ) {
165
- $map_events[0]['infow'] .= ' - ' . date( $date_format, strtotime( $ecwd_event_date_to ) ) . ' ' . __( 'All day', 'event-calendar-wd' );
166
- }
167
- } else {
168
- $map_events[0]['infow'] .= date( $date_format, strtotime( $ecwd_event_date_from ) ) . ' ' . date( $time_format, strtotime( $ecwd_event_date_from ) );
169
-
170
- if ( $ecwd_event_date_to ) {
171
- $map_events[0]['infow'] .= date( $date_format, strtotime( $ecwd_event_date_to ) ) . ' ' . date( $time_format, strtotime( $ecwd_event_date_to ) );
172
- }
173
- }
174
  $map_events[0]['infow'] .= ' </span>
175
- </div>';
 
176
 
177
- $markers = json_encode( $map_events );
178
  ?>
179
  <div class="ecwd-show-map">
180
- <div class="ecwd_map_div">
181
- </div>
182
- <textarea class="hidden ecwd_markers" style="display: none;"><?php echo $markers; ?></textarea>
183
  </div>
184
- <?php } ?>
185
- <div class="clear"></div>
186
- </div>
187
-
188
 
189
- <div class="ecwd-event-video">
190
- <?php
191
- if ( strpos( $ecwd_event_video, 'youtube' ) > 0 ) {
192
- parse_str( parse_url( $ecwd_event_video, PHP_URL_QUERY ), $video_array_of_vars );
193
- if ( isset( $video_array_of_vars['v'] ) && $video_array_of_vars['v'] ) {
194
- ?>
195
- <object data="http://www.youtube.com/v/<?php echo $video_array_of_vars['v'] ?>"
196
- type="application/x-shockwave-flash" width="400" height="300">
197
- <param name="src" value="http://www.youtube.com/v/<?php echo $video_array_of_vars['v'] ?>"/>
198
- </object>
199
- <?php }
200
- } elseif ( strpos( $ecwd_event_video, 'vimeo' ) > 0 ) {
201
- $videoID = explode( '/', $ecwd_event_video );
202
- $videoID = $videoID[ count( $videoID ) - 1 ];
203
- if ( $videoID ) {
204
-
205
- ?>
206
- <iframe
 
 
207
  src="http://player.vimeo.com/video/<?php echo $videoID; ?>?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;color=ffffff"
208
  width="" height="" frameborder="0" webkitAllowFullScreen mozallowfullscreen
209
  allowFullScreen></iframe>
210
- <?php }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
 
 
 
 
 
 
 
 
 
 
 
 
 
212
 
213
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
214
 
215
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  </div>
 
 
 
 
 
 
2
  /**
3
  * Display for Event Custom Post Types
4
  */
5
+ if (!defined('ABSPATH')) {
6
+ die('-1');
7
+ }
8
+
9
  global $post;
10
  global $wp;
11
  global $ecwd_options;
12
+ global $wp_query;
13
 
14
  $post_id = $post->ID;
15
+ $meta = get_post_meta($post_id);
16
 
17
+ $date_format = 'Y-m-d';
18
+ $time_format = 'H:i';
19
  $ecwd_social_icons = false;
20
+ if (isset($ecwd_options['date_format']) && $ecwd_options['date_format'] != '') {
21
+ $date_format = $ecwd_options['date_format'];
22
  }
23
+ if (isset($ecwd_options['time_format']) && $ecwd_options['time_format'] != '') {
24
+ $time_format = $ecwd_options['time_format'];
25
  }
26
+ $time_format .= (isset($ecwd_options['time_type']) ? ' ' . $ecwd_options['time_type'] : '');
27
+ if (isset($ecwd_options['time_type']) && $ecwd_options['time_type'] != '') {
28
+ $time_format = str_replace('H', 'g', $time_format);
29
+ $time_format = str_replace('h', 'g', $time_format);
30
  }
31
+ if (isset($ecwd_options['social_icons']) && $ecwd_options['social_icons'] != '') {
32
+ $ecwd_social_icons = $ecwd_options['social_icons'];
33
  }
34
  // Load up all post meta data
35
+
36
+
37
+ $ecwd_event = $post;
38
+ $ecwd_event_metas = get_post_meta($ecwd_event->ID, '', true);
39
+ $ecwd_event_date_from = $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'][0];
40
+ $ecwd_event_date_to = $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'][0];
41
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'])) {
42
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'] = array(0 => '');
43
+ }
44
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'])) {
45
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'] = array(0 => '');
46
+ }
47
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'])) {
48
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'] = array(0 => '');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  }
50
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'])) {
51
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'] = array(0 => '');
52
+ }
53
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'])) {
54
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'] = array(0 => '');
55
+ }
56
+
57
+ $permalink = get_the_permalink($ecwd_event->ID);
58
+ $this_event = $events[$ecwd_event->ID] = new ECWD_Event($ecwd_event->ID, '', $ecwd_event->post_title, $ecwd_event->post_content, $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'][0], $permalink, $ecwd_event, '', $ecwd_event_metas);
59
+ $d = new ECWD_Display('');
60
+ if (isset($_GET['eventDate']) || isset($wp_query->query_vars['eventDate'])) {
61
+ $start_time = date('H:i', strtotime($ecwd_event_date_from));
62
+ $end_time = date('H:i', strtotime($ecwd_event_date_to));
63
+
64
+
65
+ $ecwd_event_date_from = isset($_GET['eventDate']) ? sanitize_text_field($_GET['eventDate']) : $wp_query->query_vars['eventDate'];
66
+ $eventdayslong = $d->dateDiff($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'][0]);
67
+ $ecwd_event_date_to = date('Y-m-d', strtotime((date("Y-m-d", (strtotime($ecwd_event_date_from))) . " +" . ($eventdayslong) . " days")));
68
+ $ecwd_event_date_from .= ' ' . $start_time;
69
+ $ecwd_event_date_to .= ' ' . $end_time;
70
+ }
71
+
72
+
73
+ $ecwd_event_location = isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'][0]) ? $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'][0] : '';
74
+ $ecwd_event_latlong = isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'][0]) ? $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'][0] : '';
75
+ //$ecwd_event_zoom = isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_map_zoom'][0]) ? $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_map_zoom'][0] : '';
76
+ $ecwd_event_show_map = isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_show_map'][0]) ? $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_show_map'][0] : 0;
77
+ if ($ecwd_event_show_map == '') {
78
+ $ecwd_event_show_map = 1;
79
+ }
80
+
81
+ $ecwd_event_organizers = isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_organizers'][0]) ? $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_organizers'][0] : '';
82
+
83
+
84
+ $ecwd_event_url = isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'][0]) ? $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'][0] : '';
85
+ $ecwd_event_url = ECWD::add_http($ecwd_event_url);
86
+ $ecwd_event_video = isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_video'][0]) ? $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_video'][0] : '';
87
+ $ecwd_all_day_event = isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_all_day_event'][0]) ? $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_all_day_event'][0] : 0;
88
+ $venue = '';
89
+ $venue_permalink = '';
90
+ $venue_post_id = isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_venue'][0]) ? $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_venue'][0] : 0;
91
+ if ($venue_post_id) {
92
+ $venue_post = get_post($venue_post_id);
93
+ if ($venue_post) {
94
+ $venue = $venue_post->post_title;
95
+ $venue_permalink = get_permalink($venue_post->ID);
96
+ }
97
+ }
98
+
99
+ $venue_meta_template = '<div class="%s"><span>%s:</span><span>%s</span></div>';
100
+ $venue_meta_link_template = '<div class="%s"><span>%s:</span><a href="%s">%s</a></div>';
101
+
102
+ if (is_numeric($venue_post_id)) {
103
+ $ecwd_venue_phone = get_post_meta($venue_post_id, 'ecwd_venue_meta_phone', true);
104
+ $ecwd_venue_website = get_post_meta($venue_post_id, 'ecwd_venue_meta_website', true);
105
+ $ecwd_event_zoom = get_post_meta($venue_post_id, 'ecwd_map_zoom', true);
106
+ $ecwd_venue_website = ECWD::add_http($ecwd_venue_website);
107
+ } else {
108
+ $ecwd_venue_phone = $ecwd_venue_website = "";
109
+ $ecwd_event_zoom = "";
110
+ }
111
+
112
+ if (!$ecwd_event_zoom) {
113
+ $ecwd_event_zoom = (isset($ecwd_options['gmap_zoom'])) ? $ecwd_options['gmap_zoom'] : 17;
114
+ }
115
+
116
+ $organizers = array();
117
+ $ecwd_event_organizers = maybe_unserialize($ecwd_event_organizers);
118
+ if (is_array($ecwd_event_organizers) || is_object($ecwd_event_organizers)) {
119
+ foreach ($ecwd_event_organizers as $ecwd_event_organizer) {
120
+ $temp = get_post($ecwd_event_organizer, ARRAY_A);
121
+ if ($temp !== null) {
122
+ $organizers[] = $temp;
123
+ }
124
+ }
125
+ }
126
+
127
+ $category_and_tags = false;
128
+
129
+ if (isset($ecwd_options['category_and_tags']) && $ecwd_options['category_and_tags'] != '') {
130
+ $category_and_tags = $ecwd_options['category_and_tags'];
131
+ }
132
+ $args = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
133
+ $event_tags = wp_get_post_terms($post->ID, 'ecwd_event_tag', $args);
134
+ $event_categories = wp_get_post_terms($post->ID, 'ecwd_event_category', $args);
135
+
136
+ $default_calendar = get_option('ecwd_default_calendar');
137
+ $calendars_id = get_post_meta($post_id, 'ecwd_event_calendars', true);
138
+
139
+ $back_link = null;
140
+ $back_link_text = __('View Calendar', 'event-calendar-wd');
141
+ if (!empty($calendars_id)) {
142
+ if ($default_calendar !== false && in_array($default_calendar, $calendars_id)) {
143
+ $back_link = get_permalink($default_calendar);
144
+ } else {
145
+ $back_link = get_permalink(array_shift($calendars_id));
146
+ }
147
+ } else {
148
+ if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']) {
149
+ if (parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) == parse_url(site_url(), PHP_URL_HOST)) {
150
+ $back_link = $_SERVER['HTTP_REFERER'];
151
+ $back_link_text = __('Back', 'event-calendar-wd');
152
+ }
153
+ }
154
+ }
155
+
156
  ?>
157
 
158
+ <div class="ecwd-event ecwd-single-event" itemscope itemtype="http://schema.org/Event">
159
+ <?php if ( ! post_password_required( $post ) ) { ?>
160
+ <?php if ($back_link !== null) { ?>
161
+ <a id="ecwd_back_link" href="<?php echo $back_link; ?>"><?php echo $back_link_text; ?></a>
162
+ <?php } ?>
163
+ <div class="event-detalis">
164
+ <div class="ecwd-event-details">
165
+ <div class="event-detalis-date">
166
+ <label class="ecwd-event-date-info" title="<?php _e('Date', 'event-calendar-wd'); ?>"></label>
167
+ <span
168
+ class="ecwd-event-date"
169
+ itemprop="startDate"
170
+ content="<?php echo date('Y-m-d', strtotime($ecwd_event_date_from)) . 'T' . date('H:i', strtotime($ecwd_event_date_from)) ?>">
171
+ <?php echo ECWD::get_ecwd_event_date_view($ecwd_event_date_from, $ecwd_event_date_to, $ecwd_all_day_event); ?>
172
+ </span>
173
+ </div>
174
+ <?php
175
+ if (isset($ecwd_options['show_repeat_rate'])) {
176
+ $repeat_rate_text = $d->get_repeat_rate($post_id, '', $date_format);
177
+ if ($repeat_rate_text != ''): ?>
178
+ <div class="ecwd_repeat_rate_text">
179
+ <span><?php echo $d->get_repeat_rate($post_id, '', $date_format); ?></span>
180
+ </div>
181
+ <?php endif;
182
+ }
 
 
 
 
 
183
 
184
+ if ($ecwd_event_url) { ?>
185
+ <div class="ecwd-url">
186
+ <a href="<?php echo $ecwd_event_url; ?>" target="_blank">
187
+ <label class="ecwd-event-url-info" title="<?php _e('Url', 'event-calendar-wd'); ?>"></label>
188
+ <?php echo $ecwd_event_url; ?>
189
+ </a>
190
  </div>
191
+ <?php }
192
+
193
+
194
+ if (count($organizers) > 0) { ?>
195
  <div class="event-detalis-org">
196
+ <label class="ecwd-event-org-info" title="<?php _e('Organizers', 'event-calendar-wd'); ?>"></label>
197
+
198
+ <?php if (count($organizers) > 1) { ?>
199
+ <?php foreach ($organizers as $organizer) { ?>
200
+ <span itemprop="organizer">
201
+ <a href="<?php echo get_permalink($organizer['ID']) ?>">
202
+ <?php echo $organizer['post_title'] ?>
203
+ </a>
204
+ </span>
205
+
206
+ <?php }
207
+ } else {
208
+ $organizer = $organizers[0];
209
+ ?>
210
+
211
+ <span itemprop="organizer">
212
+ <a href="<?php echo get_permalink($organizer['ID']) ?>">
213
+ <?php echo $organizer['post_title'] ?>
214
+ </a>
215
+ </span>
216
+
217
+ <?php
218
+ $organizer_phone = get_post_meta($organizer['ID'], 'ecwd_organizer_meta_phone', true);
219
+ $organizer_website = get_post_meta($organizer['ID'], 'ecwd_organizer_meta_website', true);
220
+ $organizer_website = ECWD::add_http($organizer_website);
221
+ if (!empty($organizer_phone)) { ?>
222
+ <div class="ecwd_organizer_phone">
223
+ <span><?php _e('Phone', 'event-calendar-wd'); ?>:</span>
224
+ <span><?php echo $organizer_phone; ?></span>
225
+ </div>
226
+ <?php }
227
+ if (!empty($organizer_website)) { ?>
228
+ <div class="ecwd_organizer_website">
229
+ <span><?php _e('Website', 'event-calendar-wd'); ?>:</span>
230
+ <a href="<?php echo $organizer_website; ?>">
231
+ <?php echo $organizer_website; ?>
232
+ </a>
233
+ </div>
234
+ <?php }
235
+ } ?>
236
  </div>
237
+ <?php } ?>
238
+
239
+
240
+ <div class="event-venue" itemprop="location" itemscope itemtype="http://schema.org/Place">
241
+ <?php if ($venue_post_id) { ?>
242
+ <label class="ecwd-venue-info" title="<?php _e('Venue', 'event-calendar-wd'); ?>"></label>
243
+ <span itemprop="name">
244
+ <a
245
+ <?php
246
+ if (isset($_GET['iframe']) && intval($_GET['iframe']) == 1) {
247
+ $venue_permalink = add_query_arg('venue', '1', $venue_permalink);
248
+ }
249
+ ?>
250
+ href="<?php echo $venue_permalink ?>"><?php echo $venue; ?></a>
251
+ </span>
252
+
253
+ <?php
254
+
255
+ if (!empty($ecwd_venue_phone)) {
256
+ echo sprintf($venue_meta_template, "ecwd_venue_phone", __('Phone', 'event-calendar-wd'), $ecwd_venue_phone);
257
+ }
258
+
259
+ if (!empty($ecwd_venue_website)) {
260
+ echo sprintf($venue_meta_link_template, "ecwd_venue_website", __('Website', 'event-calendar-wd'), $ecwd_venue_website, $ecwd_venue_website);
261
+ }
262
 
263
+ if (!empty($ecwd_event_location)) {
264
+ ?>
265
  <div class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
266
+ <span><?php _e('Address:', 'event-calendar-wd'); ?></span>
267
+ <span><?php echo $ecwd_event_location; ?></span>
268
  </div>
269
+ <?php
270
+ }
271
+ ?>
272
+
273
+ <?php } elseif ($ecwd_event_location) { ?>
274
+ <span class="ecwd_hidden" itemprop="name"><?php echo $ecwd_event_location; ?></span>
275
+ <label class="ecwd-venue-info"
276
+ title="<?php _e('Location', 'event-calendar-wd'); ?>"></label>
277
+ <span class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
278
+ <?php echo $ecwd_event_location; ?>
279
+ </span>
280
  <?php } ?>
281
+ </div>
282
+ <?php do_action('ecwd_view_ext'); ?>
283
  </div>
284
+ </div>
285
+ <?php if ($ecwd_social_icons) { ?>
 
286
  <div class="ecwd-social">
287
+ <span class="share-links">
288
+ <a href="http://twitter.com/home?status=<?php echo get_permalink($post_id) ?>"
289
+ class="ecwd-twitter"
290
+ target="_blank" data-original-title="Tweet It">
291
+ <span class="visuallyhidden">Twitter</span></a>
292
+ <a href="http://www.facebook.com/sharer.php?u=<?php echo get_permalink($post_id) ?>"
293
+ class="ecwd-facebook"
294
+ target="_blank" data-original-title="Share on Facebook">
295
+ <span class="visuallyhidden">Facebook</span></a>
296
+ <a href="http://plus.google.com/share?url=<?php echo get_permalink($post_id) ?>"
297
+ class="ecwd-google-plus"
298
+ target="_blank" data-original-title="Share on Google+">
299
+ <span class="visuallyhidden">Google+</span></a>
300
+ </span>
301
  </div>
302
+ <?php }
303
+
304
+ if ($ecwd_event_show_map == 1 && $ecwd_event_latlong) {
305
+ $map_events = array();
306
+ $url_for_google_map = '';
307
+ $map_events[0]['latlong'] = explode(',', $ecwd_event_latlong);
308
+ if ($ecwd_event_location != '') {
309
+ $map_events[0]['location'] = $ecwd_event_location;
310
+
311
+ $url_for_google_map .= 'https://www.google.com/maps/place/';
312
+ $url_for_google_map .= urlencode($ecwd_event_location) . '/';
313
+ $url_for_google_map .= '@' . $ecwd_event_latlong;;
314
  }
315
+
316
+
317
+ $map_events[0]['zoom'] = $ecwd_event_zoom;
318
  $map_events[0]['infow'] = '<div class="ecwd_map_event">';
319
  $map_events[0]['infow'] .= '<span class="location">' . $ecwd_event_location . '</span>';
320
  $map_events[0]['infow'] .= '</div>';
321
  $map_events[0]['infow'] .= '<div class="event-detalis-date">
322
+ <label class="ecwd-event-date-info" title="' . __('Date', 'event-calendar-wd') . '"></label>
323
+ <span class="ecwd-event-date" itemprop="startDate" content="' . date('Y-m-d', strtotime($ecwd_event_date_from)) . 'T' . date('H:i', strtotime($ecwd_event_date_from)) . '">';
324
+ $map_events[0]['infow'] .= ECWD::get_ecwd_event_date_view($ecwd_event_date_from, $ecwd_event_date_to, $ecwd_all_day_event);
 
 
 
 
 
 
 
 
 
 
 
325
  $map_events[0]['infow'] .= ' </span>
326
+ </div>';
327
+ $map_events[0]['google_map_url'] = $url_for_google_map;
328
 
329
+ $markers = json_encode($map_events);
330
  ?>
331
  <div class="ecwd-show-map">
332
+ <div class="ecwd_map_div">
333
+ </div>
334
+ <textarea class="hidden ecwd_markers" style="display: none;"><?php echo $markers; ?></textarea>
335
  </div>
336
+ <?php } ?>
337
+ <div class="clear"></div>
 
 
338
 
339
+ <?php if (!empty($ecwd_event_video)) { ?>
340
+ <div class="ecwd-event-video">
341
+ <?php
342
+ if (strpos($ecwd_event_video, 'youtube') > 0) {
343
+ parse_str(parse_url($ecwd_event_video, PHP_URL_QUERY), $video_array_of_vars);
344
+ if (isset($video_array_of_vars['v']) && $video_array_of_vars['v']) {
345
+ ?>
346
+ <object data="http://www.youtube.com/v/<?php echo $video_array_of_vars['v'] ?>"
347
+ type="application/x-shockwave-flash" width="400" height="300">
348
+ <param name="src"
349
+ value="http://www.youtube.com/v/<?php echo $video_array_of_vars['v'] ?>"/>
350
+ </object>
351
+ <?php
352
+ }
353
+ } elseif (strpos($ecwd_event_video, 'vimeo') > 0) {
354
+ $videoID = explode('/', $ecwd_event_video);
355
+ $videoID = $videoID[count($videoID) - 1];
356
+ if ($videoID) {
357
+ ?>
358
+ <iframe
359
  src="http://player.vimeo.com/video/<?php echo $videoID; ?>?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;color=ffffff"
360
  width="" height="" frameborder="0" webkitAllowFullScreen mozallowfullscreen
361
  allowFullScreen></iframe>
362
+ <?php
363
+ }
364
+ }
365
+ ?>
366
+ </div>
367
+ <?php } ?>
368
+ <div class="entry-content-event"><?php echo wpautop($post->post_content); ?></div>
369
+ <!-- Categories and tags -->
370
+ <?php if ($category_and_tags == 1) { ?>
371
+ <div class="event_cageory_and_tags">
372
+
373
+ <?php if (!empty($event_categories)) { ?>
374
+ <ul class="event_categories">
375
+ <?php foreach ($event_categories as $category) {
376
+ $metas = get_option("ecwd_event_category_$category->term_id");
377
+ ?>
378
+ <li class="event_category event-details-title">
379
+ <?php if ($metas['color']) { ?>
380
+ <span class="event-metalabel" style="background:<?php echo $metas['color']; ?>"></span>
381
+ <span class="event_catgeory_name">
382
+ <a href="<?php echo get_category_link($category); ?>"
383
+ style="color:<?php echo $metas['color']; ?>">
384
+ <?php echo $category->name; ?>
385
+ </a></span>
386
+ <?php } else { ?>
387
+ <span class="event_catgeory_name">
388
+ <a href="<?php echo get_category_link($category); ?>">
389
+ <?php echo $category->name; ?>
390
+ </a>
391
+ </span>
392
+ <?php } ?>
393
+ </li>
394
+ <?php } ?>
395
+ </ul>
396
+ <?php }
397
+
398
+ if (!empty($event_tags)) { ?>
399
+ <ul class="event_tags">
400
+ <?php foreach ($event_tags as $tag) { ?>
401
+ <li class="event_tag">
402
+ <span class="event_tag_name">
403
+ <a href="<?php echo get_tag_link($tag); ?>">#<?php echo $tag->name; ?> </a>
404
+ </span>
405
+ </li>
406
+ <?php
407
+ } ?>
408
+ </ul>
409
+ <?php } ?>
410
+ </div>
411
+ <?php } ?>
412
+ <!-- END Categories and tags -->
413
 
414
+ <?php
415
+ do_action('ecwd_tickets_events_single_meta', '', $ecwd_event_date_to);
416
+ do_action('ecwd_single_event_page_links', $ecwd_event, $ecwd_event_metas, array('start_date' => $ecwd_event_date_from, 'end_date' => $ecwd_event_date_to));
417
+ ?>
418
+ <?php
419
+ if (!isset($ecwd_options['related_events']) || $ecwd_options['related_events'] == 1) {
420
+ $post_cats = wp_get_post_terms($post_id, ECWD_PLUGIN_PREFIX . '_event_category');
421
+ $cat_ids = wp_list_pluck($post_cats, 'term_id');
422
+ $post_tags = wp_get_post_terms($post_id, ECWD_PLUGIN_PREFIX . '_event_tag');
423
+ $tag_ids = wp_list_pluck($post_tags, 'term_id');
424
+ $events = array();
425
+ $today = date('Y-m-d');
426
 
427
+ $args = array(
428
+ 'numberposts' => -1,
429
+ 'post_type' => ECWD_PLUGIN_PREFIX . '_event',
430
+ 'tax_query' => array(
431
+ array(
432
+ 'taxonomy' => ECWD_PLUGIN_PREFIX . '_event_category',
433
+ 'terms' => $cat_ids,
434
+ 'field' => 'term_id',
435
+ )
436
+ ),
437
+ 'orderby' => 'meta_value',
438
+ 'order' => 'ASC'
439
+ );
440
+ $ecwd_events_by_cats = get_posts($args);
441
+ $args = array(
442
+ 'numberposts' => -1,
443
+ 'post_type' => ECWD_PLUGIN_PREFIX . '_event',
444
+ 'tax_query' => array(
445
+ array(
446
+ 'taxonomy' => ECWD_PLUGIN_PREFIX . '_event_tag',
447
+ 'terms' => $tag_ids,
448
+ 'field' => 'term_id',
449
+ ),
450
+ ),
451
+ 'orderby' => 'meta_value',
452
+ 'order' => 'ASC'
453
+ );
454
 
455
+ $ecwd_events_by_tags = get_posts($args);
456
+ $ecwd_events = array_merge($ecwd_events_by_tags, $ecwd_events_by_cats);
457
+ $ecwd_events = array_map("unserialize", array_unique(array_map("serialize", $ecwd_events)));
458
+ wp_reset_postdata();
459
+ wp_reset_query();
460
+
461
+ foreach ($ecwd_events as $ecwd_event) {
462
+ if ($ecwd_event->ID != $post_id) {
463
+ $term_metas = '';
464
+ $categories = get_the_terms($ecwd_event->ID, ECWD_PLUGIN_PREFIX . '_event_category');
465
+ if (is_array($categories)) {
466
+ foreach ($categories as $category) {
467
+ $term_metas = get_option("ecwd_event_category_$category->term_id");
468
+ $term_metas['id'] = $category->term_id;
469
+ $term_metas['name'] = $category->name;
470
+ $term_metas['slug'] = $category->slug;
471
+ }
472
+ }
473
+ $ecwd_event_metas = get_post_meta($ecwd_event->ID, '', true);
474
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'] = array(0 => '');
475
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'])) {
476
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'] = array(0 => '');
477
+ }
478
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'])) {
479
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'] = array(0 => '');
480
+ }
481
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'])) {
482
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'] = array(0 => '');
483
+ }
484
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'])) {
485
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'] = array(0 => '');
486
+ }
487
+
488
+ $permalink = get_permalink($ecwd_event->ID);
489
+ $events[$ecwd_event->ID] = new ECWD_Event($ecwd_event->ID, 0, $ecwd_event->post_title, $ecwd_event->post_content, $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'][0], $permalink, $ecwd_event, $term_metas, $ecwd_event_metas);
490
+ }
491
+ }
492
+ $d = new ECWD_Display(0, '', '', $today);
493
+ $start_date = date('Y-m-d');
494
+ $end_date = date('Y-m-d', strtotime("+1 year", strtotime($start_date)));
495
+ $events = $d->get_event_days($events, 1, $start_date, $end_date);
496
+ $events = $d->events_unique($events);
497
+ do_action('ecwd_show_related_events', $events, true);
498
+ }
499
+ } else {
500
+ echo get_the_password_form();
501
+ } ?>
502
  </div>
503
+
504
+
505
+ <script id="ecwd_script_handler" type="text/javascript">if (typeof ecwd_js_init_call == "object") {
506
+ ecwd_js_init_call = new ecwd_js_init();
507
+ ecwd_js_init_call.showMap();
508
+ }</script>
views/single-event.php CHANGED
@@ -157,22 +157,6 @@ if (isset($ecwd_options['cat_title_color']) && $ecwd_options['cat_title_color']
157
 
158
  $default_calendar = get_option('ecwd_default_calendar');
159
  $calendars_id = get_post_meta($post_id, 'ecwd_event_calendars', true);
160
- $back_link = null;
161
- $back_link_text = __('View Calendar', 'event-calendar-wd');
162
- if (!empty($calendars_id)) {
163
- if ($default_calendar !== false && in_array($default_calendar, $calendars_id)) {
164
- $back_link = get_permalink($default_calendar);
165
- } else {
166
- $back_link = get_permalink(array_shift($calendars_id));
167
- }
168
- } else {
169
- if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']) {
170
- if (parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) == parse_url(site_url(), PHP_URL_HOST)) {
171
- $back_link = $_SERVER['HTTP_REFERER'];
172
- $back_link_text = __('Back', 'event-calendar-wd');
173
- }
174
- }
175
- }
176
 
177
  get_header();
178
  if ( class_exists( 'WooCommerce' ) ) {
@@ -190,214 +174,213 @@ if ( class_exists( 'WooCommerce' ) ) {
190
  <header class="entry-header">
191
  <?php the_title('<h1 itemprop="name" class="ecwd-events-single-event-title summary entry-title" ' . $event_title_style . '>', '</h1>'); ?>
192
  </header>
193
- <?php if ($back_link !== null) { ?>
194
- <a id="ecwd_back_link" href="<?php echo $back_link; ?>"><?php echo $back_link_text; ?></a>
195
- <?php } ?>
196
- <div class="event-detalis">
197
- <?php if ($featured_image && $featured_image !== '') { ?>
198
- <div class="event-featured-image">
199
- <img src="<?php echo $featured_image; ?>"/>
200
- </div>
201
- <?php } ?>
202
- <div class="ecwd-event-details">
203
- <div class="event-detalis-date">
204
- <label class="ecwd-event-date-info" title="<?php _e('Date', 'event-calendar-wd'); ?>"></label>
205
- <span
206
- class="ecwd-event-date"
207
- itemprop="startDate"
208
- content="<?php echo date('Y-m-d', strtotime($ecwd_event_date_from)) . 'T' . date('H:i', strtotime($ecwd_event_date_from)) ?>">
209
- <?php echo ECWD::get_ecwd_event_date_view($ecwd_event_date_from, $ecwd_event_date_to, $ecwd_all_day_event); ?>
210
- </span>
211
- </div>
212
-
213
- <?php
214
- if (isset($ecwd_options['show_repeat_rate'])) {
215
- $repeat_rate_text = $d->get_repeat_rate($post_id, '', $date_format);
216
- if ($repeat_rate_text != ''):
217
- ?>
218
- <div class="ecwd_repeat_rate_text">
219
- <span><?php echo $d->get_repeat_rate($post_id, '', $date_format); ?></span>
220
- </div>
221
- <?php
222
- endif;
223
- } ?>
224
-
225
- <?php if ($ecwd_event_url) { ?>
226
- <div class="ecwd-url">
227
- <a href="<?php echo $ecwd_event_url; ?>" target="_blank">
228
- <label class="ecwd-event-url-info" title="<?php _e('Url', 'event-calendar-wd'); ?>"></label>
229
- <?php echo $ecwd_event_url; ?>
230
- </a>
231
- </div>
232
- <?php }
233
-
234
- if (count($organizers) > 0) { ?>
235
- <div class="event-detalis-org">
236
- <label class="ecwd-event-org-info" title="<?php _e('Organizers', 'event-calendar-wd'); ?>"></label>
237
-
238
- <?php if (count($organizers) > 1) { ?>
239
- <?php foreach ($organizers as $organizer) { ?>
240
- <span itemprop="organizer">
241
- <a href="<?php echo get_permalink($organizer['ID']) ?>">
242
- <?php echo $organizer['post_title'] ?>
243
- </a>
244
- </span>
245
-
246
- <?php }
247
- } else {
248
- $organizer = $organizers[0];
249
- ?>
250
-
251
- <span itemprop="organizer">
252
- <a href="<?php echo get_permalink($organizer['ID']) ?>">
253
- <?php echo $organizer['post_title'] ?>
254
- </a>
255
- </span>
256
-
257
- <?php
258
- $organizer_phone = get_post_meta($organizer['ID'], 'ecwd_organizer_meta_phone', true);
259
- $organizer_website = get_post_meta($organizer['ID'], 'ecwd_organizer_meta_website', true);
260
- $organizer_website = ECWD::add_http($organizer_website);
261
-
262
- if (!empty($organizer_phone)) { ?>
263
- <div class="ecwd_organizer_phone">
264
- <span><?php _e('Phone', 'event-calendar-wd'); ?>:</span>
265
- <span><?php echo $organizer_phone; ?></span>
266
- </div>
267
- <?php }
268
- if (!empty($organizer_website)) { ?>
269
- <div class="ecwd_organizer_website">
270
- <span><?php _e('Website', 'event-calendar-wd'); ?>:</span>
271
- <a href="<?php echo $organizer_website; ?>">
272
- <?php echo $organizer_website; ?>
273
- </a>
274
- </div>
275
- <?php }
276
- } ?>
277
- </div>
278
- <?php } ?>
279
-
280
- <div class="event-venue" itemprop="location" itemscope itemtype="http://schema.org/Place">
281
- <?php if ($venue_post_id) { ?>
282
- <label class="ecwd-venue-info" title="<?php _e('Venue', 'event-calendar-wd'); ?>"></label>
283
- <span itemprop="name">
284
- <a
285
- <?php
286
- if (isset($_GET['iframe']) && intval($_GET['iframe']) == 1) {
287
- $venue_permalink = add_query_arg('venue', '1', $venue_permalink);
288
- }
289
- ?>
290
- href="<?php echo $venue_permalink ?>"><?php echo $venue; ?></a>
291
- </span>
292
-
293
- <?php
294
-
295
- if (!empty($ecwd_venue_phone)) {
296
- echo sprintf($venue_meta_template, "ecwd_venue_phone", __('Phone', 'event-calendar-wd'), $ecwd_venue_phone);
297
- }
298
-
299
- if (!empty($ecwd_venue_website)) {
300
- echo sprintf($venue_meta_link_template, "ecwd_venue_website", __('Website', 'event-calendar-wd'), $ecwd_venue_website, $ecwd_venue_website);
301
- }
302
-
303
- if (!empty($ecwd_event_location)) {
304
- ?>
305
- <div class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
306
- <span><?php _e('Address:', 'event-calendar-wd'); ?></span>
307
- <span><?php echo $ecwd_event_location; ?></span>
308
- </div>
309
- <?php
310
- }
311
- ?>
312
-
313
- <?php } elseif ($ecwd_event_location) { ?>
314
- <span class="ecwd_hidden" itemprop="name"><?php echo $ecwd_event_location; ?></span>
315
- <label class="ecwd-venue-info"
316
- title="<?php _e('Location', 'event-calendar-wd'); ?>"></label>
317
- <span class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
318
- <?php echo $ecwd_event_location; ?>
319
- </span>
320
- <?php } ?>
321
- </div>
322
-
323
- <?php do_action('ecwd_view_ext'); ?>
324
- </div>
325
- </div>
326
- <?php if ($ecwd_social_icons) { ?>
327
-
328
- <div class="ecwd-social">
329
- <span class="share-links">
330
- <a href="http://twitter.com/home?status=<?php echo get_permalink($post_id) ?>"
331
- class="ecwd-twitter"
332
- target="_blank" data-original-title="Tweet It">
333
- <span class="visuallyhidden">Twitter</span></a>
334
- <a href="http://www.facebook.com/sharer.php?u=<?php echo get_permalink($post_id) ?>"
335
- class="ecwd-facebook"
336
- target="_blank" data-original-title="Share on Facebook">
337
- <span class="visuallyhidden">Facebook</span></a>
338
- <a href="http://plus.google.com/share?url=<?php echo get_permalink($post_id) ?>"
339
- class="ecwd-google-plus"
340
- target="_blank" data-original-title="Share on Google+">
341
- <span class="visuallyhidden">Google+</span></a>
342
- </span>
343
- </div>
344
- <?php }
345
- if ($ecwd_event_show_map == 1 && $ecwd_event_latlong) {
346
- $map_events = array();
347
- $map_events[0]['latlong'] = explode(',', $ecwd_event_latlong);
348
- if ($ecwd_event_location != '') {
349
- $map_events[0]['location'] = $ecwd_event_location;
350
- }
351
- $map_events[0]['zoom'] = $ecwd_event_zoom;
352
- $map_events[0]['infow'] = '<div class="ecwd_map_event">';
353
- $map_events[0]['infow'] .= '<span class="location">' . $ecwd_event_location . '</span>';
354
- $map_events[0]['infow'] .= '</div>';
355
- $map_events[0]['infow'] .= '<div class="event-detalis-date">
356
- <label class="ecwd-event-date-info" title="' . __('Date', 'event-calendar-wd') . '"></label>
357
- <span class="ecwd-event-date" itemprop="startDate" content="' . date('Y-m-d', strtotime($ecwd_event_date_from)) . 'T' . date('H:i', strtotime($ecwd_event_date_from)) . '">';
358
- $map_events[0]['infow'] .= ECWD::get_ecwd_event_date_view($ecwd_event_date_from, $ecwd_event_date_to, $ecwd_all_day_event);
359
-
360
- $map_events[0]['infow'] .= '</span></div>';
361
- $markers = json_encode($map_events);
362
- ?>
363
- <div class="ecwd-show-map">
364
- <div class="ecwd_map_div"></div>
365
- <textarea class="hidden ecwd_markers" style="display: none;"><?php echo $markers; ?></textarea>
366
- </div>
367
- <?php } ?>
368
- <div class="clear"></div>
369
-
370
- <?php if (!empty($ecwd_event_video)) { ?>
371
- <div class="ecwd-event-video">
372
- <?php
373
- if (strpos($ecwd_event_video, 'youtube') > 0) {
374
- parse_str(parse_url($ecwd_event_video, PHP_URL_QUERY), $video_array_of_vars);
375
- if (isset($video_array_of_vars['v']) && $video_array_of_vars['v']) {
376
- ?>
377
- <object data="http://www.youtube.com/v/<?php echo $video_array_of_vars['v'] ?>"
378
- type="application/x-shockwave-flash" width="400" height="300">
379
- <param name="src"
380
- value="http://www.youtube.com/v/<?php echo $video_array_of_vars['v'] ?>"/>
381
- </object>
382
- <?php
383
- }
384
- } elseif (strpos($ecwd_event_video, 'vimeo') > 0) {
385
- $videoID = explode('/', $ecwd_event_video);
386
- $videoID = $videoID[count($videoID) - 1];
387
- if ($videoID) { ?>
388
- <iframe
389
- src="http://player.vimeo.com/video/<?php echo $videoID; ?>?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;color=ffffff"
390
- width="" height="" frameborder="0" webkitAllowFullScreen mozallowfullscreen
391
- allowFullScreen></iframe>
392
- <?php
393
- }
394
- }
395
- ?>
396
- </div>
397
- <?php } ?>
398
- <!-- Content -->
399
-
400
- <?php
401
 
402
  $event_content = get_the_content();
403
  if (!empty($event_content)) { ?>
@@ -405,141 +388,141 @@ if ( class_exists( 'WooCommerce' ) ) {
405
  <?php } ?>
406
  <!-- End Content -->
407
 
408
-
409
- <!-- Categories and tags -->
410
- <?php if ($category_and_tags == 1) { ?>
411
- <div class="event_cageory_and_tags">
412
-
413
- <?php if (!empty($event_categories)) { ?>
414
- <ul class="event_categories">
415
- <?php
416
- foreach ($event_categories as $category) {
417
- $metas = get_option("ecwd_event_category_$category->term_id");
418
- ?>
419
- <li class="event_category event-details-title">
420
- <?php if ($metas['color']) { ?>
421
- <span class="event-metalabel" style="background:<?php echo $metas['color']; ?>"></span>
422
- <span class="event_catgeory_name">
423
- <a href="<?php echo get_category_link($category); ?>"
424
- style="color:<?php echo $metas['color']; ?>">
425
- <?php echo $category->name; ?>
426
- </a>
427
- </span>
428
- <?php } else { ?>
429
- <span class="event_catgeory_name">
430
- <a href="<?php echo get_category_link($category); ?>">
431
- <?php echo $category->name; ?>
432
- </a>
433
- </span>
434
- <?php } ?>
435
- </li>
436
- <?php } ?>
437
- </ul>
438
- <?php }
439
-
440
- if (!empty($event_tags)) { ?>
441
- <ul class="event_tags">
442
- <?php foreach ($event_tags as $tag) { ?>
443
- <li class="event_tag">
444
- <span class="event_tag_name">
445
- <a href="<?php echo get_tag_link($tag); ?>">#<?php echo $tag->name; ?> </a>
446
- </span>
447
- </li>
448
- <?php } ?>
449
- </ul>
450
- <?php } ?>
451
- </div>
452
- <?php } ?>
453
- <!-- END Categories and tags -->
454
- <?php
455
- if (!isset($ecwd_options['related_events']) || $ecwd_options['related_events'] == 1) {
456
- $post_cats = wp_get_post_terms($post_id, ECWD_PLUGIN_PREFIX . '_event_category');
457
- $cat_ids = wp_list_pluck($post_cats, 'term_id');
458
- $post_tags = wp_get_post_terms($post_id, ECWD_PLUGIN_PREFIX . '_event_tag');
459
- $tag_ids = wp_list_pluck($post_tags, 'term_id');
460
- $events = array();
461
- $today = date('Y-m-d');
462
-
463
- $args = array(
464
- 'numberposts' => -1,
465
- 'post_type' => ECWD_PLUGIN_PREFIX . '_event',
466
- 'tax_query' => array(
467
- array(
468
- 'taxonomy' => ECWD_PLUGIN_PREFIX . '_event_category',
469
- 'terms' => $cat_ids,
470
- 'field' => 'term_id',
471
- )
472
- ),
473
- 'orderby' => 'meta_value',
474
- 'order' => 'ASC'
475
- );
476
- $ecwd_events_by_cats = get_posts($args);
477
- $args = array(
478
- 'numberposts' => -1,
479
- 'post_type' => ECWD_PLUGIN_PREFIX . '_event',
480
- 'tax_query' => array(
481
- array(
482
- 'taxonomy' => ECWD_PLUGIN_PREFIX . '_event_tag',
483
- 'terms' => $tag_ids,
484
- 'field' => 'term_id',
485
- ),
486
- ),
487
- 'orderby' => 'meta_value',
488
- 'order' => 'ASC'
489
- );
490
- $ecwd_events_by_tags = get_posts($args);
491
- $ecwd_events = array_merge($ecwd_events_by_tags, $ecwd_events_by_cats);
492
- $ecwd_events = array_map("unserialize", array_unique(array_map("serialize", $ecwd_events)));
493
- wp_reset_postdata();
494
- wp_reset_query();
495
-
496
- foreach ($ecwd_events as $ecwd_event) {
497
- if ($ecwd_event->ID != $post_id) {
498
- $term_metas = '';
499
- $categories = get_the_terms($ecwd_event->ID, ECWD_PLUGIN_PREFIX . '_event_category');
500
- if (is_array($categories)) {
501
- foreach ($categories as $category) {
502
- $term_metas = get_option("ecwd_event_category_$category->term_id");
503
- $term_metas['id'] = $category->term_id;
504
- $term_metas['name'] = $category->name;
505
- $term_metas['slug'] = $category->slug;
506
- }
507
- }
508
- $ecwd_event_metas = get_post_meta($ecwd_event->ID, '', true);
509
- $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'] = array(0 => '');
510
- if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'])) {
511
- $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'] = array(0 => '');
512
- }
513
- if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'])) {
514
- $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'] = array(0 => '');
515
- }
516
- if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'])) {
517
- $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'] = array(0 => '');
518
- }
519
- if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'])) {
520
- $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'] = array(0 => '');
521
- }
522
-
523
- $permalink = get_permalink($ecwd_event->ID);
524
- $events[$ecwd_event->ID] = new ECWD_Event($ecwd_event->ID, 0, $ecwd_event->post_title, $ecwd_event->post_content, $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'][0], $permalink, $ecwd_event, $term_metas, $ecwd_event_metas);
525
- }
526
- }
527
- $d = new ECWD_Display(0, '', '', $today);
528
- $start_date = date('Y-m-d');
529
- $end_date = date('Y-m-d', strtotime("+1 year", strtotime($start_date)));
530
- $events = $d->get_event_days($events, 1, $start_date, $end_date);
531
- ?>
532
-
533
- <?php
534
- $events = $d->events_unique($events);
535
- do_action('ecwd_show_related_events', $events, true);
536
- }
537
- ?>
538
  </div>
539
  <!-- #Related Events-->
540
  </article>
541
  </div> <!-- #post-x -->
542
- <?php if (comments_open() && $post->comment_status == 'open') { ?>
543
  <div class="ecwd-comments"><?php echo comments_template(); ?></div>
544
  <?php } endwhile; ?>
545
  </div>
157
 
158
  $default_calendar = get_option('ecwd_default_calendar');
159
  $calendars_id = get_post_meta($post_id, 'ecwd_event_calendars', true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
 
161
  get_header();
162
  if ( class_exists( 'WooCommerce' ) ) {
174
  <header class="entry-header">
175
  <?php the_title('<h1 itemprop="name" class="ecwd-events-single-event-title summary entry-title" ' . $event_title_style . '>', '</h1>'); ?>
176
  </header>
177
+ <?php if ( ! post_password_required() ) ?>
178
+ <div class="event-detalis">
179
+ <?php if ($featured_image && $featured_image !== '') { ?>
180
+ <div class="event-featured-image">
181
+ <img src="<?php echo $featured_image; ?>"/>
182
+ </div>
183
+ <?php } ?>
184
+ <div class="ecwd-event-details">
185
+ <div class="event-detalis-date">
186
+ <label class="ecwd-event-date-info" title="<?php _e('Date', 'event-calendar-wd'); ?>"></label>
187
+ <span
188
+ class="ecwd-event-date"
189
+ itemprop="startDate"
190
+ content="<?php echo date('Y-m-d', strtotime($ecwd_event_date_from)) . 'T' . date('H:i', strtotime($ecwd_event_date_from)) ?>">
191
+ <?php echo ECWD::get_ecwd_event_date_view($ecwd_event_date_from, $ecwd_event_date_to, $ecwd_all_day_event); ?>
192
+ </span>
193
+ </div>
194
+
195
+ <?php
196
+ if (isset($ecwd_options['show_repeat_rate'])) {
197
+ $repeat_rate_text = $d->get_repeat_rate($post_id, '', $date_format);
198
+ if ($repeat_rate_text != ''):
199
+ ?>
200
+ <div class="ecwd_repeat_rate_text">
201
+ <span><?php echo $d->get_repeat_rate($post_id, '', $date_format); ?></span>
202
+ </div>
203
+ <?php
204
+ endif;
205
+ } ?>
206
+
207
+ <?php if ($ecwd_event_url) { ?>
208
+ <div class="ecwd-url">
209
+ <a href="<?php echo $ecwd_event_url; ?>" target="_blank">
210
+ <label class="ecwd-event-url-info" title="<?php _e('Url', 'event-calendar-wd'); ?>"></label>
211
+ <?php echo $ecwd_event_url; ?>
212
+ </a>
213
+ </div>
214
+ <?php }
215
+
216
+ if (count($organizers) > 0) { ?>
217
+ <div class="event-detalis-org">
218
+ <label class="ecwd-event-org-info" title="<?php _e('Organizers', 'event-calendar-wd'); ?>"></label>
219
+
220
+ <?php if (count($organizers) > 1) { ?>
221
+ <?php foreach ($organizers as $organizer) { ?>
222
+ <span itemprop="organizer">
223
+ <a href="<?php echo get_permalink($organizer['ID']) ?>">
224
+ <?php echo $organizer['post_title'] ?>
225
+ </a>
226
+ </span>
227
+
228
+ <?php }
229
+ } else {
230
+ $organizer = $organizers[0];
231
+ ?>
232
+
233
+ <span itemprop="organizer">
234
+ <a href="<?php echo get_permalink($organizer['ID']) ?>">
235
+ <?php echo $organizer['post_title'] ?>
236
+ </a>
237
+ </span>
238
+
239
+ <?php
240
+ $organizer_phone = get_post_meta($organizer['ID'], 'ecwd_organizer_meta_phone', true);
241
+ $organizer_website = get_post_meta($organizer['ID'], 'ecwd_organizer_meta_website', true);
242
+ $organizer_website = ECWD::add_http($organizer_website);
243
+
244
+ if (!empty($organizer_phone)) { ?>
245
+ <div class="ecwd_organizer_phone">
246
+ <span><?php _e('Phone', 'event-calendar-wd'); ?>:</span>
247
+ <span><?php echo $organizer_phone; ?></span>
248
+ </div>
249
+ <?php }
250
+ if (!empty($organizer_website)) { ?>
251
+ <div class="ecwd_organizer_website">
252
+ <span><?php _e('Website', 'event-calendar-wd'); ?>:</span>
253
+ <a href="<?php echo $organizer_website; ?>">
254
+ <?php echo $organizer_website; ?>
255
+ </a>
256
+ </div>
257
+ <?php }
258
+ } ?>
259
+ </div>
260
+ <?php } ?>
261
+
262
+ <div class="event-venue" itemprop="location" itemscope itemtype="http://schema.org/Place">
263
+ <?php if ($venue_post_id) { ?>
264
+ <label class="ecwd-venue-info" title="<?php _e('Venue', 'event-calendar-wd'); ?>"></label>
265
+ <span itemprop="name">
266
+ <a
267
+ <?php
268
+ if (isset($_GET['iframe']) && intval($_GET['iframe']) == 1) {
269
+ $venue_permalink = add_query_arg('venue', '1', $venue_permalink);
270
+ }
271
+ ?>
272
+ href="<?php echo $venue_permalink ?>"><?php echo $venue; ?></a>
273
+ </span>
274
+
275
+ <?php
276
+
277
+ if (!empty($ecwd_venue_phone)) {
278
+ echo sprintf($venue_meta_template, "ecwd_venue_phone", __('Phone', 'event-calendar-wd'), $ecwd_venue_phone);
279
+ }
280
+
281
+ if (!empty($ecwd_venue_website)) {
282
+ echo sprintf($venue_meta_link_template, "ecwd_venue_website", __('Website', 'event-calendar-wd'), $ecwd_venue_website, $ecwd_venue_website);
283
+ }
284
+
285
+ if (!empty($ecwd_event_location)) {
286
+ ?>
287
+ <div class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
288
+ <span><?php _e('Address:', 'event-calendar-wd'); ?></span>
289
+ <span><?php echo $ecwd_event_location; ?></span>
290
+ </div>
291
+ <?php
292
+ }
293
+ ?>
294
+
295
+ <?php } elseif ($ecwd_event_location) { ?>
296
+ <span class="ecwd_hidden" itemprop="name"><?php echo $ecwd_event_location; ?></span>
297
+ <label class="ecwd-venue-info"
298
+ title="<?php _e('Location', 'event-calendar-wd'); ?>"></label>
299
+ <span class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
300
+ <?php echo $ecwd_event_location; ?>
301
+ </span>
302
+ <?php } ?>
303
+ </div>
304
+
305
+ <?php do_action('ecwd_view_ext'); ?>
306
+ </div>
307
+ </div>
308
+ <?php if ($ecwd_social_icons) { ?>
309
+
310
+ <div class="ecwd-social">
311
+ <span class="share-links">
312
+ <a href="http://twitter.com/home?status=<?php echo get_permalink($post_id) ?>"
313
+ class="ecwd-twitter"
314
+ target="_blank" data-original-title="Tweet It">
315
+ <span class="visuallyhidden">Twitter</span></a>
316
+ <a href="http://www.facebook.com/sharer.php?u=<?php echo get_permalink($post_id) ?>"
317
+ class="ecwd-facebook"
318
+ target="_blank" data-original-title="Share on Facebook">
319
+ <span class="visuallyhidden">Facebook</span></a>
320
+ <a href="http://plus.google.com/share?url=<?php echo get_permalink($post_id) ?>"
321
+ class="ecwd-google-plus"
322
+ target="_blank" data-original-title="Share on Google+">
323
+ <span class="visuallyhidden">Google+</span></a>
324
+ </span>
325
+ </div>
326
+ <?php }
327
+ if ($ecwd_event_show_map == 1 && $ecwd_event_latlong) {
328
+ $map_events = array();
329
+ $map_events[0]['latlong'] = explode(',', $ecwd_event_latlong);
330
+ if ($ecwd_event_location != '') {
331
+ $map_events[0]['location'] = $ecwd_event_location;
332
+ }
333
+ $map_events[0]['zoom'] = $ecwd_event_zoom;
334
+ $map_events[0]['infow'] = '<div class="ecwd_map_event">';
335
+ $map_events[0]['infow'] .= '<span class="location">' . $ecwd_event_location . '</span>';
336
+ $map_events[0]['infow'] .= '</div>';
337
+ $map_events[0]['infow'] .= '<div class="event-detalis-date">
338
+ <label class="ecwd-event-date-info" title="' . __('Date', 'event-calendar-wd') . '"></label>
339
+ <span class="ecwd-event-date" itemprop="startDate" content="' . date('Y-m-d', strtotime($ecwd_event_date_from)) . 'T' . date('H:i', strtotime($ecwd_event_date_from)) . '">';
340
+ $map_events[0]['infow'] .= ECWD::get_ecwd_event_date_view($ecwd_event_date_from, $ecwd_event_date_to, $ecwd_all_day_event);
341
+
342
+ $map_events[0]['infow'] .= '</span></div>';
343
+ $markers = json_encode($map_events);
344
+ ?>
345
+ <div class="ecwd-show-map">
346
+ <div class="ecwd_map_div"></div>
347
+ <textarea class="hidden ecwd_markers" style="display: none;"><?php echo $markers; ?></textarea>
348
+ </div>
349
+ <?php } ?>
350
+ <div class="clear"></div>
351
+
352
+ <?php if (!empty($ecwd_event_video)) { ?>
353
+ <div class="ecwd-event-video">
354
+ <?php
355
+ if (strpos($ecwd_event_video, 'youtube') > 0) {
356
+ parse_str(parse_url($ecwd_event_video, PHP_URL_QUERY), $video_array_of_vars);
357
+ if (isset($video_array_of_vars['v']) && $video_array_of_vars['v']) {
358
+ ?>
359
+ <object data="http://www.youtube.com/v/<?php echo $video_array_of_vars['v'] ?>"
360
+ type="application/x-shockwave-flash" width="400" height="300">
361
+ <param name="src"
362
+ value="http://www.youtube.com/v/<?php echo $video_array_of_vars['v'] ?>"/>
363
+ </object>
364
+ <?php
365
+ }
366
+ } elseif (strpos($ecwd_event_video, 'vimeo') > 0) {
367
+ $videoID = explode('/', $ecwd_event_video);
368
+ $videoID = $videoID[count($videoID) - 1];
369
+ if ($videoID) { ?>
370
+ <iframe
371
+ src="http://player.vimeo.com/video/<?php echo $videoID; ?>?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;color=ffffff"
372
+ width="" height="" frameborder="0" webkitAllowFullScreen mozallowfullscreen
373
+ allowFullScreen></iframe>
374
+ <?php
375
+ }
376
+ }
377
+ ?>
378
+ </div>
379
+ <?php } ?>
380
+ <!-- Content -->
381
+
382
+ <?php
383
+
 
384
 
385
  $event_content = get_the_content();
386
  if (!empty($event_content)) { ?>
388
  <?php } ?>
389
  <!-- End Content -->
390
 
391
+ <?php if ( ! post_password_required() ) { ?>
392
+ <!-- Categories and tags -->
393
+ <?php if ($category_and_tags == 1) { ?>
394
+ <div class="event_cageory_and_tags">
395
+
396
+ <?php if (!empty($event_categories)) { ?>
397
+ <ul class="event_categories">
398
+ <?php
399
+ foreach ($event_categories as $category) {
400
+ $metas = get_option("ecwd_event_category_$category->term_id");
401
+ ?>
402
+ <li class="event_category event-details-title">
403
+ <?php if ($metas['color']) { ?>
404
+ <span class="event-metalabel" style="background:<?php echo $metas['color']; ?>"></span>
405
+ <span class="event_catgeory_name">
406
+ <a href="<?php echo get_category_link($category); ?>"
407
+ style="color:<?php echo $metas['color']; ?>">
408
+ <?php echo $category->name; ?>
409
+ </a>
410
+ </span>
411
+ <?php } else { ?>
412
+ <span class="event_catgeory_name">
413
+ <a href="<?php echo get_category_link($category); ?>">
414
+ <?php echo $category->name; ?>
415
+ </a>
416
+ </span>
417
+ <?php } ?>
418
+ </li>
419
+ <?php } ?>
420
+ </ul>
421
+ <?php }
422
+
423
+ if (!empty($event_tags)) { ?>
424
+ <ul class="event_tags">
425
+ <?php foreach ($event_tags as $tag) { ?>
426
+ <li class="event_tag">
427
+ <span class="event_tag_name">
428
+ <a href="<?php echo get_tag_link($tag); ?>">#<?php echo $tag->name; ?> </a>
429
+ </span>
430
+ </li>
431
+ <?php } ?>
432
+ </ul>
433
+ <?php } ?>
434
+ </div>
435
+ <?php } ?>
436
+ <!-- END Categories and tags -->
437
+ <?php
438
+ if (!isset($ecwd_options['related_events']) || $ecwd_options['related_events'] == 1) {
439
+ $post_cats = wp_get_post_terms($post_id, ECWD_PLUGIN_PREFIX . '_event_category');
440
+ $cat_ids = wp_list_pluck($post_cats, 'term_id');
441
+ $post_tags = wp_get_post_terms($post_id, ECWD_PLUGIN_PREFIX . '_event_tag');
442
+ $tag_ids = wp_list_pluck($post_tags, 'term_id');
443
+ $events = array();
444
+ $today = date('Y-m-d');
445
+
446
+ $args = array(
447
+ 'numberposts' => -1,
448
+ 'post_type' => ECWD_PLUGIN_PREFIX . '_event',
449
+ 'tax_query' => array(
450
+ array(
451
+ 'taxonomy' => ECWD_PLUGIN_PREFIX . '_event_category',
452
+ 'terms' => $cat_ids,
453
+ 'field' => 'term_id',
454
+ )
455
+ ),
456
+ 'orderby' => 'meta_value',
457
+ 'order' => 'ASC'
458
+ );
459
+ $ecwd_events_by_cats = get_posts($args);
460
+ $args = array(
461
+ 'numberposts' => -1,
462
+ 'post_type' => ECWD_PLUGIN_PREFIX . '_event',
463
+ 'tax_query' => array(
464
+ array(
465
+ 'taxonomy' => ECWD_PLUGIN_PREFIX . '_event_tag',
466
+ 'terms' => $tag_ids,
467
+ 'field' => 'term_id',
468
+ ),
469
+ ),
470
+ 'orderby' => 'meta_value',
471
+ 'order' => 'ASC'
472
+ );
473
+ $ecwd_events_by_tags = get_posts($args);
474
+ $ecwd_events = array_merge($ecwd_events_by_tags, $ecwd_events_by_cats);
475
+ $ecwd_events = array_map("unserialize", array_unique(array_map("serialize", $ecwd_events)));
476
+ wp_reset_postdata();
477
+ wp_reset_query();
478
+
479
+ foreach ($ecwd_events as $ecwd_event) {
480
+ if ($ecwd_event->ID != $post_id) {
481
+ $term_metas = '';
482
+ $categories = get_the_terms($ecwd_event->ID, ECWD_PLUGIN_PREFIX . '_event_category');
483
+ if (is_array($categories)) {
484
+ foreach ($categories as $category) {
485
+ $term_metas = get_option("ecwd_event_category_$category->term_id");
486
+ $term_metas['id'] = $category->term_id;
487
+ $term_metas['name'] = $category->name;
488
+ $term_metas['slug'] = $category->slug;
489
+ }
490
+ }
491
+ $ecwd_event_metas = get_post_meta($ecwd_event->ID, '', true);
492
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'] = array(0 => '');
493
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'])) {
494
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'] = array(0 => '');
495
+ }
496
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'])) {
497
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'] = array(0 => '');
498
+ }
499
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'])) {
500
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'] = array(0 => '');
501
+ }
502
+ if (!isset($ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'])) {
503
+ $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'] = array(0 => '');
504
+ }
505
+
506
+ $permalink = get_permalink($ecwd_event->ID);
507
+ $events[$ecwd_event->ID] = new ECWD_Event($ecwd_event->ID, 0, $ecwd_event->post_title, $ecwd_event->post_content, $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_location'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_from'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_date_to'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_event_url'][0], $ecwd_event_metas[ECWD_PLUGIN_PREFIX . '_lat_long'][0], $permalink, $ecwd_event, $term_metas, $ecwd_event_metas);
508
+ }
509
+ }
510
+ $d = new ECWD_Display(0, '', '', $today);
511
+ $start_date = date('Y-m-d');
512
+ $end_date = date('Y-m-d', strtotime("+1 year", strtotime($start_date)));
513
+ $events = $d->get_event_days($events, 1, $start_date, $end_date);
514
+ ?>
515
+
516
+ <?php
517
+ $events = $d->events_unique($events);
518
+ do_action('ecwd_show_related_events', $events, true);
519
+ }
520
+ } ?>
521
  </div>
522
  <!-- #Related Events-->
523
  </article>
524
  </div> <!-- #post-x -->
525
+ <?php if (comments_open() && $post->comment_status == 'open' && !post_password_required()) { ?>
526
  <div class="ecwd-comments"><?php echo comments_template(); ?></div>
527
  <?php } endwhile; ?>
528
  </div>
wd/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Version: 1.0.13
2
 
3
 
4
 
1
+ Version: 1.0.15
2
 
3
 
4
 
wd/assets/css/deactivate_popup.css CHANGED
@@ -63,12 +63,20 @@
63
  margin: 14px 0px 5px;
64
  }
65
  .wd-popup-active1{
66
- height: 523px !important;
67
  }
68
 
69
  .wd-popup-active2{
70
  height: 426px !important
71
  }
 
 
 
 
 
 
 
 
72
  .wd-deactivate-popup-opacity{
73
  width: 100%;
74
  height: 100%;
@@ -87,4 +95,17 @@
87
  bottom: 0;
88
  margin: auto;
89
  z-index: 63;
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  }
63
  margin: 14px 0px 5px;
64
  }
65
  .wd-popup-active1{
66
+ height: 583px !important;
67
  }
68
 
69
  .wd-popup-active2{
70
  height: 426px !important
71
  }
72
+
73
+ .wd-popup-active3{
74
+ height: 479px !important
75
+ }
76
+
77
+ .wd-popup-active4{
78
+ height: 340px !important
79
+ }
80
  .wd-deactivate-popup-opacity{
81
  width: 100%;
82
  height: 100%;
95
  bottom: 0;
96
  margin: auto;
97
  z-index: 63;
98
+ }
99
+
100
+ .wd-deactivate-popup-close-btn{
101
+ background-image: url(img/close.svg);
102
+ background-repeat: no-repeat;
103
+ background-size: 16px;
104
+ display: inline-block;
105
+ width: 16px;
106
+ height: 16px;
107
+ position: absolute;
108
+ top: 7px;
109
+ right: 8px;
110
+ cursor: pointer;
111
  }
wd/assets/css/img/close.svg ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="6917.521 490.293 11.414 11.414">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill: none;
6
+ stroke: #cbcbcb;
7
+ stroke-linecap: round;
8
+ stroke-linejoin: round;
9
+ }
10
+ </style>
11
+ </defs>
12
+ <g id="if_misc-_close__1276877_3_" data-name="if_misc-_close__1276877 (3)" transform="translate(6917.229 490)">
13
+ <line id="Line_262" data-name="Line 262" class="cls-1" y1="10" x2="10" transform="translate(1 1)"/>
14
+ <line id="Line_263" data-name="Line 263" class="cls-1" x2="10" y2="10" transform="translate(1 1)"/>
15
+ </g>
16
+ </svg>
wd/assets/js/deactivate_popup.js CHANGED
@@ -21,7 +21,13 @@ var btnVal = 3;
21
  ////////////////////////////////////////////////////////////////////////////////////////
22
  function wdReady(prefix){
23
 
 
 
24
  jQuery(document).on("click", "." + window[prefix + "WDDeactivateVars"].deactivate_class, function(){
 
 
 
 
25
  jQuery(".wd-" + prefix + "-opacity").show();
26
  jQuery(".wd-" + prefix + "-deactivate-popup").show();
27
  if(jQuery(this).attr("data-uninstall") == "1"){
@@ -30,17 +36,19 @@ function wdReady(prefix){
30
 
31
  return false;
32
  });
33
-
34
- jQuery(document).on("change", "[name=" + prefix + "_reasons]", function(){
35
 
36
- jQuery("." + prefix + "_additional_details_wrap").html("");
37
- jQuery(".wd-" + prefix + "-deactivate-popup").removeClass("wd-popup-active1 wd-popup-active2");
 
 
 
 
38
  if(jQuery(this).val() == "reason_plugin_is_hard_to_use_technical_problems"){
39
 
40
  additionalInfo = '<div class="wd-additional-active"><div><strong>Please describe your issue.</strong></div><br>' +
41
  '<textarea name="' + prefix + '_additional_details" rows = "4"></textarea><br>' +
42
  '<div>Our support will contact <input type="text" name="' + prefix + '_email" value="' + window[prefix + "WDDeactivateVars"].email + '"> shortly.</div>'+
43
- '<br><div><button class="button button-primary wd-' + prefix + '-deactivate" data-val="' + btnVal + '">Submit support ticket</button></div></div>';
44
  jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
45
  jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active1");
46
 
@@ -57,11 +65,22 @@ function wdReady(prefix){
57
  additionalInfo = '<div class="wd-additional-active">' +
58
  '<div><strong>We have a special offer for you.</strong></div>' +
59
  '<div>Submit this form to get the offer to <input type="text" name="' + prefix + '_email" value="' + window[prefix + "WDDeactivateVars"].email + '"></div>' +
60
- '<br><div><button class="button button-primary wd-' + prefix + '-deactivate" data-val="' + btnVal + '">Submit</button></div></div>';
61
 
62
  jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
63
- jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active2");
64
- }
 
 
 
 
 
 
 
 
 
 
 
65
 
66
  jQuery("#wd-" + prefix + "-deactivate").hide();
67
  jQuery("#wd-" + prefix + "-submit-and-deactivate").show();
@@ -78,7 +97,27 @@ function wdReady(prefix){
78
  }
79
 
80
  });
81
- jQuery(document).on("click", ".wd-" + prefix + "-deactivate", function(){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  jQuery(".wd-deactivate-popup-opacity-" + prefix).show();
83
  if(jQuery(this).hasClass("wd-clicked") == false){
84
  jQuery(this).addClass("wd-clicked");
@@ -88,12 +127,25 @@ function wdReady(prefix){
88
  return false;
89
  });
90
 
91
- jQuery(document).on("click", ".wd-" + prefix + "-cancel, .wd-opacity", function(){
92
  jQuery(".wd-" + prefix + "-opacity").hide();
93
  jQuery(".wd-" + prefix + "-deactivate-popup").hide();
 
 
94
  return false;
95
  });
96
 
 
 
 
 
 
 
 
 
 
 
 
97
  }
98
 
99
  ////////////////////////////////////////////////////////////////////////////////////////
21
  ////////////////////////////////////////////////////////////////////////////////////////
22
  function wdReady(prefix){
23
 
24
+ var agree_with_pp = false;
25
+
26
  jQuery(document).on("click", "." + window[prefix + "WDDeactivateVars"].deactivate_class, function(){
27
+ agree_with_pp = false;
28
+ if (!jQuery('#wd-' + prefix + '-submit-and-deactivate').hasClass('button-primary-disabled')) {
29
+ jQuery('#wd-' + prefix + '-submit-and-deactivate').addClass('button-primary-disabled')
30
+ }
31
  jQuery(".wd-" + prefix + "-opacity").show();
32
  jQuery(".wd-" + prefix + "-deactivate-popup").show();
33
  if(jQuery(this).attr("data-uninstall") == "1"){
36
 
37
  return false;
38
  });
 
 
39
 
40
+ jQuery(document).on("change", "[name=" + prefix + "_reasons]", function(){
41
+
42
+ var disabled_class = (agree_with_pp === false) ? "button-primary-disabled" : "";
43
+
44
+ jQuery("." + prefix + "_additional_details_wrap").html("");
45
+ jQuery(".wd-" + prefix + "-deactivate-popup").removeClass("wd-popup-active1 wd-popup-active2 wd-popup-active3 wd-popup-active4");
46
  if(jQuery(this).val() == "reason_plugin_is_hard_to_use_technical_problems"){
47
 
48
  additionalInfo = '<div class="wd-additional-active"><div><strong>Please describe your issue.</strong></div><br>' +
49
  '<textarea name="' + prefix + '_additional_details" rows = "4"></textarea><br>' +
50
  '<div>Our support will contact <input type="text" name="' + prefix + '_email" value="' + window[prefix + "WDDeactivateVars"].email + '"> shortly.</div>'+
51
+ '<br><div><button class="button button-primary ' + disabled_class + ' wd-' + prefix + '-deactivate" data-val="' + btnVal + '">Submit support ticket</button></div></div>';
52
  jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
53
  jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active1");
54
 
65
  additionalInfo = '<div class="wd-additional-active">' +
66
  '<div><strong>We have a special offer for you.</strong></div>' +
67
  '<div>Submit this form to get the offer to <input type="text" name="' + prefix + '_email" value="' + window[prefix + "WDDeactivateVars"].email + '"></div>' +
68
+ '<br><div><button class="button button-primary ' + disabled_class + ' wd-' + prefix + '-deactivate" data-val="' + btnVal + '">Submit</button></div></div>';
69
 
70
  jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
71
+ jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active3");
72
+ }else{
73
+ jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active4");
74
+ }
75
+
76
+ var checked = (agree_with_pp === true) ? "checked" : "";
77
+ var agree_checkbox =
78
+ "<div style='margin-top: 5px;'>" +
79
+ "<input type='checkbox' " + checked + " name='" + prefix + "_agree_with_pp" + "' id='" + prefix + "_agree_with_pp" + "'/>" +
80
+ "By submitting this form your email and website URL will be sent to Web-Dorado. Click the checkbox if you consent to usage of mentioned data by Web-Dorado in accordance with our <a target='_blank' href='https://web-dorado.com/web-dorado-privacy-statement.html'>Privacy Policy</a>."+
81
+ "</div>";
82
+
83
+ jQuery("." + prefix + "_additional_details_wrap").prepend(agree_checkbox);
84
 
85
  jQuery("#wd-" + prefix + "-deactivate").hide();
86
  jQuery("#wd-" + prefix + "-submit-and-deactivate").show();
97
  }
98
 
99
  });
100
+
101
+ jQuery(document).on("change", "[name=" + prefix + "_agree_with_pp]", function () {
102
+ if(jQuery(this).prop('checked')){
103
+ jQuery(".wd-" + prefix + "-deactivate").removeClass('button-primary-disabled');
104
+ agree_with_pp = true;
105
+ }else{
106
+ jQuery(".wd-" + prefix + "-deactivate").addClass('button-primary-disabled');
107
+ agree_with_pp = false;
108
+ }
109
+ });
110
+
111
+ jQuery(document).on("click", ".wd-" + prefix + "-deactivate", function(e){
112
+
113
+ var data_val = jQuery(this).data('val');
114
+ var checkbox = jQuery("#" + prefix + "_agree_with_pp");
115
+
116
+
117
+ if (data_val !== 1 && (checkbox.length === 0 || checkbox.prop('checked') === false)) {
118
+ return false;
119
+ }
120
+
121
  jQuery(".wd-deactivate-popup-opacity-" + prefix).show();
122
  if(jQuery(this).hasClass("wd-clicked") == false){
123
  jQuery(this).addClass("wd-clicked");
127
  return false;
128
  });
129
 
130
+ jQuery(document).on("click", ".wd-" + prefix + "-cancel, .wd-opacity, .wd-deactivate-popup-close-btn", function(){
131
  jQuery(".wd-" + prefix + "-opacity").hide();
132
  jQuery(".wd-" + prefix + "-deactivate-popup").hide();
133
+ reset_popup();
134
+
135
  return false;
136
  });
137
 
138
+ function reset_popup() {
139
+ jQuery("." + prefix + "_additional_details_wrap").html("");
140
+ jQuery(".wd-" + prefix + "-deactivate-popup").removeClass("wd-popup-active1 wd-popup-active2 wd-popup-active3 wd-popup-active4");
141
+
142
+ jQuery("#wd-" + prefix + "-deactivate").removeClass("button-primary-disabled");
143
+ jQuery("#wd-" + prefix + "-deactivate").show();
144
+ jQuery("#wd-" + prefix + "-submit-and-deactivate").hide();
145
+ jQuery('#' + prefix + '_deactivate_form input[name="' + prefix + '_reasons' + '"]').prop('checked', false);
146
+
147
+ }
148
+
149
  }
150
 
151
  ////////////////////////////////////////////////////////////////////////////////////////
wd/config.php CHANGED
@@ -36,6 +36,7 @@
36
  public $custom_post = null;
37
  public $menu_capability = null;
38
  public $menu_position = null;
 
39
 
40
  public function set_options( $options ){
41
 
@@ -108,7 +109,10 @@
108
  }
109
  if(isset( $options["menu_position"] )) {
110
  $this->menu_position = $options["menu_position"];
111
- }
 
 
 
112
 
113
  // directories
114
  $this->wd_dir = dirname( $this->plugin_main_file ) . '/wd';
36
  public $custom_post = null;
37
  public $menu_capability = null;
38
  public $menu_position = null;
39
+ public $start_using_url = null;
40
 
41
  public function set_options( $options ){
42
 
109
  }
110
  if(isset( $options["menu_position"] )) {
111
  $this->menu_position = $options["menu_position"];
112
+ }
113
+ if(isset( $options["start_using_url"] )) {
114
+ $this->start_using_url = $options["start_using_url"];
115
+ }
116
 
117
  // directories
118
  $this->wd_dir = dirname( $this->plugin_main_file ) . '/wd';
wd/includes/deactivate.php CHANGED
@@ -44,7 +44,7 @@
44
  ),
45
  4 => array(
46
  'id' => self::REASON_UPGRADING_TO_PAID_VERSION,
47
- 'text' => __( 'Upgrading to Premium version', $wd_options->prefix ),
48
  ),
49
  5 => array(
50
  'id' => self::REASON_TEMPORARY_DEACTIVATION,
44
  ),
45
  4 => array(
46
  'id' => self::REASON_UPGRADING_TO_PAID_VERSION,
47
+ 'text' => __( 'Upgrading to paid version', $wd_options->prefix ),
48
  ),
49
  5 => array(
50
  'id' => self::REASON_TEMPORARY_DEACTIVATION,
wd/includes/overview.php CHANGED
@@ -66,6 +66,9 @@
66
  $start_using_url = menu_page_url($this->config->custom_post, false);
67
  }
68
  }
 
 
 
69
  require_once( $wd_options->wd_dir_templates . "/display_overview.php" );
70
  }
71
  public function wd_overview_welcome(){
66
  $start_using_url = menu_page_url($this->config->custom_post, false);
67
  }
68
  }
69
+ if(!empty($this->config->start_using_url)){
70
+ $start_using_url = $this->config->start_using_url;
71
+ }
72
  require_once( $wd_options->wd_dir_templates . "/display_overview.php" );
73
  }
74
  public function wd_overview_welcome(){
wd/templates/display_deactivation_popup.php CHANGED
@@ -5,7 +5,8 @@
5
  </div>
6
  <form method="post" id="<?php echo $wd_options->prefix; ?>_deactivate_form">
7
  <div class="wd-deactivate-popup-header">
8
- <?php _e( "Please let us know why you are deactivating. Your answer will help us to serve you better (Optional)", $wd_options->prefix ); ?>:
 
9
  </div>
10
 
11
  <div class="wd-deactivate-popup-body">
@@ -19,7 +20,7 @@
19
  </div>
20
  <div class="wd-btns">
21
  <a href="<?php echo $deactivate_url; ?>" data-val="1" class="button button-primary button-close wd-<?php echo $wd_options->prefix; ?>-deactivate" id="wd-<?php echo $wd_options->prefix; ?>-deactivate"><?php _e( "Skip and Deactivate" , $wd_options->prefix ); ?></a>
22
- <a href="<?php echo $deactivate_url; ?>" data-val="2" class="button button-primary button-close wd-<?php echo $wd_options->prefix; ?>-deactivate" id="wd-<?php echo $wd_options->prefix; ?>-submit-and-deactivate" style="display:none;"><?php _e( "Submit and Deactivate" , $wd_options->prefix ); ?></a>
23
  </div>
24
  <input type="hidden" name="<?php echo $wd_options->prefix . "_submit_and_deactivate"; ?>" value="" >
25
  <?php wp_nonce_field( $wd_options->prefix . '_save_form', $wd_options->prefix . '_save_form_fild'); ?>
5
  </div>
6
  <form method="post" id="<?php echo $wd_options->prefix; ?>_deactivate_form">
7
  <div class="wd-deactivate-popup-header">
8
+ <?php _e( "Please let us know why you are deactivating. Your answer will help us to provide you support or sometimes offer discounts. (Optional)", $wd_options->prefix ); ?>:
9
+ <span class="wd-deactivate-popup-close-btn"></span>
10
  </div>
11
 
12
  <div class="wd-deactivate-popup-body">
20
  </div>
21
  <div class="wd-btns">
22
  <a href="<?php echo $deactivate_url; ?>" data-val="1" class="button button-primary button-close wd-<?php echo $wd_options->prefix; ?>-deactivate" id="wd-<?php echo $wd_options->prefix; ?>-deactivate"><?php _e( "Skip and Deactivate" , $wd_options->prefix ); ?></a>
23
+ <a href="<?php echo $deactivate_url; ?>" data-val="2" class="button button-primary button-primary-disabled button-close wd-<?php echo $wd_options->prefix; ?>-deactivate" id="wd-<?php echo $wd_options->prefix; ?>-submit-and-deactivate" style="display:none;"><?php _e( "Submit and Deactivate" , $wd_options->prefix ); ?></a>
24
  </div>
25
  <input type="hidden" name="<?php echo $wd_options->prefix . "_submit_and_deactivate"; ?>" value="" >
26
  <?php wp_nonce_field( $wd_options->prefix . '_save_form', $wd_options->prefix . '_save_form_fild'); ?>
wd/templates/display_overview_support.php CHANGED
@@ -27,8 +27,24 @@
27
  echo '&#13;&#10;&#13;&#10;';
28
  foreach( $gd_info as $key => $val ){
29
  echo $key . ": " . $val . '&#13;&#10;';
30
- }
31
- ?></textarea>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  </div>
33
  </div>
34
  <?php
27
  echo '&#13;&#10;&#13;&#10;';
28
  foreach( $gd_info as $key => $val ){
29
  echo $key . ": " . $val . '&#13;&#10;';
30
+ }
31
+ echo '&#13;&#10;';
32
+ _e("Active Plugins", $wd_options->prefix);
33
+ echo '&#13;&#10;';
34
+ $activepl = get_option('active_plugins');
35
+ $plugins = get_plugins();
36
+ $activated_plugins = array();
37
+ foreach ( $activepl as $p ) {
38
+ if ( isset($plugins[$p]) ) {
39
+ array_push($activated_plugins, $plugins[$p]);
40
+ echo '&#13;&#10;' . $plugins[$p]['Name'];
41
+ }
42
+ }
43
+ echo '&#13;&#10;&#13;&#10;';
44
+ _e("Active theme", $wd_options->prefix);
45
+ echo '&#13;&#10;&#13;&#10;';
46
+ echo wp_get_theme();
47
+ ?></textarea>
48
  </div>
49
  </div>
50
  <?php
wd/templates/display_subscribe.php CHANGED
@@ -8,7 +8,10 @@
8
  <div class="texts">
9
  <p><?php _e( "Hi there", $wd_options->prefix ); ?>,</p>
10
  <p>
11
- <?php echo sprintf( __( "Allow %s to collect some usage data. This will allow you to get more out of your plugin experience - get awesome customer support, receive exclusive deals and discounts on premium products and more. You can choose to skip this step, %s will still work just fine.", $wd_options->prefix ), '<strong>Web-Dorado</strong>', $wd_options->plugin_title ); ?>
 
 
 
12
  </p>
13
  </div>
14
  <div class="btns">
8
  <div class="texts">
9
  <p><?php _e( "Hi there", $wd_options->prefix ); ?>,</p>
10
  <p>
11
+ <?php
12
+ $pp_text = "<a target='_blank' href='https://web-dorado.com/web-dorado-privacy-statement.html'>" . __("Privacy Policy", $wd_options->prefix) . "</a>";
13
+ echo sprintf(__("Allow %s to collect some usage data, to be able to provide you more out of your plugin experience - awesome customer support and more. Check how we handle your personal data in our %s. You can always customize your preferences from the emails your receive from us. You can choose to skip this step, %s will still work just fine.", $wd_options->prefix), '<strong>Web-Dorado</strong>', $pp_text, $wd_options->plugin_title);
14
+ ?>
15
  </p>
16
  </div>
17
  <div class="btns">
wd/wd.php CHANGED
@@ -17,7 +17,7 @@
17
  public $overview_instance;
18
  public $subscribe_instance;
19
  public $config;
20
- private $version = "1.0.13";
21
 
22
  ////////////////////////////////////////////////////////////////////////////////////////
23
  // Constructor & Destructor //
17
  public $overview_instance;
18
  public $subscribe_instance;
19
  public $config;
20
+ private $version = "1.0.15";
21
 
22
  ////////////////////////////////////////////////////////////////////////////////////////
23
  // Constructor & Destructor //