My Calendar - Version 2.4.0

Version Description

New features: * Set upcoming event class based on time, rather than date. * Add past/present classes to today's events widget * Assign Custom All Day label for each event. * Support hiding 'Host' field as option. * Made primary sort order of events filterable: 'mc_primary_sort' * Added action to location saving handling updated locations * Added arguments to from/to filters in Upcoming Events * Enabled option to turn on permalinks * Custom canonical URL for event pages * Added 'date' parameter to today's events list & shortcode accepting any string usable in strtotime() * Added 'from' and 'to' parameter to upcoming events list & shortcode accepting any string usable in strtotime * Added year/month/day parameter to main shortcode to target specific months for initial display. * Make BCC field filterable * Add filters to search query parameters * New option: switch to mini calendar on mobile devices instead of list view. * Add [day] select field to date switcher if in 'day' view. * Option to set default sort direction * Ability to set three separate event title templates: grid, list, and single. * Added admin-bar link to view calendar. * Added option to customize permalink slug on permalink page * Single event pages as permalinks use the same template as main if custom template isn't enabled. * New template tag: {color_css} and {close_color_css} to wrap a block with the category background color. * Add category classes to Upcoming & Today's events widgets * Redirect page to main calendar if event is private * Improved labeling of cell dates

Bug fixes: * Stop setting all day events to end at midnight; use 11:59:59 and filter output * Rewrite iCal output so that the iCal download eliminates Holiday cancellations [todo] * Bug fix: Prevent extraneous variables from leaking into the navigation output. * Rendering post template in permalinks only applies within Loop. * Template attribute preg_match could only pick up 2 parameters * Prevent an invalid mc_id value from returning errors. * Prevent deprecation notice when getting text_direction * Default to not showing navigation options in print view. * Better loading of text domain. * Prevent mini calendar from switching to list format. * Change class construction to PHP 5 syntax * Close button is now a button rather than a link. * Fixed display of text diff for stylesheet comparisons * Two different filters with different names. * mc_after_event filter not running with custom templates. * With My Tickets active, enter key did not submit Add/Edit event form * Fixed documentation error with ical template tags. * Improved efficiency of WP shortcode processing in templates. * A multi-day event crossing the current day was counted as a future event in upcoming events * If event instance was split from recurring event, showed same recurring settings as original event. * If events were mass deleted, the corresponding event post was not also deleted. * Prevent single event pages from displaying content if the event is in a private category.

Important Changes: * Removed references to #jd_calendar and generate custom IDs. [breaking change * Revision of settings page [reorganize settings into tabs] * Reorganized settings pages.

Other: * Moved changelog for versions prior to 2.3.0 into changelog.txt

Translations: * Updated Polish, Portuguese (Portugal), Dutch, Turkish, Slovak, Norwegian, Hungarian, German, Spanish, Persian, Czech, Danish

Download this release

Release Info

Developer joedolson
Plugin Icon 128x128 My Calendar
Version 2.4.0
Comparing to
See all releases

Code changes from version 2.3.32 to 2.4.0

