diff --git a/Admin/Installer.php b/Admin/Installer.php index 3a17a53..da9ab70 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -68,6 +68,23 @@ class Installer extends InstallerAbstract ADD CONSTRAINT `' . $dbPool->get()->prefix . 'eventmanagement_event_ibfk_2` FOREIGN KEY (`eventmanagement_event_created_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);' )->execute(); + $dbPool->get()->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'eventmanagement_event_media` ( + `eventmanagement_event_media_id` int(11) NOT NULL AUTO_INCREMENT, + `eventmanagement_event_media_src` int(11) NULL, + `eventmanagement_event_media_dst` int(11) NULL, + PRIMARY KEY (`eventmanagement_event_media_id`), + KEY `eventmanagement_event_media_src` (`eventmanagement_event_media_src`), + KEY `eventmanagement_event_media_dst` (`eventmanagement_event_media_dst`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8;' + )->execute(); + + $dbPool->get()->con->prepare( + 'ALTER TABLE `' . $dbPool->get()->prefix . 'eventmanagement_event_media` + ADD CONSTRAINT `' . $dbPool->get()->prefix . 'eventmanagement_event_media_ibfk_1` FOREIGN KEY (`eventmanagement_event_media_src`) REFERENCES `' . $dbPool->get()->prefix . 'eventmanagement_event` (`eventmanagement_event_id`), + ADD CONSTRAINT `' . $dbPool->get()->prefix . 'eventmanagement_event_media_ibfk_2` FOREIGN KEY (`eventmanagement_event_media_dst`) REFERENCES `' . $dbPool->get()->prefix . 'media` (`media_id`);' + )->execute(); + $dbPool->get()->con->prepare( 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'eventmanagement_task_relation` ( `eventmanagement_task_relation_id` int(11) NOT NULL AUTO_INCREMENT, diff --git a/Controller.php b/Controller.php index 2a25b20..133f37a 100644 --- a/Controller.php +++ b/Controller.php @@ -21,6 +21,7 @@ use phpOMS\Module\WebInterface; use phpOMS\Views\View; use Modules\EventManagement\Models\EventMapper; use Modules\EventManagement\Models\Event; +use phpOMS\Asset\AssetType; /** * Event Management controller class. @@ -133,6 +134,10 @@ class Controller extends ModuleAbstract implements WebInterface */ public function viewEventManagementProfile(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/EventManagement/Theme/Backend/eventmanagement-profile'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004201001, $request, $response)); diff --git a/Models/Event.php b/Models/Event.php index 9400213..0bbce4a 100644 --- a/Models/Event.php +++ b/Models/Event.php @@ -59,6 +59,8 @@ class Event private $tasks = []; + private $media = []; + private $progress = 0; private $progressType = ProgressType::MANUAL; @@ -92,6 +94,16 @@ class Event $this->setName($name); } + public function getMedia() : array + { + return $this->media; + } + + public function addMedia($media) /* : void */ + { + $this->media[] = $media; + } + public function getStart() : \DateTime { return $this->start; diff --git a/Models/EventMapper.php b/Models/EventMapper.php index a68c0b5..042897f 100644 --- a/Models/EventMapper.php +++ b/Models/EventMapper.php @@ -19,6 +19,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 EventMapper extends DataMapperAbstract 'dst' => 'eventmanagement_task_relation_dst', 'src' => 'eventmanagement_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' => 'eventmanagement_event_media', + 'dst' => 'eventmanagement_event_media_src', + 'src' => 'eventmanagement_event_media_dst', + ], ]; /** diff --git a/Theme/Backend/eventmanagement-profile.tpl.php b/Theme/Backend/eventmanagement-profile.tpl.php index c11271d..65617f0 100644 --- a/Theme/Backend/eventmanagement-profile.tpl.php +++ b/Theme/Backend/eventmanagement-profile.tpl.php @@ -82,16 +82,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); ?> + + | |||||