Skip to content

Commit 4074e8f

Browse files
author
Vítězslav Dvořák
committed
Add ChainRuntemplate and RuntemplateChooser classes for LaunchJob action UI
1 parent e892900 commit 4074e8f

3 files changed

Lines changed: 114 additions & 1 deletion

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* This file is part of the MultiFlexi package
7+
*
8+
* https://multiflexi.eu/
9+
*
10+
* (c) Vítězslav Dvořák <http://vitexsoftware.com>
11+
*
12+
* For the full copyright and license information, please view the LICENSE
13+
* file that was distributed with this source code.
14+
*/
15+
16+
namespace MultiFlexi\Ui\Action;
17+
18+
/**
19+
* LaunchJob Action UI Class.
20+
*
21+
* @author vitex
22+
*/
23+
class ChainRuntemplate extends \MultiFlexi\Action\ChainRuntemplate
24+
{
25+
/**
26+
* Action logo.
27+
*/
28+
public static function logo(): string
29+
{
30+
return 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmc6c3ZnCiAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIKICAgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJMYXllcl8xIgogICB4PSIwcHgiCiAgIHk9IjBweCIKICAgd2lkdGg9IjMwNi43NDI2MSIKICAgaGVpZ2h0PSIzNzguNDQ5NzciCiAgIHZpZXdCb3g9IjAgMCAzMDYuNzQyNjIgMzc4LjQ0OTc3IgogICBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjAuMiAoZTg2Yzg3MDg3OSwgMjAyMS0wMS0xNSkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InJvY2tldC5zdmciPjxzdmc6bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExNTczOSI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48ZGM6dGl0bGU+PC9kYzp0aXRsZT48L2NjOldvcms+PC9yZGY6UkRGPjwvc3ZnOm1ldGFkYXRhPjxzdmc6ZGVmcwogICAgIGlkPSJkZWZzMTU3MzciIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjExNTAiCiAgICAgaWQ9Im5hbWVkdmlldzE1NzM1IgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBmaXQtbWFyZ2luLXRvcD0iMCIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMCIKICAgICBpbmtzY2FwZTp6b29tPSIxLjg0Mzc1IgogICAgIGlua3NjYXBlOmN4PSIzMTIuMTQzMTUiCiAgICAgaW5rc2NhcGU6Y3k9IjE0Ny4xNDA2NSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMjciCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJnMTU3MjMiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiIC8+PHN2ZzpnCiAgICAgaWQ9ImcxNTcyMyIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAyLjIyNDI3LC01OC40Nzg4MDMpIj48c3ZnOmcKICAgICAgIGlkPSJnMTYyODMiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjc2NzY1NzcxLDAuNDgzNDA1NDMsLTAuNDgzNDA1NDMsMC43Njc2NTc3MSwxOTkuODcyNTMsLTY2LjUwNzA0NSkiPjxzdmc6ZWxsaXBzZQogICAgICAgICByeT0iNTYuNDA2NzgiCiAgICAgICAgIHJ4PSI1My4xNTI1NDIiCiAgICAgICAgIGN5PSIxNjcuMDUwODQiCiAgICAgICAgIGN4PSIyNTQuOTE1MjUiCiAgICAgICAgIGlkPSJwYXRoMTYyODEiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojYjJkN2RjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPjxzdmc6ZwogICAgICAgICBpZD0iZzE1NzI1Ij48c3ZnOmcKICAgICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjk7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiCiAgICAgICAgICAgaWQ9ImcxNTcyNyI+PHN2ZzpwYXRoCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojYjIzMDUxO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo5O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgICAgICBpZD0icGF0aDE1NzI5IgogICAgICAgICAgICAgZD0ibSAyMDQuMTkyLDYyLjE5NCBjIDE0LjE0NywtMjAuNDcyIDI5LjMzOSwtNDEuNjEzIDUwLjk2MywtNTQuNzIgMjEuMzIzLDEyLjc4MiAzNi4zNjYsMzMuNTQ3IDUwLjMxMSw1My42NTYgMzIuODQ3LDQ5Ljc1NCA1Mi45MjksMTA5LjUxNSA0OC44NzgsMTY5LjU3OCAxMC42MTUsOC44OTggMjEuNTM3LDE3LjQ0MSAzMS45OTQsMjYuNTIxIDE1LjAxMSwxMy43OTcgMjIuMDIsMzUuMzE5IDE4LjQwNiw1NS4zMjcgLTUuMDM2LDI1LjI3NSAtOS44NzYsNTAuNjA3IC0xNS4yMDYsNzUuODEzIC0yLjk2MywxMi45NjggLTIwLjUwOCwxOC45MDUgLTMwLjgyMywxMC42MiAtMTcuMTIxLC0xNC4yOTEgLTMzLjgxNiwtMjkuMTA4IC01MC45MzIsLTQzLjQxNyAtMTIuOTUsMTIuNDYyIC0zMC4xNTMsMjAuNzcyIC00OC4yMTQsMjEuNzczIC0yMC43OTEsMS40NjYgLTQxLjM3NSwtNy4xNTYgLTU2LjQ0OCwtMjEuMjQyIC0xMi4yOCw5LjQwMSAtMjMuNjY2LDIwLjY4NiAtMzUuNjY0LDMwLjc1NSAtNS43OTksNC42NiAtMTAuNjIxLDEwLjc4NCAtMTcuNDg0LDEzLjk2NiAtMTAuNjQsNC41NjUgLTI0LjM0MiwtMi4yNDggLTI2Ljc0NywtMTMuNjg1IC01LjQ3OSwtMjQuNjQyIC0xMS4yMDMsLTQ5LjI0IC0xNi41MiwtNzMuOTIgLTQuMzIxLC0yMC44NzggMy4zMzIsLTQzLjYxIDE5LjQxOSwtNTcuNjA3IDkuMzEzLC03LjgyMiAxOC43NTYsLTE1LjQ4NyAyOC4yNDMsLTIzLjA5NiAyLjY0MywtMS4zOSAxLjMxNSwtNC41OTYgMS40NjUsLTYuOTUxIC0yLjgyOCwtNTcuOTUxIDE2Ljk2NywtMTE1LjIzMiA0OC4zNTksLTE2My4zNzEgeiBtIDE2LjgwMyw3Ni4zMzIgYyAtMTIuNDI0LDE1Ljk5NCAtMTAuOTIxLDQwLjc2OCAzLjQ4OCw1NS4wNTIgMTUuMjU1LDE2LjgwOSA0NC4xNSwxNy40MjIgNjAuMTA2LDEuMjkgMTIuMzE3LC0xMS4yNTMgMTYuNDgyLC0zMC4xNDYgMTAuNjAzLC00NS42NzEgLTUuMzg3LC0xNC45NjcgLTE5LjgwOSwtMjYuMTk1IC0zNS42NzEsLTI3LjU5MSAtMTQuNjQ4LC0xLjY4NiAtMjkuODE1LDUuMDUzIC0zOC41MjYsMTYuOTIgeiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PC9zdmc6Zz48c3ZnOnBhdGgKICAgICAgICAgICBzdHlsZT0iZmlsbDojZGM5NTE3O2ZpbGwtb3BhY2l0eToxIgogICAgICAgICAgIGlkPSJwYXRoMTU3MzEiCiAgICAgICAgICAgZD0ibSAxOTguMjYzLDQwNy44MTkgYyAtMC4yMTMsLTcuMjY2IDguODMsLTEyLjI2MiAxNC45NDIsLTguNDE3IDI1Ljg3LDEzLjMyIDU4LjAyNywxMy4zMTQgODMuODk2LC0wLjAwNyA1LjkzNywtMy42NDUgMTQuNzM2LDAuNzMzIDE0Ljk1NSw3LjgwMyAwLjA4NywxNS40MzIgMC4xMDUsMzAuODggMC4wMjQsNDYuMzE3IDAuMTE5LDcuNTMzIC05LjgzMiwxMi4zMzcgLTE1LjY4MSw3LjYyNiAtNC40NTIsLTMuOTI2IC04LjQ2NywtOC4zNDEgLTEyLjc1LC0xMi40NjEgLTYuNzc2LDEzLjIwMSAtMTMuMTYzLDI2LjYwMiAtMTkuOTk1LDM5Ljc3MiAtMy4yODEsNi4yNzUgLTEzLjUzMyw2LjMxOCAtMTYuODc3LDAuMTA1IC02Ljg3LC0xMy4xOTUgLTEzLjIxMywtMjYuNjc2IC0yMC4xMjEsLTM5Ljg1OCAtNC4yMjEsNC4xNTcgLTguMjQ4LDguNTQ4IC0xMi42OTQsMTIuNDY4IC01LjgyNCw0LjczNCAtMTUuNzU2LC0wLjE2MiAtMTUuNjc1LC03LjY0NyAtMC4xMjQsLTE1LjIyOSAtMC4wNDMsLTMwLjQ2NSAtMC4wMjQsLTQ1LjcwMSB6IgogICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PC9zdmc6Zz48L3N2ZzpnPjwvc3ZnOmc+PHNjcmlwdCAvPjwvc3ZnOnN2Zz4K';
31+
}
32+
33+
/**
34+
* Generate configuration form inputs for LaunchJob action.
35+
*
36+
* @param string $prefix Form field prefix
37+
*
38+
* @return \Ease\Embedable Form field(s)
39+
*/
40+
/**
41+
* Generate configuration form inputs for LaunchJob action.
42+
*
43+
* @param string $prefix Form field prefix
44+
*
45+
* @return \Ease\Embedable Form field(s)
46+
*/
47+
public function inputs(string $prefix): \Ease\Embedable
48+
{
49+
$companyId = 0;
50+
51+
if (isset($_SESSION) && \array_key_exists('company', $_SESSION)) {
52+
$companyId = $_SESSION['company'];
53+
}
54+
55+
return new \MultiFlexi\Ui\RuntemplateChooser($prefix.'[RunTemplate][rtid]', new \MultiFlexi\Company($companyId));
56+
}
57+
58+
/**
59+
* Configuration form for LaunchJob action.
60+
*/
61+
public function configForm(): \Ease\Embedable
62+
{
63+
return new \Ease\TWB4\Badge('info', _('No additional configuration required'));
64+
}
65+
}

