diff --git a/Admin/Installer.php b/Admin/Installer.php index 993a455..6349e85 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -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`);' )->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( 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'projectmanagement_task_relation` ( `projectmanagement_task_relation_id` int(11) NOT NULL AUTO_INCREMENT, diff --git a/Controller.php b/Controller.php index 2cfdff2..51c7fa9 100644 --- a/Controller.php +++ b/Controller.php @@ -24,6 +24,7 @@ use phpOMS\Module\WebInterface; use phpOMS\Views\View; use Modules\ProjectManagement\Models\ProjectMapper; use Modules\ProjectManagement\Models\Project; +use phpOMS\Asset\AssetType; /** * Event Management controller class. @@ -136,6 +137,10 @@ class Controller extends ModuleAbstract implements WebInterface */ 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->setTemplate('/Modules/ProjectManagement/Theme/Backend/projectmanagement-profile'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001701001, $request, $response)); diff --git a/Models/Project.php b/Models/Project.php index 867f953..a7ad8e9 100644 --- a/Models/Project.php +++ b/Models/Project.php @@ -50,6 +50,8 @@ class Project private $progressType = ProgressType::MANUAL; + private $media = []; + /** * Created at. * @@ -89,6 +91,16 @@ class Project return $this->id; } + public function getMedia() : array + { + return $this->media; + } + + public function addMedia($media) /* : void */ + { + $this->media[] = $media; + } + public function addTask(Task $task) { if($task->getId() !== 0) { diff --git a/Models/ProjectMapper.php b/Models/ProjectMapper.php index 0a5729f..457ef05 100644 --- a/Models/ProjectMapper.php +++ b/Models/ProjectMapper.php @@ -20,6 +20,7 @@ use phpOMS\DataStorage\Database\Query\Builder; use phpOMS\DataStorage\Database\Query\Column; use phpOMS\DataStorage\Database\RelationType; use Modules\Tasks\Models\TaskMapper; +use Modules\Media\Models\MediaMapper; /** * Mapper class. @@ -68,6 +69,12 @@ class ProjectMapper extends DataMapperAbstract 'dst' => 'projectmanagement_task_relation_dst', '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', + ], ]; /** diff --git a/Theme/Backend/projectmanagement-profile.tpl.php b/Theme/Backend/projectmanagement-profile.tpl.php index b835dad..4418648 100644 --- a/Theme/Backend/projectmanagement-profile.tpl.php +++ b/Theme/Backend/projectmanagement-profile.tpl.php @@ -81,16 +81,99 @@ echo $this->getData('nav')->render(); ?>
| + | = $this->getHtml('Name', 'Media') ?> + | = $this->getHtml('Type', 'Media') ?> + | = $this->getHtml('Size', 'Media') ?> + | = $this->getHtml('Creator', 'Media') ?> + | = $this->getHtml('Created', 'Media') ?> + | + + 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'; + } + ?> +
| + | = $this->printHtml($value->getName()); ?> + | = $this->printHtml($value->getExtension()); ?> + | = $this->printHtml($value->getSize()); ?> + | = $this->printHtml($value->getCreatedBy()->getName1()); ?> + | = $this->printHtml($value->getCreatedAt()->format('Y-m-d H:i:s')); ?> + + + |
| = $this->getHtml('Empty', 0, 0); ?> + + | |||||