mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-29 18:22:41 +01:00
Leading and trailing days should be considered part of the month in month view.
Summary: Closes T8177, Leading and trailing days should be considered part of the month in month view. Test Plan: Open month view, no days should be empty unless they don't have events. Modify query, make sure month view still obeys query. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: Korvin, epriestley Maniphest Tasks: T8177 Differential Revision: https://secure.phabricator.com/D12834
This commit is contained in:
parent
97611958b0
commit
a76d3a8bb5
2 changed files with 55 additions and 13 deletions
|
@ -76,11 +76,33 @@ final class PhabricatorCalendarEventSearchEngine
|
||||||
$display_start = $start_day->format('U');
|
$display_start = $start_day->format('U');
|
||||||
$display_end = $next->format('U');
|
$display_end = $next->format('U');
|
||||||
|
|
||||||
|
// 0 = Sunday is always the start of the week, for now
|
||||||
|
$start_of_week = 0;
|
||||||
|
$end_of_week = 6 - $start_of_week;
|
||||||
|
|
||||||
|
$first_of_month = $start_day->format('w');
|
||||||
|
$last_of_month = id(clone $next)->modify('-1 day')->format('w');
|
||||||
|
|
||||||
if (!$min_range || ($min_range < $display_start)) {
|
if (!$min_range || ($min_range < $display_start)) {
|
||||||
$min_range = $display_start;
|
$min_range = $display_start;
|
||||||
|
|
||||||
|
if ($this->isMonthView($saved) &&
|
||||||
|
$first_of_month > $start_of_week) {
|
||||||
|
$min_range = id(clone $start_day)
|
||||||
|
->modify('-'.$first_of_month.' days')
|
||||||
|
->format('U');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!$max_range || ($max_range > $display_end)) {
|
if (!$max_range || ($max_range > $display_end)) {
|
||||||
$max_range = $display_end;
|
$max_range = $display_end;
|
||||||
|
|
||||||
|
if ($this->isMonthView($saved) &&
|
||||||
|
$last_of_month < $end_of_week) {
|
||||||
|
$max_range = id(clone $next)
|
||||||
|
->modify('+'.(6 - $first_of_month).' days')
|
||||||
|
->format('U');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,14 +56,8 @@ final class PHUICalendarMonthView extends AphrontView {
|
||||||
}
|
}
|
||||||
|
|
||||||
$events = msort($this->events, 'getEpochStart');
|
$events = msort($this->events, 'getEpochStart');
|
||||||
|
|
||||||
$days = $this->getDatesInMonth();
|
$days = $this->getDatesInMonth();
|
||||||
|
|
||||||
require_celerity_resource('phui-calendar-month-css');
|
|
||||||
|
|
||||||
$first = reset($days);
|
|
||||||
$empty = $first->format('w');
|
|
||||||
|
|
||||||
$cell_lists = array();
|
$cell_lists = array();
|
||||||
$empty_cell = array(
|
$empty_cell = array(
|
||||||
'list' => null,
|
'list' => null,
|
||||||
|
@ -73,6 +67,13 @@ final class PHUICalendarMonthView extends AphrontView {
|
||||||
'class' => null,
|
'class' => null,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
require_celerity_resource('phui-calendar-month-css');
|
||||||
|
|
||||||
|
$first = reset($days);
|
||||||
|
$start_of_week = 0;
|
||||||
|
|
||||||
|
$empty = $first->format('w');
|
||||||
|
|
||||||
for ($ii = 0; $ii < $empty; $ii++) {
|
for ($ii = 0; $ii < $empty; $ii++) {
|
||||||
$cell_lists[] = $empty_cell;
|
$cell_lists[] = $empty_cell;
|
||||||
}
|
}
|
||||||
|
@ -409,22 +410,41 @@ final class PHUICalendarMonthView extends AphrontView {
|
||||||
$month = $this->month;
|
$month = $this->month;
|
||||||
$year = $this->year;
|
$year = $this->year;
|
||||||
|
|
||||||
// Get the year and month numbers of the following month, so we can
|
|
||||||
// determine when this month ends.
|
|
||||||
list($next_year, $next_month) = $this->getNextYearAndMonth();
|
list($next_year, $next_month) = $this->getNextYearAndMonth();
|
||||||
|
|
||||||
$end_date = new DateTime("{$next_year}-{$next_month}-01", $timezone);
|
$end_date = new DateTime("{$next_year}-{$next_month}-01", $timezone);
|
||||||
$end_epoch = $end_date->format('U');
|
|
||||||
|
$start_of_week = 0;
|
||||||
|
$end_of_week = 6 - $start_of_week;
|
||||||
|
$days_in_month = id(clone $end_date)->modify('-1 day')->format('d');
|
||||||
|
|
||||||
|
$first_month_day_date = new DateTime("{$year}-{$month}-01", $timezone);
|
||||||
|
$last_month_day_date = id(clone $end_date)->modify('-1 day');
|
||||||
|
|
||||||
|
$first_weekday_of_month = $first_month_day_date->format('w');
|
||||||
|
$last_weekday_of_month = $last_month_day_date->format('w');
|
||||||
|
|
||||||
|
$num_days_display = $days_in_month;
|
||||||
|
if ($start_of_week < $first_weekday_of_month) {
|
||||||
|
$num_days_display += $first_weekday_of_month;
|
||||||
|
}
|
||||||
|
if ($end_of_week > $last_weekday_of_month) {
|
||||||
|
$num_days_display += (6 - $last_weekday_of_month);
|
||||||
|
$end_date->modify('+'.(6 - $last_weekday_of_month).' days');
|
||||||
|
}
|
||||||
|
|
||||||
$days = array();
|
$days = array();
|
||||||
for ($day = 1; $day <= 31; $day++) {
|
$day_date = id(clone $first_month_day_date)
|
||||||
$day_date = new DateTime("{$year}-{$month}-{$day}", $timezone);
|
->modify('-'.$first_weekday_of_month.' days');
|
||||||
|
|
||||||
|
for ($day = 1; $day <= $num_days_display; $day++) {
|
||||||
$day_epoch = $day_date->format('U');
|
$day_epoch = $day_date->format('U');
|
||||||
|
$end_epoch = $end_date->format('U');
|
||||||
if ($day_epoch >= $end_epoch) {
|
if ($day_epoch >= $end_epoch) {
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
$days[] = $day_date;
|
$days[] = clone $day_date;
|
||||||
}
|
}
|
||||||
|
$day_date->modify('+1 day');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $days;
|
return $days;
|
||||||
|
|
Loading…
Reference in a new issue