Skip to content

Commit

Permalink
Fix #58 - Rework of the date calculation in the templates
Browse files Browse the repository at this point in the history
  • Loading branch information
lochmueller committed Mar 30, 2016
1 parent fdcf129 commit 2cdeccb
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 41 deletions.
16 changes: 14 additions & 2 deletions Classes/Controller/CalendarController.php
Original file line number Diff line number Diff line change
Expand Up @@ -226,9 +226,21 @@ public function weekAction($year = null, $week = null)
}
$firstDay = DateTimeUtility::convertWeekYear2DayMonthYear($week, $year);
$firstDay->setTime(0, 0, 0);

$weekConfiguration = [
'+0 day' => 2,
'+1 days' => 2,
'+2 days' => 2,
'+3 days' => 2,
'+4 days' => 2,
'+5 days' => 1,
'+6 days' => 1
];

$this->slotExtendedAssignMultiple([
'firstDay' => $firstDay,
'indices' => $this->indexRepository->findWeek($year, $week),
'firstDay' => $firstDay,
'indices' => $this->indexRepository->findWeek($year, $week),
'weekConfiguration' => $weekConfiguration,
], __CLASS__, __FUNCTION__);
}

Expand Down
8 changes: 7 additions & 1 deletion Classes/Utility/DateTimeUtility.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
namespace HDNET\Calendarize\Utility;

use TYPO3\CMS\Core\Utility\MathUtility;
use TYPO3\CMS\Extbase\Utility\DebuggerUtility;

