Kanban placeholder module

This commit is contained in:
Dennis Eichhorn 2017-03-15 19:48:39 +01:00
commit fcfc232ca7
13 changed files with 663 additions and 0 deletions

44
Admin/Activate.php Normal file
View File

@ -0,0 +1,44 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
declare(strict_types=1);
namespace Modules\Kanban\Admin;
use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\Module\ActivateAbstract;
use phpOMS\Module\InfoManager;
/**
* Navigation class.
*
* @category Modules
* @package Modules\Admin
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class Activate extends ActivateAbstract
{
/**
* {@inheritdoc}
*/
public static function activate(DatabasePool $dbPool, InfoManager $info)
{
parent::activate($dbPool, $info);
}
}

44
Admin/Deactivate.php Normal file
View File

@ -0,0 +1,44 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
declare(strict_types=1);
namespace Modules\Kanban\Admin;
use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\Module\DeactivateAbstract;
use phpOMS\Module\InfoManager;
/**
* Navigation class.
*
* @category Modules
* @package Modules\Admin
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class Deactivate extends DeactivateAbstract
{
/**
* {@inheritdoc}
*/
public static function deactivate(DatabasePool $dbPool, InfoManager $info)
{
parent::deactivate($dbPool, $info);
}
}

View File

@ -0,0 +1,18 @@
[
{
"id": 1005801001,
"pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd",
"type": 2,
"subtype": 1,
"name": "Kanban",
"uri": "/{/lang}/backend/kanban/dashboard?{?}",
"target": "self",
"icon": null,
"order": 45,
"from": "Kanban",
"permission": null,
"parent": 1000101001,
"children": [
]
}
]

View File

