mirror of
https://github.com/Karaka-Management/oms-Script.git
synced 2026-01-11 12:28:41 +00:00
Rename reporter->helper
This commit is contained in:
commit
96981ae385
63
Admin/Install/Navigation.install.json
Normal file
63
Admin/Install/Navigation.install.json
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
[
|
||||
{
|
||||
"id": 1002701001,
|
||||
"pid": "/backend",
|
||||
"type": 2,
|
||||
"subtype": 1,
|
||||
"name": "Helper",
|
||||
"uri": "/{/lang}/backend/helper/list?{?}",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 60,
|
||||
"from": "Helper",
|
||||
"permission": { "permission": 2, "type": null, "element": null },
|
||||
"parent": 1003301001,
|
||||
"children": [
|
||||
{
|
||||
"id": 1002702001,
|
||||
"pid": "/backend/helper",
|
||||
"type": 3,
|
||||
"subtype": 1,
|
||||
"name": "List",
|
||||
"uri": "/{/lang}/backend/helper/list?{?}",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 1,
|
||||
"from": "Helper",
|
||||
"permission": { "permission": 2, "type": null, "element": null },
|
||||
"parent": 1002701001,
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": 1002703001,
|
||||
"pid": "/backend/helper",
|
||||
"type": 3,
|
||||
"subtype": 5,
|
||||
"name": "CreateReport",
|
||||
"uri": "/{/lang}/backend/helper/report/create?{?}",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 5,
|
||||
"from": "Helper",
|
||||
"permission": { "permission": 4, "type": null, "element": null },
|
||||
"parent": 1002701001,
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": 1002704001,
|
||||
"pid": "/backend/helper",
|
||||
"type": 3,
|
||||
"subtype": 5,
|
||||
"name": "CreateTemplate",
|
||||
"uri": "/{/lang}/backend/helper/template/create?{?}",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 10,
|
||||
"from": "Helper",
|
||||
"permission": { "permission": 4, "type": null, "element": null },
|
||||
"parent": 1002701001,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
43
Admin/Install/Navigation.php
Normal file
43
Admin/Install/Navigation.php
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Admin\Install
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Admin\Install;
|
||||
|
||||
use phpOMS\DataStorage\Database\DatabasePool;
|
||||
|
||||
/**
|
||||
* Navigation class.
|
||||
*
|
||||
* @package Modules\Helper\Admin\Install
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Navigation
|
||||
{
|
||||
/**
|
||||
* Install navigation providing
|
||||
*
|
||||
* @param string $path Module path
|
||||
* @param DatabasePool $dbPool Database pool for database interaction
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function install(string $path = null, DatabasePool $dbPool = null) : void
|
||||
{
|
||||
\Modules\Navigation\Admin\Installer::installExternal($dbPool, ['path' => __DIR__ . '/Navigation.install.json']);
|
||||
}
|
||||
}
|
||||
126
Admin/Install/db.json
Normal file
126
Admin/Install/db.json
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
{
|
||||
"helper_template": {
|
||||
"name": "helper_template",
|
||||
"fields": {
|
||||
"helper_template_id": {
|
||||
"name": "helper_template_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"helper_template_status": {
|
||||
"name": "helper_template_status",
|
||||
"type": "TINYINT",
|
||||
"null": false
|
||||
},
|
||||
"helper_template_title": {
|
||||
"name": "helper_template_title",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"helper_template_data": {
|
||||
"name": "helper_template_data",
|
||||
"type": "TINYINT",
|
||||
"null": false
|
||||
},
|
||||
"helper_template_standalone": {
|
||||
"name": "helper_template_standalone",
|
||||
"type": "TINYINT",
|
||||
"null": false
|
||||
},
|
||||
"helper_template_expected": {
|
||||
"name": "helper_template_expected",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"helper_template_desc": {
|
||||
"name": "helper_template_desc",
|
||||
"type": "TEXT",
|
||||
"null": false
|
||||
},
|
||||
"helper_template_desc_raw": {
|
||||
"name": "helper_template_desc_raw",
|
||||
"type": "TEXT",
|
||||
"null": false
|
||||
},
|
||||
"helper_template_media": {
|
||||
"name": "helper_template_media",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "media",
|
||||
"foreignKey": "media_id"
|
||||
},
|
||||
"helper_template_creator": {
|
||||
"name": "helper_template_creator",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "account",
|
||||
"foreignKey": "account_id"
|
||||
},
|
||||
"helper_template_created": {
|
||||
"name": "helper_template_created",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"helper_report": {
|
||||
"name": "helper_report",
|
||||
"fields": {
|
||||
"helper_report_id": {
|
||||
"name": "helper_report_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"helper_report_status": {
|
||||
"name": "helper_report_status",
|
||||
"type": "TINYINT",
|
||||
"null": false
|
||||
},
|
||||
"helper_report_title": {
|
||||
"name": "helper_report_title",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"helper_report_desc": {
|
||||
"name": "helper_report_desc",
|
||||
"type": "TEXT",
|
||||
"null": false
|
||||
},
|
||||
"helper_report_desc_raw": {
|
||||
"name": "helper_report_desc_raw",
|
||||
"type": "TEXT",
|
||||
"null": false
|
||||
},
|
||||
"helper_report_media": {
|
||||
"name": "helper_report_media",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "media",
|
||||
"foreignKey": "media_id"
|
||||
},
|
||||
"helper_report_template": {
|
||||
"name": "helper_report_template",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "helper_template",
|
||||
"foreignKey": "helper_template_id"
|
||||
},
|
||||
"helper_report_creator": {
|
||||
"name": "helper_report_creator",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "account",
|
||||
"foreignKey": "account_id"
|
||||
},
|
||||
"helper_report_created": {
|
||||
"name": "helper_report_created",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
29
Admin/Installer.php
Normal file
29
Admin/Installer.php
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Admin
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Admin;
|
||||
|
||||
use phpOMS\Module\InstallerAbstract;
|
||||
|
||||
/**
|
||||
* Installer class.
|
||||
*
|
||||
* @package Modules\Helper\Admin
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Installer extends InstallerAbstract
|
||||
{
|
||||
}
|
||||
42
Admin/Routes/Web/Api.php
Normal file
42
Admin/Routes/Web/Api.php
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
use Modules\Helper\Controller\ApiController;
|
||||
use Modules\Helper\Models\PermissionState;
|
||||
use phpOMS\Account\PermissionType;
|
||||
use phpOMS\Router\RouteVerb;
|
||||
|
||||
return [
|
||||
'^.*/api/helper/report/export.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\Helper\Controller\ApiController:apiHelperExport',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => ApiController::MODULE_NAME,
|
||||
'type' => PermissionType::READ,
|
||||
'state' => PermissionState::REPORT,
|
||||
],
|
||||
],
|
||||
],
|
||||
'^.*/api/helper/report/template.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\Helper\Controller\ApiController:apiTemplateCreate',
|
||||
'verb' => RouteVerb::SET,
|
||||
'permission' => [
|
||||
'module' => ApiController::MODULE_NAME,
|
||||
'type' => PermissionType::READ,
|
||||
'state' => PermissionState::TEMPLATE,
|
||||
],
|
||||
],
|
||||
],
|
||||
'^.*/api/helper/report/report.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\Helper\Controller\ApiController:apiReportCreate',
|
||||
'verb' => RouteVerb::SET,
|
||||
'permission' => [
|
||||
'module' => ApiController::MODULE_NAME,
|
||||
'type' => PermissionType::CREATE,
|
||||
'state' => PermissionState::REPORT,
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
71
Admin/Routes/Web/Backend.php
Normal file
71
Admin/Routes/Web/Backend.php
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
|
||||
use Modules\Helper\Controller\BackendController;
|
||||
use Modules\Helper\Models\PermissionState;
|
||||
use phpOMS\Account\PermissionType;
|
||||
use phpOMS\Router\RouteVerb;
|
||||
|
||||
return [
|
||||
'^.*/backend/helper/template/create.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\Media\Controller\BackendController::setUpFileUploader',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => BackendController::MODULE_NAME,
|
||||
'type' => PermissionType::CREATE,
|
||||
'state' => PermissionState::TEMPLATE,
|
||||
],
|
||||
],
|
||||
[
|
||||
'dest' => '\Modules\Helper\Controller\BackendController:viewTemplateCreate',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => BackendController::MODULE_NAME,
|
||||
'type' => PermissionType::CREATE,
|
||||
'state' => PermissionState::TEMPLATE,
|
||||
],
|
||||
],
|
||||
],
|
||||
'^.*/backend/helper/report/create.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\Media\Controller\BackendController::setUpFileUploader',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => BackendController::MODULE_NAME,
|
||||
'type' => PermissionType::CREATE,
|
||||
'state' => PermissionState::REPORT,
|
||||
],
|
||||
],
|
||||
[
|
||||
'dest' => '\Modules\Helper\Controller\BackendController:viewReportCreate',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => BackendController::MODULE_NAME,
|
||||
'type' => PermissionType::CREATE,
|
||||
'state' => PermissionState::REPORT,
|
||||
],
|
||||
],
|
||||
],
|
||||
'^.*/backend/helper/list.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\Helper\Controller\BackendController:viewTemplateList',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => BackendController::MODULE_NAME,
|
||||
'type' => PermissionType::READ,
|
||||
'state' => PermissionState::REPORT,
|
||||
],
|
||||
],
|
||||
],
|
||||
'^.*/backend/helper/report/view.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\Helper\Controller\BackendController:viewHelperReport',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => BackendController::MODULE_NAME,
|
||||
'type' => PermissionType::READ,
|
||||
'state' => PermissionState::REPORT,
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
30
Admin/Status.php
Normal file
30
Admin/Status.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Admin
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Admin;
|
||||
|
||||
use phpOMS\Module\StatusAbstract;
|
||||
|
||||
/**
|
||||
* Navigation class.
|
||||
*
|
||||
* @package Modules\Helper\Admin
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Status extends StatusAbstract
|
||||
{
|
||||
|
||||
}
|
||||
29
Admin/Uninstaller.php
Normal file
29
Admin/Uninstaller.php
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Admin
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Admin;
|
||||
|
||||
use phpOMS\Module\UninstallerAbstract;
|
||||
|
||||
/**
|
||||
* Uninstaller class.
|
||||
*
|
||||
* @package Modules\Helper\Admin
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Uninstaller extends UninstallerAbstract
|
||||
{
|
||||
}
|
||||
30
Admin/Updater.php
Normal file
30
Admin/Updater.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Admin
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Admin;
|
||||
|
||||
use phpOMS\Module\UpdaterAbstract;
|
||||
|
||||
/**
|
||||
* Updater class.
|
||||
*
|
||||
* @package Modules\Helper\Admin
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Updater extends UpdaterAbstract
|
||||
{
|
||||
|
||||
}
|
||||
270
Controller/ApiController.php
Normal file
270
Controller/ApiController.php
Normal file
|
|
@ -0,0 +1,270 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Controller;
|
||||
|
||||
use Modules\Media\Models\Collection;
|
||||
use Modules\Media\Models\CollectionMapper;
|
||||
use Modules\Media\Models\MediaMapper;
|
||||
use Modules\Helper\Models\PermissionState;
|
||||
use Modules\Helper\Models\Report;
|
||||
use Modules\Helper\Models\ReportMapper;
|
||||
use Modules\Helper\Models\Template;
|
||||
use Modules\Helper\Models\TemplateDataType;
|
||||
use Modules\Helper\Models\TemplateMapper;
|
||||
|
||||
use phpOMS\Account\PermissionType;
|
||||
use phpOMS\Message\Http\RequestStatusCode;
|
||||
use phpOMS\Message\NotificationLevel;
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
use phpOMS\System\MimeType;
|
||||
use phpOMS\Utils\IO\Csv\CsvDatabaseMapper;
|
||||
use phpOMS\Utils\IO\Excel\ExcelDatabaseMapper;
|
||||
use phpOMS\Utils\Parser\Markdown\Markdown;
|
||||
use phpOMS\Utils\StringUtils;
|
||||
use phpOMS\Views\View;
|
||||
|
||||
/**
|
||||
* TODO: Implement auto sqlite generator on upload
|
||||
*/
|
||||
|
||||
/**
|
||||
* Helper controller class.
|
||||
*
|
||||
* @package Modules\Helper
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.
|
||||
* @link http://orange-managementcom
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class ApiController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiHelperSingle(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
// todo: check permission here
|
||||
|
||||
$template = TemplateMapper::get((int) $request->getData('id'));
|
||||
$accountId = $request->getHeader()->getAccount();
|
||||
|
||||
if ($template->getCreatedBy()->getId() !== $accountId // todo: also check if report createdBy
|
||||
&& !$this->app->accountManager->get($accountId)->hasPermission(
|
||||
PermissionType::READ, $this->app->orgId, null, self::MODULE_NAME, PermissionState::REPORT, $template->getId())
|
||||
) {
|
||||
$response->getHeader()->setStatusCode(RequestStatusCode::R_403);
|
||||
}
|
||||
|
||||
switch ($request->getData('type')) {
|
||||
case 'pdf':
|
||||
$response->getHeader()->set('Content-Type', MimeType::M_PDF, true);
|
||||
break;
|
||||
case 'csv':
|
||||
$response->getHeader()->set('Content-Type', MimeType::M_CONF, true);
|
||||
break;
|
||||
case 'xlsx':
|
||||
$response->getHeader()->set(
|
||||
'Content-disposition', 'attachment; filename="'
|
||||
. ((string) $request->getData('id')) . '.'
|
||||
. ((string) $request->getData('type'))
|
||||
. '"'
|
||||
, true);
|
||||
$response->getHeader()->set('Content-Type', MimeType::M_XLSX, true);
|
||||
|
||||
$response->getHeader()->set('Content-Type', MimeType::M_XLSX, true);
|
||||
break;
|
||||
case 'json':
|
||||
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
|
||||
break;
|
||||
default:
|
||||
// TODO handle bad request
|
||||
}
|
||||
|
||||
if ($request->getData('download') !== null) {
|
||||
$response->getHeader()->set('Content-Type', MimeType::M_BIN, true);
|
||||
$response->getHeader()->set('Content-Transfer-Encoding', 'Binary', true);
|
||||
$response->getHeader()->set(
|
||||
'Content-disposition', 'attachment; filename="'
|
||||
. ((string) $request->getData('id')) . '.'
|
||||
. ((string) $request->getData('type'))
|
||||
. '"'
|
||||
, true);
|
||||
}
|
||||
|
||||
/** @var array $reportLanguage */
|
||||
/** @noinspection PhpIncludeInspection */
|
||||
include_once __DIR__ . '/Templates/' . $request->getData('id') . '/' . $request->getData('id') . '.lang.php';
|
||||
|
||||
$exportView = new View($this->app, $request, $response);
|
||||
$exportView->addData('lang', $reportLanguage[$this->app->accountManager->get($request->getHeader()->getAccount())->getL11n()->getLanguage()]);
|
||||
$exportView->setTemplate(
|
||||
'/Modules/Helper/Templates/'
|
||||
. ((string) $request->getData('id')) . '/'
|
||||
. ((string) $request->getData('id')) . '.'
|
||||
. ((string) $request->getData('type'))
|
||||
);
|
||||
$response->set('export', $exportView->render());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiTemplateCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
$collectionId = $this->createMediaCollectionFromRequest($request);
|
||||
$template = $this->createTemplateFromRequest($request, $collectionId);
|
||||
|
||||
$this->createModel($request, $template, TemplateMapper::class, 'template');
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Template', 'Template successfully created', $template);
|
||||
}
|
||||
|
||||
private function createMediaCollectionFromRequest(RequestAbstract $request) : int
|
||||
{
|
||||
if ($request->getData('media-list') === null) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
$files = \json_decode((string) $request->getData('media-list'), true);
|
||||
// TODO: make sure this user has permissions for provided files
|
||||
|
||||
/* Create collection */
|
||||
$mediaCollection = new Collection();
|
||||
$mediaCollection->setName((string) ($request->getData('name') ?? 'Empty'));
|
||||
$mediaCollection->setDescription(Markdown::parse((string) ($request->getData('description') ?? '')));
|
||||
$mediaCollection->setDescriptionRaw((string) ($request->getData('description') ?? ''));
|
||||
$mediaCollection->setCreatedBy($request->getHeader()->getAccount());
|
||||
$mediaCollection->setSources($files);
|
||||
|
||||
return (int) CollectionMapper::create($mediaCollection);
|
||||
}
|
||||
|
||||
private function createTemplateFromRequest(RequestAbstract $request, int $collectionId) : Template
|
||||
{
|
||||
$expected = $request->getData('expected');
|
||||
|
||||
$helperTemplate = new Template();
|
||||
$helperTemplate->setName($request->getData('name') ?? 'Empty');
|
||||
$helperTemplate->setDescription(Markdown::parse((string) ($request->getData('description') ?? '')));
|
||||
$helperTemplate->setDescriptionRaw((string) ($request->getData('description') ?? ''));
|
||||
|
||||
if ($collectionId > 0) {
|
||||
$helperTemplate->setSource((int) $collectionId);
|
||||
}
|
||||
|
||||
$helperTemplate->setStandalone((bool) $request->getData('standalone') ?? false);
|
||||
$helperTemplate->setExpected(!empty($expected) ? \json_decode($expected, true) : []);
|
||||
$helperTemplate->setCreatedBy($request->getHeader()->getAccount());
|
||||
$helperTemplate->setDatatype((int) ($request->getData('datatype') ?? TemplateDataType::OTHER));
|
||||
|
||||
return $helperTemplate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiReportCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
// todo: check permission here
|
||||
|
||||
$this->handleTemplateDatabaseFromRequest($request);
|
||||
$collectionId = $this->createMediaCollectionFromRequest($request);
|
||||
|
||||
$report = $this->createReportFromRequest($request, $response, $collectionId);
|
||||
$this->createModel($request, $report, ReportMapper::class, 'report');
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Report', 'Report successfully created', $report);
|
||||
}
|
||||
|
||||
private function createReportFromRequest(RequestAbstract $request, ResponseAbstract $response, int $collectionId) : Report
|
||||
{
|
||||
$helperReport = new Report();
|
||||
$helperReport->setTitle((string) ($request->getData('name')));
|
||||
$helperReport->setSource((int) $collectionId);
|
||||
$helperReport->setTemplate((int) $request->getData('template'));
|
||||
$helperReport->setCreatedBy($request->getHeader()->getAccount());
|
||||
|
||||
return $helperReport;
|
||||
}
|
||||
|
||||
private function handleTemplateDatabaseFromRequest(RequestAbstract $request) : void
|
||||
{
|
||||
$files = \json_decode((string) ($request->getData('files')));
|
||||
|
||||
// TODO: make sure user has permission for files
|
||||
// TODO: make sure user has permission for template
|
||||
|
||||
/* Init Template */
|
||||
$template = TemplateMapper::get((int) $request->getData('template'));
|
||||
|
||||
if ($template->getDatatype() === TemplateDataType::GLOBAL_DB) {
|
||||
$templateFiles = MediaMapper::get($template->getSource());
|
||||
|
||||
foreach ($templateFiles as $templateFile) {
|
||||
$dbFile = MediaMapper::get($templateFile);
|
||||
|
||||
// Found centralized db
|
||||
if ($dbFile->getExtension() === '.sqlite') {
|
||||
$this->app->dbPool->create('helper_1', ['db' => 'sqlite', 'path' => $dbFile->getPath()]);
|
||||
$csvDbMapper = new CsvDatabaseMapper($this->app->dbPool->get('helper_1'));
|
||||
$excelDbMapper = new ExcelDatabaseMapper($this->app->dbPool->get('helper_1'));
|
||||
$csvDbMapper->autoIdentifyCsvSettings(true);
|
||||
|
||||
foreach ($files as $file) {
|
||||
$mediaFile = MediaMapper::get($file);
|
||||
|
||||
if (StringUtils::endsWith($mediaFile->getFilename(), '.db') && $mediaFile->getExtension() === '.csv') {
|
||||
$csvDbMapper->addSource($mediaFile->getPath());
|
||||
} elseif (StringUtils::endsWith($mediaFile->getFilename(), '.db') && ($mediaFile->getExtension() === '.xls' || $mediaFile->getExtension() === '.xlsx')) {
|
||||
$excelDbMapper->addSource($mediaFile->getPath());
|
||||
}
|
||||
}
|
||||
|
||||
$csvDbMapper->insert();
|
||||
$excelDbMapper->insert();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
229
Controller/BackendController.php
Normal file
229
Controller/BackendController.php
Normal file
|
|
@ -0,0 +1,229 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Controller;
|
||||
|
||||
use Modules\Media\Models\Media;
|
||||
use Modules\Media\Theme\Backend\Components\Upload\BaseView;
|
||||
use Modules\Helper\Models\NullReport;
|
||||
use Modules\Helper\Models\PermissionState;
|
||||
use Modules\Helper\Models\Report;
|
||||
use Modules\Helper\Models\ReportMapper;
|
||||
use Modules\Helper\Models\Template;
|
||||
use Modules\Helper\Models\TemplateMapper;
|
||||
|
||||
use phpOMS\Account\PermissionType;
|
||||
use phpOMS\Asset\AssetType;
|
||||
use phpOMS\DataStorage\Database\Query\Builder;
|
||||
use phpOMS\Message\Http\RequestStatusCode;
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
use phpOMS\Model\Html\Head;
|
||||
use phpOMS\Utils\StringUtils;
|
||||
use phpOMS\Views\View;
|
||||
|
||||
/**
|
||||
* TODO: Implement auto sqlite generator on upload
|
||||
*/
|
||||
|
||||
/**
|
||||
* Helper controller class.
|
||||
*
|
||||
* @package Modules\Helper
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.
|
||||
* @link http://orange-managementcom
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class BackendController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return \Serializable
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function viewTemplateList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
|
||||
{
|
||||
$view = new View($this->app, $request, $response);
|
||||
|
||||
$view->setTemplate('/Modules/Helper/Theme/Backend/helper-list');
|
||||
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002701001, $request, $response));
|
||||
|
||||
$reports = TemplateMapper::getNewest(25);
|
||||
$view->addData('reports', $reports);
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return \Serializable
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function viewTemplateCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
|
||||
{
|
||||
$view = new View($this->app, $request, $response);
|
||||
|
||||
$view->setTemplate('/Modules/Helper/Theme/Backend/helper-template-create');
|
||||
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002701001, $request, $response));
|
||||
$view->addData('media-upload', new BaseView($this->app, $request, $response));
|
||||
|
||||
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response);
|
||||
$view->addData('editor', $editor);
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return \Serializable
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function viewReportCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
|
||||
{
|
||||
$view = new View($this->app, $request, $response);
|
||||
|
||||
$view->setTemplate('/Modules/Helper/Theme/Backend/helper-create');
|
||||
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002701001, $request, $response));
|
||||
$view->addData('media-upload', new BaseView($this->app, $request, $response));
|
||||
|
||||
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response);
|
||||
$view->addData('editor', $editor);
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return \Serializable
|
||||
*
|
||||
* @throws \Exception
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function viewHelperReport(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
|
||||
{
|
||||
$view = new View($this->app, $request, $response);
|
||||
//$file = preg_replace('([^\w\s\d\-_~,;:\.\[\]\(\).])', '', $template->getName());
|
||||
|
||||
$template = TemplateMapper::get((int) $request->getData('id'));
|
||||
$accountId = $request->getHeader()->getAccount();
|
||||
|
||||
if ($template->getCreatedBy()->getId() !== $accountId // todo: also check if report createdBy
|
||||
&& !$this->app->accountManager->get($accountId)->hasPermission(
|
||||
PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::REPORT, $template->getId())
|
||||
) {
|
||||
$view->setTemplate('/Web/Backend/Error/403_inline');
|
||||
$response->getHeader()->setStatusCode(RequestStatusCode::R_403);
|
||||
return $view;
|
||||
}
|
||||
|
||||
$view->setTemplate('/Modules/Helper/Theme/Backend/helper-single');
|
||||
|
||||
$tcoll = [];
|
||||
$files = $template->getSource()->getSources();
|
||||
|
||||
foreach ($files as $tMedia) {
|
||||
$lowerPath = strtolower($tMedia->getPath());
|
||||
|
||||
if (StringUtils::endsWith($lowerPath, '.lang.php')) {
|
||||
$tcoll['lang'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, 'worker.php')) {
|
||||
$tcoll['worker'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.xlsx.php') || StringUtils::endsWith($lowerPath, '.xls.php')) {
|
||||
$tcoll['excel'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.docx.php') || StringUtils::endsWith($lowerPath, '.doc.php')) {
|
||||
$tcoll['word'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.pptx.php') || StringUtils::endsWith($lowerPath, '.ppt.php')) {
|
||||
$tcoll['powerpoint'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.pdf.php')) {
|
||||
$tcoll['pdf'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.csv.php')) {
|
||||
$tcoll['csv'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.json.php')) {
|
||||
$tcoll['json'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.tpl.php')) {
|
||||
$tcoll['template'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.css')) {
|
||||
$tcoll['css'] = $tMedia;
|
||||
|
||||
/** @var Head $head */
|
||||
$head = $response->get('Content')->getData('head');
|
||||
$head->addAsset(AssetType::CSS, $request->getUri()->getBase() . $tMedia->getPath());
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.js')) {
|
||||
$tcoll['js'] = $tMedia;
|
||||
} elseif (StringUtils::endsWith($lowerPath, '.sqlite') || StringUtils::endsWith($lowerPath, '.db')) {
|
||||
$tcoll['db'][] = $tMedia;
|
||||
} else {
|
||||
// Do nothing; only the creator knows how to deal with this type of file :)
|
||||
}
|
||||
}
|
||||
|
||||
if (!$template->isStandalone()) {
|
||||
if (!isset($tcoll['template'])) {
|
||||
throw new \Exception('No template file detected.');
|
||||
}
|
||||
|
||||
$report = ReportMapper::getNewest(1,
|
||||
(new Builder($this->app->dbPool->get()))->where('helper_report.helper_report_template', '=', $template->getId())
|
||||
);
|
||||
|
||||
$rcoll = [];
|
||||
$report = end($report);
|
||||
$report = $report === false ? new NullReport() : $report;
|
||||
|
||||
if (!($report instanceof NullReport)) {
|
||||
/** @var Media[] $files */
|
||||
$files = $report->getSource()->getSources();
|
||||
|
||||
foreach ($files as $media) {
|
||||
$rcoll[$media->getName() . '.' . $media->getExtension()] = $media;
|
||||
}
|
||||
}
|
||||
|
||||
$view->addData('report', $report);
|
||||
$view->addData('rcoll', $rcoll);
|
||||
}
|
||||
|
||||
$view->addData('tcoll', $tcoll);
|
||||
$view->addData('lang', $request->getData('lang') ?? $request->getHeader()->getL11n()->getLanguage());
|
||||
$view->addData('template', $template);
|
||||
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002701001, $request, $response));
|
||||
|
||||
return $view;
|
||||
}
|
||||
}
|
||||
86
Controller/Controller.php
Normal file
86
Controller/Controller.php
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Controller;
|
||||
|
||||
use phpOMS\Module\ModuleAbstract;
|
||||
use phpOMS\Module\WebInterface;
|
||||
|
||||
/**
|
||||
* TODO: Implement auto sqlite generator on upload
|
||||
*/
|
||||
|
||||
/**
|
||||
* Helper controller class.
|
||||
*
|
||||
* @package Modules\Helper
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.
|
||||
* @link http://orange-managementcom
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Controller extends ModuleAbstract implements WebInterface
|
||||
{
|
||||
|
||||
/**
|
||||
* Module path.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const MODULE_PATH = __DIR__ . '/../';
|
||||
|
||||
/**
|
||||
* Module version.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const MODULE_VERSION = '1.0.0';
|
||||
|
||||
/**
|
||||
* Module name.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const MODULE_NAME = 'Helper';
|
||||
|
||||
/**
|
||||
* Module id.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const MODULE_ID = 1002700000;
|
||||
|
||||
/**
|
||||
* Providing.
|
||||
*
|
||||
* @var string[]
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $providing = [];
|
||||
|
||||
/**
|
||||
* Dependencies.
|
||||
*
|
||||
* @var string[]
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $dependencies = [];
|
||||
}
|
||||
31
Models/HelperStatus.php
Normal file
31
Models/HelperStatus.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Models;
|
||||
|
||||
use phpOMS\Stdlib\Base\Enum;
|
||||
|
||||
/**
|
||||
* Helper status.
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
abstract class HelperStatus extends Enum
|
||||
{
|
||||
public const INACTIVE = 0;
|
||||
public const ACTIVE = 1;
|
||||
}
|
||||
27
Models/NullReport.php
Normal file
27
Models/NullReport.php
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Models;
|
||||
|
||||
/**
|
||||
* Report model.
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class NullReport extends Report
|
||||
{
|
||||
}
|
||||
27
Models/NullTemplate.php
Normal file
27
Models/NullTemplate.php
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Models;
|
||||
|
||||
/**
|
||||
* Report model.
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class NullTemplate extends Template
|
||||
{
|
||||
}
|
||||
31
Models/PermissionState.php
Normal file
31
Models/PermissionState.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Models;
|
||||
|
||||
use phpOMS\Stdlib\Base\Enum;
|
||||
|
||||
/**
|
||||
* Permision state enum.
|
||||
*
|
||||
* @package Modules\Helper
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
abstract class PermissionState extends Enum
|
||||
{
|
||||
public const TEMPLATE = 1;
|
||||
public const REPORT = 2;
|
||||
}
|
||||
300
Models/Report.php
Normal file
300
Models/Report.php
Normal file
|
|
@ -0,0 +1,300 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Models;
|
||||
|
||||
/**
|
||||
* Report model.
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Report implements \JsonSerializable
|
||||
{
|
||||
|
||||
/**
|
||||
* Report Id.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $id = 0;
|
||||
|
||||
/**
|
||||
* Report status.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $status = HelperStatus::INACTIVE;
|
||||
|
||||
/**
|
||||
* Report title.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $title = '';
|
||||
|
||||
/**
|
||||
* Report description.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $description = '';
|
||||
|
||||
/**
|
||||
* Report description.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $descriptionRaw = '';
|
||||
|
||||
/**
|
||||
* Report created at.
|
||||
*
|
||||
* @var \DateTime
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $createdAt = null;
|
||||
|
||||
/**
|
||||
* Report created by.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $createdBy = 0;
|
||||
|
||||
/**
|
||||
* Report template.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $template = 0;
|
||||
|
||||
/**
|
||||
* Report source.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $source = 0;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->createdAt = new \DateTime('now');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getId() : int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getStatus() : int
|
||||
{
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $status Report status
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setStatus(int $status) : void
|
||||
{
|
||||
$this->status = $status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getTitle() : string
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $title Title
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setTitle(string $title) : void
|
||||
{
|
||||
$this->title = $title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getDescription() : string
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $description Description
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setDescription(string $description) : void
|
||||
{
|
||||
$this->description = $description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getDescriptionRaw() : string
|
||||
{
|
||||
return $this->descriptionRaw;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $descriptionRaw Description
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setDescriptionRaw(string $descriptionRaw) : void
|
||||
{
|
||||
$this->descriptionRaw = $descriptionRaw;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DateTime
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getCreatedAt() : \DateTime
|
||||
{
|
||||
return $this->createdAt ?? new \DateTime('now');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getCreatedBy()
|
||||
{
|
||||
return $this->createdBy;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $creator Created by
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setCreatedBy($creator) : void
|
||||
{
|
||||
$this->createdBy = $creator;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getTemplate()
|
||||
{
|
||||
return $this->template;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $template Report template
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setTemplate($template) : void
|
||||
{
|
||||
$this->template = $template;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $source Report source
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setSource($source) : void
|
||||
{
|
||||
$this->source = $source;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getSource()
|
||||
{
|
||||
return $this->source;
|
||||
}
|
||||
|
||||
public function toArray() : array
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'createdBy' => $this->createdBy,
|
||||
'createdAt' => $this->createdAt->format('Y-m-d H:i:s'),
|
||||
'name' => $this->title,
|
||||
'description' => $this->description,
|
||||
'status' => $this->status,
|
||||
];
|
||||
}
|
||||
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return $this->toArray();
|
||||
}
|
||||
}
|
||||
88
Models/ReportMapper.php
Normal file
88
Models/ReportMapper.php
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Models;
|
||||
|
||||
use Modules\Admin\Models\AccountMapper;
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
|
||||
final class ReportMapper extends DataMapperAbstract
|
||||
{
|
||||
|
||||
/**
|
||||
* Columns.
|
||||
*
|
||||
* @var array<string, array<string, bool|string>>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $columns = [
|
||||
'helper_report_id' => ['name' => 'helper_report_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'helper_report_status' => ['name' => 'helper_report_status', 'type' => 'int', 'internal' => 'status'],
|
||||
'helper_report_title' => ['name' => 'helper_report_title', 'type' => 'string', 'internal' => 'title'],
|
||||
'helper_report_desc' => ['name' => 'helper_report_desc', 'type' => 'string', 'internal' => 'description'],
|
||||
'helper_report_desc_raw' => ['name' => 'helper_report_desc_raw', 'type' => 'string', 'internal' => 'descriptionRaw'],
|
||||
'helper_report_media' => ['name' => 'helper_report_media', 'type' => 'int', 'internal' => 'source'],
|
||||
'helper_report_template' => ['name' => 'helper_report_template', 'type' => 'int', 'internal' => 'template'],
|
||||
'helper_report_creator' => ['name' => 'helper_report_creator', 'type' => 'int', 'internal' => 'createdBy'],
|
||||
'helper_report_created' => ['name' => 'helper_report_created', 'type' => 'DateTime', 'internal' => 'createdAt'],
|
||||
];
|
||||
|
||||
/**
|
||||
* Has one relation.
|
||||
*
|
||||
* @var array<string, array<string, string>>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $ownsOne = [
|
||||
'source' => [
|
||||
'mapper' => \Modules\Media\Models\CollectionMapper::class,
|
||||
'src' => 'helper_report_media',
|
||||
],
|
||||
'template' => [
|
||||
'mapper' => \Modules\Helper\Models\TemplateMapper::class,
|
||||
'src' => 'helper_report_template',
|
||||
],
|
||||
];
|
||||
|
||||
protected static $belongsTo = [
|
||||
'createdBy' => [
|
||||
'mapper' => AccountMapper::class,
|
||||
'src' => 'helper_report_creator',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* Primary table.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $table = 'helper_report';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $primaryField = 'helper_report_id';
|
||||
|
||||
/**
|
||||
* Created at.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $createdAt = 'helper_report_created';
|
||||
}
|
||||
391
Models/Template.php
Normal file
391
Models/Template.php
Normal file
|
|
@ -0,0 +1,391 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Models;
|
||||
|
||||
/**
|
||||
* Template model.
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Template implements \JsonSerializable
|
||||
{
|
||||
|
||||
/**
|
||||
* Template Id.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $id = 0;
|
||||
|
||||
/**
|
||||
* Template status.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $status = HelperStatus::INACTIVE;
|
||||
|
||||
/**
|
||||
* Template data source.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $datatype = TemplateDataType::OTHER;
|
||||
|
||||
/**
|
||||
* Template doesn't need reports.
|
||||
*
|
||||
* @var bool
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $isStandalone = false;
|
||||
|
||||
/**
|
||||
* Template name.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $name = '';
|
||||
|
||||
/**
|
||||
* Template description.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $description = '';
|
||||
|
||||
/**
|
||||
* Template description.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $descriptionRaw = '';
|
||||
|
||||
/**
|
||||
* Template created at.
|
||||
*
|
||||
* @var \DateTime
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $createdAt = null;
|
||||
|
||||
/**
|
||||
* Template created by.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $createdBy = 0;
|
||||
|
||||
/**
|
||||
* Template source.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $source = 0;
|
||||
|
||||
/**
|
||||
* Expected files.
|
||||
*
|
||||
* @var array
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $expected = [];
|
||||
|
||||
/**
|
||||
* Reports.
|
||||
*
|
||||
* @var array
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $reports = [];
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->createdAt = new \DateTime('now');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getId() : int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getNewestReport() : Report
|
||||
{
|
||||
if (!empty($this->reports)) {
|
||||
return end($this->reports());
|
||||
}
|
||||
|
||||
return new NullReport();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name Template name
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setName(string $name) : void
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getName() : string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $description Template description
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setDescription(string $description) : void
|
||||
{
|
||||
$this->description = $description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getDescription() : string
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $description Template description
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setDescriptionRaw(string $description) : void
|
||||
{
|
||||
$this->descriptionRaw = $description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getDescriptionRaw() : string
|
||||
{
|
||||
return $this->descriptionRaw;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $source Source
|
||||
*
|
||||
* @return mixed
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setSource($source)
|
||||
{
|
||||
$this->source = $source;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getSource()
|
||||
{
|
||||
return $this->source;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $createdBy Creator
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setCreatedBy($createdBy) : void
|
||||
{
|
||||
$this->createdBy = $createdBy;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getCreatedBy()
|
||||
{
|
||||
return $this->createdBy;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DateTime
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getCreatedAt() : \DateTime
|
||||
{
|
||||
return $this->createdAt ?? new \DateTime('now');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $expected Expected files
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setExpected(array $expected) : void
|
||||
{
|
||||
$this->expected = $expected;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \array
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getExpected() : array
|
||||
{
|
||||
return $this->expected;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $expected Expected file
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function addExpected(string $expected) : void
|
||||
{
|
||||
$this->expected[] = $expected;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $status Template status (is active?)
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setStatus(int $status) : void
|
||||
{
|
||||
$this->status = $status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getStatus() : int
|
||||
{
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $datatype Template datatype source
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setDatatype(int $datatype) : void
|
||||
{
|
||||
$this->datatype = $datatype;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getDatatype() : int
|
||||
{
|
||||
return $this->datatype;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $isStandalone Is template standalone
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setStandalone(bool $isStandalone) : void
|
||||
{
|
||||
$this->isStandalone = $isStandalone;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function isStandalone() : bool
|
||||
{
|
||||
return $this->isStandalone;
|
||||
}
|
||||
|
||||
public function toArray() : array
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'createdBy' => $this->createdBy,
|
||||
'createdAt' => $this->createdAt->format('Y-m-d H:i:s'),
|
||||
'name' => $this->name,
|
||||
'description' => $this->description,
|
||||
'status' => $this->status,
|
||||
'datatype' => $this->datatype,
|
||||
'standalone' => $this->isStandalone,
|
||||
];
|
||||
}
|
||||
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return $this->toArray();
|
||||
}
|
||||
}
|
||||
34
Models/TemplateDataType.php
Normal file
34
Models/TemplateDataType.php
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Models;
|
||||
|
||||
use phpOMS\Stdlib\Base\Enum;
|
||||
|
||||
/**
|
||||
* Helper status.
|
||||
*
|
||||
* @package Modules\Helper\Models
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
abstract class TemplateDataType extends Enum
|
||||
{
|
||||
public const OTHER = 0;
|
||||
|
||||
public const GLOBAL_DB = 1;
|
||||
|
||||
public const GLOBAL_FILE = 2;
|
||||
}
|
||||
99
Models/TemplateMapper.php
Normal file
99
Models/TemplateMapper.php
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Models;
|
||||
|
||||
use Modules\Admin\Models\AccountMapper;
|
||||
use Modules\Media\Models\CollectionMapper;
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
|
||||
final class TemplateMapper extends DataMapperAbstract
|
||||
{
|
||||
|
||||
/**
|
||||
* Columns.
|
||||
*
|
||||
* @var array<string, array<string, bool|string>>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $columns = [
|
||||
'helper_template_id' => ['name' => 'helper_template_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'helper_template_status' => ['name' => 'helper_template_status', 'type' => 'int', 'internal' => 'status'],
|
||||
'helper_template_title' => ['name' => 'helper_template_title', 'type' => 'string', 'internal' => 'name'],
|
||||
'helper_template_data' => ['name' => 'helper_template_data', 'type' => 'int', 'internal' => 'datatype'],
|
||||
'helper_template_standalone' => ['name' => 'helper_template_standalone', 'type' => 'bool', 'internal' => 'isStandalone'],
|
||||
'helper_template_expected' => ['name' => 'helper_template_expected', 'type' => 'Json', 'internal' => 'expected'],
|
||||
'helper_template_desc' => ['name' => 'helper_template_desc', 'type' => 'string', 'internal' => 'description'],
|
||||
'helper_template_desc_raw' => ['name' => 'helper_template_desc_raw', 'type' => 'string', 'internal' => 'descriptionRaw'],
|
||||
'helper_template_media' => ['name' => 'helper_template_media', 'type' => 'int', 'internal' => 'source'],
|
||||
'helper_template_creator' => ['name' => 'helper_template_creator', 'type' => 'int',
|
||||
'internal' => 'createdBy'],
|
||||
'helper_template_created' => ['name' => 'helper_template_created', 'type' => 'DateTime',
|
||||
'internal' => 'createdAt'],
|
||||
];
|
||||
|
||||
/**
|
||||
* Has one relation.
|
||||
*
|
||||
* @var array<string, array<string, string>>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $ownsOne = [
|
||||
'source' => [
|
||||
'mapper' => CollectionMapper::class,
|
||||
'src' => 'helper_template_media',
|
||||
],
|
||||
];
|
||||
|
||||
protected static $belongsTo = [
|
||||
'createdBy' => [
|
||||
'mapper' => AccountMapper::class,
|
||||
'src' => 'helper_template_creator',
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
protected static $hasMany = [
|
||||
'reports' => [
|
||||
'mapper' => ReportMapper::class,
|
||||
'table' => 'helper_report',
|
||||
'dst' => 'helper_report_template',
|
||||
'src' => null,
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* Primary table.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $table = 'helper_template';
|
||||
|
||||
/**
|
||||
* Created at.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $createdAt = 'helper_template_created';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $primaryField = 'helper_template_id';
|
||||
}
|
||||
11
README.md
Normal file
11
README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Helepr
|
||||
|
||||
The Data Evaluation module generates reporting based on provided data. The data can come from the database or csv files.
|
||||
|
||||
## Helepr Files ##
|
||||
|
||||
1. XYZ.pdf.tpl.php
|
||||
2. XYZ.tpl.php
|
||||
3. XYZ.lang.php
|
||||
4. XYZ.css
|
||||
5. XYZ.js
|
||||
20
Theme/Backend/Lang/Navigation.en.lang.php
Normal file
20
Theme/Backend/Lang/Navigation.en.lang.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
return ['Navigation' => [
|
||||
'Create' => 'Create',
|
||||
'CreateTemplate' => 'Create Template',
|
||||
'CreateReport' => 'Create Report',
|
||||
'List' => 'List',
|
||||
'Helper' => 'Helper',
|
||||
'Reporting' => 'Reporting',
|
||||
]];
|
||||
14
Theme/Backend/Lang/api.en.lang.php
Normal file
14
Theme/Backend/Lang/api.en.lang.php
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
$MODLANG[27] = [
|
||||
];
|
||||
53
Theme/Backend/Lang/en.lang.php
Normal file
53
Theme/Backend/Lang/en.lang.php
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
return ['Helper' => [
|
||||
'Add' => 'Add',
|
||||
'CentralizedDB' => 'Centralized DB',
|
||||
'CentralizedFiles' => 'Centralized Files',
|
||||
'Created' => 'Created',
|
||||
'Creator' => 'Creator',
|
||||
'CreatedBy' => 'Created By',
|
||||
'Data' => 'Data',
|
||||
'Database' => 'Database',
|
||||
'Dataset' => 'Dataset',
|
||||
'Datasets' => 'Datasets',
|
||||
'Description' => 'Description',
|
||||
'Expected' => 'Expected',
|
||||
'Export' => 'Export',
|
||||
'Edit' => 'Edit',
|
||||
'Files' => 'Files',
|
||||
'FileNames' => 'File Names',
|
||||
'IndividualDB' => 'Individual DB',
|
||||
'Info' => 'Info',
|
||||
'Language' => 'Language',
|
||||
'Media' => 'Media',
|
||||
'MediaDirectory' => 'Media Directory',
|
||||
'Modified' => 'Modified',
|
||||
'Name' => 'Name',
|
||||
'New' => 'New',
|
||||
'Other' => 'Other',
|
||||
'Overview' => 'Overview',
|
||||
'Permission' => 'Permission',
|
||||
'Helper' => 'Helper',
|
||||
'Reports' => 'Reports',
|
||||
'Report' => 'Report',
|
||||
'Select' => 'Select',
|
||||
'Storage' => 'Storage',
|
||||
'Source' => 'Source',
|
||||
'Sources' => 'Sources',
|
||||
'Standalone' => 'Standalone',
|
||||
'Template' => 'Template',
|
||||
'Title' => 'Title',
|
||||
'Type' => 'Type',
|
||||
'Updated' => 'Updated',
|
||||
]];
|
||||
3
Theme/Backend/dashboard-helper.tpl.php
Normal file
3
Theme/Backend/dashboard-helper.tpl.php
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<section>
|
||||
Reporter
|
||||
</section>
|
||||
46
Theme/Backend/helper-create.tpl.php
Normal file
46
Theme/Backend/helper-create.tpl.php
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
$templateList = \Modules\Helper\Models\TemplateMapper::getAll();
|
||||
|
||||
echo $this->getData('nav')->render(); ?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<section class="box wf-100">
|
||||
<header><h1><?= $this->getHtml('Report'); ?></h1></header>
|
||||
<div class="inner">
|
||||
<form id="helper-report-create" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/helper/report/report'); ?>" method="post">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr><td><label for="iTitle"><?= $this->getHtml('Title'); ?></label>
|
||||
<tr><td><input id="iTitle" name="name" type="text" placeholder=" P&L Reporting 2015 December v1.0" required>
|
||||
<tr><td><label for="iTemplate"><?= $this->getHtml('Template'); ?></label>
|
||||
<tr><td><select id="iTemplate" name="template">
|
||||
<?php foreach ($templateList as $key => $value) : ?>
|
||||
<option value="<?= $this->printHtml($key); ?>"><?= $this->printHtml($value->getName()); ?>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<tr><td><input type="submit" id="iReportCreateButton" name="reportCreateButton" value="<?= $this->getHtml('Create', 0, 0); ?>">
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<?= $this->getData('media-upload')->render('helper-report-create'); ?>
|
||||
</div>
|
||||
</div>
|
||||
233
Theme/Backend/helper-edit.tpl.php
Normal file
233
Theme/Backend/helper-edit.tpl.php
Normal file
|
|
@ -0,0 +1,233 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
$tabView = new \Web\Views\Divider\TabularView($this->app, $this->request, $this->response);
|
||||
$tabView->setTemplate('/Web/Templates/Divider/Tabular');
|
||||
|
||||
echo $this->getData('nav')->render(); ?>
|
||||
|
||||
<div class="b-7" id="i3-2-1">
|
||||
<div class="b b-5 c3-2 c3" id="i3-2-5">
|
||||
<div class="bc-1">
|
||||
<ul class="l-1">
|
||||
<li>
|
||||
<a href="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/backend/helper/single?{?}&id=' . $this->getData('name')); ?>"
|
||||
class="button"><?= $this->getHtml('Report') ?></a>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-6">
|
||||
<?php
|
||||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
$overviwPanel = new \Web\Views\Panel\PanelView($this->app, $this->request, $this->response);
|
||||
$permissionPanel = clone $overviwPanel;
|
||||
|
||||
$overviwPanel->setTitle($this->getHtml('Create'));
|
||||
$permissionPanel->setTitle($this->getHtml('Permission'));
|
||||
|
||||
$this->addView('createFormPanel', $overviwPanel);
|
||||
$this->getView('createFormPanel')->setTemplate('/Web/Templates/Panel/BoxHalf');
|
||||
|
||||
$this->addView('permissionFormPanel', $permissionPanel);
|
||||
$this->getView('permissionFormPanel')->setTemplate('/Web/Templates/Panel/BoxHalf');
|
||||
|
||||
/*
|
||||
* Overview
|
||||
*/
|
||||
|
||||
$formOverview = new \Web\Views\Form\FormView($this->app, $this->request, $this->response);
|
||||
$formOverview->setTemplate('/Web/Templates/Forms/FormFull');
|
||||
$formOverview->setSubmit('submit1', $this->getHtml('Edit'));
|
||||
$formOverview->setSubmit('submit2', $this->getHtml('Delete'));
|
||||
$formOverview->setAction($this->request->getUri()->getScheme() . '://' . $this->request->getUri()->getHost());
|
||||
$formOverview->setMethod(\phpOMS\Message\Http\RequestMethod::POST);
|
||||
|
||||
$formOverview->setElement(0, 0, [
|
||||
'type' => \phpOMS\Html\TagType::INPUT,
|
||||
'subtype' => 'text',
|
||||
'name' => 'rname',
|
||||
'label' => $this->getHtml('Name'),
|
||||
]);
|
||||
|
||||
$formOverview->setElement(1, 0, [
|
||||
'type' => \phpOMS\Html\TagType::INPUT,
|
||||
'subtype' => 'text',
|
||||
'name' => 'mdirectory',
|
||||
'label' => $this->getHtml('MediaDirectory'),
|
||||
'active' => false,
|
||||
]);
|
||||
|
||||
$formOverview->setElement(1, 1, [
|
||||
'type' => \phpOMS\Html\TagType::BUTTON,
|
||||
'content' => $this->getHtml('Select'),
|
||||
]);
|
||||
|
||||
$formOverview->setElement(2, 0, [
|
||||
'type' => \phpOMS\Html\TagType::INPUT,
|
||||
'subtype' => 'text',
|
||||
'name' => 'template',
|
||||
'label' => $this->getHtml('Template'),
|
||||
'active' => false,
|
||||
]);
|
||||
|
||||
$formOverview->setElement(2, 1, [
|
||||
'type' => \phpOMS\Html\TagType::BUTTON,
|
||||
'content' => $this->getHtml('Select'),
|
||||
]);
|
||||
|
||||
$this->getView('createFormPanel')->addView('form', $formOverview);
|
||||
|
||||
/*
|
||||
* Permission Add
|
||||
*/
|
||||
|
||||
$formPermissionAdd = new \Web\Views\Form\FormView($this->app, $this->request, $this->response);
|
||||
$formPermissionAdd->setTemplate('/Web/Templates/Forms/FormFull');
|
||||
$formPermissionAdd->setSubmit('submit1', $this->getHtml('Add', 0, 0));
|
||||
$formPermissionAdd->setAction($this->request->getUri()->getScheme() . '://' . $this->request->getUri()->getHost());
|
||||
$formPermissionAdd->setMethod(\phpOMS\Message\Http\RequestMethod::POST);
|
||||
|
||||
$formPermissionAdd->setElement(0, 0, [
|
||||
'type' => \phpOMS\Html\TagType::SELECT,
|
||||
'options' => [
|
||||
[
|
||||
'value' => 0,
|
||||
'content' => 'Group',
|
||||
],
|
||||
[
|
||||
'value' => 1,
|
||||
'content' => 'Account',
|
||||
],
|
||||
],
|
||||
'selected' => '',
|
||||
'label' => $this->getHtml('Type'),
|
||||
'name' => 'type',
|
||||
]);
|
||||
|
||||
$formPermissionAdd->setElement(1, 0, [
|
||||
'type' => \phpOMS\Html\TagType::INPUT,
|
||||
'subtype' => 'text',
|
||||
'name' => 'id',
|
||||
'label' => $this->getHtml('ID'),
|
||||
]);
|
||||
|
||||
$formPermissionAdd->setElement(2, 0, [
|
||||
'type' => \phpOMS\Html\TagType::INPUT,
|
||||
'subtype' => 'text',
|
||||
'name' => 'perm',
|
||||
'label' => $this->getHtml('Permission'),
|
||||
]);
|
||||
|
||||
$this->getView('permissionFormPanel')->addView('form', $formPermissionAdd);
|
||||
|
||||
/*
|
||||
* Permission List
|
||||
*/
|
||||
$permissionListView = new \Web\Views\Lists\ListView($this->app, $this->request, $this->response);
|
||||
$headerView = new \Web\Views\Lists\HeaderView($this->app, $this->request, $this->response);
|
||||
|
||||
$permissionListView->setTemplate('/Web/Templates/Lists/ListFull');
|
||||
$headerView->setTemplate('/Web/Templates/Lists/Header/HeaderTable');
|
||||
|
||||
/*
|
||||
* Header
|
||||
*/
|
||||
$headerView->setTitle($this->getHtml('Permission'));
|
||||
$headerView->setHeader([
|
||||
['title' => $this->getHtml('Type'), 'sortable' => true],
|
||||
['title' => $this->getHtml('Name'), 'sortable' => true, 'full' => true],
|
||||
['title' => $this->getHtml('Permission'), 'sortable' => true],
|
||||
]);
|
||||
|
||||
$permissionListView->addView('header', $headerView);
|
||||
$this->addView('permissionList', $permissionListView);
|
||||
|
||||
$tabView->addTab($this->getHtml('Overview'), $overviwPanel->render() . $permissionPanel->render() . $permissionListView->render(), 'Backend', 'overview');
|
||||
|
||||
/*
|
||||
* UI Logic
|
||||
*/
|
||||
$sourceList = new \Web\Views\Lists\ListView($this->app, $this->request, $this->response);
|
||||
$sourceListHeaderView = new \Web\Views\Lists\HeaderView($this->app, $this->request, $this->response);
|
||||
|
||||
$sourceList->setTemplate('/Web/Templates/Lists/ListFull');
|
||||
$sourceListHeaderView->setTemplate('/Web/Templates/Lists/Header/HeaderTable');
|
||||
|
||||
/*
|
||||
* Header
|
||||
*/
|
||||
$sourceListHeaderView->setTitle($this->getHtml('Sources'));
|
||||
$sourceListHeaderView->setHeader([
|
||||
['title' => $this->getHtml('ID'), 'sortable' => true],
|
||||
['title' => $this->getHtml('Name'), 'sortable' => true, 'full' => true],
|
||||
['title' => $this->getHtml('Created'), 'sortable' => true],
|
||||
['title' => $this->getHtml('CreatedBy'), 'sortable' => true],
|
||||
]);
|
||||
|
||||
$sourceList->setFreeze(3, 2);
|
||||
$sourceList->addView('header', $sourceListHeaderView);
|
||||
|
||||
$tabView->addTab($this->getHtml('Helper', 'Sources'), $sourceList->render(), 'Backend', 'sources');
|
||||
|
||||
/*
|
||||
* Create
|
||||
*/
|
||||
$createPanel = new \Web\Views\Panel\PanelView($this->app, $this->request, $this->response);
|
||||
$mediaPanel = clone $createPanel;
|
||||
|
||||
$createPanel->setTitle($this->getHtml('Create'));
|
||||
$mediaPanel->setTitle($this->getHtml('Media'));
|
||||
|
||||
$this->addView('createFormPanel', $createPanel);
|
||||
$this->getView('createFormPanel')->setTemplate('/Web/Templates/Panel/BoxHalf');
|
||||
|
||||
$this->addView('permissionFormPanel', $mediaPanel);
|
||||
$this->getView('permissionFormPanel')->setTemplate('/Web/Templates/Panel/BoxHalf');
|
||||
|
||||
$formCreateForm = new \Web\Views\Form\FormView($this->app, $this->request, $this->response);
|
||||
$formCreateForm->setTemplate('/Web/Templates/Forms/FormFull');
|
||||
$formCreateForm->setSubmit('submit1', $this->getHtml('Submit'));
|
||||
$formCreateForm->setAction($this->request->getUri()->getScheme() . '://' . $this->request->getUri()->getHost());
|
||||
$formCreateForm->setMethod(\phpOMS\Message\Http\RequestMethod::POST);
|
||||
|
||||
$formCreateForm->setElement(0, 0, [
|
||||
'type' => \phpOMS\Html\TagType::INPUT,
|
||||
'subtype' => 'text',
|
||||
'name' => 'rname',
|
||||
'label' => $this->getHtml('Name'),
|
||||
]);
|
||||
|
||||
$createPanel->addView('createform', $formCreateForm);
|
||||
|
||||
/*
|
||||
* Media Add
|
||||
*/
|
||||
|
||||
// TODO: add media upload drop panel
|
||||
|
||||
$tabView->addTab($this->getHtml('Helper', 'New'), $createPanel->render() . $mediaPanel->render(), 'Backend', 'new');
|
||||
?>
|
||||
<?= $this->printHtml($tabView->render()); ?>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
jsOMS.ready(function () {
|
||||
assetManager.load(Url + '/Modules/Media/JS', 'MediaUpload.js', 'js');
|
||||
});
|
||||
</script>
|
||||
58
Theme/Backend/helper-list.tpl.php
Normal file
58
Theme/Backend/helper-list.tpl.php
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
|
||||
|
||||
$templates = $this->getData('reports');
|
||||
$footerView = new \phpOMS\Views\PaginationView($this->app, $this->request, $this->response);
|
||||
$footerView->setTemplate('/Web/Templates/Lists/Footer/PaginationBig');
|
||||
|
||||
$footerView->setPages(count($templates) / 25);
|
||||
$footerView->setPage(1);
|
||||
$footerView->setResults(count($templates));
|
||||
|
||||
echo $this->getData('nav')->render(); ?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="box wf-100">
|
||||
<table class="table darkred">
|
||||
<caption><?= $this->getHtml('Reports') ?></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td><?= $this->getHtml('ID', 0, 0); ?>
|
||||
<td class="wf-100"><?= $this->getHtml('Name') ?>
|
||||
<td><?= $this->getHtml('Creator') ?>
|
||||
<td><?= $this->getHtml('Updated') ?>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<tbody>
|
||||
<?php if (count($templates) == 0) : ?>
|
||||
<tr class="empty">
|
||||
<td colspan="4"><?= $this->getHtml('Empty', 0, 0); ?>
|
||||
<?php endif; ?>
|
||||
<?php foreach ($templates as $key => $template) :
|
||||
$url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/helper/report/view?{?}&id=' . $template->getId()); ?>
|
||||
<tr data-href="<?= $url; ?>">
|
||||
<td data-label="<?= $this->getHtml('ID', 0, 0) ?>"><a href="<?= $url; ?>"><?= $this->printHtml($template->getId()); ?></a>
|
||||
<td data-label="<?= $this->getHtml('Name') ?>"><a href="<?= $url; ?>"><?= $this->printHtml($template->getName()); ?></a>
|
||||
<td data-label="<?= $this->getHtml('Creator') ?>"><a href="<?= $url; ?>"><?= $this->printHtml($template->getCreatedBy()->getName1()); ?></a>
|
||||
<td data-label="<?= $this->getHtml('Updated') ?>"><a href="<?= $url; ?>"><?= $this->printHtml($template->getCreatedAt()->format('Y-m-d')); ?></a>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
125
Theme/Backend/helper-single.tpl.php
Normal file
125
Theme/Backend/helper-single.tpl.php
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
// TODO: load template in new view that doesn't get access to anything otherwise user can interact with app in bad ways
|
||||
$tcoll = $this->getData('tcoll');
|
||||
$rcoll = $this->getData('rcoll');
|
||||
$cLang = $this->getData('lang');
|
||||
$template = $this->getData('template');
|
||||
$report = $this->getData('report');
|
||||
|
||||
/** @noinspection PhpIncludeInspection */
|
||||
$reportLanguage = include __DIR__ . '/../../../' . \ltrim($tcoll['lang']->getPath(), '/');
|
||||
$lang = $reportLanguage[$cLang];
|
||||
|
||||
echo $this->getData('nav')->render(); ?>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-9">
|
||||
<div class="wf-100">
|
||||
<?php /** @noinspection PhpIncludeInspection */
|
||||
include __DIR__ . '/../../../' . \ltrim($tcoll['template']->getPath(), '/'); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-3">
|
||||
<section class="box wf-100">
|
||||
<header><h1><?= $this->getHtml('Reports') ?></h1></header>
|
||||
|
||||
<div class="inner">
|
||||
<form action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/helper/template'); ?>" method="post">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><label for="iLang"><?= $this->getHtml('Language'); ?></label>
|
||||
<tr>
|
||||
<td><select id="iLang" name="lang" data-action='[{"listener": "change", "action": [{"key": 1, "type": "redirect", "uri": "{%}&lang={#iLang}", "target": "self"}]}]'>
|
||||
<?php foreach ($reportLanguage as $key => $langauge) : ?>
|
||||
<option value="<?= $this->printHtml($key); ?>"<?= $this->printHtml($key === $cLang ? ' selected' : ''); ?>><?= $this->printHtml($langauge[':language'] ); ?>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php if (!$template->isStandalone()) : ?><tr>
|
||||
<td><label for="iReport"><?= $this->getHtml('Report'); ?></label>
|
||||
<tr>
|
||||
<td><select id="iReport" name="report">
|
||||
</select>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="box wf-100">
|
||||
<header><h1><?= $this->getHtml('Export') ?></h1></header>
|
||||
|
||||
<div class="inner">
|
||||
<form action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/helper/template'); ?>" method="post">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><label for="iExport"><?= $this->getHtml('Export'); ?></label>
|
||||
<tr>
|
||||
<td><select id="iExport" name="export-type">
|
||||
<option value="select" disabled><?= $this->getHtml('Select'); ?>
|
||||
<option value="excel"<?= $this->printHtml((!isset($tcoll['excel'])) ? ' disabled' : ''); ?>>Excel
|
||||
<option value="pdf"<?= $this->printHtml((!isset($tcoll['pdf'])) ? ' disabled' : ''); ?>>Pdf
|
||||
<option value="doc"<?= $this->printHtml((!isset($tcoll['word'])) ? ' disabled' : ''); ?>>Word
|
||||
<option value="ppt"<?= $this->printHtml((!isset($tcoll['powerpoint'])) ? ' disabled' : ''); ?>>Powerpoint
|
||||
<option value="csv"<?= $this->printHtml((!isset($tcoll['csv'])) ? ' disabled' : ''); ?>>Csv
|
||||
<option value="json"<?= $this->printHtml((!isset($tcoll['json'])) ? ' disabled' : ''); ?>>Json
|
||||
|
||||
</select>
|
||||
<tr>
|
||||
<td><input type="button" value="<?= $this->getHtml('Export'); ?>"
|
||||
data-ropen="/{#lang}/api/helper/export.php?{type=#iExport}{lang=#iLang}{QUERY}">
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="box wf-100">
|
||||
<header><h1><?= $this->getHtml('Info') ?></h1></header>
|
||||
|
||||
<div class="inner">
|
||||
<table class="list wf-100">
|
||||
<tbody>
|
||||
<?php if (!$template->isStandalone()) : ?>
|
||||
<tr>
|
||||
<th colspan="2"><?= $this->getHtml('Report') ?>
|
||||
<tr>
|
||||
<td><?= $this->getHtml('Name'); ?>
|
||||
<td><?= $this->printHtml($report->getTitle()); ?>
|
||||
<tr>
|
||||
<td><?= $this->getHtml('Creator'); ?>
|
||||
<td><?= $this->printHtml($report->getCreatedBy()->getName1()); ?>
|
||||
<tr>
|
||||
<td><?= $this->getHtml('Created'); ?>
|
||||
<td><?= $report->getCreatedAt()->format('Y-m-d'); ?>
|
||||
<?php endif; ?>
|
||||
<tr>
|
||||
<th colspan="2"><?= $this->getHtml('Template') ?>
|
||||
<tr>
|
||||
<td><?= $this->getHtml('Name'); ?>
|
||||
<td><?= $this->printHtml($template->getName()); ?>
|
||||
<tr>
|
||||
<td><?= $this->getHtml('Creator'); ?>
|
||||
<td><?= $this->printHtml($template->getCreatedBy()->getName1()); ?>
|
||||
<tr>
|
||||
<td><?= $this->getHtml('Created'); ?>
|
||||
<td><?= $template->getCreatedAt()->format('Y-m-d'); ?>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
53
Theme/Backend/helper-template-create.tpl.php
Normal file
53
Theme/Backend/helper-template-create.tpl.php
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package TBD
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
|
||||
echo $this->getData('nav')->render(); ?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<section class="box wf-100">
|
||||
<header><h1><?= $this->getHtml('Template'); ?></h1></header>
|
||||
<div class="inner">
|
||||
<form id="helper-template-create" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/helper/report/template'); ?>" method="post">
|
||||
<table class="layout wf-100" style="table-layout: fixed">
|
||||
<tbody>
|
||||
<tr><td><label for="iTitle"><?= $this->getHtml('Title'); ?></label>
|
||||
<tr><td><input id="iTitle" name="name" type="text" placeholder=" P&L Reporting" required>
|
||||
<tr><td><label for="iDescription"><?= $this->getHtml('Description'); ?></label>
|
||||
<tr><td><?= $this->getData('editor')->render('report-editor'); ?>
|
||||
<tr><td><?= $this->getData('editor')->getData('text')->render('report-editor', 'description', 'helper-template-create'); ?>
|
||||
<tr><td>
|
||||
<span class="checkbox">
|
||||
<input id="iStandalone" name="standalone" type="checkbox" value="1">
|
||||
<label for="iStandalone"><?= $this->getHtml('Standalone'); ?></label>
|
||||
</span>
|
||||
<tr><td><label for="iExpected"><?= $this->getHtml('Expected'); ?></label>
|
||||
<tr><td>
|
||||
<div class="ipt-wrap">
|
||||
<div class="ipt-first"><input id="iExpected" type="text" placeholder=" file.csv"><input name="expected" type="hidden"></div>
|
||||
<div class="ipt-second"><button><?= $this->getHtml('Add', 0, 0); ?></button></div>
|
||||
</div>
|
||||
<tr><td><input type="submit" id="iReportTemplateCreateButton" name="reportTemplateCreateButton" value="<?= $this->getHtml('Create', 0, 0); ?>">
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<?= $this->getData('media-upload')->render('helper-template-create'); ?>
|
||||
</div>
|
||||
</div>
|
||||
31
Views/HelperView.php
Normal file
31
Views/HelperView.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.2
|
||||
*
|
||||
* @package Modules\Helper\Views
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://website.orange-management.de
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helper\Views;
|
||||
|
||||
use phpOMS\Views\View;
|
||||
|
||||
/**
|
||||
* Helper view.
|
||||
*
|
||||
* @package Modules\Helper\Views
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class HelperView extends View
|
||||
{
|
||||
protected $dataSets = [];
|
||||
protected $dataSet = null;
|
||||
}
|
||||
47
info.json
Normal file
47
info.json
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"name": {
|
||||
"id": 1002700000,
|
||||
"internal": "Helper",
|
||||
"external": "Helper"
|
||||
},
|
||||
"category": "Tools",
|
||||
"version": "1.0.0",
|
||||
"requirements": {
|
||||
"phpOMS": "1.0.0",
|
||||
"phpOMS-db": "1.0.0"
|
||||
},
|
||||
"creator": {
|
||||
"name": "Orange Management",
|
||||
"website": "www.spl1nes.com"
|
||||
},
|
||||
"description": "The helper module supports creating static and dynamic reportings.",
|
||||
"directory": "Helper",
|
||||
"dependencies": {
|
||||
"Admin": "1.0.0",
|
||||
"Media": "1.0.0",
|
||||
"Tools": "1.0.0"
|
||||
},
|
||||
"providing": {
|
||||
"Navigation": "*"
|
||||
},
|
||||
"load": [
|
||||
{
|
||||
"pid": [
|
||||
"/backend/helper"
|
||||
],
|
||||
"type": 4,
|
||||
"for": "Content",
|
||||
"file": "Helper",
|
||||
"from": "Helper"
|
||||
},
|
||||
{
|
||||
"pid": [
|
||||
"/backend"
|
||||
],
|
||||
"type": 5,
|
||||
"from": "Helper",
|
||||
"for": "Navigation",
|
||||
"file": "Navigation"
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user