src/MultiFlexi/Ui/Action/LaunchJob.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
*
2121
* @author vitex
2222
*/
23-
class LaunchJob extends \MultiFlexi\Action\LaunchJob
23+
class ChainRuntemplate extends \MultiFlexi\Action\ChainRuntemplate
2424
{
2525
/**
2626
* Action logo.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* This file is part of the MultiFlexi package
7+
*
8+
* https://multiflexi.eu/
9+
*
10+
* (c) Vítězslav Dvořák <http://vitexsoftware.com>
11+
*
12+
* For the full copyright and license information, please view the LICENSE
13+
* file that was distributed with this source code.
14+
*/
15+
16+
namespace MultiFlexi\Ui;
17+
18+
use MultiFlexi\Company;
19+
20+
/**
21+
* Description of RuntemplateChooser.
22+
*
23+
* @author vitex
24+
*
25+
* @no-named-arguments
26+
*/
27+
class RuntemplateChooser extends \Ease\Html\SelectTag
28+
{
29+
/**
30+
* Choose from applications Assigned to given company.
31+
*
32+
* @param string $name form input name
33+
* @param array<string, string> $properties
34+
*/
35+
public function __construct(string $name, Company $company, string $defaultValue = '', array $properties = [])
36+
{
37+
$runTemplate = new \MultiFlexi\RunTemplate();
38+
$assignedRaw = $runTemplate->listingQuery()->where('company_id', $company->getMyKey())->orderBy('name')->fetchAll('id');
39+
40+
foreach ($assignedRaw as $runtemplateId => $runtemplateProperties) {
41+
$assignedRaw[$runtemplateId] = $runtemplateProperties['name'];
42+
}
43+
44+
$assigned = empty($assignedRaw) ? [] : $assignedRaw;
45+
46+
parent::__construct($name, $assigned, $defaultValue, $properties);
47+
}
48+
}

0 commit comments

Comments
 (0)