Skip to content
This repository was archived by the owner on Jan 21, 2023. It is now read-only.

Commit

Permalink
add better dependency injection; fix some request bugs; add css for b…
Browse files Browse the repository at this point in the history
…ackend widgets
  • Loading branch information
carsten-walther committed May 31, 2020
1 parent 08e4bc7 commit e863b0e
Show file tree
Hide file tree
Showing 12 changed files with 135 additions and 177 deletions.
76 changes: 17 additions & 59 deletions Classes/Controller/AjaxController.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface as Cache;
use TYPO3\CMS\Core\Http\HtmlResponse;
use TYPO3\CMS\Core\Http\JsonResponse;
use TYPO3\CMS\Core\SingletonInterface;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Fluid\View\StandaloneView;
Expand All @@ -23,41 +24,36 @@
* @package Walther\JiraServiceDesk\Controller
* @author Carsten Walther
*/
class AjaxController
class AjaxController implements SingletonInterface
{
/**
* Service object
*
* @var \Walther\JiraServiceDesk\Service\Service
*/
protected $service;

/**
* ServiceDesk resource object
*
* @var \Walther\JiraServiceDesk\Service\Resource\ServiceDesk
*/
protected $serviceDeskResource;

/**
* Request resource object
*
* @var \Walther\JiraServiceDesk\Service\Resource\Request
*/
protected $requestResource;

/**
* Knowledgebase resource object
*
* @var \Walther\JiraServiceDesk\Service\Resource\Knowledgebase
*/
protected $knowledgebaseResource;

/**
* @var Cache
*/
private $cache;

/**
* @var int
*/
Expand All @@ -66,69 +62,31 @@ class AjaxController
/**
* AjaxController constructor.
*
* @return void
* @param \TYPO3\CMS\Core\Cache\Frontend\FrontendInterface $cache
* @param \Walther\JiraServiceDesk\Service\Service $service
* @param \Walther\JiraServiceDesk\Service\Resource\ServiceDesk $serviceDeskResource
* @param \Walther\JiraServiceDesk\Service\Resource\Request $requestResource
* @param \Walther\JiraServiceDesk\Service\Resource\Knowledgebase $knowledgebaseResource
*/
public function __construct()
public function __construct(Cache $cache, Service $service, ServiceDesk $serviceDeskResource, Request $requestResource, Knowledgebase $knowledgebaseResource)
{
if (AccessUtility::hasAccess()) {
$this->cache = $cache;

$this->service = !$this->service ? GeneralUtility::makeInstance(Service::class) : $this->service;
$this->service = $service;
$this->service->initialize();

if ($this->service->initialize()) {
$this->serviceDeskResource = $serviceDeskResource;
$this->serviceDeskResource->setService($this->service);

if (!$this->serviceDeskResource) {
$this->serviceDeskResource = GeneralUtility::makeInstance(ServiceDesk::class, $this->service);
} else {
$this->serviceDeskResource->setService($this->service);
}
$this->requestResource = $requestResource;
$this->requestResource->setService($this->service);

if (!$this->requestResource) {
$this->requestResource = GeneralUtility::makeInstance(Request::class, $this->service);
} else {
$this->requestResource->setService($this->service);
}

if (!$this->knowledgebaseResource) {
$this->knowledgebaseResource = GeneralUtility::makeInstance(Knowledgebase::class, $this->service);
} else {
$this->knowledgebaseResource->setService($this->service);
}
}
$this->knowledgebaseResource = $knowledgebaseResource;
$this->knowledgebaseResource->setService($this->service);
}
}

/**
* @param \Walther\JiraServiceDesk\Service\Service $service
*/
public function injectService(Service $service) : void
{
$this->service = $service;
}

/**
* @param \Walther\JiraServiceDesk\Service\Resource\ServiceDesk $serviceDeskResource
*/
public function injectServiceDeskResource(ServiceDesk $serviceDeskResource) : void
{
$this->serviceDeskResource = $serviceDeskResource;
}

/**
* @param \Walther\JiraServiceDesk\Service\Resource\Request $requestResource
*/
public function injectRequestResource(Request $requestResource) : void
{
$this->requestResource = $requestResource;
}

/**
* @param \Walther\JiraServiceDesk\Service\Resource\Knowledgebase $knowledgebase
*/
public function injectKnowledgebaseResource(Knowledgebase $knowledgebase) : void
{
$this->knowledgebaseResource = $knowledgebase;
}

/**
* Dispatches and returns the request results.
*
Expand Down
83 changes: 29 additions & 54 deletions Classes/Controller/ServiceDeskController.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use TYPO3\CMS\Extbase\Mvc\View\ViewInterface;
use Walther\JiraServiceDesk\Domain\Model\Attachment;
use Walther\JiraServiceDesk\Service\Resource\Request;
use Walther\JiraServiceDesk\Domain\Model\Request;
use Walther\JiraServiceDesk\Service\Resource\Requesttype;
use Walther\JiraServiceDesk\Service\Resource\ServiceDesk;
use Walther\JiraServiceDesk\Service\Service;
Expand Down Expand Up @@ -77,43 +77,27 @@ class ServiceDeskController extends ActionController
/**
* ServiceDeskController constructor.
*
* @param \TYPO3\CMS\Core\Cache\Frontend\FrontendInterface $cache
* @param \TYPO3\CMS\Core\Cache\Frontend\FrontendInterface $cache
* @param \Walther\JiraServiceDesk\Service\Service $service
* @param \Walther\JiraServiceDesk\Service\Resource\ServiceDesk $serviceDeskResource
* @param \Walther\JiraServiceDesk\Service\Resource\Request $requestResource
* @param \Walther\JiraServiceDesk\Service\Resource\Requesttype $requesttypeResource
*/
public function __construct(Cache $cache)
public function __construct(Cache $cache, Service $service, ServiceDesk $serviceDeskResource, \Walther\JiraServiceDesk\Service\Resource\Request $requestResource, Requesttype $requesttypeResource)
{
$this->cache = $cache;
}

/**
* @param \Walther\JiraServiceDesk\Service\Service $service
*/
public function injectService(Service $service) : void
{
$this->service = $service;
}
$this->service->initialize();

/**
* @param \Walther\JiraServiceDesk\Service\Resource\ServiceDesk $serviceDeskResource
*/
public function injectServiceDesk(ServiceDesk $serviceDeskResource) : void
{
$this->serviceDeskResource = $serviceDeskResource;
}
$this->serviceDeskResource->setService($this->service);

/**
* @param \Walther\JiraServiceDesk\Service\Resource\Request $requestResource
*/
public function injectRequestResource(Request $requestResource) : void
{
$this->requestResource = $requestResource;
}
$this->requestResource->setService($this->service);

/**
* @param \Walther\JiraServiceDesk\Service\Resource\Requesttype $requesttypeResource
*/
public function injectRequesttypeResource(Requesttype $requesttypeResource) : void
{
$this->requesttypeResource = $requesttypeResource;
$this->requesttypeResource->setService($this->service);
}

/**
Expand All @@ -136,29 +120,6 @@ protected function initializeView(ViewInterface $view) : void
$this->view->getModuleTemplate()->getPageRenderer()->addCssFile('EXT:jira_service_desk/Resources/Public/Css/backend.css');
$this->view->getModuleTemplate()->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/JiraServiceDesk/Servicedesk');
}

$this->service = !$this->service ? GeneralUtility::makeInstance(Service::class) : $this->service;

if ($this->service->initialize()) {

if (!$this->serviceDeskResource) {
$this->serviceDeskResource = GeneralUtility::makeInstance(ServiceDesk::class, $this->service);
} else {
$this->serviceDeskResource->setService($this->service);
}

if (!$this->requestResource) {
$this->requestResource = GeneralUtility::makeInstance(Request::class, $this->service);
} else {
$this->requestResource->setService($this->service);
}

if (!$this->requesttypeResource) {
$this->requesttypeResource = GeneralUtility::makeInstance(Requesttype::class, $this->service);
} else {
$this->requesttypeResource->setService($this->service);
}
}
}

/**
Expand Down Expand Up @@ -305,6 +266,10 @@ public function addCommentAction() : void
$queue->addMessage($message);
}

if ($this->cache->isValidTag('jira_service_desk')) {
$this->cache->flushByTag('jira_service_desk');
}

$this->redirect('show', 'ServiceDesk', null, [
'issueId' => $arguments['comment']['requestId']
]);
Expand Down Expand Up @@ -347,6 +312,10 @@ public function addTransitionAction() : void
$queue->addMessage($message);
}

if ($this->cache->isValidTag('jira_service_desk')) {
$this->cache->flushByTag('jira_service_desk');
}

$this->redirect('show', 'ServiceDesk', null, [
'issueId' => $arguments['transition']['requestId']
]);
Expand Down Expand Up @@ -432,6 +401,7 @@ public function createAction() : void
$temporaryAttachments = $this->serviceDeskResource->attachTemporaryFile($serviceDeskId, $files);

if ($temporaryAttachments->getStatus() === 201) {
/** @var \Walther\JiraServiceDesk\Domain\Model\Attachment $newAttachment */
$newAttachment = GeneralUtility::makeInstance(Attachment::class);
$newAttachment->setPublic(true);
foreach ($temporaryAttachments->getBody()->temporaryAttachments as $temporaryAttachment) {
Expand All @@ -440,7 +410,8 @@ public function createAction() : void
}
}

