{"action":"created","issue":{"url":"https://api.github.com/repos/SimpleMachines/SMF2.1/issues/3530","repository_url":"https://api.github.com/repos/SimpleMachines/SMF2.1","labels_url":"https://api.github.com/repos/SimpleMachines/SMF2.1/issues/3530/labels{/name}","comments_url":"https://api.github.com/repos/SimpleMachines/SMF2.1/issues/3530/comments","events_url":"https://api.github.com/repos/SimpleMachines/SMF2.1/issues/3530/events","html_url":"https://github.com/SimpleMachines/SMF2.1/pull/3530","id":168493473,"number":3530,"title":"The calendar now supports event times","user":{"login":"Sesquipedalian","id":191731,"avatar_url":"https://avatars.githubusercontent.com/u/191731?v=3","gravatar_id":"","url":"https://api.github.com/users/Sesquipedalian","html_url":"https://github.com/Sesquipedalian","followers_url":"https://api.github.com/users/Sesquipedalian/followers","following_url":"https://api.github.com/users/Sesquipedalian/following{/other_user}","gists_url":"https://api.github.com/users/Sesquipedalian/gists{/gist_id}","starred_url":"https://api.github.com/users/Sesquipedalian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sesquipedalian/subscriptions","organizations_url":"https://api.github.com/users/Sesquipedalian/orgs","repos_url":"https://api.github.com/users/Sesquipedalian/repos","events_url":"https://api.github.com/users/Sesquipedalian/events{/privacy}","received_events_url":"https://api.github.com/users/Sesquipedalian/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/SimpleMachines/SMF2.1/milestones/7","html_url":"https://github.com/SimpleMachines/SMF2.1/milestones/Beta%204","labels_url":"https://api.github.com/repos/SimpleMachines/SMF2.1/milestones/7/labels","id":1881072,"number":7,"title":"Beta 4","description":null,"creator":{"login":"MissAllSunday","id":3420756,"avatar_url":"https://avatars.githubusercontent.com/u/3420756?v=3","gravatar_id":"","url":"https://api.github.com/users/MissAllSunday","html_url":"https://github.com/MissAllSunday","followers_url":"https://api.github.com/users/MissAllSunday/followers","following_url":"https://api.github.com/users/MissAllSunday/following{/other_user}","gists_url":"https://api.github.com/users/MissAllSunday/gists{/gist_id}","starred_url":"https://api.github.com/users/MissAllSunday/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MissAllSunday/subscriptions","organizations_url":"https://api.github.com/users/MissAllSunday/orgs","repos_url":"https://api.github.com/users/MissAllSunday/repos","events_url":"https://api.github.com/users/MissAllSunday/events{/privacy}","received_events_url":"https://api.github.com/users/MissAllSunday/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":1,"state":"open","created_at":"2016-07-13T15:03:36Z","updated_at":"2016-08-22T15:22:54Z","due_on":null,"closed_at":null},"comments":32,"created_at":"2016-07-31T00:07:02Z","updated_at":"2016-08-22T18:59:04Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/SimpleMachines/SMF2.1/pulls/3530","html_url":"https://github.com/SimpleMachines/SMF2.1/pull/3530","diff_url":"https://github.com/SimpleMachines/SMF2.1/pull/3530.diff","patch_url":"https://github.com/SimpleMachines/SMF2.1/pull/3530.patch"},"body":"Lots of inter-related changes in this, including:\r\n- Database changes (adds three new columns to calendar table)\r\n- Subs-Db-* can now accept and handle data for SQL TIME columns\r\n- A bunch of new and reorganized code (especially in Subs-Calendar.php)\r\n- Rewritten UI for creating/editing events in Calendar.template.php and Post.template.php, plus corresponding CSS changes\r\n- New JavaScripts to keep event editing UI both pleasant and sane\r\n- Changes to calendar display templates (HTML & CSS) to incorporate event time info without looking like a mess\r\n- iCal export can now handle both all day events and events with time and timezone data\r\n\r\nBackwards compatibility with the previous system has been maintained in two ways:\r\n- Existing events in the database are handled as expected. No updates to existing data are required.\r\n- The code accepts multiple input formats from $_POST, including full support for the format used in SMF 2.0 (i.e. year, month, day, and optional span parameters). So any old mods (or imperfectly updated themes) that rely on this behaviour will continue to work.\r\n\r\nThemes and mods can now enjoy a great deal of flexibility in how they choose to supply date and time info for events.\r\n- Year, month, day, hour, minute, and second can be given as individual parameters, as a date string and a time string, or as single datetime strings. The default theme for SMF 2.1 uses date strings and time strings.\r\n- Input can either specify a start date (and optional time) and end date (and optional time), or a start date (and optional time) plus a 'span' parameter to indicate the duration of the event in days. If both end date/time parameters and and a span parameter are provided, the span parameter is ignored.\r\n- If time info is provided, a timezone parameter should also be supplied. If no timezone is given, the default timezone will be used.\r\n- The 'allday' parameter can (and should) be used to specify whether an event does/should have start and end times. If 'allday' is given a value equivalent to true, any time and timezone parameters will be discarded. If false, time info will be used as supplied (or calculated if required and possible). If 'allday' is not set, the code will attempt to infer the best course of action based on whatever parameters have been provided.\r\n- The default implementation always uses ISO format (YYYY-MM-DD) for entering/displaying dates in the UI input fields, regardless of the user's preferred format. This is mostly for the sake of some of the JavaScript, whose date formatting abilities are much weaker than PHP's. Apart from keeping the JS happy, there's no reason the date fields couldn't use any format that PHP understands.\r\n\r\nSpeaking of JavaScript, three new ones have been included: pikaday.js, jquery.timepicker.js, and datepair.js. The first two are a date picker and time picker (obviously). The third coordinates the start and end dates/times, which both serves as a first-line defense against user error (end dates before start dates, etc.) and provides some creature comforts.\r\n\r\nDisplaying time information on the calendar required some rearrangement of elements in order to make space without looking like a mess. Probably more needs to be done to make it look really good, but this is passable. If @Antes can think of ways to improve it further, that's fine by me.\r\n\r\nFor the record, dealing with calendars is a royal pain in the ass."},"comment":{"url":"https://api.github.com/repos/SimpleMachines/SMF2.1/issues/comments/241514600","html_url":"https://github.com/SimpleMachines/SMF2.1/pull/3530#issuecomment-241514600","issue_url":"https://api.github.com/repos/SimpleMachines/SMF2.1/issues/3530","id":241514600,"user":{"login":"Sesquipedalian","id":191731,"avatar_url":"https://avatars.githubusercontent.com/u/191731?v=3","gravatar_id":"","url":"https://api.github.com/users/Sesquipedalian","html_url":"https://github.com/Sesquipedalian","followers_url":"https://api.github.com/users/Sesquipedalian/followers","following_url":"https://api.github.com/users/Sesquipedalian/following{/other_user}","gists_url":"https://api.github.com/users/Sesquipedalian/gists{/gist_id}","starred_url":"https://api.github.com/users/Sesquipedalian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sesquipedalian/subscriptions","organizations_url":"https://api.github.com/users/Sesquipedalian/orgs","repos_url":"https://api.github.com/users/Sesquipedalian/repos","events_url":"https://api.github.com/users/Sesquipedalian/events{/privacy}","received_events_url":"https://api.github.com/users/Sesquipedalian/received_events","type":"User","site_admin":false},"created_at":"2016-08-22T18:59:03Z","updated_at":"2016-08-22T18:59:03Z","body":"Okay. I think that somehow the timezone on your event was entered into the database as an empty string, and that has been causing the problem."}}
{"actor":{"display_login":"Sesquipedalian"}}