# HG changeset patch # User Paul Boddie # Date 1445359192 -7200 # Node ID 8a3994e54ea4b5ce7ee73f955f1f99c6ac3df522 # Parent bfcc8db523fd6efefc665e7459087fffe504cbfd Permit the selection of a same-day ending while still allowing time adjustments. diff -r bfcc8db523fd -r 8a3994e54ea4 htdocs/styles.css --- a/htdocs/styles.css Tue Oct 20 18:38:42 2015 +0200 +++ b/htdocs/styles.css Tue Oct 20 18:39:52 2015 +0200 @@ -228,7 +228,7 @@ input#hidebusy:checked ~ div.calendar tr.slot.busy, input#showdays:not(:checked) ~ div.calendar .calendar.empty, -/* Hiding/showing end datetimes and start/end times. */ +/* Hiding/showing start/end times. */ input#dttimes-enable, input#dtend-enable, @@ -254,6 +254,13 @@ display: none; } +/* Hiding/showing end datetimes and start/end times. */ + +input#dtend-enable:not(:checked) ~ .object td.objectvalue.dtend .date.enabled, +input#dtend-enable:checked ~ .object td.objectvalue.dtend .date.disabled { + visibility: hidden; +} + /* Show slot endpoints when hiding adjacent busy periods. */ input#hidebusy:checked ~ div.calendar th.timeslot span.endpoint { @@ -288,6 +295,8 @@ label.newevent, .dt.disabled label, .dt.enabled label, +.date.disabled label, +.date.enabled label, label.add, label.remove, label.removed, @@ -321,6 +330,8 @@ label.later, .dt.disabled label, .dt.enabled label, +.date.disabled label, +.date.enabled label, label.add, label.remove, label.removed, @@ -332,11 +343,14 @@ } .dt.disabled label, -.dt.enabled label { +.dt.enabled label, +.date.disabled label, +.date.enabled label { display: inline-block; } -.dt.enabled label { +.dt.enabled label, +.date.enabled label { margin-top: 0.25em; } diff -r bfcc8db523fd -r 8a3994e54ea4 imipweb/data.py --- a/imipweb/data.py Tue Oct 20 18:38:42 2015 +0200 +++ b/imipweb/data.py Tue Oct 20 18:39:52 2015 +0200 @@ -154,6 +154,14 @@ if not dtend: return None + # Handle same day times. + + elif self.times_enabled: + formdate = FormDate(self.start.date, self.end.hour, self.end.minute, self.end.second, self.end.tzid) + dtend = formdate.as_datetime(self.times_enabled) + if not dtend: + return None + # Otherwise, treat the end date as the start date. Datetimes are # handled by making the event occupy the rest of the day. diff -r bfcc8db523fd -r 8a3994e54ea4 imipweb/resource.py --- a/imipweb/resource.py Tue Oct 20 18:38:42 2015 +0200 +++ b/imipweb/resource.py Tue Oct 20 18:39:52 2015 +0200 @@ -476,6 +476,8 @@ # Show dates for up to one week around the current date. + page.span(class_="date enabled") + dt = default.as_datetime() if not dt: dt = date.today() @@ -498,6 +500,8 @@ items.append((format_datetime(d), self.format_date(d, "full"))) self.menu("%s-date" % name, format_datetime(base), items, index=index) + page.span.close() + # Show time details. page.span(class_="time enabled") @@ -589,6 +593,11 @@ input#dtend-enable-%(index)d:not(:checked) ~ .recurrence td.objectvalue.dtend .dt.enabled, input#dtend-enable-%(index)d:checked ~ .recurrence td.objectvalue.dtend .dt.disabled { display: none; +} + +input#dtend-enable-%(index)d:not(:checked) ~ .recurrence td.objectvalue.dtend .date.enabled, +input#dtend-enable-%(index)d:checked ~ .recurrence td.objectvalue.dtend .date.disabled { + visibility: hidden; }""" % {"index" : index}) page.style.close() @@ -628,12 +637,11 @@ page.div.close() else: + self.date_controls("dtend", formdate) page.div(class_="dt disabled") page.label("Specify end date", for_="dtend-enable", class_="enable") page.div.close() page.div(class_="dt enabled") - self.date_controls("dtend", formdate) - page.br() page.label("End on same day", for_="dtend-enable", class_="disable") page.div.close() @@ -680,16 +688,14 @@ self.control("recur-replaced", "hidden", period.replaced and str(index) or "") else: - page.div(class_="dt disabled") - if not read_only: - page.label("Specify end date", for_=_id("dtend-enable", index), class_="enable") - page.div.close() - page.div(class_="dt enabled") self.date_controls(_name("dtend", "recur", index), period.get_form_end(), index=index, show_tzid=False, read_only=read_only) if not read_only: - page.br() + page.div(class_="dt disabled") + page.label("Specify end date", for_=_id("dtend-enable", index), class_="enable") + page.div.close() + page.div(class_="dt enabled") page.label("End on same day", for_=_id("dtend-enable", index), class_="disable") - page.div.close() + page.div.close() page.td.close()