$newRequest = GeneralUtility::makeInstance(\Walther\JiraServiceDesk\Domain\Model\Request::class);
/** @var \Walther\JiraServiceDesk\Domain\Model\Request $newRequest */
$newRequest = GeneralUtility::makeInstance(Request::class);
$newRequest->setServiceDeskId($serviceDeskId);
$newRequest->setRequestTypeId((int)$arguments['requestType']['id']);

Expand Down Expand Up @@ -474,6 +445,10 @@ public function createAction() : void
}
}

if ($this->cache->isValidTag('jira_service_desk')) {
$this->cache->flushByTag('jira_service_desk');
}

BackendUtility::setUpdateSignal('ServiceDeskToolbarItem::updateServiceDeskMenu');
$message = GeneralUtility::makeInstance(
FlashMessage::class,
Expand All @@ -485,7 +460,7 @@ public function createAction() : void
$queue = $service->getMessageQueueByIdentifier();
$queue->addMessage($message);
$this->redirect('show', 'ServiceDesk', null, [
'requestId' => $result->body->issueId
'issueId' => $result->body->issueId
]);
} else {
$message = GeneralUtility::makeInstance(
Expand All @@ -508,7 +483,7 @@ public function createAction() : void
*/
public function helpAction() : void
{

// ...
}

/**
Expand All @@ -518,7 +493,7 @@ public function helpAction() : void
*/
public function accessDeniedAction() : void
{

// ...
}

/**
Expand Down
12 changes: 7 additions & 5 deletions Classes/Service/Resource/ServiceDesk.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,13 @@ public function attachTemporaryFile(int $serviceDeskId, array $files) : Response
$multipartFields = [];

foreach ($files as $file) {
$multipartFields[] = [
'name' => 'file',
'filename' => $file['name'],
'contents' => fopen($file['url'], 'rb')
];
if ($file['name'] && $file['url']) {
$multipartFields[] = [
'name' => 'file',
'filename' => $file['name'],
'contents' => fopen($file['url'], 'rb')
];
}
}

$result = $this->service
Expand Down
24 changes: 17 additions & 7 deletions Classes/Widgets/InformationWidget.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Walther\JiraServiceDesk\Widgets;

use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface as Cache;
use TYPO3\CMS\Dashboard\Widgets\AdditionalCssInterface;
use TYPO3\CMS\Dashboard\Widgets\WidgetConfigurationInterface;
use TYPO3\CMS\Dashboard\Widgets\WidgetInterface;
use TYPO3\CMS\Fluid\View\StandaloneView;
Expand All @@ -14,7 +15,7 @@
*
* @package Walther\JiraServiceDesk\Widgets
*/
class InformationWidget implements WidgetInterface
class InformationWidget implements WidgetInterface, AdditionalCssInterface
{
/**
* @var \TYPO3\CMS\Dashboard\Widgets\WidgetConfigurationInterface
Expand Down Expand Up @@ -63,12 +64,9 @@ public function __construct(WidgetConfigurationInterface $configuration, Informa
$this->cache = $cache;
$this->view = $view;
$this->buttonProvider = $buttonProvider;
$this->options = array_merge(
[
'lifeTime' => 60*60*24*30
],
$options
);
$this->options = array_merge([
'lifeTime' => 60 * 60 * 24 * 30
], $options);
}

/**
Expand Down Expand Up @@ -107,6 +105,18 @@ public function renderWidgetContent() : string
return $this->view->render();
}

/**
* getCssFiles
*
* @return array
*/
public function getCssFiles() : array
{
return [
'EXT:jira_service_desk/Resources/Public/Css/Widget/information.css'
];
}

/**
* getServiceDeskInformation
*
Expand Down
13 changes: 5 additions & 8 deletions Classes/Widgets/RequestsWidget.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,11 @@ public function __construct(WidgetConfigurationInterface $configuration, Request
$this->cache = $cache;
$this->view = $view;
$this->buttonProvider = $buttonProvider;
$this->options = array_merge(
[
'lifeTime' => 60*60*1,
'limit' => 10,
'page' => 0
],
$options
);
$this->options = array_merge([
'lifeTime' => 60 * 60 * 1,
'limit' => 10,
'page' => 0
], $options);
}

/**
Expand Down
Loading

0 comments on commit e863b0e

Please sign in to comment.