Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/codeception-min-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ jobs:
with:
module-id: calendar
use-rest-module: true
rest-module-branch: develop
99 changes: 58 additions & 41 deletions Events.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,20 @@
namespace humhub\modules\calendar;

use DateTime;
use humhub\helpers\ControllerHelper;
use humhub\modules\calendar\extensions\custom_pages\elements\CalendarEntryElement;
use humhub\modules\calendar\extensions\custom_pages\elements\CalendarEventsElement;
use humhub\modules\calendar\helpers\dav\SyncService;
use humhub\modules\calendar\helpers\RecurrenceHelper;
use humhub\modules\calendar\models\CalendarEntry;
use humhub\modules\calendar\models\CalendarEntryParticipant;
use humhub\modules\calendar\models\ExportSettings;
use humhub\modules\calendar\models\MenuSettings;
use humhub\modules\content\events\ContentEvent;
use humhub\modules\space\models\Space;
use humhub\modules\user\models\User;
use humhub\modules\content\widgets\WallEntryLinks;
use humhub\modules\dashboard\widgets\Sidebar as DashboardSidebar;
use humhub\modules\space\widgets\Menu;
use humhub\modules\space\widgets\Sidebar as SpaceSidebar;
use humhub\modules\ui\menu\MenuLink;
use humhub\modules\calendar\interfaces\event\EditableEventIF;
use humhub\modules\calendar\interfaces\event\CalendarItemTypesEvent;
use humhub\modules\calendar\interfaces\recurrence\RecurrentEventIF;
Expand All @@ -32,11 +35,13 @@
use humhub\modules\calendar\widgets\UpcomingEvents;
use humhub\modules\content\models\Content;
use humhub\modules\calendar\helpers\Url;
use humhub\modules\user\widgets\ProfileMenu;
use humhub\modules\user\widgets\ProfileSidebar;
use humhub\widgets\TopMenu;
use Yii;
use yii\db\StaleObjectException;
use yii\helpers\Console;
use yii\web\Application;
use humhub\components\ModuleEvent;

