diff --git a/Admin/Activate.php b/Admin/Activate.php new file mode 100644 index 0000000..38e902a --- /dev/null +++ b/Admin/Activate.php @@ -0,0 +1,44 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Admin; + + +use phpOMS\DataStorage\Database\Pool; +use phpOMS\Module\ActivateAbstract; +use phpOMS\Module\InfoManager; + +/** + * Navigation class. + * + * @category Modules + * @package Modules\Admin + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Activate extends ActivateAbstract +{ + + /** + * {@inheritdoc} + */ + public static function activate(Pool $dbPool, InfoManager $info) + { + parent::activate($dbPool, $info); + } +} diff --git a/Admin/Deactivate.php b/Admin/Deactivate.php new file mode 100644 index 0000000..2ca71d9 --- /dev/null +++ b/Admin/Deactivate.php @@ -0,0 +1,44 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Admin; + + +use phpOMS\DataStorage\Database\Pool; +use phpOMS\Module\DeactivateAbstract; +use phpOMS\Module\InfoManager; + +/** + * Navigation class. + * + * @category Modules + * @package Modules\Admin + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Deactivate extends DeactivateAbstract +{ + + /** + * {@inheritdoc} + */ + public static function deactivate(Pool $dbPool, InfoManager $info) + { + parent::deactivate($dbPool, $info); + } +} diff --git a/Admin/Install/Navigation.install.json b/Admin/Install/Navigation.install.json new file mode 100644 index 0000000..80a8f51 --- /dev/null +++ b/Admin/Install/Navigation.install.json @@ -0,0 +1,79 @@ +[ + { + "id": 1001101001, + "pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd", + "type": 1, + "subtype": 1, + "name": "Tasks", + "uri": "/{/lang}/backend/task/dashboard", + "target": "self", + "icon": "fa fa-bolt", + "order": 15, + "from": "Tasks", + "permission": null, + "parent": 0, + "children": [ + { + "id": 1001102001, + "pid": "43ec7cda8be033d7b20996708a2fca644e5dde86", + "type": 3, + "subtype": 1, + "name": "List", + "uri": "/{/lang}/backend/task/dashboard", + "target": "self", + "icon": null, + "order": 1, + "from": "Tasks", + "permission": null, + "parent": 1001101001, + "children": [ + { + "id": 1001102101, + "pid": "43ec7cda8be033d7b20996708a2fca644e5dde86", + "type": 0, + "subtype": 1, + "name": "Tasks", + "uri": "/{/lang}/backend/task/single", + "target": "self", + "icon": null, + "order": 1, + "from": "Tasks", + "permission": null, + "parent": 1001102001, + "children": [] + } + ] + }, + { + "id": 1001103001, + "pid": "43ec7cda8be033d7b20996708a2fca644e5dde86", + "type": 3, + "subtype": 1, + "name": "Create", + "uri": "/{/lang}/backend/task/create", + "target": "self", + "icon": null, + "order": 10, + "from": "Tasks", + "permission": null, + "parent": 1001101001, + "children": [] + }, + { + "id": 1001104001, + "pid": "43ec7cda8be033d7b20996708a2fca644e5dde86", + "type": 3, + "subtype": 1, + "name": "Analysis", + "uri": "/{/lang}/backend/task/analysis", + "target": "self", + "icon": null, + "order": 20, + "from": "Tasks", + "permission": null, + "parent": 1001101001, + "children": [] + } + ] + } +] diff --git a/Admin/Install/Navigation.php b/Admin/Install/Navigation.php new file mode 100644 index 0000000..32f0b11 --- /dev/null +++ b/Admin/Install/Navigation.php @@ -0,0 +1,40 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Admin\Install; +use phpOMS\DataStorage\Database\Pool; + +/** + * Navigation class. + * + * @category Modules + * @package Modules\Admin + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Navigation +{ + public static function install(Pool $dbPool) + { + $navData = json_decode(file_get_contents(__DIR__ . '/Navigation.install.json'), true); + + $class = '\\Modules\\Navigation\\Admin\\Installer'; + /** @var $class \Modules\Navigation\Admin\Installer */ + $class::installExternal($dbPool, $navData); + } +} diff --git a/Admin/Installer.php b/Admin/Installer.php new file mode 100644 index 0000000..f2b3bb2 --- /dev/null +++ b/Admin/Installer.php @@ -0,0 +1,49 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Admin; + +use phpOMS\DataStorage\Database\DatabaseType; +use phpOMS\DataStorage\Database\Pool; +use phpOMS\Module\InfoManager; +use phpOMS\Module\InstallerAbstract; + +/** + * Tasks install class. + * + * @category Modules + * @package Modules\Tasks + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Installer extends InstallerAbstract +{ + + /** + * {@inheritdoc} + */ + public static function install(Pool $dbPool, InfoManager $info) + { + parent::install($dbPool, $info); + + switch ($dbPool->get('core')->getType()) { + case DatabaseType::MYSQL: + break; + } + } +} diff --git a/Admin/Routes/console.php b/Admin/Routes/console.php new file mode 100644 index 0000000..1ecbfac --- /dev/null +++ b/Admin/Routes/console.php @@ -0,0 +1,3 @@ + [ + [ + 'dest' => '\Modules\Workflow\Controller:viewWorkflowTemplates', + 'verb' => RouteVerb::GET, + ], + ], + '^.*/backend/workflow/template/single.*$' => [ + [ + 'dest' => '\Modules\Workflow\Controller:viewWorkflowTemplate', + 'verb' => RouteVerb::GET, + ], + ], + '^.*/backend/workflow/template/create.*$' => [ + [ + 'dest' => '\Modules\Workflow\Controller:viewWorkflowTemplateCreate', + 'verb' => RouteVerb::GET, + ], + ], + '^.*/backend/workflow/single.*$' => [ + [ + 'dest' => '\Modules\Workflow\Controller:viewWorkflowSingle', + 'verb' => RouteVerb::GET, + ], + ], +]; diff --git a/Admin/Routes/socket.php b/Admin/Routes/socket.php new file mode 100644 index 0000000..1ecbfac --- /dev/null +++ b/Admin/Routes/socket.php @@ -0,0 +1,3 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Admin; + + +use phpOMS\DataStorage\Database\Pool; +use phpOMS\DataStorage\Database\Schema\Builder; +use phpOMS\Module\InfoManager; +use phpOMS\Module\UninstallAbstract; + +/** + * Navigation class. + * + * @category Modules + * @package Modules\Admin + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Uninstall extends UninstallAbstract +{ + + /** + * {@inheritdoc} + */ + public static function uninstall(Pool $dbPool, InfoManager $info) + { + parent::uninstall($dbPool, $info); + + $query = new Builder($dbPool->get()); + + $query->prefix($dbPool->get('core')->getPrefix())->drop( + 'task_element', + 'task_account', + 'task' + ); + + $dbPool->get()->con->prepare($query->toSql())->execute(); + } +} diff --git a/Admin/Update.php b/Admin/Update.php new file mode 100644 index 0000000..d14d3c1 --- /dev/null +++ b/Admin/Update.php @@ -0,0 +1,47 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Admin; + + +use phpOMS\DataStorage\Database\Pool; +use phpOMS\Module\InfoManager; +use phpOMS\Module\UpdateAbstract; +use phpOMS\System\File\Directory; + +/** + * Navigation class. + * + * @category Modules + * @package Modules\Admin + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Update extends UpdateAbstract +{ + + /** + * {@inheritdoc} + */ + public static function update(Pool $dbPool, InfoManager $info) + { + Directory::deletePath(__DIR__ . '/Update'); + mkdir('Update'); + parent::update($dbPool, $info); + } +} diff --git a/Controller.php b/Controller.php new file mode 100644 index 0000000..6134893 --- /dev/null +++ b/Controller.php @@ -0,0 +1,155 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow; + +use phpOMS\Message\RequestAbstract; +use phpOMS\Message\ResponseAbstract; +use phpOMS\Module\ModuleAbstract; +use phpOMS\Module\WebInterface; +use phpOMS\Views\View; + +/** + * Task class. + * + * @category Modules + * @package Modules\Workflow + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Controller extends ModuleAbstract implements WebInterface +{ + + /** + * Module path. + * + * @var string + * @since 1.0.0 + */ + const MODULE_PATH = __DIR__; + + /** + * Module version. + * + * @var string + * @since 1.0.0 + */ + const MODULE_VERSION = '1.0.0'; + + /** + * Module name. + * + * @var string + * @since 1.0.0 + */ + const MODULE_NAME = 'Workflow'; + + /** + * Providing. + * + * @var string + * @since 1.0.0 + */ + protected static $providing = []; + + /** + * Dependencies. + * + * @var string + * @since 1.0.0 + */ + protected static $dependencies = [ + ]; + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function viewWorkflowTemplates(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/Workflow/Theme/Backend/task-dashboard'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + + return $view; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function viewWorkflowTemplate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/Workflow/Theme/Backend/task-single'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + + return $view; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function viewWorkflowSingle(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/Workflow/Theme/Backend/task-create'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + + return $view; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function viewWorkflowTemplateCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/Workflow/Theme/Backend/task-analysis'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + + return $view; + } + +} diff --git a/Models/Template.php b/Models/Template.php new file mode 100644 index 0000000..12d470b --- /dev/null +++ b/Models/Template.php @@ -0,0 +1,34 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Models; + + + +/** + * Task class. + * + * @category Modules + * @package Framework + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Template +{ + +} diff --git a/Theme/Backend/Lang/Navigation.en.lang.php b/Theme/Backend/Lang/Navigation.en.lang.php new file mode 100644 index 0000000..7723651 --- /dev/null +++ b/Theme/Backend/Lang/Navigation.en.lang.php @@ -0,0 +1,19 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +return ['Navigation' => [ + 'Workflows' => 'Workflows', + 'Workflow' => 'Workflow', +]]; diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php new file mode 100644 index 0000000..a9b4a7c --- /dev/null +++ b/Theme/Backend/Lang/en.lang.php @@ -0,0 +1,19 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +return ['Tasks' => [ + 'Workflow' => 'Workflow', + 'Workflows' => 'Workflows', +]]; diff --git a/Theme/Backend/workflow-create.tpl.php b/Theme/Backend/workflow-create.tpl.php new file mode 100644 index 0000000..38be15f --- /dev/null +++ b/Theme/Backend/workflow-create.tpl.php @@ -0,0 +1,60 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +/** + * @var \phpOMS\Views\View $this + */ +echo $this->getData('nav')->render(); ?> + +
+

