mirror of
https://github.com/Karaka-Management/oms-ProjectManagement.git
synced 2026-02-11 05:18:40 +00:00
Add calendar and media to project
This commit is contained in:
parent
b84c89142d
commit
5e5a162173
|
|
@ -67,6 +67,23 @@ class Installer extends InstallerAbstract
|
||||||
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'projectmanagement_project_ibfk_2` FOREIGN KEY (`projectmanagement_project_created_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);'
|
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'projectmanagement_project_ibfk_2` FOREIGN KEY (`projectmanagement_project_created_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);'
|
||||||
)->execute();
|
)->execute();
|
||||||
|
|
||||||
|
$dbPool->get()->con->prepare(
|
||||||
|
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'projectmanagement_project_media` (
|
||||||
|
`projectmanagement_project_media_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`projectmanagement_project_media_src` int(11) NULL,
|
||||||
|
`projectmanagement_project_media_dst` int(11) NULL,
|
||||||
|
PRIMARY KEY (`projectmanagement_project_media_id`),
|
||||||
|
KEY `projectmanagement_project_media_src` (`projectmanagement_project_media_src`),
|
||||||
|
KEY `projectmanagement_project_media_dst` (`projectmanagement_project_media_dst`)
|
||||||
|
)ENGINE=InnoDB DEFAULT CHARSET=utf8;'
|
||||||
|
)->execute();
|
||||||
|
|
||||||
|
$dbPool->get()->con->prepare(
|
||||||
|
'ALTER TABLE `' . $dbPool->get()->prefix . 'projectmanagement_project_media`
|
||||||
|
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'projectmanagement_project_media_ibfk_1` FOREIGN KEY (`projectmanagement_project_media_src`) REFERENCES `' . $dbPool->get()->prefix . 'projectmanagement_project` (`projectmanagement_project_id`),
|
||||||
|
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'projectmanagement_project_media_ibfk_2` FOREIGN KEY (`projectmanagement_project_media_dst`) REFERENCES `' . $dbPool->get()->prefix . 'media` (`media_id`);'
|
||||||
|
)->execute();
|
||||||
|
|
||||||
$dbPool->get()->con->prepare(
|
$dbPool->get()->con->prepare(
|
||||||
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'projectmanagement_task_relation` (
|
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'projectmanagement_task_relation` (
|
||||||
`projectmanagement_task_relation_id` int(11) NOT NULL AUTO_INCREMENT,
|
`projectmanagement_task_relation_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ use phpOMS\Module\WebInterface;
|
||||||
use phpOMS\Views\View;
|
use phpOMS\Views\View;
|
||||||
use Modules\ProjectManagement\Models\ProjectMapper;
|
use Modules\ProjectManagement\Models\ProjectMapper;
|
||||||
use Modules\ProjectManagement\Models\Project;
|
use Modules\ProjectManagement\Models\Project;
|
||||||
|
use phpOMS\Asset\AssetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event Management controller class.
|
* Event Management controller class.
|
||||||
|
|
@ -136,6 +137,10 @@ class Controller extends ModuleAbstract implements WebInterface
|
||||||
*/
|
*/
|
||||||
public function viewProjectManagementProfile(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
|
public function viewProjectManagementProfile(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
|
||||||
{
|
{
|
||||||
|
/** @var Head $head */
|
||||||
|
$head = $response->get('Content')->getData('head');
|
||||||
|
$head->addAsset(AssetType::CSS, $request->getUri()->getBase() . 'Modules/Calendar/Theme/Backend/css/styles.css');
|
||||||
|
|
||||||
$view = new View($this->app, $request, $response);
|
$view = new View($this->app, $request, $response);
|
||||||
$view->setTemplate('/Modules/ProjectManagement/Theme/Backend/projectmanagement-profile');
|
$view->setTemplate('/Modules/ProjectManagement/Theme/Backend/projectmanagement-profile');
|
||||||
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001701001, $request, $response));
|
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001701001, $request, $response));
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,8 @@ class Project
|
||||||
|
|
||||||
private $progressType = ProgressType::MANUAL;
|
private $progressType = ProgressType::MANUAL;
|
||||||
|
|
||||||
|
private $media = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created at.
|
* Created at.
|
||||||
*
|
*
|
||||||
|
|
@ -89,6 +91,16 @@ class Project
|
||||||
return $this->id;
|
return $this->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getMedia() : array
|
||||||
|
{
|
||||||
|
return $this->media;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addMedia($media) /* : void */
|
||||||
|
{
|
||||||
|
$this->media[] = $media;
|
||||||
|
}
|
||||||
|
|
||||||
public function addTask(Task $task)
|
public function addTask(Task $task)
|
||||||
{
|
{
|
||||||
if($task->getId() !== 0) {
|
if($task->getId() !== 0) {
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ use phpOMS\DataStorage\Database\Query\Builder;
|
||||||
use phpOMS\DataStorage\Database\Query\Column;
|
use phpOMS\DataStorage\Database\Query\Column;
|
||||||
use phpOMS\DataStorage\Database\RelationType;
|
use phpOMS\DataStorage\Database\RelationType;
|
||||||
use Modules\Tasks\Models\TaskMapper;
|
use Modules\Tasks\Models\TaskMapper;
|
||||||
|
use Modules\Media\Models\MediaMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mapper class.
|
* Mapper class.
|
||||||
|
|
@ -68,6 +69,12 @@ class ProjectMapper extends DataMapperAbstract
|
||||||
'dst' => 'projectmanagement_task_relation_dst',
|
'dst' => 'projectmanagement_task_relation_dst',
|
||||||
'src' => 'projectmanagement_task_relation_src',
|
'src' => 'projectmanagement_task_relation_src',
|
||||||
],
|
],
|
||||||
|
'media' => [ // todo: maybe make this a has one and then link to collection instead of single media files!
|
||||||
|
'mapper' => MediaMapper::class,
|
||||||
|
'table' => 'projectmanagement_project_media',
|
||||||
|
'dst' => 'projectmanagement_project_media_src',
|
||||||
|
'src' => 'projectmanagement_project_media_dst',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -81,16 +81,99 @@ echo $this->getData('nav')->render(); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12 col-md-6">
|
<div id="calendar" class="m-calendar m-calendar-mini col-xs-12 col-md-6" draggable="true" data-action='[
|
||||||
<section class="box wf-100">
|
{
|
||||||
<header><h1>Calendar</h1></header>
|
"listener": "click", "selector": "#calendar span.tag", "action": [
|
||||||
</section>
|
{"key": 1, "type": "dom.popup", "tpl": "calendar-event-popup-tpl", "aniIn": "fadeIn"}
|
||||||
</div>
|
]
|
||||||
|
}
|
||||||
|
]'>
|
||||||
|
<div class="box wf-100">
|
||||||
|
<ul class="weekdays green">
|
||||||
|
<li><?= $this->getHtml('Sunday', 'Calendar'); ?>
|
||||||
|
<li><?= $this->getHtml('Monday', 'Calendar'); ?>
|
||||||
|
<li><?= $this->getHtml('Tuesday', 'Calendar'); ?>
|
||||||
|
<li><?= $this->getHtml('Wednesday', 'Calendar'); ?>
|
||||||
|
<li><?= $this->getHtml('Thursday', 'Calendar'); ?>
|
||||||
|
<li><?= $this->getHtml('Friday', 'Calendar'); ?>
|
||||||
|
<li><?= $this->getHtml('Saturday', 'Calendar'); ?>
|
||||||
|
</ul>
|
||||||
|
<?php $current = $project->getCalendar()->getDate()->getMonthCalendar(0); $isActiveMonth = false;
|
||||||
|
for($i = 0; $i < 6; $i++) : ?>
|
||||||
|
<ul class="days">
|
||||||
|
<?php for($j = 0; $j < 7; $j++) :
|
||||||
|
$isActiveMonth = ((int) $current[$i*7+$j]->format('d') === 1) ? !$isActiveMonth : $isActiveMonth;
|
||||||
|
?>
|
||||||
|
<?php if($isActiveMonth) :?>
|
||||||
|
<li class="day<?= $project->getCalendar()->hasEventOnDate($current[$i*7+$j]) ? ' has-event' : '';?>">
|
||||||
|
<div class="date"><?= $current[$i*7+$j]->format('d'); ?></div>
|
||||||
|
<?php else: ?>
|
||||||
|
<li class="day other-month<?= $project->getCalendar()->hasEventOnDate($current[$i*7+$j]) ? ' has-event' : '';?>">
|
||||||
|
<div class="date"><?= $current[$i*7+$j]->format('d'); ?></div>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php endfor; ?>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<?php endfor;?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-xs-12 col-md-6">
|
<div class="col-xs-12 col-md-6">
|
||||||
<section class="box wf-100">
|
<div class="box wf-100">
|
||||||
<header><h1>Media</h1></header>
|
<table class="table blue">
|
||||||
</section>
|
<caption><?= $this->getHtml('Media', 'Media') ?></caption>
|
||||||
|
<thead>
|
||||||
|
<td>
|
||||||
|
<td class="wf-100"><?= $this->getHtml('Name', 'Media') ?>
|
||||||
|
<td><?= $this->getHtml('Type', 'Media') ?>
|
||||||
|
<td><?= $this->getHtml('Size', 'Media') ?>
|
||||||
|
<td><?= $this->getHtml('Creator', 'Media') ?>
|
||||||
|
<td><?= $this->getHtml('Created', 'Media') ?>
|
||||||
|
<tfoot>
|
||||||
|
<tbody>
|
||||||
|
<?php $count = 0; $media = $project->getMedia(); foreach($media as $key => $value) : $count++;
|
||||||
|
$url = \phpOMS\Uri\UriFactory::build('{/base}/{/lang}/backend/media/single?{?}&id=' . $value->getId());
|
||||||
|
|
||||||
|
$icon = '';
|
||||||
|
$extensionType = \phpOMS\System\File\FileUtils::getExtensionType($value->getExtension());
|
||||||
|
|
||||||
|
if($extensionType === \phpOMS\System\File\ExtensionType::CODE) {
|
||||||
|
$icon = 'file-code-o';
|
||||||
|
} elseif($extensionType === \phpOMS\System\File\ExtensionType::TEXT) {
|
||||||
|
$icon = 'file-text-o';
|
||||||
|
} elseif($extensionType === \phpOMS\System\File\ExtensionType::PRESENTATION) {
|
||||||
|
$icon = 'file-powerpoint-o';
|
||||||
|
} elseif($extensionType === \phpOMS\System\File\ExtensionType::PDF) {
|
||||||
|
$icon = 'file-pdf-o';
|
||||||
|
} elseif($extensionType === \phpOMS\System\File\ExtensionType::ARCHIVE) {
|
||||||
|
$icon = 'file-zip-o';
|
||||||
|
} elseif($extensionType === \phpOMS\System\File\ExtensionType::AUDIO) {
|
||||||
|
$icon = 'file-audio-o';
|
||||||
|
} elseif($extensionType === \phpOMS\System\File\ExtensionType::VIDEO) {
|
||||||
|
$icon = 'file-video-o';
|
||||||
|
} elseif($extensionType === \phpOMS\System\File\ExtensionType::IMAGE) {
|
||||||
|
$icon = 'file-image-o';
|
||||||
|
} elseif($extensionType === \phpOMS\System\File\ExtensionType::SPREADSHEET) {
|
||||||
|
$icon = 'file-excel-o';
|
||||||
|
} elseif($value->getExtension() === 'collection') {
|
||||||
|
$icon = 'folder-open-o';
|
||||||
|
} else {
|
||||||
|
$icon = 'file-o';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<tr data-href="<?= $url; ?>">
|
||||||
|
<td><a href="<?= $url; ?>"><i class="fa fa-<?= $this->printHtml($icon); ?>"></i></a>
|
||||||
|
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->getName()); ?></a>
|
||||||
|
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->getExtension()); ?></a>
|
||||||
|
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->getSize()); ?></a>
|
||||||
|
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->getCreatedBy()->getName1()); ?></a>
|
||||||
|
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->getCreatedAt()->format('Y-m-d H:i:s')); ?></a>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<?php if($count === 0) : ?>
|
||||||
|
<tr><td colspan="5" class="empty"><?= $this->getHtml('Empty', 0, 0); ?>
|
||||||
|
<?php endif; ?>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user