/**
* Description of CalendarEvents
Expand Down Expand Up @@ -107,15 +112,15 @@ public static function onTopMenuInit($event)
try {
if (SnippetModuleSettings::instance()->showGlobalCalendarItems()
&& MenuSettings::instance()->show) {
$event->sender->addItem([
/* @var TopMenu $menu */
$menu = $event->sender;
$menu->addEntry(new MenuLink([
'label' => Yii::t('CalendarModule.base', 'Calendar'),
'url' => Url::toGlobalCalendar(),
'icon' => '<i class="fa fa-calendar"></i>',
'isActive' => (Yii::$app->controller->module
&& Yii::$app->controller->module->id == 'calendar'
&& Yii::$app->controller->id == 'global'),
'icon' => 'calendar',
'isActive' => ControllerHelper::isActivePath('calendar', 'global'),
'sortOrder' => MenuSettings::instance()->sortOrder,
]);
]));
}
} catch (\Throwable $e) {
Yii::error($e);
Expand All @@ -125,17 +130,15 @@ public static function onTopMenuInit($event)
public static function onSpaceMenuInit($event)
{
try {
/* @var Space $space */
$space = $event->sender->space;
if ($space->moduleManager->isEnabled('calendar')) {
$event->sender->addItem([
/* @var Menu $menu */
$menu = $event->sender;
if ($menu->space->moduleManager->isEnabled('calendar')) {
$menu->addEntry(new MenuLink([
'label' => Yii::t('CalendarModule.base', 'Calendar'),
'group' => 'modules',
'url' => Url::toCalendar($space),
'icon' => '<i class="fa fa-calendar"></i>',
'isActive' => (Yii::$app->controller->module && Yii::$app->controller->module->id == 'calendar'),

]);
'url' => Url::toCalendar($menu->space),
'icon' => 'calendar',
'isActive' => ControllerHelper::isActivePath('calendar'),
]));
}
} catch (\Throwable $e) {
Yii::error($e);
Expand All @@ -145,15 +148,15 @@ public static function onSpaceMenuInit($event)
public static function onProfileMenuInit($event)
{
try {
/* @var User $user */
$user = $event->sender->user;
if ($user->moduleManager->isEnabled('calendar')) {
$event->sender->addItem([
/* @var ProfileMenu $menu */
$menu = $event->sender;
if ($menu->user->moduleManager->isEnabled('calendar')) {
$menu->addEntry(new MenuLink([
'label' => Yii::t('CalendarModule.base', 'Calendar'),
'url' => Url::toCalendar($user),
'icon' => '<i class="fa fa-calendar"></i>',
'isActive' => (Yii::$app->controller->module && Yii::$app->controller->module->id == 'calendar'),
]);
'url' => Url::toCalendar($menu->user),
'icon' => 'calendar',
'isActive' => ControllerHelper::isActivePath('calendar'),
]));
}
} catch (\Throwable $e) {
Yii::error($e);
Expand All @@ -163,14 +166,17 @@ public static function onProfileMenuInit($event)
public static function onSpaceSidebarInit($event)
{
try {
/* @var Space $space */
$space = $event->sender->space;
/* @var SpaceSidebar $sidebar */
$sidebar = $event->sender;
$settings = SnippetModuleSettings::instantiate();

if ($space->moduleManager->isEnabled('calendar')) {
if ($settings->showUpcomingEventsSnippet()) {
$event->sender->addWidget(UpcomingEvents::class, ['contentContainer' => $space], ['sortOrder' => $settings->upcomingEventsSnippetSortOrder]);
}
if ($sidebar->space->moduleManager->isEnabled('calendar')
&& $settings->showUpcomingEventsSnippet()) {
$sidebar->addWidget(
UpcomingEvents::class,
['contentContainer' => $sidebar->space],
['sortOrder' => $settings->upcomingEventsSnippetSortOrder],
);
}
} catch (\Throwable $e) {
Yii::error($e);
Expand All @@ -180,10 +186,12 @@ public static function onSpaceSidebarInit($event)
public static function onDashboardSidebarInit($event)
{
try {
/* @var DashboardSidebar $sidebar */
$sidebar = $event->sender;
$settings = SnippetModuleSettings::instantiate();

if ($settings->showUpcomingEventsSnippet()) {
$event->sender->addWidget(UpcomingEvents::class, [], ['sortOrder' => $settings->upcomingEventsSnippetSortOrder]);
$sidebar->addWidget(UpcomingEvents::class, [], ['sortOrder' => $settings->upcomingEventsSnippetSortOrder]);
}
} catch (\Throwable $e) {
Yii::error($e);
Expand All @@ -197,12 +205,18 @@ public static function onProfileSidebarInit($event)
return;
}

$user = $event->sender->user;
if ($user != null) {
/* @var ProfileSidebar $sidebar */
$sidebar = $event->sender;

if ($sidebar->user != null) {
$settings = SnippetModuleSettings::instantiate();

if ($settings->showUpcomingEventsSnippet()) {
$event->sender->addWidget(UpcomingEvents::class, ['contentContainer' => $user], ['sortOrder' => $settings->upcomingEventsSnippetSortOrder]);
$sidebar->addWidget(
UpcomingEvents::class,
['contentContainer' => $sidebar->user],
['sortOrder' => $settings->upcomingEventsSnippetSortOrder],
);
}
}
} catch (\Throwable $e) {
Expand All @@ -213,14 +227,17 @@ public static function onProfileSidebarInit($event)
public static function onWallEntryLinks($event)
{
try {
$eventModel = static::getCalendarEvent($event->sender->object);
/* @var WallEntryLinks $links */
$links = $event->sender;

$eventModel = static::getCalendarEvent($links->object);

if (!$eventModel) {
return;
}

if ($eventModel instanceof ContentActiveRecord && $eventModel instanceof CalendarEventIF) {
$event->sender->addWidget(DownloadIcsLink::class, ['calendarEntry' => $eventModel]);
$links->addWidget(DownloadIcsLink::class, ['calendarEntry' => $eventModel]);
}

/* @var $eventModel CalendarEventIF */
Expand All @@ -229,7 +246,7 @@ public static function onWallEntryLinks($event)
}

if ($eventModel instanceof CalendarEventReminderIF && !RecurrenceHelper::isRecurrentRoot($eventModel)) {
$event->sender->addWidget(ReminderLink::class, ['entry' => $eventModel]);
$links->addWidget(ReminderLink::class, ['entry' => $eventModel]);
}
} catch (\Throwable $e) {
Yii::error($e);
Expand Down
14 changes: 0 additions & 14 deletions Module.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace humhub\modules\calendar;

use humhub\components\console\Application as ConsoleApplication;
use humhub\modules\calendar\models\CalendarEntryType;
use Yii;
use humhub\modules\calendar\helpers\Url;
Expand Down Expand Up @@ -47,19 +46,6 @@ class Module extends ContentContainerModule
*/
public $icsOrganizer = false;

/**
* @inheritdoc
*/
public function init()
{
parent::init();

if (Yii::$app instanceof ConsoleApplication) {
// Prevents the Yii HelpCommand from crawling all web controllers and possibly throwing errors at REST endpoints if the REST module is not available.
$this->controllerNamespace = 'calendar/commands';
}
}

/**
* @return bool
*/
Expand Down
38 changes: 17 additions & 21 deletions activities/ResponseAttend.php
Original file line number Diff line number Diff line change
@@ -1,40 +1,36 @@
<?php

/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2015 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/

namespace humhub\modules\calendar\activities;

use humhub\modules\activity\components\BaseActivity;
use humhub\modules\activity\components\BaseContentActivity;
use humhub\modules\activity\interfaces\ConfigurableActivityInterface;
use humhub\modules\calendar\models\CalendarDateFormatter;
use humhub\modules\calendar\models\CalendarEntry;
use Yii;

/**
* ResponseAttend Activity
*
* @author luke
* @extends BaseContentActivity<CalendarEntry>
*/
class ResponseAttend extends BaseActivity implements ConfigurableActivityInterface
class ResponseAttend extends BaseContentActivity implements ConfigurableActivityInterface
{
public $viewName = 'response_attend';
public $moduleId = 'calendar';
protected string $contentActiveRecordClass = CalendarEntry::class;

/**
* @inheritdoc
*/
public function getTitle()
public static function getTitle(): string
{
return Yii::t('CalendarModule.notification', 'Calendar: attend');
}

/**
* @inheritdoc
*/
public function getDescription()
public static function getDescription(): string
{
return Yii::t('CalendarModule.notification', 'Whenever someone participates in an event.');
}

protected function getMessage(array $params): string
{
$params['dateTime']
= (new CalendarDateFormatter(['calendarItem' => $this->contentActiveRecord]))
->getFormattedTime('short');

return Yii::t('CalendarModule.views', '{displayName} is attending Event "{contentTitle}" on {dateTime}.', $params);
}
}
38 changes: 17 additions & 21 deletions activities/ResponseDeclined.php
Original file line number Diff line number Diff line change
@@ -1,40 +1,36 @@
<?php

/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2015 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/

namespace humhub\modules\calendar\activities;

use humhub\modules\activity\components\BaseActivity;
use humhub\modules\activity\components\BaseContentActivity;
use humhub\modules\activity\interfaces\ConfigurableActivityInterface;
use humhub\modules\calendar\models\CalendarDateFormatter;
use humhub\modules\calendar\models\CalendarEntry;
use Yii;

/**
* ResponseDeclined Activity
*
* @author luke
* @extends BaseContentActivity<CalendarEntry>
*/
class ResponseDeclined extends BaseActivity implements ConfigurableActivityInterface
class ResponseDeclined extends BaseContentActivity implements ConfigurableActivityInterface
{
public $viewName = 'response_declined';
public $moduleId = 'calendar';
protected string $contentActiveRecordClass = CalendarEntry::class;

/**
* @inheritdoc
*/
public function getTitle()
public static function getTitle(): string
{
return Yii::t('CalendarModule.notification', 'Calendar: decline');
}

/**
* @inheritdoc
*/
public function getDescription()
public static function getDescription(): string
{
return Yii::t('CalendarModule.notification', 'Whenever someone declines to participate in an event.');
}

protected function getMessage(array $params): string
{
$params['dateTime'] = (new CalendarDateFormatter(
['calendarItem' => $this->contentActiveRecord],
))->getFormattedTime('short');

return Yii::t('CalendarModule.views', '{displayName} is attending Event "{contentTitle}" on {dateTime}.', $params);
}
}
Loading
Loading