l11n->getText('Tasks', 'Backend', 'Task'); ?>

+ +
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+

l11n->getText('Tasks', 'Backend', 'Media'); ?>

+ +
+
+ + +
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/Theme/Backend/workflow-list.tpl.php b/Theme/Backend/workflow-list.tpl.php new file mode 100644 index 0000000..d459c6d --- /dev/null +++ b/Theme/Backend/workflow-list.tpl.php @@ -0,0 +1,86 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +/** + * @var \phpOMS\Views\View $this + * @var \Modules\Tasks\Models\Task[] $tasks + */ +$tasks = $this->getData('tasks'); +echo $this->getData('nav')->render(); ?> + +
+ + + + + + $task) : $c++; + $url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/task/single?id=' . $task->getId()); + $color = 'darkred'; + if($task->getStatus() === \Modules\Tasks\Models\TaskStatus::DONE) { $color = 'green'; } + elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::OPEN) { $color = 'darkblue'; } + elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::WORKING) { $color = 'purple'; } + elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::CANCELED) { $color = 'red'; } + elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::SUSPENDED) { $color = 'yellow'; } ;?> + +
l11n->getText('Tasks', 'Backend', 'Tasks'); ?>
l11n->getText('Tasks', 'Backend', 'Status'); ?> + l11n->getText('Tasks', 'Backend', 'Due'); ?> + l11n->getText('Tasks', 'Backend', 'Title'); ?> + l11n->getText('Tasks', 'Backend', 'Creator'); ?> + l11n->getText('Tasks', 'Backend', 'Created'); ?> +
l11n->getText('Tasks', 'Backend', 'S' . $task->getStatus()); ?> + getDue()->format('Y-m-d H:i'); ?> + getTitle(); ?> + getCreatedBy(); ?> + getCreatedAt()->format('Y-m-d H:i'); ?> + +
l11n->getText(0, 'Backend', 'Empty'); ?> + +
+
+ +
+
+