changelog.txt ADDED
@@ -0,0 +1,1024 @@
1
+ = 2.2.13 =
2
+
3
+ * Bug fix: Threw error if network-activated (wp_is_mobile() not defined yet)
4
+ * Bug fix: Calendar URI could be saved as integer instead of as URL.
5
+ * Bug fix: hide screen options that current user can't use.
6
+ * Improved localization of Calendrical jQuery plug-in.
7
+ * Feature: my_calendar_upcoming and my_calendar_today shortcodes now support filtering by host.
8
+ * New filter: mc_send_notification -- passes event and user data to determine whether a new event email notification should be sent. Return true|false.
9
+
10
+ = 2.2.12 =
11
+
12
+ * Bug fix: jquery.calendrical time rendering.
13
+
14
+ = 2.2.11 =
15
+
16
+ * Required deleted file.
17
+
18
+ = 2.2.10 =
19
+
20
+ * Bug fix: date comparison in grouped event date output.
21
+ * Bug fix: editing a single occurrence of an event when location fields not displayed could result in duplicating the event.
22
+ * Bug fix: Duplicated <a> on event title in events manager.
23
+ * Bug fix: Generated WP to Twitter empty sentence error.
24
+ * Bug fix: Grouped events within a single day in upcoming events list.
25
+ * Bug fix: Run My Calendar upgrade stylesheet archiving only when My Calendar is updated.
26
+ * Bug fix:
27
+ * Changed: replaced mc_is_mobile() functionality with native wp_is_mobile(). Filterable for My Calendar using 'mc_is_mobile' filter.
28
+ * Changed: properly registered and enqueue most front-end styles.
29
+ * Changed: Removed classes 'prevMonth' and 'nextMonth' from navigation.
30
+ * Misc. minor style changes to front and back end UI.
31
+ * Added: special value for 'author' and 'host' attributes of 'current' to only show events created by the logged-in user. Filter via 'mc_display_author' and 'mc_display_host'
32
+ * Added: date and time to title field for My Calendar RSS feed.
33
+ * Preparation: permission filtering for submissions and registrations add-ons.
34
+ * Updated: German & Slovenian Translations.
35
+
36
+ = 2.2.9 =
37
+
38
+ * Bug fix: Reversed argument in $details filter, breaking custom template editor.
39
+
40
+ = 2.2.8 =
41
+
42
+ * Bug fix: Fix in mini calendar scripting with AJAX.
43
+ * Bug fix: Strict error in My Calendar Search widget.
44
+ * Bug fix: My Calendar screen options disabled other screen options.
45
+ * Updated: Slovenian
46
+ * Documentation error: cat_id, not category_id
47
+ * Added support for <a href="http://wordpress.org/plugins/botsmasher/">BotSmasher</a> as a spam filter for events.
48
+ * Removed location region from Google Maps string (Google Maps choked on that data.)
49
+ * Removed EasyDrag jQuery plug-in due to compatibility issues.
50
+ * Eliminated 4 filters: mc_event_content_{$type}; replaced with single filter mc_event_content with $type parameter.
51
+ * Added support for WP 3.6 shortcode attribute filters.
52
+ * Added more filters & actions. Lots and lots of filters. Actions. Yeah.
53
+ * Maybe I'm the only one excited about the last thing.
54
+
55
+ = 2.2.7 =
56
+
57
+ * Bug fix: map links could render links with no data.
58
+
59
+ = 2.2.6 =
60
+
61
+ * Bug fix: Link to single day events from mini calendar broken.
62
+ * Bug fix: Return to calendar link from print view
63
+ * Bug fix: some map links missing 'external' class.
64
+ * Updated: couple missing i18n strings
65
+ * Bug fix: widget title link could not be saved.
66
+ * Bug fix: Changing the event time on individual occurrences of a recurring event showed wrong time in upcoming events list.
67
+ * Bug fix: rewrite of AJAX scripting to clear bugs.
68
+ * Bug fix: Event authors with "add" capability could not edit their own events or copy events from the admin.
69
+ * Bug fix: Time frame toggles triggered beginning of month instead of current week/day if no params set.
70
+ * Deprecated upgrade paths from versions prior to 1.5.0.
71
+ * Eliminated single-day timeline URL settings field (no longer required.)
72
+ * Added filter mc_modify_day_uri to allow above target URL to be customized.
73
+ * Removed caching option; caching accessible only via filtering.
74
+ * Updated: French, Italian, French, Slovenian
75
+ * Added: Galician
76
+
77
+ = 2.2.5 =
78
+
79
+ * Bug fix: better bug fix in 2.2.3 event duplication bug.
80
+ * Updated: Japanese translation.
81
+
82
+ = 2.2.4 =
83
+
84
+ * Bug fix: event duplication bug in 2.2.3
85
+
86
+ = 2.2.3 =
87
+
88
+ * Bug fix: duplicate attribute 'rel' in prev/next nav.
89
+ * Bug fix: category color associations on event titles when no color assigned.
90
+ * Bug fix: print view would not always display all categories if no limits set.
91
+ * Bug fix: Group editor lost multi-day settings.
92
+ * Improvement: throw a warning on events set up with problem settings, e.g. recurring events where the next occurrence begins before the current event has ended.
93
+ * Added template tag: {map_url} for Google Map URL.
94
+ * New filters: filters for calendar year/month/day (to change the default start date for the calendar.)
95
+ * Language updates: Japanese, Italian, Dutch, Romanian, and Slovenian
96
+
97
+ = 2.2.2 =
98
+
99
+ * Bug fix to importer from Calendar
100
+ * Another fix to link_map (this time, in the standard calendar view.)
101
+ * Bug fix: location preset being assigned didn't allow changes to location details when editing events.
102
+
103
+ = 2.2.1 =
104
+
105
+ * Bug fix: Pull multi-day events in upcoming events list that happen today, but started on a previous day when past events set to 0.
106
+ * Bug fix: broken {link_map} template tag.
107
+ * Update to Italian translation.
108
+
109
+ = 2.2.0 =
110
+
111
+ * New feature: event search (widget).
112
+ * New feature: with <a href="http://wordpress.org/extend/plugins/wp-to-twitter">WP to Twitter</a> installed, auto post events to Twitter when published or approved.
113
+ * New feature: toggle timeframe between month/week/day view
114
+ * New setting: ensure best possible color contrast between background color and title link.
115
+ * Split manage events page and add event page into two separate interfaces.
116
+ * Removed non-sortable fields from display for manage events interface.
117
+ * Moved setting for number of events on manage events page to screen options.
118
+ * New screen option: on event manager screen, users can turn off areas of the event manager they don't use.
119
+ * New template tag: {image_url}, to pull an event's associated image without HTML
120
+ * New template tag: {linking}, event URL with fallback to details link
121
+ * New template tags: {gravatar} and {host_gravatar} to show author/host gravatar images.
122
+ * New filter: mc_event_mail_to.
123
+ * New filter: mc_past_search_results.
124
+ * New filter: mc_future_search_results.
125
+ * New filter: mc_search_template
126
+ * Added support for variable increments (e.g., every 3 weeks, every 4 months, etc.)
127
+ * Added template tag support to notification email subject line
128
+ * Added option to send HTML notification emails
129
+ * Added option to set sending address for notification emails
130
+ * Added template tag to add event to Google Calendar
131
+ * Added 'check all' option to event manager.
132
+ * Accessibility Improvement: added aria-live attributes.
133
+ * New shortcode attributes: 'above' and 'below'. (Control order and display of elements above/below calendar.)
134
+ * Deprecated shortcode attributes: showkey, shownav, toggle, showjump. Will be removed in My Calendar 2.3.0.
135
+ * Updated shortcode generator to use new attributes. Also added support for author and host attributes.
136
+ * Miscellaneous tweaks to all My Calendar themes.
137
+ * jQuery improvements. (jQuery version 1.7 minimum requirement.)
138
+ * Bug fix: multi-day events incorrectly displayed in Upcoming Events by dates view
139
+ * Bug fix: Open events to details page briefly rendered empty details pop-up (requires script update)
140
+ * Bug fix: <title> element filter didn't strip all HTML tags.
141
+ * Bug fix: hcal end time
142
+ * Bug fix: upcoming events miscounted number of events with overlapping multiday single events.
143
+ * Bug fix: today's events are now counted towards total events in upcoming events list
144
+ * Bug fix: retention of location data when location fields disabled in manager
145
+ * Bug fix: documentation correction for remote DB
146
+ * Bug fix: caching issue when filtering by location
147
+ * Language updates: German, Spanish, French, Japanese, Dutch, Polish, Italian, Slovenian
148
+ * Deprecated support for WordPress versions up to 3.3.0 due to jQuery version change.
149
+
150
+ = 2.1.5 =
151
+
152
+ * Bug fix: upcoming events timestamps were converted to UTC.
153
+
154
+ = 2.1.4 =
155
+
156
+ * Bug fix: weekly view when crossing years jumped to next year
157
+ * Bug fix: Upcoming events sorting fix
158
+ * Bug fix: Upcoming events count fix
159
+ * Bug fix: print stylesheet directory fix.
160
+
161
+ = 2.1.3 =
162
+
163
+ * Bug fix: My Calendar stripped title elements from singular posts unless an SEO plug-in was installed.
164
+
165
+ = 2.1.2 =
166
+
167
+ * Bug fix: Miscounted number of events in upcoming events view when events were multiple days.
168
+ * Bug fix: My Calendar URL guessing now only selects from published Pages/posts
169
+ * Tweak: Minor change to HTML output in print view
170
+ * Added: Option to display current month or current year using Upcoming Events widget.
171
+ * Added: Filter to display a custom <title> on single event details pages with settings field to configure that title. (Improves SEO)
172
+ * Language updates: Italian, Russian, Basque
173
+
174
+ = 2.1.1 =
175
+
176
+ * Bug fix: users without 'Approve Event' ability submitted unapproved events even when event approval was disabled.
177
+
178
+ = 2.1.0 =
179
+
180
+ * Miscellaneous filepath fixes for custom icons
181
+ * Fixed filepath issue for custom content directory in loading calendar generator
182
+ * Added templating options to RSS feed event format
183
+ * Added two new template tags: description_stripped and shortdesc_stripped; returns the description fields with HTML removed.
184
+ * Re-organized settings to provide better grouping.
185
+ * Removed jumpbox default setting; jumpbox now only configurable via shortcode.
186
+ * Bug fix: titles missing in list view when open to details link enabled.
187
+ * Bug fix: Multi-day events listed only once in upcoming events lists.
188
+ * Minor stylesheet tweaks.
189
+
190
+ = 2.0.12 =
191
+
192
+ * I horribly screwed up the Upcoming Events widget in 2.0.11. Please accept my apologies.
193
+
194
+ = 2.0.11 =
195
+
196
+ * Fixed Broken custom stylesheets editing/selection.
197
+ * Added Custom links for widget title links
198
+ * Fixed issue with event links expiring immediately
199
+ * Fixed issue with holiday collisions restricted in Upcoming Events/events only when holiday category is displayed.
200
+ * Added full year output option for iCal downloads.
201
+ * Added setting for calendar heading month formatting.
202
+ * Updated language files: Japanese, Italian, German, Turkish
203
+
204
+ = 2.0.10 =
205
+
206
+ * Updated Japanese, Turkish, and Italian translations
207
+ * Bug fix: Upcoming Events list could not be limited to a single author.
208
+ * Bug fix: Un-approved events were being displayed in some public contexts.
209
+ * Bug fix: Problem with RSS feed template elements not rendering in some cases.
210
+ * Bug fix: Upcoming Events removed events inappropriately in certain situations when 'skip on holidays' was checked
211
+ * Bug fix: Updated method for getting current plugin URL.
212
+ * Deprecated support for WordPress versions before 3.0.6.
213
+
214
+ = 2.0.9 =
215
+
216
+ * Bug fix: Email notification on event addition to admin did not receive event data.
217
+ * Bug fix: Accidentally eliminated weekend class. Now it's back!
218
+ * Bug fix: Events crossing multiple dates need per-date unique IDs
219
+ * Code change: Some code simplification for current URL and plugin URL references.
220
+ * Updated languages: Portuguese, Dutch, Italian
221
+
222
+ = 2.0.8 =
223
+
224
+ * Re-written (simplified) holiday exclusion mechanism.
225
+ * Performance improvements to templating and event processing.
226
+ * Bug fix: Import from Kieran's "Calendar" plug-in was broken.
227
+ * Bug fix: 'nextmonth' class was attached to events in weekly view; not appropriate to view.
228
+ * Bug fix: Deleting single instance deleted entire event series.
229
+ * Added option: number of events per page in admin events list
230
+
231
+ = 2.0.7 =
232
+
233
+ * Bug fix: Show list view on mobile devices option did not work.
234
+ * Bug fix: No longer forcing links on titles in list or mini view.
235
+ * Bug fix: All-day events came up with random end times.
236
+ * Change: All-day checkbox added.
237
+ * Change: All-day events automatically forced to hide end times.
238
+ * Change: removed X-WR-CALNAME field from iCal output for improved compatibility
239
+ * Updates: Partial updates to Spanish, Italian, and Dutch translations.
240
+
241
+ = 2.0.6 =
242
+
243
+ * Bug fix: Mini calendar links pointed to current display month regardless of current display date.
244
+ * Bug fix: if day parameter was set, the main calendar views showed events for month starting from that date.
245
+ * Bug fix: if day view was targeted from mini calendar with default cid parameter set, would not react
246
+ * Bug fix: Calendar could not show events which had start and end dates which spanned the displayed period but were not included in the displayed period.
247
+ * Moved screenshots into assets folder in version repository.
248
+ * Translation source updated at http://translate.joedolson.com/ - now the translations need refreshing!
249
+
250
+ = 2.0.5 =
251
+
252
+ * Bug fix: Date links were eliminated in mini calendar if option to link to day-view was enabled.
253
+ * Bug fix: Today's events drew events based on UTC instead of current timezone.
254
+
255
+ = 2.0.4 =
256
+
257
+ * Bug fix: template variable misassigned in the Today's Events shortcode.
258
+ * Change: Added option to output iCal either in UTC or with times as entered. (Previously only UTC)
259
+
260
+ = 2.0.3 =
261
+
262
+ * Bug fix: Upcoming events widget did not support the "show_today's events" option correctly.
263
+ * Bug fix: Was not possible to set 12:00 am as the end time for an event.
264
+ * Bug fix: prevented blank title in main calendar due to faulty template.
265
+
266
+ = 2.0.2 =
267
+
268
+ * Bug fix: My Calendar did not enqueue jQuery
269
+ * Bug fix: Grid view did not display last day of month if first day of week and last day of month were both Sunday
270
+
271
+ = 2.0.1 =
272
+
273
+ * Bug fix: Error in default settings for event titles.
274
+ * Bug fix: Single Event iCal export broken
275
+ * Bug fix: Today's Events shortcode broken if author not specified
276
+ * Change: Deleting or updating categories now refreshes the cache.
277
+
278
+ = 2.0.0 =
279
+
280
+ * Completely re-written database model for events.
281
+ * Added: pagination on event manager list of events.
282
+ * Added: Restrict groups manager lists to currently grouped/ungrouped lists of events.
283
+ * Added links to other event instances visible when editing events with multiple instances.
284
+ * Added default category selection.
285
+ * Added feature: limit calendar views by event author.
286
+ * Added feature: filter event manager view by location, author, or category.
287
+ * Added feature: mark categories as private, to only show those events to logged-in users.
288
+ * Added templating to locations list so user can produce list of any set of location data.
289
+ * Added option in event manager to copy location data into Locations table
290
+ * Added [my_calendar_event] shortcode to fetch information for a single event.
291
+ * Added template tag {timerange} to display start-end times.
292
+ * Change: all events now have an end time. Option to hide end times to maintain current display.
293
+ * Bug fix: iCal had missing newline; events now return labeled UTC time
294
+ * Bug fix: RSS does better job of clearing non-XML special characters.
295
+ * Bug fix: If preset location was selected, no other edits to locations could be done.
296
+ * Bug fix: when copying an event, the new event was grouped in the same group as the source event.
297
+ * Bug fix: if stylesheet was disabled, stylesheet was erased on next save of style settings.
298
+ * Bug fix to category limiting which matched category names like 'baseball' to show 'all' categories.
299
+
300
+ = 1.11.3 =
301
+
302
+ * Fatal error in PHP 5.4+ https://bugs.php.net/bug.php?id=54657
303
+ * Bug fix: {date} and {time} template tags not rendered in details link when run in a template.
304
+ * Bug fix: upgrade database button placement off-screen
305
+ * Bug fix: layout on stylesheet editor caused usability problems
306
+ * Bug fix: added line break in iCal output.
307
+ * Change: added alt attribute to category icons in appropriate contexts.
308
+ * [My Calendar 2.0 beta](http://downloads.wordpress.org/plugin/my-calendar.2.0.0.zip) added to subversion repository. Here there be bugs.
309
+
310
+ = 1.11.2 =
311
+
312
+ * Bug fix: Called wp_editor on versions below 3.3
313
+ * Bug fix: assorted PHP notices cleaned up.
314
+
315
+ = 1.11.1 =
316
+
317
+ * HTML validation issue fixed in calendar output.
318
+ * Added option to hide display of external event links in calendar output.
319
+ * Bug fix: Mini calendar should not toggle from mini view when main view switched.
320
+ * Bug fix: Week time frame of list view did not return the 'no events' message.
321
+ * Feature: No events message can be customized by using an enclosing shortcode: [my_calendar]No events this week![/my_calendar]
322
+
323
+ = 1.11.0 =
324
+
325
+ * Added option to use {date} in Today's Events widget title.
326
+ * Events with the same time are now sub-sorted by title in Upcoming Events lists.
327
+ * Template tag {endtime} returns empty string if same as start time
328
+ * Standard event output returns empty string for event end time if same as start time.
329
+ * Can only check 'multi-day event' option if event has multiple occurrences.
330
+ * Categories in editor now sortable by either ID or category name.
331
+ * Categories in input now sorted by category name.
332
+ * Updated mobile detection class.
333
+ * Major revision to permissions handling to use custom capabilities
334
+ * Redesign of settings pages.
335
+ * Can target tablet devices with CSS by adding a stylesheet called mc-tablet.css to your theme directory.
336
+ * Can target other mobile devices with CSS by adding a stylesheet called mc-mobile.css to your theme directory.
337
+ * Template tags now support before and after attributes: {tag before=&quot;&lt;p&gt;&quot; after=&quot;&lt;/p&gt;&quot;}
338
+ * Added option to retrieve events, categories, and locations from a remote database. (e.g., to share calendar information between 3 related sites.)
339
+ * Eliminated details arrow; forcing anchor element on clickable title.
340
+ * Added 'id' attribute to My Calendar shortcode, to customize unique ID for calendar and avoid non-compliant duplication of IDs
341
+ * Added 'template' attribute to My Calendar shortcode, so specific calendars can use their own individual custom templates. Templates should be text files (.txt) placed in your theme directory.
342
+ * Reduced specificity in stylesheets by eliminating ID-based references.
343
+ * Fixed bug with day/date consistency in 5-day grid calendars.
344
+ * Added day class to date boxes without dates.
345
+ * Jumpbox is now switchable from the shortcode.
346
+ * Fixed google maps link to use the correct directions targeting method
347
+ * Various changes for WP 3.4 compatibility.
348
+ * Updated Danish Translation
349
+ * Updated Czech Translation
350
+ * Added Hindi Translation
351
+
352
+ = 1.10.12 =
353
+
354
+ * Bug fix: List format showed all dates, regardless of whether there were events for that date.
355
+ * Bug fix: List format showed incorrect classes.
356
+ * Bug fix: Pipe separator for categories not supported with caching.
357
+ * ARRRRGGGGHHHH!!! I'm sure you're as frustrated about all these little releases as I am. But who wants to sit on known bugs?
358
+
359
+ = 1.10.11 =
360
+
361
+ * Bug fix: Variable not checked for type threw usort warning.
362
+ * Bug fix: Details links rendered incorrect page if linked from a single post location with permalinks not enabled.
363
+ * Bug fix: Fixed bug where calendar returned no information if cache reached max size.
364
+ * Settings change: Caching is now defaulted to off.
365
+
366
+ = 1.10.10 =
367
+
368
+ * Bug fix: Upcoming events list did not respect category limits.
369
+ * Validation error/bug fix: Date for ID for first of month was incorrect.
370
+ * Validation error: unencoded ampersand in iCal link if permalinks disabled.
371
+
372
+ = 1.10.9 =
373
+
374
+ * Added option to clear cache from settings.
375
+ * Bug fix: Error in caching where cache returned false for multi-category limited calendars.
376
+ * Bug fix: Error in caching where cache returned false for category limited calendars using category name as delimiter. Thanks to [Antti Palosaari](crope@iki.fi) for reporting this bug and for testing fixes.
377
+ * Bug fix: Error notices if user is deleted who is assigned as host of some events. Thanks to Florian Edelmann for reporting this bug and contributing solution.
378
+ * Bug fix: Upcoming events in dates mode returned null for cached dates.
379
+
380
+ = 1.10.8 =
381
+
382
+ * Bug fix: upcoming events list breaks if 'This is a multi-day event' is checked for an event with only a single occurrence.
383
+ * Bug fix: Upcoming events caching did not cache correct data.
384
+ * Modification: eliminated some extraneous database calls
385
+ * Modified: clarifying text edits
386
+ * Added: category classes on calendar date cells
387
+
388
+ = 1.10.7 =
389
+
390
+ * Made 'to' value in Google Maps links a translatable value.
391
+ * Feature change: iCal download now respects currently selected month.
392
+ * Added a phone number field to the Location manager
393
+ * Added a setting to display only the core site's calendar on child sites in multisite mode.
394
+ * Added a setting for the link target for mini calendar dates
395
+ * Re-wrote labels for URL link target settings fields.
396
+ * Bug fix: Location selector did not respect currently selected categories.
397
+ * Bug fix: "Add another occurrence" option available in Edit mode, but not functional. Removed option.
398
+ * Bug fix: Limiting by categories didn't trim whitespace from category names.
399
+ * Bug fix: Fixed RSS/ICS/Print permalinks if PATHINFO permalinks are enabled.
400
+ * Improved cache handling. Cache limit relative to amount of memory available to PHP. Cache stores information more efficiently.
401
+ * Revised RSS/iCal handling to avoid .htaccess problems.
402
+
403
+ = 1.10.6 =
404
+
405
+ * Revised template tags so the description tags are run through wpautop(), and added _raw versions which are not.
406
+ * Fixed a bug in URL generation so that URLs with ports are correctly constructed.
407
+ * Fixed a bug iin Print output which did not allow restriction to multiple categories
408
+ * Added option to use {date} in previous/next navigation links to indicate what date set is being navigated to.
409
+
410
+ = 1.10.5 =
411
+
412
+ * I made a truly bone-headed error in the last update, and I'm not even going to say what. If you didn't notice it, lucky for you!
413
+
414
+ = 1.10.4 =
415
+
416
+ * In my rush to fix the security issue, I broke an aspect of the event navigation. Apologies for this! Now fixed.
417
+
418
+ = 1.10.3 =
419
+
420
+ * Incorrectly called wp_kses(). Apologies for the frequent updates!
421
+
422
+ = 1.10.2 =
423
+
424
+ * Critical security update. Please upgrade promptly. Big thank you to Dean Batha for the bug report.
425
+
426
+ = 1.10.1 =
427
+
428
+ * Bug fix: undeclared array in widget manager
429
+ * Renamed overly-generic constant.
430
+
431
+ = 1.10.0 =
432
+
433
+ * New feature: option to link dates in mini calendar to separate daily view instead of pop-up.
434
+ * New feature: no longer necessary to manually edit behaviors in order to open main calendar event titles to separate page.
435
+ * New feature: Ability to define grouped events as a single multi-day event and remove duplicates from events lists (upcoming events and today's events widgets)
436
+ * New feature: group-association classes assigned to multi-day events in grid display.
437
+ * New template tags: {daterange} and {multidate} for displaying a beginning and ending date range for a single event and for displaying each date in a multi-day event, respectively.
438
+ * Week-view calendar caption now editable.
439
+ * Added printable version.
440
+ * Submit buttons in forms are now duplicated at top and bottom of long editing sections, to improve usability.
441
+ * Minor style change to group editor to avoid group list colliding with editor textarea.
442
+ * Removed angle brackets from Previous/Next events links.
443
+ * Added custom action hooks for event save and event delete
444
+ * Added ability to prevent today's events from showing up in upcoming events listings.
445
+ * Added categories to iCal output.
446
+ * iCal should return times in local time, not in UTC.
447
+ * Bug fix: iCal output not correctly encoded
448
+ * Bug fix: mc_next_link filter did not exist.
449
+ * Bug fix: placed limit on maximum size of cached calendar data.
450
+ * Bug fix: Upcoming events list will no longer occasionally display more items than expected.
451
+ * Bug fix: menu icon not aware of custom content locations
452
+
453
+ = 1.9.8 =
454
+
455
+ * This is just a convenience update due to a warning appearing in 1.9.7 that I missed.
456
+
457
+ = 1.9.7 =
458
+
459
+ * Cache was not cleared when events were approved, rejected, or deleted.
460
+ * Fixed bug with slashed characters in time and date formats
461
+ * Fixed bug where previous/next links did not work on category pages
462
+ * Fixed bug where event description was deleted if edited in groups manager.
463
+ * Easydrag.js now respects conditional loading by page ID.
464
+ * Small change to upcoming events list: events with an end time specifie and not crossing days will move off the list after they end rather than after they start.
465
+
466
+ = 1.9.6 =
467
+
468
+ * Fixed bug in Event Manager where information about whether an event was open for registration saved incorrectly.
469
+ * Added raw details_link template tag.
470
+ * Fixed Google Maps link error when using Long/Lat coordinates.
471
+ * Associated image option was not available if HTML editor was enabled.
472
+
473
+ = 1.9.5 =
474
+
475
+ * Bug fix: Caching of Today's events did not account for category limits
476
+ * Bug fix: Upcoming events listed by day duplication
477
+
478
+ = 1.9.4 =
479
+
480
+ * Bug fix: month-by-day recurring events in upcoming events list
481
+ * Bug fix: duplication of events in upcoming events list
482
+ * Bug fix: when editing a single event with indefinite recurrences, future events set up without continuing recurrence.
483
+ * Function error when data not present fixed.
484
+ * Added display of sending name/address for support messages
485
+
486
+ = 1.9.3 =
487
+
488
+ * Stylesheet saving can write longer files. Solves problem with occasional truncation of stylesheets.
489
+ * Added transient caching for calendar events to improve performance, plus other various performance improvements
490
+ * Small html output change.
491
+ * 1.9.0 made details boxes draggable; made this optional.
492
+ * Added plug-in support request form.
493
+ * Added updated French translation to 1.9.2
494
+ * Fixed bug with date switcher duplicating/skipping months.
495
+ * Updated User's Guide (not included with plug-in)
496
+
497
+ = 1.9.2 =
498
+
499
+ * Bug fix: Fixed sort error returned by calendar if no events are in array.
500
+ * Bug fix: Fixed incorrect URLs for icons in custom directory in category key.
501
+ * Bug fix: Caption text did not display.
502
+ * Added {date} and {time} to details link text templating.
503
+ * Bug fix: Fixed {icon} URL in template output.
504
+ * Bug fix: Fixed bug with table layout of dates when weekends are disabled on grid calendar.
505
+ * Bug fix: Fixed bug with generation of details link when not using permalinks.
506
+ * Bug fix: Fixed bug with HTML editor converting HTML entities.
507
+ * Bug fix: Fixed bug where weekly view showed the wrong dates if the current week started in the previous month.
508
+
509
+ = 1.9.1 =
510
+
511
+ * Bug fix: Incorrect title template tag auto-generated if title template is empty.
512
+ * Bug fix: Create events permissions broken
513
+ * Bug fix: Host list broken in WordPress versions lower than 3.1
514
+ * Bug fix: My Calendar not using WordPress defaults for customizable date and time settings if not set by user.
515
+ * Bug fix: Turning off calendar icons did not turn off icons in key
516
+ * Bug fix: details links used current URL instead of stored URL
517
+ * Bug fix: default widget settings not loaded on upgrade.
518
+ * Bug fix: next/previous links not working on home page if permalinks not set.
519
+ * Bug fix: event title shown in date field in list mode was not for the first event of the day.
520
+ * Style change: Minor change to my-calendar.css to adjust for the green background on weekends. (Which showed up as the result of a fix to an HTML problem in 1.8.9.)
521
+ * Bug fix/Option add: Added option to remove individual iCal link
522
+ * Option add: Added option to conceal first event title/number of events with date in list mode.
523
+
524
+ = 1.9.0 =
525
+
526
+ Additions:
527
+
528
+ * template editing for list, grid, mini, and single event output.
529
+ * pop-up box is now draggable.
530
+ * date format option for grid mode, week view.
531
+ * templating for details link text.
532
+ * templating for event URL link text.
533
+ * location filtering from shortcode.
534
+ * image upload option for events
535
+ * day class to calendar date headings and cells
536
+ * individual instances of repeating events can be edited
537
+ * feature to add multiple occurrences of an event simultaneously. (concept from Dave Heitzman)
538
+ * feature to mass edit information for groups of events (concept from Dave Heitzman)
539
+ * stored URL for locations (contrib by John Colvin)
540
+ * recurring daily events on weekdays only (based on contrib by John Colvin)
541
+ * optional templating for all event output formats
542
+ * individual event occurrence iCal export
543
+ * numerous additional template tags
544
+ * Option to use custom location filter fields as data control
545
+ * Shortcode to generate list of saved locations
546
+ * Network administrators can control whether sub-site calendars contribute only to a central calendar, only to their own calendar, or whether site administrators can make that choice.
547
+ * Upgrade notice information in dashboard for future upgrades.
548
+ * implementation of WordPress text diff to compare your styles and scripts against my current released versions
549
+ * Option to skip a defined number of events in upcoming events lists.
550
+
551
+ Bug fixes:
552
+
553
+ * jump box was displaying in week/grid view.
554
+ * some potentially repeatable IDs (code validation).
555
+ * 'Administrators see all options' did not work.
556
+ * Fixed timestamps on main calendar objects
557
+ * Squashed e_notice errors.
558
+ * category limiting did not work without permalinks due to GET variable conflict with WordPress core
559
+ * Missing nonce in database upgrade routine
560
+ * Mini calendar simultaneously displayed single event view when visited.
561
+ * Link generation for details view did not work if calendar link parameterized
562
+ * Issue with weekdays only calendar if day of week set to start on Sunday
563
+ * Issue with retrieval of user-specific settings
564
+ * Issue with accessing styles and javascript if My Calendar installed in non-standard directory.
565
+ * Problem in Today's Events widget when Holiday restrictions are enabled.
566
+
567
+ Changes:
568
+
569
+ * replaced all default icons with 24-bit transparent PNGs
570
+ * jumpbox output to automatically scope to the oldest dates in the database.
571
+ * iCal output changed to output all events for complete current month
572
+ * RSS output to prioritze newly added events
573
+ * holiday skipping/fifth week customization moved into event manager function
574
+ * new 'close' icon for pop-up box; added close icon and scripting to mini calendar pop-up
575
+ * copy in several places; updated template tags.
576
+ * location lists sorted by location label (contrib by John Colvin)
577
+ * Eliminated calendar heading option
578
+ * default style resets no longer stored in global variables, instead stored as files.
579
+ * Map links now trigger the driving directions dialog in Google Maps
580
+ * New default stylesheet, refresh.css
581
+
582
+ = 1.8.9 =
583
+
584
+ * Fixed bug with database upgrade in multi-user additional calendars
585
+ * Fixed bug where calendar picked up current month labeling using current day of the month
586
+ * Added French translation
587
+
588
+ = 1.8.8 =
589
+
590
+ * Fixed bug in locations filtering that disabled feature if user not logged in.
591
+ * Re-arranged settings and added notices about options which will be removed in a future release.
592
+ * Revised RSS feed to use event permalinks when they are available.
593
+
594
+ = 1.8.7 =
595
+
596
+ * One very minor change in 1.8.6 caused some plug-in conflicts, so I rolled that change back. Will find another solution to the problem it solved. This change affects very few users.
597
+
598
+ = 1.8.6 =
599
+
600
+ * Fixed bug with {details} template tag when Upcoming widgets configured as Events
601
+ * Location and category filters now do not display forms/lists if there isn't more than one choice.
602
+ * Extended details link feature to main calendar output and added to output options.
603
+ * Minor changes to time-entry jQuery plug-in to improve usability.
604
+ * Updated Japanese translation to 1.8.5
605
+ * Added Russian translation to 1.8.5
606
+
607
+ = 1.8.5 =
608
+
609
+ * Another bug fix to monthly-by-day recurrence.
610
+ * Fixed minor problem with default template not being visible in widget.
611
+ * Fixed 'widget title linked' bug.
612
+ * Added Turkish translation by Mehmet Ko&231;ali
613
+
614
+ = 1.8.4 =
615
+
616
+ * Mini calendar widget had a mis-labeled option field
617
+ * Custom User settings for event region didn't function correctly.
618
+ * A variety of bug fixes applied to events repeating on a monthly-by-day basis
619
+
620
+ = 1.8.3 =
621
+
622
+ * Turned on spam flag toggle, which I had commented out and failed to restore...
623
+ * Default return false ('not spam') for privileged users when checking Akismet
624
+
625
+ = 1.8.2 =
626
+
627
+ * Fixed bug with {icon} template tag, for real.
628
+ * Fixed RSS missing argument
629
+ * Fixed empty list rendering in upcoming events widget
630
+
631
+ = 1.8.1 =
632
+
633
+ * Fixed bug with region saving on edit of location
634
+ * Fixed bug with single-event view receiving date as array
635
+ * Fixed bug with {icon} template tag
636
+ * Fixed bug with calendar output if user settings are enabled but not applied by user
637
+ * Fixed bug with list/grid format toggle
638
+ * Fixed bug with upcoming events limited by category names
639
+
640
+ = 1.8.0 =
641
+
642
+ * Added event region as a location field
643
+ * Added time selector and altered calendar range selector.
644
+ * Added visual editor for event description textarea.
645
+ * Added templating tag to add a link to the single event view.
646
+ * Added option to not display weekends in grid format.
647
+ * Added unique ID for each event in calendar.
648
+ * Added default sort order option for admin events list.
649
+ * Added admin events list to screen while editing or copying event.
650
+ * Added shortcode generator for Page and Post editor.
651
+ * Added spam protection: New events are now checked through Akismet if installed and configured.
652
+ * Added category selection shortcode.
653
+ * Added mini calendar widget.
654
+ * Added external link class.
655
+ * Added list/grid view toggle.
656
+ * Added mobile detection so mobile devices receive list format without JavaScript for easier reading.
657
+ * Added Upcoming Events widget sort order option.
658
+ * Added Option to link widget title to main calendar page.
659
+ * Change: Minor reorganization of settings page.
660
+ * Change: Altered time input to use non-military format time, added JavaScript time input.
661
+ * Change: Moved My Calendar menu items into the content menu.
662
+ * Change: When calendar is limited by categories, only the displayed categories are listed in the category key.
663
+ * Change: If widget title is left blank, widget will have no title.
664
+ * Change: Moved translation files into a subdirectory (/lang/)
665
+ * Bug fix: hcal dates
666
+ * Bug fix: problem where restoring styles referenced out of date styles
667
+ * Bug fix: error in primary stylesheet
668
+ * Bug fix: issue with month-by-day recurring events when recurrance set at 0
669
+ * Bug fix: issue with end dates when recurrance set at 0
670
+ * Bug fix: DB installed to match WPDB chararacter set and collation.
671
+ * Bug fix: turn-of-year page navigation in week view.
672
+ * Bug fix: entries not remembered in error condition post
673
+ * Updated German Translation to version 1.7.0 (Christopher Schauer)
674
+ * Updated German Translation to version 1.7.8 (Uwe Jonas)
675
+ * Note: during this update cycle, I received two German translations, and am using the most up to date version.
676
+ * Added Swedish Translation to version 1.7.8
677
+
678
+ = 1.7.8 =
679
+
680
+ * Bug fix: Behaviors page limits lost on settings refresh
681
+ * Bug fix: Fix {enddate} shortcode output.
682
+ * Bug fix: iCal output improvements
683
+ * Modification: RSS and iCal output are disabled entirely when turned off, rather than just hidden.
684
+ * Modification: Added styles for days out of current month
685
+
686
+ = 1.7.7 =
687
+
688
+ * Bug fix: Upcoming Events widget fault in 'dates' mode.
689
+
690
+ = 1.7.6 =
691
+
692
+ * Bug fix: Upcoming Events widget in days mode was not offsetting time using GMT reference. (Committed silently in 1.7.5)
693
+ * Bug fix: Default template not rendered in Today's Events when template left blank
694
+ * Bug fix: Slashes not stripped in category key.
695
+ * Bug fix: Upcoming Events widget if no upcoming events
696
+ * Bug fix: Error with retrieval of Author's ID
697
+ * Fixed some non-translatable text strings
698
+ * Logic change: Upcoming Events now bases choice on time rather than date (events happening later today are future, rather than only events happening tomorrow or later.)
699
+ * Enhancement: respects custom wp-content location definitions
700
+
701
+ = 1.7.5 =
702
+
703
+ * Bug fix: Error with upcoming events when selected by dates and holiday skipping enabled.
704
+ * Bug fix: Upcoming Events widget title defaulted to 'Today's Events'
705
+ * Change: Reversed order of Latitude/Longitude on forms to match Google's implementation.
706
+
707
+ = 1.7.4 =
708
+
709
+ * Bug fix: Upcoming events templates ran htmlentities on output
710
+
711
+ = 1.7.3 =
712
+
713
+ * Bug fix: upcoming events substitute text still not appearing in some contexts.
714
+ * Bug fix: Today's event substitute text had assignment in place of comparison
715
+ * Bug fix: Event location not saved properly on edit if Location Fields are disabled on input
716
+ * Bug fix: Fixed date and time issues in iCal output
717
+ * Bug fix: Fixed character set issue in RSS output
718
+ * Bug fix: Major problem with Holiday category event delimiting
719
+ * Danish translation updated to 1.7.0
720
+ * Japanese translation updated to 1.7.1
721
+ * Minor documentation and readme.txt updates
722
+ * Added additional fallback settings for widgets
723
+ * Fixed minor installation issue with version detection.
724
+ * Added CSS hook .nextmonth on dates occurring past the end of the currently displayed month.
725
+ * Added check for '#' symbol on hex colors in category management.
726
+
727
+ = 1.7.2 =
728
+
729
+ * Bug fix: Fixed import from Calendar feature.
730
+ * Bug fixed: Upcoming events widget default text fixed
731
+ * Italian translation updated to 1.7.0
732
+
733
+ = 1.7.1 =
734
+
735
+ * Default setting for custom user location type not set
736
+ * Reset for inherit.css styles missing
737
+ * Widget shortcodes stripped HTML
738
+ * Added a fallback function for exif_imagetype 'cuz some servers don't have it available by default.
739
+ * Nonce missing in database upgrade
740
+ * Ability to edit text for shortcode fallback (No events text) lost.
741
+ * Widget defaults not installed on new installation
742
+ * Mini and List jQuery did not prevent default link action
743
+ * Changed install action to default User settings to off.
744
+
745
+ = 1.7.0 =
746
+
747
+ * Fix in AJAX navigation for IE
748
+ * Fix in JavaScript to re-activate close button
749
+ * Fixed bug with locations list not registering current location type in form mode
750
+ * Fixed bug with upcoming events and today's events output when regions limits were set
751
+ * Fixed bug with upcoming events producing incorrect dates for events recurring on a specific day of the month.
752
+ * Revision of Widgeting setup to offer multi-widget support (will require you to re-setup your widgets)
753
+ * Revision of style editor to use external stylesheets.
754
+ * Revision of style support to add option for custom stylesheets stored outside of plugin directory
755
+ * Added: multiple base stylesheets
756
+ * Added: Event markup in hCal format
757
+ * Added Weekly mode for list and grid view
758
+ * Added RSS and iCal exports for upcoming events (enable and disable in settings)
759
+ * Added option to block display of an event if there is an event that day which is in a designated 'Holiday' category.
760
+ * Added permission setting to allow non-administrators to edit or delete any event.
761
+ * Added Czech translation (to 1.6.3)
762
+ * Updated Italian and Danish translations
763
+ * Security: Implemented nonces
764
+
765
+ = 1.6.3 =
766
+
767
+ * Updated jQuery to fix conflicts in previous versions and so behaviors would work with AJAX navigation. Not updated by upgrade; use Behaviors reset to apply.
768
+ * Incorporated option to enable AJAX navigation for next/previous navigation.
769
+ * Fixed bug with multi-month display in list format where January could not be displayed.
770
+ * Revised settings page for clarity.
771
+ * Fixed some default settings issues.
772
+ * Fixed a bug where the locations lists didn't respect the datatype parameter.
773
+ * Added templating to event titles for calendar grid or list output.
774
+
775
+ = 1.6.2 =
776
+
777
+ * Fixed broken style editor. (The way it was broken was awfully weird...kinda wonder how I did it!)
778
+ * Fixed missing div in calendar list output.
779
+ * Removed debugging call which had been left from testing.
780
+ * Fixed storage of initial settings for user settings (array did not store probably initially.)
781
+ * Added Italian translation by [Sabir Musta](http://mustaphasabir.altervista.org)
782
+
783
+ = 1.6.1 =
784
+
785
+ * Bug fix in event saving
786
+
787
+ = 1.6.0 =
788
+
789
+ * Feature: User profile defined time zone preference
790
+ * Feature: User profile defined location preference
791
+ * Feature: Define event host as separate from event author
792
+ * Feature: Added ability to hide Prev/Next links as shortcode attribute
793
+ * Change: Separated Style editing from JS editing
794
+
795
+ = 1.5.4 =
796
+
797
+ * Fixed: Bug with permissions in event approval process.
798
+
799
+ = 1.5.3 =
800
+
801
+ * Fixed: Bug which broke the {category} template tag
802
+ * Fixed: Bug which moved extra parameters before the "?" in URLs
803
+ * Fixed: Bug which produced an incorrect date with day/month recurring events on dates with no remainder
804
+ * Added: Japanese translation by [Daisuke Abe](http://www.alter-ego.jp/)
805
+
806
+ = 1.5.2 =
807
+
808
+ * Fixed: Bug where event data wasn't remembered if an error was triggered on submission.
809
+
810
+ = 1.5.1 =
811
+
812
+ * Fixed: Bug where events recurring monthly by days appeared on wrong date when month begins on Sunday.
813
+ * Fixed: Bug where events recurring monthly by days appeared on dates prior to the scheduled event start.
814
+ * Performance improvement: Added SQL join to incorporate category data in event object
815
+ * Added quicktag to provide access to category color and icon in widget templates
816
+ * Changed link expiration to be associated with the end date of events rather than the beginning date.
817
+ * Updated readme plugin description, help files, and screenshots.
818
+
819
+ = 1.5.0 =
820
+
821
+ * Added: German translation.
822
+ * Updated: Danish translation.
823
+ * Added: Administrator notification by email feature [Contributions by Roland]
824
+ * Added: Reservations and Approval system for events. [Contributions by Roland]
825
+ * Added: Events can be recurring on x day of month, e.g. 3rd Monday of the month.
826
+
827
+ = 1.4.10 =
828
+
829
+ * Fixed: Failed to increment internal version pointer in previous version.
830
+ * Fixed: Invalid styles created if category color set to default.
831
+ * Fixed: (Performance) Default calendar view attempted to select invalid category.
832
+ * Updated: Danish translation.
833
+
834
+ = 1.4.9 =
835
+
836
+ * Fixed: Bug where location edits couldn't be saved if location fields were on and dropdown was off
837
+ * Fixed: Bug where latitude and longitude were switched on Google Maps links
838
+ * Fixed: Bug where map link would not be provided if no location data was entered except Lat/Long coordinates.
839
+
840
+ = 1.4.8 =
841
+
842
+ * Added: Ability to copy events to create a new instance of that event
843
+ * Added: Customization of which input elements are visible separate from what output is shown.
844
+ * Fixed: Issue where one JS element could not be fully disabled
845
+ * Fixed: Internationalization fault with Today's Events showing events from previous day
846
+ * Fixed some assorted text errors and missing internationalization strings.
847
+ * Fixed issue where the 'Help' link was added to all plug-in listings.
848
+ * Reorganized settings page UI.
849
+
850
+ = 1.4.7 =
851
+
852
+ * Fixed: Bug where infinitely recurring events whose first occurrence was in the future were not rendered in upcoming events
853
+ * Fixed: Bug where infinitely recurring bi-weekly events only rendered their first event in calendar view
854
+ * Added: Option to indicate whether registration for an event is open or closed, with customizable text.
855
+ * Added: Option to supply a short description alternative to the full description.
856
+
857
+ = 1.4.6 =
858
+
859
+ * Fixed: Flash of unstyled content prevention scripts weren't disabled when other scripting was disabled.
860
+ * Fixed: Categories which started with numerals couldn't have custom styles.
861
+ * Fixed: Locations required valid 0 float value to save records on some servers; now supplied by default.
862
+
863
+ = 1.4.5 =
864
+
865
+ * Fixed a bug with editing and adding locations
866
+ * Fixed a bug with error messages when adding categories
867
+ * Fixed a bug with identification of current day (again?)
868
+ * Added Danish translation (Thanks to Jakob Smith)
869
+
870
+ = 1.4.4 =
871
+
872
+ * Fixed a bug where event end times tags were not rendered when blank in widget templates
873
+ * Fixed a bug with event adding and updating for Windows IIS
874
+ * Fixed a bug with international characters
875
+ * Reduced number of SQL queries made.
876
+ * Moved JavaScript output to footer.
877
+ * Improved error messages.
878
+ * Significant edits to basic codebase to improve efficiency.
879
+ * Fixed bug where full default styles didn't initially load on new installs.
880
+ * Re-organized default styles to make it easier for users to customize colors.
881
+
882
+ = 1.4.3 =
883
+
884
+ * Fixed a bug where event end times were displaying the start time instead when editing.
885
+ * Fixed a bug introduced by the mini calendar option which displayed titles twice in list format.
886
+ * Fixed a bunch of typos.
887
+ * Added a loop which automatically adds the mini calendar styles if you don't already have them.
888
+ * Fixed a bug where JS didn't run if the 'show only on certain pages' option was used.
889
+ * Added a qualifier for upgrading databases when you haven't added any events.
890
+
891
+ = 1.4.2 =
892
+
893
+ * Fixed a bug in the widget display code which caused problems displaying multiple categories.
894
+
895
+ = 1.4.1 =
896
+
897
+ * Database upgrade didn't run for some users in 1.4.0. Added manual check and upgrade if necessary.
898
+
899
+ = 1.4.0 =
900
+
901
+ * Bug fixed: Today's Events widget was not taking internationalized time as it's argument
902
+ * Added end time field for events
903
+ * Added option for links to expire after events have occurred.
904
+ * Added options for alternate applications of category colors in output.
905
+ * Added ability to use My Calendar shortcodes in text widgets.
906
+ * Added GPS location option for locations
907
+ * Added zoom selection options for map links
908
+ * Lengthened maximum length for category and event titles
909
+ * Added a close link on opened events details boxes.
910
+ * Added an option for a mini calendar display type in shortcode
911
+ * Optimized some SQL queries and reduced total number of queries significantly.
912
+ * Extended the featured to show CSS only on certain pages to include JavaScript as well.
913
+ * Upcoming events widget only allowed up to 99 events to be shown forward or back. Changed to 999.
914
+ * Attempted to solve a problem with infinitely recurring events not appearing in upcoming events. Let me know.
915
+ * Added setting to change Previous Month/Next Month text.
916
+ * Yeah, that's enough for now.
917
+
918
+ = 1.3.8 =
919
+
920
+ * Fixed problem with CSS editing which effectively disabled CSS unless a specific choice had been made for pages to show CSS
921
+
922
+ = 1.3.7 =
923
+
924
+ * Aren't you enjoying the daily upgrades? I made a mistake in 1.3.5 which hid text in an incorrect way, causing problems in some contexts.
925
+
926
+ = 1.3.6 =
927
+
928
+ * Fixed an issue where not having defined Pages to show CSS resulted in a PHP warning for some configs.
929
+
930
+ = 1.3.5 =
931
+
932
+ * Fix for flash of unstyled content issue.
933
+ * Added configuration for time text on events with non-specific time.
934
+ * Fixed bug where, in list views with multiple months, events occurring on days which did not exist in the previous month were not rendered. (Such as March 30th where previous month was February.)
935
+ * Fixed bug where the multi-month view setting for lists caused previous/next events buttons to skip months in calendar view.
936
+ * Added option to disable category icons.
937
+ * Added option to insert text in calendar caption/title area, appended to the month/year information.
938
+ * Fixed a bug where it was not possible to choose the "Show by days" option in the upcoming events widget.
939
+ * Updated documentation to match
940
+ * Fixed a bug where upcoming events in Days mode did not display correct date
941
+ * Added an option to define text to be displayed in place of Today's Events widget if there are no events scheduled.
942
+ * Minor changes to default CSS
943
+ * Ability to show CSS and JavaScript only on selected pages.
944
+
945
+ = 1.3.4 =
946
+
947
+ * Fixed a bug with map link and address display which I forgot to deal with in previous release.
948
+
949
+ = 1.3.3 =
950
+
951
+ * Fixed bug with upgrade path which caused locations database to be created on every activation (also cause of errors with some other plugins). (Thanks to Steven J. Kiernan)
952
+ * Made clone object PHP 4 compatible (Thanks to Peder Lindkvist)
953
+ * Corrected errors in shortcode functions for today's events
954
+ * Corrected rendering of non-specific time events as happening at midnight in widget output
955
+
956
+ = 1.3.2 =
957
+
958
+ * Fixed bugs with unstripped slashes in output
959
+ * Fixed a bug where users could not add location information in events if they had not added any recurring locations
960
+ * Removed requirement that address string must be five characters to display a link
961
+
962
+ = 1.3.1 =
963
+
964
+ * Corrected incorrect primary key in upgrade path.
965
+ * Added version incrementing in upgrade path.
966
+
967
+ = 1.3.0 =
968
+
969
+ * Fixed a CSS class which was applied to an incorrect element.
970
+ * Revisions to the Calendar import methods
971
+ * Moved style editing to its own page
972
+ * Added JavaScript editing to allow for customization of jQuery behaviors.
973
+ * Internationalized date formats
974
+ * Shortcode support for multiple categories.
975
+ * Shortcode support for custom templates in upcoming and today's events
976
+ * Added a settings option to eliminate the heading in list format display.
977
+ * Fixed a bug which treated the event repetition value as a string on event adding or updating, not allowing some users to use '0' as an event repetition.
978
+ * Made events listing sortable in admin view
979
+ * Minor revisions in admin UI.
980
+ * Added database storage for frequently used venues or event locations.
981
+ * Modified JavaScript for list display to automatically expand events scheduled for today.
982
+
983
+ = 1.2.1 =
984
+
985
+ * Corrected a typo which broke the upcoming events widget.
986
+
987
+ = 1.2.0 =
988
+
989
+ * Added shortcodes to support inserting upcoming events and todays events lists into page/post content.
990
+ * Added option to restrict upcoming events widgets by category
991
+ * More superficial CSS changes
992
+ * Added Brazilian Portuguese language files
993
+ * Fixed bug where I reversed the future and past variable values for upcoming events widgets
994
+ * Fixed bug in multi-user permissions.
995
+ * Added feature to look for a custom location for icons to prevent overwriting of custom icons on upgrade.
996
+
997
+ = 1.1.0 =
998
+
999
+ * Fixed some problems with Upcoming Events past events not scrolling off; hopefully all!
1000
+ * Fixed some problems with fuzzy interpretations of the numbers of past/future events displayed in Upcoming Events.
1001
+ * Added Bi-weekly events
1002
+ * Added restrictions so that admin level users can edit any events but other users can only edit their own events
1003
+ * Removed character restrictions on event titles
1004
+ * Revised default stylesheet
1005
+
1006
+ = 1.0.2 =
1007
+
1008
+ * Fixed problems with editing and deleting events or categories in multiblog installation
1009
+ * Fixed escaping/character set issue
1010
+ * Fixed issue when blog address and wp address did not match (introduced in 1.0.1)
1011
+ * Added import method to transfer events and categories from Kieran O'Shea's Calendar plugin
1012
+
1013
+ = 1.0.1 =
1014
+
1015
+ * Added missing template code for event end dates.
1016
+ * Changed defaults so that styles and javascript are initially turned on.
1017
+ * Removed function collisions with Calendar
1018
+ * Fixed bug where My Calendar didn't respect the timezone offset in identifying the current day.
1019
+ * Fixed bug where multiblog installations in WP 3.0 were unable to save events and settings.
1020
+ * Added Spanish translation, courtesy of [Esteban Truelsegaard](http://www.netmdp.com). Thanks!
1021
+
1022
+ = 1.0.0 =
1023
+
1024
+ * Initial launch.
css/mc-print.css CHANGED
@@ -1,3 +1,5 @@
1
.my-calendar-header, h3 img, .mc-toggle, .mc_edit_links, #mc-export, .longdesc, .shortdesc, .mc-print, form {
2
display: none;
3
}
1
+ /* If copying this stylesheet, place in your theme directory in a /css subdirectory. /wp-content/yourtheme/css/mc-print.css */
2
+
3
.my-calendar-header, h3 img, .mc-toggle, .mc_edit_links, #mc-export, .longdesc, .shortdesc, .mc-print, form {
4
display: none;
5
}
css/mc-styles.css CHANGED
@@ -3,6 +3,10 @@
3
font-size: 1em
4
}
5
6
.mcbuy, .mcsbuy {
7
font-size: 1.1em;
8
line-height: 1.5
@@ -86,8 +90,8 @@ ul.links li {
86
background: #eee
87
}
88
89
- .jd-my-calendar .pending td {
90
- color: #666
91
}
92
93
.jd-my-calendar fieldset fieldset {
@@ -178,10 +182,17 @@ ul.links li {
178
margin: 10px 10px 0 0
179
}
180
181
.jd-my-calendar .postbox .inside {
182
overflow: visible !important
183
}
184
185
/* some plugins change this, but I need it at WP default. */
186
.jd-my-calendar .meta-box-sortables {
187
min-height: 0
@@ -258,6 +269,11 @@ strong.label {
258
top: .7em;
259
}
260
261
.jd-my-calendar .counter {
262
padding-right: 6px;
263
border-right: 16px solid green;
@@ -305,9 +321,16 @@ strong.label {
305
background: #f3f3f3;
306
}
307
308
.mc-tabs .tabs a.active {
309
border-bottom: 1px solid #fefefe;
310
background: #fefefe;
311
}
312
313
.mc-tabs .wptab {
@@ -317,6 +340,10 @@ strong.label {
317
border: 1px solid #ccc;
318
}
319
320
.jd-my-calendar .ui-accordion-header, .mc-settings-page #mc-sortable li {
321
border: 1px solid #ccc;
322
border-radius: 2px;
@@ -325,6 +352,15 @@ strong.label {
325
margin: 1px 0;
326
}
327
328
.jd-my-calendar .ui-accordion-header.ui-state-hover, .ui-accordion-header.ui-state-focus, .mc-settings-page #mc-sortable li:hover {
329
background: #f6f6f6;
330
box-shadow: 0 0 2px #ddd;
@@ -339,16 +375,19 @@ strong.label {
339
}
340
341
#mc-sortable .mc-calendar {
342
- background: #ffc;
343
border: 1px solid #cc8;
344
}
345
346
#mc-sortable li.mc-stop {
347
- margin: 1px -1em;
348
border-radius: none;
349
- border-left: none;
350
- border-right: none;
351
- padding: 2px 2em;
352
}
353
354
#mc-sortable div.dashicons {
@@ -372,6 +411,14 @@ strong.label {
372
margin-bottom: 1em;
373
}
374
375
.jd-my-calendar .checkboxes li {
376
display: inline-block;
377
padding: 5px;
@@ -379,6 +426,10 @@ strong.label {
379
margin: 2px;
380
}
381
382
.jd-my-calendar .checkboxes li:hover {
383
background: #fff;
384
}
@@ -436,11 +487,10 @@ strong.label {
436
color: red;
437
}
438
439
- .jd-my-calendar textarea[readonly="readonly"] {
440
- color: #333;
441
- border: none;
442
- box-shadow: none;
443
- font-size: 1.4em;
444
}
445
446
.mc-locations label {
@@ -520,6 +570,12 @@ tr.problem .error {
520
display: block;
521
}
522
523
#my-calendar .inside div iframe {
524
float: none;
525
}
3
font-size: 1em
4
}
5
6
+ #my-calendar #wp-content-editor-tools {
7
+ background: #fff;
8
+ }
9
+
10
.mcbuy, .mcsbuy {
11
font-size: 1.1em;
12
line-height: 1.5
90
background: #eee
91
}
92
93
+ .jd-my-calendar .pending td, .jd-my-calendar .row-actions {
94
+ color: #666;
95
}
96
97
.jd-my-calendar fieldset fieldset {
182
margin: 10px 10px 0 0
183
}
184
185
+ .jd-my-calendar .postbox.wptab {
186
+ margin: 0 10px 0 0!important;
187
+ border: 1px solid #e5e5e5;
188
+ }
189
+
190
.jd-my-calendar .postbox .inside {
191
overflow: visible !important
192
}
193
194
+
195
+
196
/* some plugins change this, but I need it at WP default. */
197
.jd-my-calendar .meta-box-sortables {
198
min-height: 0
269
top: .7em;
270
}
271
272
+ .wp-picker-holder {
273
+ position: absolute;
274
+ z-index: 10;
275
+ }
276
+
277
.jd-my-calendar .counter {
278
padding-right: 6px;
279
border-right: 16px solid green;
321
background: #f3f3f3;
322
}
323
324
+ .mc-tabs.settings .tabs a {
325
+ padding: 8px;
326
+ font-size: 1.2em;
327
+ }
328
+
329
.mc-tabs .tabs a.active {
330
border-bottom: 1px solid #fefefe;
331
background: #fefefe;
332
+ text-decoration: none;
333
+ cursor: text;
334
}
335
336
.mc-tabs .wptab {
340
border: 1px solid #ccc;
341
}
342
343
+ .js .wptab:not( :first-child ) {
344
+ display: none;
345
+ }
346
+
347
.jd-my-calendar .ui-accordion-header, .mc-settings-page #mc-sortable li {
348
border: 1px solid #ccc;
349
border-radius: 2px;
352
margin: 1px 0;
353
}
354
355
+ .mc-settings-page #mc-sortable .mc-updated {
356
+ background-color: #ffa;
357
+ }
358
+
359
+ #mc-sortable .mc-buttons {
360
+ display: inline-block;
361
+ width: 7em;
362
+ }
363
+
364
.jd-my-calendar .ui-accordion-header.ui-state-hover, .ui-accordion-header.ui-state-focus, .mc-settings-page #mc-sortable li:hover {
365
background: #f6f6f6;
366
box-shadow: 0 0 2px #ddd;
375
}
376
377
#mc-sortable .mc-calendar {
378
+ background-color: #ffa!important;
379
border: 1px solid #cc8;
380
}
381
382
#mc-sortable li.mc-stop {
383
border-radius: none;
384
+ background-color: #222;
385
+ color: #eee;
386
+ }
387
+
388
+ #mc-sortable li.mc-stop:hover {
389
+ background-color: #000;
390
+ color: #bbb;
391
}
392
393
#mc-sortable div.dashicons {
411
margin-bottom: 1em;
412
}
413
414
+ .mc_permissions {
415
+ padding: .5em;
416
+ }
417
+
418
+ .mc_permissions:nth-of-type(odd) {
419
+ background: rgba( 0,0,0, .05 );
420
+ }
421
+
422
.jd-my-calendar .checkboxes li {
423
display: inline-block;
424
padding: 5px;
426
margin: 2px;
427
}
428
429
+ .jd-my-calendar .mc_permissions:nth-of-type(odd) .checkboxes li {
430
+ background: transparent;
431
+ }
432
+
433
.jd-my-calendar .checkboxes li:hover {
434
background: #fff;
435
}
487
color: red;
488
}
489
490
+ .mc-controls {
491
+ font-weight: 700;
492
+ text-align: right;
493
+ margin: -3em 0 0;
494
}
495
496
.mc-locations label {
570
display: block;
571
}
572
573
+ .event_time_label {
574
+ display: inline-block;
575
+ padding: .25em;
576
+ background: #ffc;
577
+ }
578
+
579
#my-calendar .inside div iframe {
580
float: none;
581
}
css/reset.css CHANGED
@@ -66,4 +66,12 @@
66
overflow: hidden;
67
position: absolute;
68
max-height: 1px;
69
- }
66
overflow: hidden;
67
position: absolute;
68
max-height: 1px;
69
+ }
70
+
71
+ button.mc-toggle {
72
+ border: 0;
73
+ padding: 4px;
74
+ background-color: transparent;
75
+ }
76
+
77
+ .mcjs .mc-main .details, .mcjs .mc-main .calendar-events { display: none; }
js/ajax.js CHANGED
@@ -29,5 +29,19 @@
29
}
30
});
31
32
});
33
}(jQuery));
29
}
30
});
31
32
+ var is_checked = $( 'input[id="e_allday"]' ).prop( "checked" );
33
+ if ( ! is_checked ) {
34
+ $( '.event_time_label' ).hide();
35
+ }
36
+
37
+ $( 'input[id="e_allday"]' ).change( function() {
38
+ var checked = $(this).prop( "checked" );
39
+ if ( checked ) {
40
+ $( '.event_time_label' ).show();
41
+ } else {
42
+ $( '.event_time_label' ).hide();
43
+ }
44
+ });
45
+
46
});
47
}(jQuery));
js/mc-ajax.js CHANGED
@@ -4,8 +4,9 @@
4
$(document).on('click', '.calendar .my-calendar-nav a', function (e) {
5
e.preventDefault();
6
var link = $(this).attr('href');
7
var ref = $(this).attr('data-rel');
8
- $('#' + ref).html('<div class=\"loading\"><span>Loading...</span></div>');
9
$('#' + ref).load(link + ' #' + ref + ' > *', function () {
10
$('.calendar-event').children().not('.event-title').hide();
11
$('#' + ref).attr('tabindex', '-1').focus();
@@ -15,7 +16,8 @@
15
e.preventDefault();
16
var link = $(this).attr('href');
17
var ref = $(this).attr('data-rel');
18
- $('#' + ref).html('<div class=\"loading\"><span>Loading...</span></div>');
19
$('#' + ref).load(link + ' #' + ref + ' > *', function () {
20
$('li.mc-events').children().not('.event-date').hide();
21
$('li.current-day').children().show();
@@ -26,7 +28,8 @@
26
e.preventDefault();
27
var link = $(this).attr('href');
28
var ref = $(this).attr('data-rel');
29
- $('#' + ref).html('<div class=\"loading\"><span>Loading...</span></div>');
30
$('#' + ref).load(link + ' #' + ref + ' > *', function () {
31
$('.mini .has-events').children().not('.trigger, .mc-date, .event-date').hide();
32
$('#' + ref).attr('tabindex', '-1').focus();
4
$(document).on('click', '.calendar .my-calendar-nav a', function (e) {
5
e.preventDefault();
6
var link = $(this).attr('href');
7
+ var height = $('.mc-main.calendar' ).height();
8
var ref = $(this).attr('data-rel');
9
+ $('#' + ref).html('<div class=\"loading\" style=\"height:' + height + 'px\"><span>Loading...</span></div>');
10
$('#' + ref).load(link + ' #' + ref + ' > *', function () {
11
$('.calendar-event').children().not('.event-title').hide();
12
$('#' + ref).attr('tabindex', '-1').focus();
16
e.preventDefault();
17
var link = $(this).attr('href');
18
var ref = $(this).attr('data-rel');
19
+ var height = $('.mc-main.list' ).height();
20
+ $('#' + ref).html('<div class=\"loading\" style=\"height:' + height + 'px\"><span>Loading...</span></div>');
21
$('#' + ref).load(link + ' #' + ref + ' > *', function () {
22
$('li.mc-events').children().not('.event-date').hide();
23
$('li.current-day').children().show();
28
e.preventDefault();
29
var link = $(this).attr('href');
30
var ref = $(this).attr('data-rel');
31
+ var height = $('.mc-main.mini' ).height();
32
+ $('#' + ref).html('<div class=\"loading\" style=\"height:' + height + 'px\"><span>Loading...</span></div>');
33
$('#' + ref).load(link + ' #' + ref + ' > *', function () {
34
$('.mini .has-events').children().not('.trigger, .mc-date, .event-date').hide();
35
$('#' + ref).attr('tabindex', '-1').focus();
js/mc-grid.js CHANGED
@@ -5,8 +5,10 @@
5
$(document).on("click", ".calendar-event .event-title",
6
function (e) {
7
e.preventDefault(); // remove line if you are using a link in the event title
8
$(this).parent().children().not(".event-title").toggle().attr("tabindex", "-1");
9
$(this).parent().focus();
10
});
11
$(document).on("click", ".calendar-event .close",
12
function (e) {
5
$(document).on("click", ".calendar-event .event-title",
6
function (e) {
7
e.preventDefault(); // remove line if you are using a link in the event title
8
+ var current_date = $(this).parent().children();
9
$(this).parent().children().not(".event-title").toggle().attr("tabindex", "-1");
10
$(this).parent().focus();
11
+ $(".calendar-event").children().not(".event-title").not( current_date ).hide();
12
});
13
$(document).on("click", ".calendar-event .close",
14
function (e) {
js/sortable.js CHANGED
@@ -1,18 +1,19 @@
1
jQuery(document).ready(function ($) {
2
$('#mc-sortable').sortable({
3
update: function (event, ui) {
4
- $('#mc-sortable-update').html('Submit form to save changes');
5
- $('#mc-sortable-update').css({'padding': '6px', 'background-color': '#ffc', 'font-weight': 'bold'});
6
}
7
});
8
$('#mc-sortable .up').on('click', function (e) {
9
e.preventDefault();
10
$(this).parents('li').insertBefore($(this).parents('li').prev());
11
- $(this).parents('li').css({'background': '#ffc'});
12
});
13
$('#mc-sortable .down').on('click', function (e) {
14
e.preventDefault();
15
$(this).parents('li').insertAfter($(this).parents('li').next());
16
- $(this).parents('li').css({'background': '#ffc'});
17
});
18
});
1
jQuery(document).ready(function ($) {
2
$('#mc-sortable').sortable({
3
update: function (event, ui) {
4
+ $('#mc-sortable-update').html( 'Submit form to save changes' );
5
}
6
});
7
$('#mc-sortable .up').on('click', function (e) {
8
e.preventDefault();
9
$(this).parents('li').insertBefore($(this).parents('li').prev());
10
+ $( '#mc-sortable li' ).removeClass( 'mc-updated' );
11
+ $(this).parents('li').addClass( 'mc-updated' );
12
});
13
$('#mc-sortable .down').on('click', function (e) {
14
e.preventDefault();
15
$(this).parents('li').insertAfter($(this).parents('li').next());
16
+ $( '#mc-sortable li' ).removeClass( 'mc-updated' );
17
+ $(this).parents('li').addClass( 'mc-updated' );
18
});
19
});
js/tabs.js CHANGED
@@ -1,15 +1,23 @@
1
jQuery(document).ready(function ($) {
2
- var tabs = $('.mc-tabs .wptab').length;
3
- $('.mc-tabs .tabs a[href="#' + firstItem + '"]').addClass('active').attr( 'aria-selected', 'true' );
4
- if ( tabs > 1 ) {
5
- $( '.mc-tabs .wptab' ).not( '#' + firstItem ).hide();
6
- $( '.mc-tabs .tabs a' ).on( 'click', function (e) {
7
- e.preventDefault();
8
- $('.mc-tabs .tabs a').removeClass('active').attr( 'aria-selected', 'false' );
9
- $(this).addClass('active').attr( 'aria-selected', 'true' );
10
- var target = $(this).attr('href');
11
- $('.mc-tabs .wptab').not(target).hide();
12
- $(target).show().attr('tabindex','-1').focus();
13
- });
14
- }
15
});
1
jQuery(document).ready(function ($) {
2
+ $( '.mc-tabs' ).each( function ( index ) {
3
+ var tabs = $('.mc-tabs .wptab').length;
4
+ var firstItem = window.location.hash;
5
+ if ( ! firstItem ) {
6
+ var firstItem = '#' + $( '.mc-tabs .wptab:nth-of-type(1)' ).attr( 'id' );
7
+ }
8
+ $('.mc-tabs .tabs a[href="' + firstItem + '"]').addClass('active').attr( 'aria-selected', 'true' );
9
+ if ( tabs > 1 ) {
10
+ $( '.mc-tabs .wptab' ).not( firstItem ).hide();
11
+ $( firstItem ).show();
12
+ $( '.mc-tabs .tabs a' ).on( 'click', function (e) {
13
+ e.preventDefault();
14
+ $('.mc-tabs .tabs a').removeClass('active').attr( 'aria-selected', 'false' );
15
+ $(this).addClass('active').attr( 'aria-selected', 'true' );
16
+ var target = $(this).attr('href');
17
+ window.location.hash = target;
18
+ $('.mc-tabs .wptab').not(target).hide();
19
+ $(target).show().attr('tabindex','-1').focus();
20
+ });
21
+ }
22
+ });
23
});
lang/my-calendar-cs_CZ.mo CHANGED
Binary file
lang/my-calendar-da_DK.mo CHANGED
Binary file
lang/my-calendar-de_DE.mo CHANGED
Binary file
lang/my-calendar-es_ES.mo CHANGED
Binary file
lang/my-calendar-fa_IR.mo ADDED
Binary file
lang/my-calendar-gl_ES.mo CHANGED
Binary file
lang/my-calendar-hu_HU.mo CHANGED
Binary file
lang/my-calendar-nb_NO.mo CHANGED
Binary file
lang/my-calendar-nl_NL.mo CHANGED
Binary file
lang/my-calendar-pl_PL.mo CHANGED
Binary file
lang/my-calendar-pt_PT.mo CHANGED
Binary file
lang/my-calendar-sk_SK.mo CHANGED
Binary file
lang/my-calendar-sv_SE.mo CHANGED
Binary file
lang/my-calendar-tr_TR.mo CHANGED
Binary file
my-calendar-api.php CHANGED
@@ -150,70 +150,76 @@ function my_calendar_rss( $events = array() ) {
150
$events = mc_get_rss_events( $cat_id );
151
}
152
$output = mc_format_rss( $events );
153
- header( 'Content-type: application/rss+xml' );
154
- header( "Pragma: no-cache" );
155
- header( "Expires: 0" );
156
- echo $output;
157
}
158
159
function mc_format_rss( $events ) {
160
- $template = "\n<item>
161
- <title>{rss_title}</title>
162
- <link>{details_link}</link>
163
- <pubDate>{rssdate}</pubDate>
164
- <dc:creator>{author}</dc:creator>
165
- <description><![CDATA[{rss_description}]]></description>
166
- <date>{dtstart}</date>
167
- <dateSubmitted>{rssdate}</dateSubmitted>
168
- <content:encoded><![CDATA[<div class='vevent'>
169
- <h1 class='summary'>{rss_title}</h1>
170
- <div class='description'>{rss_description}</div>
171
- <p class='dtstart' title='{ical_start}'>Begins: {time} on {date}</p>
172
- <p class='dtend' title='{ical_end}'>Ends: {endtime} on {enddate}</p>
173
- <p>Recurrance: {recurs}</p>
174
- <p>Repetition: {repeats} times</p>
175
- <div class='location'>{rss_hcard}</div>
176
- {rss_link_title}
177
- </div>]]></content:encoded>
178
- <dc:format xmlns:dc='http://purl.org/dc/elements/1.1/'>text/html</dc:format>
179
- <dc:source xmlns:dc='http://purl.org/dc/elements/1.1/'>" . home_url() . "</dc:source>
180
- {guid}
181
- </item>\n";
182
-
183
- if ( get_option( 'mc_use_rss_template' ) == 1 ) {
184
- $templates = get_option( 'mc_templates' );
185
- $template = $templates['rss'];
186
- }
187
188
- $charset = get_bloginfo( 'charset' );
189
- $output = '<?xml version="1.0" encoding="' . $charset . '"?>
190
- <rss version="2.0"
191
- xmlns:content="http://purl.org/rss/1.0/modules/content/"
192
- xmlns:dc="http://purl.org/dc/elements/1.1/"
193
- xmlns:atom="http://www.w3.org/2005/Atom"
194
- xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
195
- xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
196
- >
197
- <channel>
198
- <title>' . get_bloginfo( 'name' ) . ' Calendar</title>
199
- <link>' . home_url() . '</link>
200
- <description>' . get_bloginfo( 'description' ) . ': My Calendar Events</description>
201
- <language>' . get_bloginfo( 'language' ) . '</language>
202
- <managingEditor>' . get_bloginfo( 'admin_email' ) . ' (' . get_bloginfo( 'name' ) . ' Admin)</managingEditor>
203
- <generator>My Calendar WordPress Plugin http://www.joedolson.com/my-calendar/</generator>
204
- <lastBuildDate>' . mysql2date( 'D, d M Y H:i:s +0000', current_time( 'timestamp' ) ) . '</lastBuildDate>
205
- <atom:link href="' . htmlentities( esc_url( add_query_arg( $_GET, mc_get_current_url() ) ) ) . '" rel="self" type="application/rss+xml" />';
206
- foreach ( $events as $date ) {
207
- foreach ( array_keys( $date ) as $key ) {
208
- $event =& $date[ $key ];
209
- $array = mc_create_tags( $event );
210
- $output .= jd_draw_template( $array, $template, 'rss' );
211
}
212
- }
213
- $output .= '</channel>
214
- </rss>';
215
216
- return mc_strip_to_xml( $output );
217
}
218
219
// just a double check to try to ensure that the XML feed can be rendered.
@@ -240,4 +246,81 @@ function mc_strip_to_xml( $value ) {
240
$ret = iconv( "UTF-8", "UTF-8//IGNORE", $ret );
241
242
return $ret;
243
}
150
$events = mc_get_rss_events( $cat_id );
151
}
152
$output = mc_format_rss( $events );
153
+ if ( $output ) {
154
+ header( 'Content-type: application/rss+xml' );
155
+ header( "Pragma: no-cache" );
156
+ header( "Expires: 0" );
157
+ echo $output;
158
+ }
159
}
160
161
function mc_format_rss( $events ) {
162
+ if ( is_array( $events ) && !empty( $events ) ) {
163
+ $template = "\n<item>
164
+ <title>{rss_title}</title>
165
+ <link>{details_link}</link>
166
+ <pubDate>{rssdate}</pubDate>
167
+ <dc:creator>{author}</dc:creator>
168
+ <description><![CDATA[{rss_description}]]></description>
169
+ <date>{dtstart}</date>
170
+ <dateSubmitted>{rssdate}</dateSubmitted>
171
+ <content:encoded><![CDATA[<div class='vevent'>
172
+ <h1 class='summary'>{rss_title}</h1>
173
+ <div class='description'>{rss_description}</div>
174
+ <p class='dtstart' title='{ical_start}'>Begins: {time} on {date}</p>
175
+ <p class='dtend' title='{ical_end}'>Ends: {endtime} on {enddate}</p>
176
+ <p>Recurrance: {recurs}</p>
177
+ <p>Repetition: {repeats} times</p>
178
+ <div class='location'>{rss_hcard}</div>
179
+ {rss_link_title}
180
+ </div>]]></content:encoded>
181
+ <dc:format xmlns:dc='http://purl.org/dc/elements/1.1/'>text/html</dc:format>
182
+ <dc:source xmlns:dc='http://purl.org/dc/elements/1.1/'>" . home_url() . "</dc:source>
183
+ {guid}
184
+ </item>\n";
185
186
+ if ( get_option( 'mc_use_rss_template' ) == 1 ) {
187
+ $templates = get_option( 'mc_templates' );
188
+ $template = $templates['rss'];
189
}
190
191
+ $charset = get_bloginfo( 'charset' );
192
+ $output = '<?xml version="1.0" encoding="' . $charset . '"?>
193
+ <rss version="2.0"
194
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
195
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
196
+ xmlns:atom="http://www.w3.org/2005/Atom"
197
+ xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
198
+ xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
199
+ >
200
+ <channel>
201
+ <title>' . get_bloginfo( 'name' ) . ' Calendar</title>
202
+ <link>' . home_url() . '</link>
203
+ <description>' . get_bloginfo( 'description' ) . ': My Calendar Events</description>
204
+ <language>' . get_bloginfo( 'language' ) . '</language>
205
+ <managingEditor>' . get_bloginfo( 'admin_email' ) . ' (' . get_bloginfo( 'name' ) . ' Admin)</managingEditor>
206
+ <generator>My Calendar WordPress Plugin http://www.joedolson.com/my-calendar/</generator>
207
+ <lastBuildDate>' . mysql2date( 'D, d M Y H:i:s +0000', current_time( 'timestamp' ) ) . '</lastBuildDate>
208
+ <atom:link href="' . htmlentities( esc_url( add_query_arg( $_GET, mc_get_current_url() ) ) ) . '" rel="self" type="application/rss+xml" />';
209
+ foreach ( $events as $date ) {
210
+ foreach ( array_keys( $date ) as $key ) {
211
+ $event =& $date[ $key ];
212
+ $array = mc_create_tags( $event );
213
+ $output .= jd_draw_template( $array, $template, 'rss' );
214
+ }
215
+ }
216
+ $output .= '</channel>
217
+ </rss>';
218
+
219
+ return mc_strip_to_xml( $output );
220
+ } else {
221
+ return false;
222
+ }
223
}
224
225
// just a double check to try to ensure that the XML feed can be rendered.
246
$ret = iconv( "UTF-8", "UTF-8//IGNORE", $ret );
247
248
return $ret;
249
+ }
250
+
251
+
252
+ function my_calendar_ical() {
253
+ $p = ( isset( $_GET['span'] ) ) ? 'year' : false;
254
+ $y = ( isset( $_GET['yr'] ) ) ? $_GET['yr'] : date( 'Y' );
255
+ $m = ( isset( $_GET['month'] ) ) ? $_GET['month'] : date( 'n' );
256
+ $ny = ( isset( $_GET['nyr'] ) ) ? $_GET['nyr'] : $y;
257
+ $nm = ( isset( $_GET['nmonth'] ) ) ? $_GET['nmonth'] : $m;
258
+
259
+ if ( $p ) {
260
+ $from = "$y-1-1";
261
+ $to = "$y-12-31";
262
+ } else {
263
+ $d = date( 't', mktime( 0, 0, 0, $m, 1, $y ) );
264
+ $from = "$y-$m-1";
265
+ $to = "$ny-$nm-$d";
266
+ }
267
+
268
+ $from = apply_filters( 'mc_ical_download_from', $from, $p );
269
+ $to = apply_filters( 'mc_ical_download_to', $to, $p );
270
+ $atts = array(
271
+ 'category' => null,
272
+ 'ltype' => '',
273
+ 'lvalue' => '',
274
+ 'source' => 'calendar',
275
+ 'author' => null,
276
+ 'host' => null
277
+ );
278
+ $atts = apply_filters( 'mc_ical_attributes', $atts );
279
+ extract( $atts );
280
+
281
+ global $mc_version;
282
+ // establish template
283
+ $template = "BEGIN:VEVENT
284
+ UID:{dateid}-{id}
285
+ LOCATION:{ical_location}
286
+ SUMMARY:{title}
287
+ DTSTAMP:{ical_start}
288
+ ORGANIZER;CN={host}:MAILTO:{host_email}
289
+ DTSTART:{ical_start}
290
+ DTEND:{ical_end}
291
+ URL;VALUE=URI:{link}
292
+ DESCRIPTION:{ical_desc}
293
+ CATEGORIES:{category}
294
+ END:VEVENT";
295
+ // add ICAL headers
296
+ $output = 'BEGIN:VCALENDAR
297
+ VERSION:2.0
298
+ METHOD:PUBLISH
299
+ PRODID:-//Accessible Web Design//My Calendar//http://www.joedolson.com//v' . $mc_version . '//EN';
300
+ // to do : add support for other arguments
301
+ $events = my_calendar_grab_events( $from, $to, $category, $ltype, $lvalue, $source, $author, $host );
302
+ // my calendar grab events returns a flat array, but doesn't eliminate holiday cancellations; my-calendar_events eliminates those, but isn't a flat array.
303
+ // rewrite array navigation so that this works.
304
+ // $events = my_calendar_events( $from, $to, $category, $ltype, $lvalue, $source, $author, $host );
305
+
306
+ if ( is_array( $events ) && ! empty( $events ) ) {
307
+ foreach ( array_keys( $events ) as $key ) {
308
+ $event =& $events[ $key ];
309
+ if ( is_object( $event ) ) {
310
+ if ( ! ( $event->category_private == 1 && ! is_user_logged_in() ) ) {
311
+ $array = mc_create_tags( $event );
312
+ $output .= "\n" . jd_draw_template( $array, $template, 'ical' );
313
+ }
314
+ }
315
+ }
316
+ }
317
+ $output .= "\nEND:VCALENDAR";
318
+ $output = html_entity_decode( preg_replace( "~(?<!\r)\n~", "\r\n", $output ) );
319
+ if ( ! ( isset( $_GET['sync'] ) && $_GET['sync'] == 'true' ) ) {
320
+ header( "Content-Type: text/calendar; charset=" . get_bloginfo( 'charset' ) );
321
+ header( "Pragma: no-cache" );
322
+ header( "Expires: 0" );
323
+ header( "Content-Disposition: inline; filename=my-calendar.ics" );
324
+ }
325
+ echo $output;
326
}
my-calendar-behaviors.php CHANGED
@@ -69,7 +69,7 @@ function edit_my_calendar_behaviors() {
69
<label
70
for="mc_show_js"><?php _e( 'Insert scripts on these pages (comma separated post IDs)', 'my-calendar' ); ?></label>
71
<input type="text" id="mc_show_js" name="mc_show_js"
72
- value="<?php echo $mc_show_js; ?>"/>
73
</p>
74
75
<div class='controls'>
@@ -100,25 +100,24 @@ function edit_my_calendar_behaviors() {
100
<label
101
for="calendar-js"><?php _e( 'Calendar Behaviors: Grid View', 'my-calendar' ); ?></label><br/><textarea
102
id="calendar-js" name="mc_caljs" rows="12"
103
- cols="80"><?php echo $mc_caljs; ?></textarea>
104
</p>
105
<p>
106
<label
107
for="list-js"><?php _e( 'Calendar Behaviors: List View', 'my-calendar' ); ?></label><br/><textarea
108
id="list-js" name="mc_listjs" rows="12"
109
- cols="80"><?php echo $mc_listjs; ?></textarea>
110
</p>
111
<p>
112
- <label
113
- for="mini-js"><?php _e( 'Calendar Behaviors: Mini Calendar View', 'my-calendar' ); ?></label><br/><textarea
114
id="mini-js" name="mc_minijs" rows="12"
115
- cols="80"><?php echo $mc_minijs; ?></textarea>
116
</p>
117
<p>
118
<label
119
for="ajax-js"><?php _e( 'Calendar Behaviors: AJAX', 'my-calendar' ); ?></label><br/><textarea
120
id="ajax-js" name="mc_ajaxjs" rows="12"
121
- cols="80"><?php echo $mc_ajaxjs; ?></textarea>
122
</p>
123
<?php } ?>
124
<p>
69
<label
70
for="mc_show_js"><?php _e( 'Insert scripts on these pages (comma separated post IDs)', 'my-calendar' ); ?></label>
71
<input type="text" id="mc_show_js" name="mc_show_js"
72
+ value="<?php echo esc_attr( $mc_show_js ); ?>"/>
73
</p>
74
75
<div class='controls'>
100
<label
101
for="calendar-js"><?php _e( 'Calendar Behaviors: Grid View', 'my-calendar' ); ?></label><br/><textarea
102
id="calendar-js" name="mc_caljs" rows="12"
103
+ cols="80"><?php echo esc_js( $mc_caljs ); ?></textarea>
104
</p>
105
<p>
106
<label
107
for="list-js"><?php _e( 'Calendar Behaviors: List View', 'my-calendar' ); ?></label><br/><textarea
108
id="list-js" name="mc_listjs" rows="12"
109
+ cols="80"><?php echo esc_js( $mc_listjs ); ?></textarea>
110
</p>
111
<p>
112
+ <label for="mini-js"><?php _e( 'Calendar Behaviors: Mini Calendar View', 'my-calendar' ); ?></label><br/><textarea
113
id="mini-js" name="mc_minijs" rows="12"
114
+ cols="80"><?php echo esc_js( $mc_minijs ); ?></textarea>
115
</p>
116
<p>
117
<label
118
for="ajax-js"><?php _e( 'Calendar Behaviors: AJAX', 'my-calendar' ); ?></label><br/><textarea
119
id="ajax-js" name="mc_ajaxjs" rows="12"
120
+ cols="80"><?php echo esc_js( $mc_ajaxjs ); ?></textarea>
121
</p>
122
<?php } ?>
123
<p>
my-calendar-categories.php CHANGED
@@ -257,30 +257,34 @@ function mc_edit_category_form( $view = 'edit', $catID = '' ) {
257
} else {
258
$color = '';
259
} ?>
260
- <label for="cat_name"><?php _e( 'Category Name', 'my-calendar' ); ?>:</label> <input
261
type="text" id="cat_name" name="category_name" class="input" size="30"
262
value="<?php if ( ! empty( $cur_cat ) && is_object( $cur_cat ) ) {
263
echo stripslashes( esc_attr( $cur_cat->category_name ) );
264
} ?>"/>
265
- <label for="cat_color"><?php _e( 'Color', 'my-calendar' ); ?>:</label> <input
266
- type="text"
267
id="cat_color"
268
name="category_color"
269
class="mc-color-input"
270
size="10"
271
maxlength="7"
272
- value="<?php echo $color; ?>"/><br/>
273
- <label for="cat_icon"><?php _e( 'Category Icon', 'my-calendar' ); ?>:</label> <select
274
name="category_icon" id="cat_icon">
275
<?php
276
foreach ( $iconlist as $value ) {
277
$selected = ( ( ! empty( $cur_cat ) && is_object( $cur_cat ) ) && $cur_cat->category_icon == $value ) ? " selected='selected'" : '';
278
- echo "<option value='$value'$selected style='background: url(" . str_replace( 'my-calendar/', '', $url ) . "$path/$value) left 50% no-repeat;'>$value</option>";
279
}
280
?>
281
</select>
282
-
283
- <p>
284
<?php if ( $view == 'add' ) {
285
$private_checked = '';
286
} else {
@@ -300,7 +304,10 @@ function mc_edit_category_form( $view = 'edit', $catID = '' ) {
300
for="mc_default_category"><?php _e( 'Default category', 'my-calendar' ); ?></label>
301
<input type="checkbox" value="on" name="mc_skip_holidays_category"
302
id="mc_shc"<?php echo $holiday_checked; ?> /> <label
303
- for="mc_shc"><?php _e( 'Holiday Category', 'my-calendar' ); ?></label></p>
304
</fieldset>
305
<p>
306
<input type="submit" name="save" class="button-primary"
257
} else {
258
$color = '';
259
} ?>
260
+ <ul>
261
+ <li>
262
+ <label for="cat_name"><?php _e( 'Category Name', 'my-calendar' ); ?></label> <input
263
type="text" id="cat_name" name="category_name" class="input" size="30"
264
value="<?php if ( ! empty( $cur_cat ) && is_object( $cur_cat ) ) {
265
echo stripslashes( esc_attr( $cur_cat->category_name ) );
266
} ?>"/>
267
+ <label for="cat_color"><?php _e( 'Color', 'my-calendar' ); ?></label> <input
268
+ type="text
269
id="cat_color"
270
name="category_color"
271
class="mc-color-input"
272
size="10"
273
maxlength="7"
274
+ value="<?php esc_attr_e( $color ); ?>"/>
275
+ </li>
276
+ <li>
277
+ <label for="cat_icon"><?php _e( 'Category Icon', 'my-calendar' ); ?></label> <select
278
name="category_icon" id="cat_icon">
279
<?php
280
foreach ( $iconlist as $value ) {
281
$selected = ( ( ! empty( $cur_cat ) && is_object( $cur_cat ) ) && $cur_cat->category_icon == $value ) ? " selected='selected'" : '';
282
+ echo "<option value='" . esc_attr( $value ) . "'$selected style='background: url(" . str_replace( 'my-calendar/', '', esc_url( $url . "$path/$value" ) ) . ") left 50% no-repeat;'>$value</option>";
283
}
284
?>
285
</select>
286
+ </li>
287
+ <li>
288
<?php if ( $view == 'add' ) {
289
$private_checked = '';
290
} else {
304
for="mc_default_category"><?php _e( 'Default category', 'my-calendar' ); ?></label>
305
<input type="checkbox" value="on" name="mc_skip_holidays_category"
306
id="mc_shc"<?php echo $holiday_checked; ?> /> <label
307
+ for="mc_shc"><?php _e( 'Holiday Category', 'my-calendar' ); ?></label>
308
+ </li>
309
+ <?php echo apply_filters( 'mc_category_fields', '', $cur_cat ); ?>
310
+ </ul>
311
</fieldset>
312
<p>
313
<input type="submit" name="save" class="button-primary"
my-calendar-core.php CHANGED
@@ -146,7 +146,8 @@ add_action( 'wp_enqueue_scripts', 'mc_register_styles' );
146
function mc_register_styles() {
147
global $wp_query;
148
$stylesheet = mc_get_style_path( get_option( 'mc_css_file' ), 'url' );
149
- wp_register_style( 'my-calendar-style', $stylesheet, array( 'dashicons' ) );
150
$admin_stylesheet = plugins_url( 'css/mc-admin.css', __FILE__ );
151
wp_register_style( 'my-calendar-admin-style', $admin_stylesheet );
152
if ( current_user_can( 'mc_manage_events' ) ) {
@@ -161,10 +162,8 @@ function mc_register_styles() {
161
if ( @in_array( $id, $js_array ) || get_option( 'mc_show_js' ) == '' ) {
162
wp_enqueue_script( 'jquery' );
163
if ( get_option( 'mc_gmap' ) == 'true' ) {
164
- wp_register_script( 'gmaps', "//maps.google.com/maps/api/js?sensor=true" );
165
- wp_register_script( 'gmap3', plugins_url( 'js/gmap3.min.js', __FILE__ ), array( 'jquery' ) );
166
- wp_enqueue_script( 'gmaps' );
167
- wp_enqueue_script( 'gmap3' );
168
}
169
}
170
}
@@ -183,14 +182,6 @@ function mc_register_styles() {
183
wp_register_style( 'my-calendar-mobile-style', $mobile );
184
wp_enqueue_style( 'my-calendar-mobile-style' );
185
}
186
- if ( function_exists( 'mcs_submissions' ) ) {
187
- $mcs = plugins_url( '/my-calendar-submissions/mcs-styles.css' );
188
- $mcs_ui = plugins_url( '/my-calendar-submissions/css/smoothness/jquery-ui-1.8.23.custom.css' );
189
- wp_register_style( 'my-calendar-submissions-ui-style', $mcs_ui );
190
- wp_enqueue_style( 'my-calendar-submissions-ui-style' );
191
- wp_register_style( 'my-calendar-submissions-style', $mcs );
192
- wp_enqueue_style( 'my-calendar-submissions-style' );
193
- }
194
}
195
196
// Function to add the calendar style into the header
@@ -234,7 +225,6 @@ function my_calendar_wp_head() {
234
$all_styles = "
235
<style type=\"text/css\">
236
<!--
237
- .mcjs .mc-main .details, .mcjs .mc-main .calendar-events { display: none; }
238
/* Styles by My Calendar - Joseph C Dolson http://www.joedolson.com/ */
239
$category_styles
240
.mc-event-visible {
@@ -253,8 +243,8 @@ function mc_deal_with_deleted_user( $id ) {
253
$mcdb = $wpdb;
254
// Do the queries
255
// This may not work quite right in multi-site. Need to explore further when I have time.
256
- $mcdb->get_results( "UPDATE " . my_calendar_table() . " SET event_author=" . apply_filters( 'mc_deleted_author', $mcdb->get_var( "SELECT MIN(ID) FROM " . $mcdb->prefix . "users", 0, 0 ) ) . " WHERE event_author=" . $id );
257
- $mcdb->get_results( "UPDATE " . my_calendar_table() . " SET event_host=" . apply_filters( 'mc_deleted_host', $mcdb->get_var( "SELECT MIN(ID) FROM " . $mcdb->prefix . "users", 0, 0 ) ) . " WHERE event_host=" . $id );
258
}
259
260
// Function to add the javascript to the admin header
@@ -294,6 +284,7 @@ function my_calendar_add_javascript() {
294
date_i18n( 'D', strtotime( 'Friday' ) ),
295
date_i18n( 'D', strtotime( 'Saturday' ) )
296
) );
297
298
wp_enqueue_script( 'jquery.addfields', plugins_url( 'js/jquery.addfields.js', __FILE__ ), array( 'jquery' ) );
299
if ( function_exists( 'wp_enqueue_media' ) && ! did_action( 'wp_enqueue_media' ) ) {
@@ -305,8 +296,8 @@ function my_calendar_add_javascript() {
305
if ( isset( $_GET['page'] ) && ( $_GET['page'] == 'my-calendar-config' || $_GET['page'] == 'my-calendar-help' ) ) {
306
wp_enqueue_script( 'mc.tabs' );
307
wp_enqueue_script( 'mc.sortable' );
308
- $firstItem = ( $_GET['page'] == 'my-calendar-config' ) ? 'mc_editor' : 'mc_main';
309
- wp_localize_script( 'mc.tabs', 'firstItem', $firstItem );
310
}
311
if ( isset( $_GET['page'] ) && ( $_GET['page'] == 'my-calendar-groups' || $_GET['page'] == 'my-calendar-manage' ) ) {
312
wp_enqueue_script( 'jquery.checkall', plugins_url( 'js/jquery.checkall.js', __FILE__ ), array( 'jquery' ) );
@@ -319,7 +310,7 @@ function my_calendar_write_js() {
319
<script type="text/javascript">
320
//<![CDATA[
321
jQuery(document).ready(function ($) {
322
- $('#e_begin,' + '#e_end').pickadate({
323
monthsFull: mc_months,
324
weekdaysShort: mc_days,
325
format: 'yyyy-mm-dd',
@@ -327,7 +318,11 @@ function my_calendar_write_js() {
327
selectMonths: true,
328
editable: true
329
});
330
-
331
$('#mc-accordion').accordion({collapsible: true, active: false});
332
<?php
333
if ( function_exists( 'jd_doTwitterAPIPost' ) ) { ?>
@@ -448,12 +443,12 @@ function my_calendar_add_styles() {
448
'my-calendar-templates'
449
);
450
if ( in_array( $_GET['page'], $pages ) ) {
451
- echo '<link type="text/css" rel="stylesheet" href="' . plugins_url( 'css/mc-styles.css', __FILE__ ) . '" />';
452
}
453
if ( $_GET['page'] == 'my-calendar' ) {
454
- echo '<link type="text/css" rel="stylesheet" href="' . plugins_url( 'js/pickadate/themes/default.css', __FILE__ ) . '" />';
455
- echo '<link type="text/css" rel="stylesheet" href="' . plugins_url( 'js/pickadate/themes/default.date.css', __FILE__ ) . '" />';
456
- echo '<link type="text/css" rel="stylesheet" href="' . plugins_url( 'js/pickadate/themes/default.time.css', __FILE__ ) . '" />';
457
}
458
}
459
}
@@ -684,10 +679,16 @@ function mc_do_upgrades( $upgrade_path ) {
684
foreach ( $upgrade_path as $upgrade ) {
685
switch ( $upgrade ) {
686
// only upgrade db on most recent version
687
case '2.3.15':
688
delete_option( 'mc_event_groups' );
689
delete_option( 'mc_details' );
690
- mc_upgrade_db();
691
break;
692
case '2.3.11':
693
add_option( 'mc_use_custom_js', 0 );
@@ -935,6 +936,19 @@ function mc_month_comparison( $month ) {
935
return '';
936
}
937
938
function mc_year_comparison( $year ) {
939
$current_year = date( "Y", current_time( 'timestamp' ) );
940
if ( isset( $_GET['yr'] ) && isset( $_GET['month'] ) ) {
@@ -1038,6 +1052,15 @@ function my_calendar_admin_bar() {
1038
$args = array( 'id' => 'mc-add-event', 'title' => __( 'Add Event', 'my-calendar' ), 'href' => $url );
1039
$wp_admin_bar->add_node( $args );
1040
}
1041
if ( current_user_can( 'mc_manage_events' ) && current_user_can( 'mc_add_events' ) ) {
1042
$url = admin_url( 'admin.php?page=my-calendar-manage' );
1043
$args = array(
@@ -1158,7 +1181,7 @@ function my_calendar_send_email( $event ) {
1158
$from = ( get_option( 'mc_event_mail_from' ) == '' ) ? get_bloginfo( 'admin_email' ) : get_option( 'mc_event_mail_from' );
1159
$from = apply_filters( 'mc_event_mail_from', $from, $details );
1160
$headers[] = "From: " . __( 'Event Notifications', 'my-calendar' ) . " <$from>";
1161
- $bcc = get_option( 'mc_event_mail_bcc' );
1162
if ( $bcc ) {
1163
$bcc = explode( PHP_EOL, $bcc );
1164
foreach ( $bcc as $b ) {
@@ -1168,7 +1191,7 @@ function my_calendar_send_email( $event ) {
1168
}
1169
}
1170
}
1171
- $headers = apply_filters( 'mc_customize_email_headers', $headers );
1172
$subject = jd_draw_template( $details, get_option( 'mc_event_mail_subject' ) );
1173
$message = jd_draw_template( $details, get_option( 'mc_event_mail_message' ) );
1174
wp_mail( $to, $subject, $message, $headers );
@@ -1396,7 +1419,7 @@ function mc_guess_calendar() {
1396
);
1397
$current_uri = get_option( 'mc_uri' );
1398
// check whether calendar page is a valid URL.
1399
- if ( $current_uri ) {
1400
$response = wp_remote_head( $current_uri );
1401
if ( !is_wp_error( $response ) ) {
1402
$http = $response['response']['code'];
@@ -1557,7 +1580,7 @@ $plugins_string
1557
<input type='checkbox' name='has_purchased' id='has_purchased' value='on' /> <label for='has_purchased'>" . __( 'I have <a href="http://www.joedolson.com/my-calendar/users-guide/">purchased the User\'s Guide</a>, but could not find an answer to this question.', 'my-calendar' ) . "</label>
1558
</p>
1559
<p>
1560
- <label for='support_request'>Support Request:</label><br /><textarea name='support_request' id='support_request' required aria-required='true' cols='80' rows='10'>" . stripslashes( $request ) . "</textarea>
1561
</p>
1562
<p>
1563
<input type='submit' value='" . __( 'Send Support Request', 'my-calendar' ) . "' name='mc_support' class='button-primary' />
@@ -1633,7 +1656,7 @@ function _mc_increment_values( $recur ) {
1633
function mc_change_instances( $id, $repeats, $begin = false ) {
1634
global $wpdb;
1635
$mcdb = $wpdb;
1636
- $events = $mcdb->get_results( "SELECT * FROM " . my_calendar_event_table() . " WHERE occur_event_id = $id ORDER BY occur_begin DESC" );
1637
$count = count( $events );
1638
$last = $count - 1;
1639
if ( $begin == false ) {
@@ -1875,8 +1898,6 @@ function mc_increment_event( $id, $post = array(), $test = false ) {
1875
'occur_end' => date( 'Y-m-d H:i:s', $end ),
1876
'occur_group_id' => $group_id
1877
);
1878
- // Logic shift -- should not have any need to verify occurrences.
1879
- //$occurs = $wpdb->get_results("SELECT * FROM ".my_calendar_event_table()." WHERE occur_event_id = $id ORDER BY occur_begin DESC");
1880
if ( ! $test ) {
1881
$wpdb->insert( my_calendar_event_table(), $data, $format );
1882
}
@@ -1886,6 +1907,9 @@ function mc_increment_event( $id, $post = array(), $test = false ) {
1886
}
1887
1888
function mc_get_details_link( $event ) {
1889
// if available, and not querying remotely, use permalink.
1890
$permalinks = apply_filters( 'mc_use_permalinks', get_option( 'mc_use_permalinks' ) );
1891
$permalinks = ( $permalinks === 1 || $permalinks === true || $permalinks === 'true' ) ? true : false;
@@ -1906,7 +1930,8 @@ function mc_get_details_link( $event ) {
1906
'page_id',
1907
'p',
1908
'mcs',
1909
- 'time'
1910
), get_option( 'mc_uri' ) );
1911
}
1912
}
@@ -1922,6 +1947,7 @@ function mc_register_actions() {
1922
add_action( 'mc_transition_event', 'mc_tweet_approval', 10, 2 );
1923
add_action( 'mc_save_event', 'mc_event_post', 10, 3 );
1924
add_action( 'mc_delete_event', 'mc_event_delete_post', 10, 2 );
1925
add_action( 'parse_request', 'my_calendar_api' );
1926
}
1927
@@ -1932,6 +1958,33 @@ add_filter( 'post_updated_messages', 'mc_posttypes_messages' );
1932
add_action( 'init', 'mc_taxonomies', 0 );
1933
add_action( 'init', 'mc_posttypes' );
1934
1935
function mc_posttypes() {
1936
$arguments = array(
1937
'public' => apply_filters( 'mc_event_posts_public', true ),
@@ -1953,6 +2006,7 @@ function mc_posttypes() {
1953
),
1954
);
1955
$enabled = array( 'mc-events' );
1956
if ( is_array( $enabled ) ) {
1957
foreach ( $enabled as $key ) {
1958
$value =& $types[ $key ];
@@ -1981,7 +2035,7 @@ function mc_posttypes() {
1981
'query_var' => true,
1982
'rewrite' => array(
1983
'with_front' => false,
1984
- 'slug' => apply_filters( 'mc_event_slug', 'mc-events' )
1985
),
1986
'hierarchical' => false,
1987
'menu_position' => 20,
@@ -1992,6 +2046,25 @@ function mc_posttypes() {
1992
}
1993
}
1994
1995
function mc_taxonomies() {
1996
global $mc_types;
1997
$types = $mc_types;
146
function mc_register_styles() {
147
global $wp_query;
148
$stylesheet = mc_get_style_path( get_option( 'mc_css_file' ), 'url' );
149
+ wp_register_style( 'my-calendar-reset', plugins_url( 'css/reset.css', __FILE__ ) );
150
+ wp_register_style( 'my-calendar-style', $stylesheet, array( 'dashicons', 'my-calendar-reset' ) );
151
$admin_stylesheet = plugins_url( 'css/mc-admin.css', __FILE__ );
152
wp_register_style( 'my-calendar-admin-style', $admin_stylesheet );
153
if ( current_user_can( 'mc_manage_events' ) ) {
162
if ( @in_array( $id, $js_array ) || get_option( 'mc_show_js' ) == '' ) {
163
wp_enqueue_script( 'jquery' );
164
if ( get_option( 'mc_gmap' ) == 'true' ) {
165
+ wp_enqueue_script( 'gmaps', "https://maps.google.com/maps/api/js?sensor=true" );
166
+ wp_enqueue_script( 'gmap3', plugins_url( 'js/gmap3.min.js', __FILE__ ), array( 'jquery' ) );