/**
* DateTime Utility
Expand Down Expand Up @@ -113,6 +114,11 @@ static public function normalizeDateTime($day = null, $month = null, $year = nul
}
$date->setDate($year, $month, $day);
$date->setTime(0, 0, 0);
if ($date->format('m') > $month) {
$date->modify('last day of last month');
} elseif ($date->format('m') < $month) {
$date->modify('first day of next month');
}
return $date;
}

Expand Down Expand Up @@ -158,4 +164,4 @@ static public function getNow()
{
return self::normalizeDateTimeSingle((int)$GLOBALS['SIM_ACCESS_TIME']);
}
}
}
10 changes: 5 additions & 5 deletions Classes/ViewHelpers/DateTime/ModifyViewHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ public function render($modification, \DateTime $dateTime = null)
if ($dateTime === null) {
$dateTime = $this->renderChildren();
}
if ($dateTime instanceof \DateTime) {
$dateTime->modify($modification);
return '';
if (!$dateTime instanceof \DateTime) {
$dateTime = new \DateTime();
}
return '';
$clone = clone $dateTime;
return $clone->modify($modification);
}

}
}
14 changes: 5 additions & 9 deletions Resources/Private/Partials/Month.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,18 @@
<tr>
<td colspan="7">
<f:if condition="{settings.monthPid}">
<f:if condition="{c:ifDateUpper(base: settings.dateLimitBrowserPrev, check:date)}">
<c:dateTime.modify modification="-1 month">{date}</c:dateTime.modify>
<c:link.month pageUid="{settings.monthPid}" date="{date}">
<f:if condition="{c:ifDateUpper(base: settings.dateLimitBrowserPrev, check:{date -> c:dateTime.modify(modification: 'first day of last month')})}">
<c:link.month pageUid="{settings.monthPid}" date="{date -> c:dateTime.modify(modification: 'first day of last month')}">
&lt;
</c:link.month>
<c:dateTime.modify modification="+1 month">{date}</c:dateTime.modify>
</f:if>
</f:if>
<f:format.date format="%B %Y">{date}</f:format.date>
<f:if condition="{settings.monthPid}">
<f:if condition="{c:ifDateLower(base: settings.dateLimitBrowserNext, check:date)}">
<c:dateTime.modify modification="+1 month">{date}</c:dateTime.modify>
<c:link.month pageUid="{settings.monthPid}" date="{date}">
<f:if condition="{c:ifDateLower(base: settings.dateLimitBrowserNext, check:{date -> c:dateTime.modify(modification: 'first day of next month')})}">
<c:link.month pageUid="{settings.monthPid}" date="{date -> c:dateTime.modify(modification: 'first day of next month')}">
&gt;
</c:link.month>
<c:dateTime.modify modification="-1 month">{date}</c:dateTime.modify>
</f:if>
</f:if>
</td>
Expand Down Expand Up @@ -90,4 +86,4 @@
monthEvents.push(tmp);
</f:for>
</script>
</f:if>
</f:if>
22 changes: 7 additions & 15 deletions Resources/Private/Templates/Calendar/Week.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,16 @@
<f:section name="Main">
<f:if condition="{settings.weekPid}">
<div class="browser">
<c:dateTime.modify modification="-7 day">{firstDay}</c:dateTime.modify>

<f:if condition="{c:ifDateUpper(base: settings.dateLimitBrowserPrev, check:firstDay)}">
<c:link.week pageUid="{settings.weekPid}" date="{firstDay}">
<f:if condition="{c:ifDateUpper(base: settings.dateLimitBrowserPrev, check:{firstDay -> c:dateTime.modify(modification: '-7 day')})}">
<c:link.week pageUid="{settings.weekPid}" date="{firstDay -> c:dateTime.modify(modification: '-7 day')}">
&lt;
</c:link.week>
</f:if>
<c:dateTime.modify modification="+7 day">{firstDay}</c:dateTime.modify>

<c:dateTime.modify modification="+7 day">{firstDay}</c:dateTime.modify>

<f:if condition="{c:ifDateLower(base: settings.dateLimitBrowserNext, check:firstDay)}">
<c:link.week pageUid="{settings.weekPid}" date="{firstDay}">
<f:if condition="{c:ifDateLower(base: settings.dateLimitBrowserNext, check:{firstDay -> c:dateTime.modify(modification: '+7 day')})}">
<c:link.week pageUid="{settings.weekPid}" date="{firstDay -> c:dateTime.modify(modification: '+7 day')}">
&gt;
</c:link.week>
</f:if>
<c:dateTime.modify modification="-7 day">{firstDay}</c:dateTime.modify>
</div>
</f:if>

Expand All @@ -32,10 +25,9 @@ <h1>
</h1>

<div class="row">
<f:for each="{0:2,1:2,2:2,3:2,4:2,5:1,6:1}" key="count" as="cols">
<f:for each="{weekConfiguration}" key="modify" as="cols">
<div class="col-md-{cols}">
<c:dateTime.modify modification="+1 day">{firstDay}</c:dateTime.modify>
<f:format.date format="{settings.dateFormat}">{firstDay}</f:format.date>
<f:format.date format="{settings.dateFormat}">{firstDay -> c:dateTime.modify(modification: modify)}</f:format.date>
<f:for each="{indices}" as="index">
<f:if condition="{c:dateTime.indexOnDay(index: index, day:firstDay)}">
<li>
Expand All @@ -47,4 +39,4 @@ <h1>
</f:for>
</div>
</f:section>
</div>
</div>
14 changes: 5 additions & 9 deletions Resources/Private/Templates/Calendar/Year.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,21 @@
<td colspan="4">

<f:if condition="{settings.yearPid}">
<c:dateTime.modify modification="-1 year">{date}</c:dateTime.modify>
<f:if condition="{c:ifDateUpper(base: settings.dateLimitBrowserPrev, check:date)}">
<c:link.year pageUid="{settings.yearPid}" date="{date}">
<f:if condition="{c:ifDateUpper(base: settings.dateLimitBrowserPrev, check:{date -> c:dateTime.modify(modification: 'first day of last year')})}">
<c:link.year pageUid="{settings.yearPid}" date="{date -> c:dateTime.modify(modification: 'first day of last year')}">
&lt;
</c:link.year>
</f:if>
<c:dateTime.modify modification="+1 year">{date}</c:dateTime.modify>
</f:if>

<f:format.date format="Y">{date}</f:format.date>

<f:if condition="{settings.yearPid}">
<c:dateTime.modify modification="+1 year">{date}</c:dateTime.modify>
<f:if condition="{c:ifDateLower(base: settings.dateLimitBrowserNext, check:date)}">
<c:link.year pageUid="{settings.yearPid}" date="{date}">
<f:if condition="{c:ifDateLower(base: settings.dateLimitBrowserNext, check:{date -> c:dateTime.modify(modification: 'first day of next year')})}">
<c:link.year pageUid="{settings.yearPid}" date="{date -> c:dateTime.modify(modification: 'first day of next year')}">
&gt;
</c:link.year>
</f:if>
<c:dateTime.modify modification="-1 year">{date}</c:dateTime.modify>
</f:if>
</td>
</tr>
Expand All @@ -46,4 +42,4 @@
</tbody>
</table>
</f:section>
</div>
</div>

0 comments on commit 2cdeccb

Please sign in to comment.