l11n->getText('Tasks', 'Backend', 'Settings'); ?>

+
+
+ +
+
+
+
+
+
+ +
+

l11n->getText('Tasks', 'Backend', 'Settings'); ?>

+
+ +
l11n->getText('Tasks', 'Backend', 'Received'); ?>0 +
l11n->getText('Tasks', 'Backend', 'Created'); ?>0 +
l11n->getText('Tasks', 'Backend', 'Forwarded'); ?>0 +
l11n->getText('Tasks', 'Backend', 'AverageAmount'); ?>0 +
l11n->getText('Tasks', 'Backend', 'AverageProcessTime'); ?>0 +
l11n->getText('Tasks', 'Backend', 'InTime'); ?>0 +
+
+
+
diff --git a/Theme/Backend/workflow-single.tpl.php b/Theme/Backend/workflow-single.tpl.php new file mode 100644 index 0000000..6d33369 --- /dev/null +++ b/Theme/Backend/workflow-single.tpl.php @@ -0,0 +1,90 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +/** + * @var \phpOMS\Views\View $this + * @var \Modules\Tasks\Models\Task $task + */ +$task = $this->getData('task'); +$elements = $task->getTaskElements(); +$cElements = count($elements); + +echo $this->getData('nav')->render(); ?> + +
+

