N°2039 - Add iTop notifications to newsroom (#590)

* N°2039 - Add iTop notifications to newsroom

* Update sources/Controller/Newsroom/iTopNewsroomController.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update sources/Controller/Newsroom/iTopNewsroomController.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update sources/Service/Notification/Event/EventiTopNotificationGC.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Add a default value to Action url attribute, check if there's an object in the context before adding it to the event

* Phpdoc

* Fix default config values

* Replace MetaModel::EnumPlugins calls for iNewsroomProvider

* Replace hardcoded url with generated routes

* Add dict entries

* Correclty throw error when trying to display a non existing event

* Fix unit test

* Migrate old action email language values to its parent table

* Migrate Action and Event class to XML, generate their dictionary entries, add meta data for ActionNotification and EventNotification

* Fix issue in dictionary definition

* Allows Action to create Events for users that the current user can't see

* Dump autoloader

* Remove classes from homemade "autoloader" as they are now loaded through XML

* Apply suggestions from code review

* Remove class from homemade "autoloader" as they are now loaded through GetClassesForInterfaces

* Apply suggestions from code review

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
This commit is contained in:
Stephen Abello
2023-12-22 12:02:19 +01:00
committed by GitHub
parent 2681abbeed
commit 05db99aa69
17 changed files with 778 additions and 21 deletions

View File

@@ -0,0 +1,46 @@
<?php
use Combodo\iTop\Service\Router\Router;
/**
* Class iTopNewsroomProvider
*
* @author Stephen Abello <stephen.abello@combodo.com>
* @package Combodo\iTop\Application\Newsroom
* @since 3.2.0
*/
class iTopNewsroomProvider extends NewsroomProviderBase {
public function IsApplicable(User $oUser = null){
return true;
}
public function GetLabel()
{
return Dict::S('UI:Newsroom:iTopNotification:Label');
}
public function GetFetchURL()
{
return self::MakeURL('fetch_unread_messages');
}
public function GetMarkAllAsReadURL()
{
return self::MakeURL('mark_all_as_read_messages');
}
public function GetViewAllURL()
{
return self::MakeURL('view_all');
}
private static function MakeURL($sRouteCode)
{
return Router::GetInstance()->GenerateUrl(iTopNewsroomController::ROUTE_NAMESPACE . '.' . $sRouteCode);
}
public function GetTTL()
{
return MetaModel::GetConfig()->Get('notifications.itop.newsroom_cache_time') * 60;
}
}