diff --git a/Admin/Installer.php b/Admin/Installer.php index 7048f06..e40c94e 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -65,6 +65,23 @@ class Installer extends InstallerAbstract ADD CONSTRAINT `' . $dbPool->get()->prefix . 'marketing_promotion_ibfk_2` FOREIGN KEY (`marketing_promotion_created_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);' )->execute(); + $dbPool->get()->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'marketing_promotion_media` ( + `marketing_promotion_media_id` int(11) NOT NULL AUTO_INCREMENT, + `marketing_promotion_media_src` int(11) NULL, + `marketing_promotion_media_dst` int(11) NULL, + PRIMARY KEY (`marketing_promotion_media_id`), + KEY `marketing_promotion_media_src` (`marketing_promotion_media_src`), + KEY `marketing_promotion_media_dst` (`marketing_promotion_media_dst`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8;' + )->execute(); + + $dbPool->get()->con->prepare( + 'ALTER TABLE `' . $dbPool->get()->prefix . 'marketing_promotion_media` + ADD CONSTRAINT `' . $dbPool->get()->prefix . 'marketing_promotion_media_ibfk_1` FOREIGN KEY (`marketing_promotion_media_src`) REFERENCES `' . $dbPool->get()->prefix . 'marketing_promotion` (`marketing_promotion_id`), + ADD CONSTRAINT `' . $dbPool->get()->prefix . 'marketing_promotion_media_ibfk_2` FOREIGN KEY (`marketing_promotion_media_dst`) REFERENCES `' . $dbPool->get()->prefix . 'media` (`media_id`);' + )->execute(); + $dbPool->get()->con->prepare( 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'marketing_promotion_task_relation` ( `marketing_promotion_task_relation_id` int(11) NOT NULL AUTO_INCREMENT, diff --git a/Controller.php b/Controller.php index d443621..6bb2a8e 100644 --- a/Controller.php +++ b/Controller.php @@ -24,6 +24,7 @@ use phpOMS\Module\WebInterface; use phpOMS\Views\View; use Modules\Marketing\Models\Promotion; use Modules\Marketing\Models\PromotionMapper; +use phpOMS\Asset\AssetType; /** * Marketing controller class. @@ -118,6 +119,10 @@ class Controller extends ModuleAbstract implements WebInterface */ public function viewMarketingPromotionProfile(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/Marketing/Theme/Backend/promotion-profile'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001902001, $request, $response)); diff --git a/Models/Promotion.php b/Models/Promotion.php index 054d0dd..ab0ba23 100644 --- a/Models/Promotion.php +++ b/Models/Promotion.php @@ -46,6 +46,8 @@ class Promotion private $earnings = null; + private $media = []; + /** * Created at. * @@ -85,6 +87,16 @@ class Promotion 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/PromotionMapper.php b/Models/PromotionMapper.php index d023306..175f88a 100644 --- a/Models/PromotionMapper.php +++ b/Models/PromotionMapper.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. @@ -66,6 +67,12 @@ class PromotionMapper extends DataMapperAbstract 'dst' => 'marketing_promotion_task_relation_dst', 'src' => 'marketing_promotion_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' => 'marketing_promotion_media', + 'dst' => 'marketing_promotion_media_src', + 'src' => 'marketing_promotion_media_dst', + ], ]; /** diff --git a/Theme/Backend/promotion-profile.tpl.php b/Theme/Backend/promotion-profile.tpl.php index 1edf999..c9b02df 100644 --- a/Theme/Backend/promotion-profile.tpl.php +++ b/Theme/Backend/promotion-profile.tpl.php @@ -72,16 +72,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); ?> + + | |||||