getTitle(); ?>

+
+
Due getDue()->format('Y-m-d H:i'); ?>
+
Created getCreatedAt()->format('Y-m-d H:i'); ?>
+
+ getDescription(); ?> +
+
Created getCreatedBy(); ?>
+
Status getStatus(); ?>
+
+
+ + $element) : $c++; + if($element->getStatus() === \Modules\Tasks\Models\TaskStatus::DONE) { $color = 'green'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::OPEN) { $color = 'darkblue'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::WORKING) { $color = 'purple'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::CANCELED) { $color = 'red'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::SUSPENDED) { $color = 'yellow'; } ?> +
+
l11n->getText('Tasks', 'Backend', 'S' . $element->getStatus()); ?>
+
getCreatedBy(); ?> - getCreatedAt()->format('Y-m-d H:i'); ?>
+
+ getDescription() !== '') : ?> +
+
+
+ getDescription(); ?> +
+
+
+ +
+ getStatus() !== \Modules\Tasks\Models\TaskStatus::CANCELED || + $element->getStatus() !== \Modules\Tasks\Models\TaskStatus::DONE || + $element->getStatus() !== \Modules\Tasks\Models\TaskStatus::SUSPENDED || $c != $cElements + ) : ?> +
Due getDue()->format('Y-m-d H:i'); ?>
+ + getForwarded() !== 0) : ?> +
Forwarded getForwarded(); ?>
+ +
+ + +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Theme/Backend/workflow-template.tpl.php b/Theme/Backend/workflow-template.tpl.php new file mode 100644 index 0000000..548281f --- /dev/null +++ b/Theme/Backend/workflow-template.tpl.php @@ -0,0 +1,50 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +/** + * @var \phpOMS\Views\View $this + */ +echo $this->getData('nav')->render(); ?> + +
+

l11n->getText('Tasks', 'Backend', 'Account'); ?>

+
+
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+

l11n->getText('Tasks', 'Backend', 'Statistics'); ?>

+
+ +
l11n->getText('Tasks', 'Backend', 'Received'); ?>0 +
l11n->getText('Tasks', 'Backend', 'Created'); ?>0 +
l11n->getText('Tasks', 'Backend', 'Forwarded'); ?>0 +
l11n->getText('Tasks', 'Backend', 'AverageAmount'); ?>0 +
l11n->getText('Tasks', 'Backend', 'AverageProcessTime'); ?>0 +
l11n->getText('Tasks', 'Backend', 'InTime'); ?>0 +
+
+
diff --git a/img/module_teaser_small.png b/img/module_teaser_small.png new file mode 100644 index 0000000..f56e6ff Binary files /dev/null and b/img/module_teaser_small.png differ diff --git a/info.json b/info.json new file mode 100644 index 0000000..a642254 --- /dev/null +++ b/info.json @@ -0,0 +1,45 @@ +{ + "name": { + "id": 1005500000, + "internal": "Workflow", + "external": "OMS Workflow" + }, + "version": "1.0.0", + "requirements": { + "phpOMS": "1.0.0", + "phpOMS-db": "1.0.0" + }, + "creator": { + "name": "Orange Management", + "website": "www.spl1nes.com" + }, + "description": "Workflow module.", + "directory": "Workflow", + "dependencies": { + "Admin" : "1.0.0", + "Calendar" : "1.0.0" + }, + "providing": { + "Navigation": "*" + }, + "load": [ + { + "pid": [ + "ac3d9bdf783c7963f449488e33c60133b3dbe6f8" + ], + "type": 4, + "for": 0, + "from": "Workflow", + "file": "Workflow" + }, + { + "pid": [ + "754a08ddf8bcb1cf22f310f09206dd783d42f7dd" + ], + "type": 5, + "from": "Workflow", + "for": "Navigation", + "file": "Navigation" + } + ] +}