@ -0,0 +1,41 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
declare(strict_types=1);
namespace Modules\Kanban\Admin\Install;
use phpOMS\DataStorage\Database\DatabasePool;
/**
* Navigation class.
*
* @category Modules
* @package Modules\Kanban
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class Navigation
{
public static function install(string $path, DatabasePool $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);
}
}

156
Admin/Installer.php Normal file
View File

@ -0,0 +1,156 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
declare(strict_types=1);
namespace Modules\Job\Admin;
use phpOMS\DataStorage\Database\DatabaseType;
use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\Module\InfoManager;
use phpOMS\Module\InstallerAbstract;
/**
* Tasks install class.
*
* @category Modules
* @package Modules\Tasks
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class Installer extends InstallerAbstract
{
/**
* {@inheritdoc}
*/
public static function install(string $path, DatabasePool $dbPool, InfoManager $info)
{
parent::install($path, $dbPool, $info);
switch ($dbPool->get('core')->getType()) {
case DatabaseType::MYSQL:
$dbPool->get('core')->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'kanban_board` (
`kanban_board_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_board_name` varchar(50) NOT NULL,
`kanban_board_status` int(11) NOT NULL,
`kanban_board_desc` varchar(100) DEFAULT NULL,
`kanban_board_created_at` datetime DEFAULT NULL,
`kanban_board_created_by` int(11) DEFAULT NULL,
PRIMARY KEY (`kanban_board_id`),
KEY `kanban_board_created_by` (`kanban_board_created_by`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get('core')->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'kanban_column` (
`kanban_column_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_column_name` varchar(50) NOT NULL,
`kanban_column_order` int(11) NOT NULL,
`kanban_column_board` int(11) NOT NULL,
PRIMARY KEY (`kanban_column_id`),
KEY `kanban_column_board` (`kanban_column_board`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get('core')->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'kanban_card` (
`kanban_card_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_card_name` varchar(50) NOT NULL,
`kanban_card_description` text NOT NULL,
`kanban_card_type` int(2) NOT NULL,
`kanban_card_status` int(2) NOT NULL,
`kanban_card_ref` int(11) NOT NULL,
`kanban_card_column` int(11) NOT NULL,
`kanban_card_media` int(11) NOT NULL,
`kanban_card_created_at` datetime DEFAULT NULL,
`kanban_card_created_by` int(11) DEFAULT NULL,
PRIMARY KEY (`kanban_card_id`),
KEY `kanban_card_column` (`kanban_card_column`),
KEY `kanban_card_created_by` (`kanban_card_created_by`),
KEY `kanban_card_media` (`kanban_card_created_by`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
// Task comments and these comments need to be merged which is bad but not every kanban card is a task and task info should be here as well.
$dbPool->get('core')->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'kanban_card_comment` (
`kanban_card_comment_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_card_comment_description` text NOT NULL,
`kanban_card_comment_created_at` datetime DEFAULT NULL,
`kanban_card_comment_created_by` int(11) DEFAULT NULL,
`kanban_card_comment_media` int(11) DEFAULT NULL,
PRIMARY KEY (`kanban_card_comment_id`),
KEY `kanban_card_comment_column` (`kanban_card_comment_column`),
KEY `kanban_card_comment_created_by` (`kanban_card_comment_created_by`),
KEY `kanban_card_comment_media` (`kanban_card_comment_media`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get('core')->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'kanban_activity` (
`kanban_activity_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_activity_type` varchar(50) NOT NULL,
`kanban_activity_subtype` int(2) NOT NULL,
`kanban_activity_board` int(11) NOT NULL,
`kanban_activity_old` varchar(255) NOT NULL,
`kanban_activity_new` varchar(255) NOT NULL,
`kanban_activity_by` int(11) DEFAULT NULL,
PRIMARY KEY (`kanban_activity_id`),
KEY `kanban_activity` (`kanban_activity`),
KEY `kanban_activity_by` (`kanban_activity_by`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get('core')->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'kanban_label` (
`kanban_label_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_label_name` varchar(50) NOT NULL,
`kanban_label_color` int(11) NOT NULL,
`kanban_label_board` int(11) NOT NULL,
PRIMARY KEY (`kanban_label_id`),
KEY `kanban_label_board` (`kanban_label_board`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get('core')->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'kanban_label_relation` (
`kanban_label_relation_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_label_relation_card` int(11) NOT NULL,
`kanban_label_relation_label` int(11) NOT NULL,
PRIMARY KEY (`kanban_label_relation_id`),
KEY `kanban_label_relation_card` (`kanban_label_relation_card`),
KEY `kanban_label_relation_label` (`kanban_label_relation_label`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get('core')->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'kanban_permission` (
`kanban_permission_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_permission_permission` int(11) NOT NULL,
`kanban_permission_board` int(11) NOT NULL,
`kanban_permission_account` int(11) NOT NULL,
PRIMARY KEY (`kanban_permission_id`),
KEY `kanban_permission_board` (`kanban_permission_board`),
KEY `kanban_permission_account` (`kanban_permission_account`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
break;
}
}
}

View File

@ -0,0 +1,24 @@
<?php
use phpOMS\Router\RouteVerb;
return [
'^.*/backend/kanban/dashbaord.*$' => [
[
'dest' => '\Modules\Kanban\Controller:viewKanbanDashboard',
'verb' => RouteVerb::GET,
],
],
'^.*/backend/kanban/board.*$' => [
[
'dest' => '\Modules\Kanban\Controller:viewKanbanBoard',
'verb' => RouteVerb::GET,
],
],
'^.*/backend/kanban/create.*$' => [
[
'dest' => '\Modules\Kanban\Controller:viewKanbanCreate',
'verb' => RouteVerb::GET,
],
],
];

45
Admin/Uninstall.php Normal file
View File

@ -0,0 +1,45 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
declare(strict_types=1);
namespace Modules\Kanban\Admin;
use phpOMS\DataStorage\Database\DatabasePool;
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 <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class Uninstall extends UninstallAbstract
{
/**
* {@inheritdoc}
*/
public static function uninstall(DatabasePool $dbPool, InfoManager $info)
{
parent::uninstall($dbPool, $info);
}
}

47
Admin/Update.php Normal file
View File

@ -0,0 +1,47 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
declare(strict_types=1);
namespace Modules\Kanban\Admin;
use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\Module\InfoManager;
use phpOMS\Module\UpdateAbstract;
use phpOMS\System\File\Directory;
/**
* Navigation class.
*
* @category Modules
* @package Modules\Admin
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class Update extends UpdateAbstract
{
/**
* {@inheritdoc}
*/
public static function update(DatabasePool $dbPool, InfoManager $info)
{
Directory::deletePath(__DIR__ . '/Update');
mkdir('Update');
parent::update($dbPool, $info);
}
}

120
Controller.php Normal file
View File

@ -0,0 +1,120 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
declare(strict_types=1);
namespace Modules\Kanban;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\Module\ModuleAbstract;
use phpOMS\Module\WebInterface;
use phpOMS\Views\View;
use phpOMS\Utils\TaskSchedule\SchedulerFactory;
use phpOMS\Utils\TaskSchedule\SchedulerAbstract;
/**
* Task class.
*
* @category Modules
* @package Modules\Kanban
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @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
*/
/* 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 = 'Kanban';
/**
* 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 <d.eichhorn@oms.com>
*/
public function viewKanbanDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-dashboard');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $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 <d.eichhorn@oms.com>
*/
public function viewKanbanBoard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-board');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response));
return $view;
}
}

42
Models/CardType.php Normal file
View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
declare(strict_types=1);
namespace Modules\Kanban\Models;
use phpOMS\Datatypes\Enum;
/**
* Area type enum.
*
* @category Framework
* @package phpOMS\Utils\Converter
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
abstract class CardType extends Enum
{
/* public */ const TEXT = 1; /* Markdown -> Image, links, charts etc */
/* public */ const CALENDAR = 2;
/* public */ const CALENDAR_EVENT = 4;
/* public */ const TASK = 8;
/* public */ const TASK_CHECKLIST = 16;
/* public */ const MEDIA = 32;
/* public */ const SURVEY = 64;
}

View File

@ -0,0 +1,19 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
return ['Navigation' => [
'Kanban' => 'Kanban',
'Create' => 'Create',
]];

View File

@ -0,0 +1,18 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
return ['Kanban' => [
'Dashboard' => 'Dashboard',
]];

45
info.json Normal file
View File

@ -0,0 +1,45 @@
{
"name": {
"id": 1005800000,
"internal": "Kanban",
"external": "Kanban"
},
"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": "Kanban module.",
"directory": "Kanban",
"dependencies": {
"Admin" : "1.0.0"
},
"providing": {
"Navigation": "*"
},
"load": [
{
"pid": [
"7322d5765c8b18b14c20d406e89c628fd0998688"
],
"type": 4,
"for": 0,
"from": "Kanban",
"file": "Kanban"
},
{
"pid": [
"754a08ddf8bcb1cf22f310f09206dd783d42f7dd"
],
"type": 5,
"from": "Kanban",
"for": "Navigation",
"file": "Navigation"
}
]
}