mirror of
https://github.com/Karaka-Management/oms-Media.git
synced 2026-01-11 17:08:40 +00:00
Init
This commit is contained in:
commit
b68fc816ee
38
Admin/Install/Navigation.php
Normal file
38
Admin/Install/Navigation.php
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Admin\Install;
|
||||
|
||||
/**
|
||||
* 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 Navigation
|
||||
{
|
||||
public static function install($dbPool)
|
||||
{
|
||||
$navData = json_decode(file_get_contents(__DIR__ . '/nav.install.json'), true);
|
||||
|
||||
$class = '\\Modules\\Navigation\\Admin\\Installer';
|
||||
$class::installExternal($dbPool, $navData);
|
||||
}
|
||||
}
|
||||
78
Admin/Install/nav.install.json
Normal file
78
Admin/Install/nav.install.json
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
[
|
||||
{
|
||||
"id": 1000401001,
|
||||
"pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd",
|
||||
"type": 2,
|
||||
"subtype": 1,
|
||||
"name": "Media",
|
||||
"uri": "/{/lang}/backend/media/list",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 20,
|
||||
"from": "Media",
|
||||
"permission": null,
|
||||
"parent": 1000201001,
|
||||
"children": [
|
||||
{
|
||||
"id": 1000402001,
|
||||
"pid": "1ba288c868cacf14e56f8205efef31d697301d02",
|
||||
"type": 3,
|
||||
"subtype": 1,
|
||||
"name": "List",
|
||||
"uri": "/{/lang}/backend/media/list",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 1,
|
||||
"from": "Media",
|
||||
"permission": null,
|
||||
"parent": 1000401001,
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": 1000403001,
|
||||
"pid": "1ba288c868cacf14e56f8205efef31d697301d02",
|
||||
"type": 3,
|
||||
"subtype": 5,
|
||||
"name": "Create",
|
||||
"uri": "/{/lang}/backend/media/create",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 5,
|
||||
"from": "Media",
|
||||
"permission": null,
|
||||
"parent": 1000401001,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 1000410001,
|
||||
"pid": "722846d6c55f46fd3d372bba7311a150acd1f23c",
|
||||
"type": 2,
|
||||
"subtype": 2,
|
||||
"name": "Media",
|
||||
"uri": "/{/lang}/backend/profile/single/media",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 3,
|
||||
"from": "Media",
|
||||
"permission": null,
|
||||
"parent": 1000301001,
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": 1000410002,
|
||||
"pid": "f277f11a122129a52d36f788f42e5c09766cf4ae",
|
||||
"type": 3,
|
||||
"subtype": 1,
|
||||
"name": "Media",
|
||||
"uri": "/{/lang}/backend/admin/account/single/media",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 3,
|
||||
"from": "Media",
|
||||
"permission": null,
|
||||
"parent": 1000104001,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
102
Admin/Installer.php
Normal file
102
Admin/Installer.php
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Admin;
|
||||
|
||||
use phpOMS\DataStorage\Database\DatabaseType;
|
||||
use phpOMS\DataStorage\Database\Pool;
|
||||
use phpOMS\Module\InstallerAbstract;
|
||||
|
||||
/**
|
||||
* Media install class.
|
||||
*
|
||||
* @category Modules
|
||||
* @package Modules\Media
|
||||
* @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(Pool $dbPool, array $info)
|
||||
{
|
||||
parent::install($dbPool, $info);
|
||||
|
||||
switch ($dbPool->get('core')->getType()) {
|
||||
case DatabaseType::MYSQL:
|
||||
$dbPool->get('core')->con->prepare(
|
||||
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'media` (
|
||||
`media_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`media_name` varchar(100) NOT NULL,
|
||||
`media_versioned` tinyint(1) NOT NULL,
|
||||
`media_file` varchar(255) NOT NULL,
|
||||
`media_extension` varchar(10) NULL,
|
||||
`media_collection` tinyint(1) NULL,
|
||||
`media_size` int(11) NULL,
|
||||
`media_created_by` int(11) DEFAULT NULL,
|
||||
`media_created_at` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`media_id`),
|
||||
KEY `media_created_by` (`media_created_by`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8;'
|
||||
)->execute();
|
||||
|
||||
$dbPool->get('core')->con->prepare(
|
||||
'ALTER TABLE `' . $dbPool->get('core')->prefix . 'media`
|
||||
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'media_ibfk_1` FOREIGN KEY (`media_created_by`) REFERENCES `' . $dbPool->get('core')->prefix . 'account` (`account_id`);'
|
||||
)->execute();
|
||||
|
||||
$dbPool->get('core')->con->prepare(
|
||||
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'media_relation` (
|
||||
`media_relation_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`media_relation_src` int(11) NULL,
|
||||
`media_relation_dst` int(11) NULL,
|
||||
PRIMARY KEY (`media_relation_id`),
|
||||
KEY `media_relation_src` (`media_relation_src`),
|
||||
KEY `media_relation_dst` (`media_relation_dst`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8;'
|
||||
)->execute();
|
||||
|
||||
$dbPool->get('core')->con->prepare(
|
||||
'ALTER TABLE `' . $dbPool->get('core')->prefix . 'media_relation`
|
||||
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'media_relation_ibfk_1` FOREIGN KEY (`media_relation_src`) REFERENCES `' . $dbPool->get('core')->prefix . 'media` (`media_id`),
|
||||
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'media_relation_ibfk_2` FOREIGN KEY (`media_relation_dst`) REFERENCES `' . $dbPool->get('core')->prefix . 'media` (`media_id`);'
|
||||
)->execute();
|
||||
|
||||
$dbPool->get('core')->con->prepare(
|
||||
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'media_permission` (
|
||||
`media_permission_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`media_permission_type` tinyint(1) NOT NULL,
|
||||
`media_permission_reference` int(11) NOT NULL,
|
||||
`media_permission_permission` tinyint(2) NOT NULL,
|
||||
`media_permission_media` int(11) NOT NULL,
|
||||
PRIMARY KEY (`media_permission_id`),
|
||||
KEY `media_permission_media` (`media_permission_media`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8;'
|
||||
)->execute();
|
||||
|
||||
$dbPool->get('core')->con->prepare(
|
||||
'ALTER TABLE `' . $dbPool->get('core')->prefix . 'media_permission`
|
||||
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'media_permission_ibfk_1` FOREIGN KEY (`media_permission_media`) REFERENCES `' . $dbPool->get('core')->prefix . 'media` (`media_id`);'
|
||||
)->execute();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
41
Controller.js
Normal file
41
Controller.js
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
(function (jsOMS, undefined) {
|
||||
jsOMS.Modules.Media = function (app) {
|
||||
this.app = app;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Media.prototype.bind = function () {
|
||||
var forms = document.getElementsByTagName('form');
|
||||
|
||||
/* Handle media forms */
|
||||
for (var c = 0; c < forms.length; c++) {
|
||||
var self = this;
|
||||
|
||||
this.app.uiManager.getFormManager().injectSubmit(forms[c].id, function (e) {
|
||||
var fileFields = e.querySelectorAll('input[type=file]'),
|
||||
uploader = new jsOMS.Modules.Models.Media.Upload(self.app.responseManager);
|
||||
|
||||
uploader.setSuccess(e.id, function (type, response) {
|
||||
e.querySelector('input[type=file]+input[type=hidden]').value = JSON.stringify(response.uploads);
|
||||
|
||||
var data = self.app.uiManager.getFormManager().getData(e);
|
||||
self.app.uiManager.getFormManager().submit(e, data);
|
||||
});
|
||||
|
||||
uploader.setUri('http://127.0.0.1/en/api/media.php');
|
||||
|
||||
for (var i = 0; i < fileFields.length; i++) {
|
||||
for (var j = 0; j < fileFields[i].files.length; j++) {
|
||||
uploader.addFile(fileFields[i].files[j]);
|
||||
}
|
||||
}
|
||||
|
||||
uploader.upload(e.id);
|
||||
});
|
||||
}
|
||||
}
|
||||
}(window.jsOMS = window.jsOMS || {}));
|
||||
|
||||
jsOMS.ready(function () {
|
||||
window.omsApp.moduleManager.initModule('Media');
|
||||
window.omsApp.moduleManager.get('Media').bind();
|
||||
});
|
||||
217
Controller.php
Normal file
217
Controller.php
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media;
|
||||
|
||||
use Modules\Media\Models\Media;
|
||||
use Modules\Media\Models\MediaMapper;
|
||||
use Modules\Media\Models\UploadFile;
|
||||
use Modules\Media\Models\UploadStatus;
|
||||
use Modules\Navigation\Models\Navigation;
|
||||
use Modules\Navigation\Views\NavigationView;
|
||||
use phpOMS\Contract\RenderableInterface;
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\RequestDestination;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
use phpOMS\Module\ModuleAbstract;
|
||||
use phpOMS\Module\WebInterface;
|
||||
use phpOMS\Views\View;
|
||||
use phpOMS\Views\ViewLayout;
|
||||
|
||||
/**
|
||||
* Media class.
|
||||
*
|
||||
* @category Modules
|
||||
* @package Modules\Media
|
||||
* @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 name.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $module = 'Media';
|
||||
|
||||
/**
|
||||
* Localization files.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $localization = [
|
||||
RequestDestination::BACKEND => ['backend'],
|
||||
];
|
||||
|
||||
/**
|
||||
* Providing.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $providing = [
|
||||
'Content',
|
||||
];
|
||||
|
||||
/**
|
||||
* Dependencies.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $dependencies = [];
|
||||
|
||||
/**
|
||||
* Routing elements.
|
||||
*
|
||||
* @var array
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $routes = [
|
||||
'^.*/backend/media/list.*$' => [['dest' => '\Modules\Media\Controller:viewMediaList', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
|
||||
'^.*/backend/media/create.*$' => [['dest' => '\Modules\Media\Controller:viewMediaCreate', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
|
||||
|
||||
'^.*/api/media/file/create.*$' => [['dest' => '\Modules\Media\Controller:apiFileCreate', 'method' => 'POST', 'type' => ViewLayout::MAIN],],
|
||||
'^.*/api/media/collection/create.*$' => [['dest' => '\Modules\Media\Controller:apiCollectionCreate', 'method' => 'POST', 'type' => ViewLayout::MAIN],],
|
||||
'^.*/api/media/upload.*$' => [['dest' => '\Modules\Media\Controller:apiMediaUpload', 'method' => 'POST', 'type' => ViewLayout::NULL],],
|
||||
];
|
||||
|
||||
/**
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return RenderableInterface
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function viewMediaList(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
|
||||
{
|
||||
$view = new View($this->app, $request, $response);
|
||||
$view->setTemplate('/Modules/Media/Theme/backend/media-list');
|
||||
$view->addData('nav', $this->createNavigation(1000401001, $request, $response));
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return RenderableInterface
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function viewMediaCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
|
||||
{
|
||||
$view = new View($this->app, $request, $response);
|
||||
$view->setTemplate('/Modules/Media/Theme/backend/media-create');
|
||||
$view->addData('nav', $this->createNavigation(1000401001, $request, $response));
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows api content.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function apiMediaUpload(RequestAbstract $request, ResponseAbstract $response, $data = null)
|
||||
{
|
||||
$uploads = $this->uploadFiles($_FILES, $request->getAccount());
|
||||
|
||||
$response->set($request->__toString(), [['uploads' => $uploads, 'type' => 'UI']]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $files Files
|
||||
* @param int $account Uploader
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function uploadFiles(array $files, \int $account) : array
|
||||
{
|
||||
$mediaCreated = [];
|
||||
|
||||
if (isset($files)) {
|
||||
$upload = new UploadFile();
|
||||
$rndPath = str_pad(dechex(rand(0, 65535)), 4, '0', STR_PAD_LEFT);
|
||||
$path = '/Modules/Media/Files/' . $rndPath[0] . $rndPath[1] . '/' . $rndPath[2] . $rndPath[3];
|
||||
$upload->setOutputDir($path);
|
||||
$upload->setFileName(false);
|
||||
$status = $upload->upload($files);
|
||||
|
||||
$mediaMapper = new MediaMapper($this->app->dbPool->get());
|
||||
|
||||
foreach ($status as $uFile) {
|
||||
if ($uFile['status'] === UploadStatus::OK) {
|
||||
$media = new Media();
|
||||
$media->setPath($uFile['path'] . '/' . $uFile['filename']);
|
||||
$media->setName($uFile['filename']);
|
||||
$media->setSize($uFile['size']);
|
||||
$media->setCreatedBy($account);
|
||||
$media->setCreatedAt(new \DateTime('NOW'));
|
||||
$media->setExtension($uFile['extension']);
|
||||
|
||||
$mediaCreated[] = $mediaMapper->create($media);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $mediaCreated;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $pageId Page/parent Id for navigation
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
*
|
||||
* @return RenderableInterface
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
private function createNavigation(\int $pageId, RequestAbstract $request, ResponseAbstract $response)
|
||||
{
|
||||
$nav = Navigation::getInstance($request, $this->app->dbPool);
|
||||
$navView = new NavigationView($this->app, $request, $response);
|
||||
$navView->setTemplate('/Modules/Navigation/Theme/backend/mid');
|
||||
$navView->setNav($nav->getNav());
|
||||
$navView->setLanguage($request->getL11n()->language);
|
||||
$navView->setParent($pageId);
|
||||
|
||||
return $navView;
|
||||
}
|
||||
}
|
||||
94
Models/Collection.php
Normal file
94
Models/Collection.php
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Models;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Media class.
|
||||
*
|
||||
* @category Modules
|
||||
* @package Modules\Media
|
||||
* @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 Collection extends Media
|
||||
{
|
||||
|
||||
/**
|
||||
* Resource id.
|
||||
*
|
||||
* @var \int[]
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $sources = [];
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Set sources.
|
||||
*
|
||||
* @param array $sources Source array
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setSources(array $sources)
|
||||
{
|
||||
$this->sources = $sources;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set sources.
|
||||
*
|
||||
* @param \int $source Source
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function addSource(\int $source)
|
||||
{
|
||||
$this->sources[] = $source;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sources.
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getSources() : array
|
||||
{
|
||||
return $this->sources;
|
||||
}
|
||||
}
|
||||
68
Models/CollectionMapper.php
Normal file
68
Models/CollectionMapper.php
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Models;
|
||||
|
||||
use phpOMS\DataStorage\Database\Query\Builder;
|
||||
use phpOMS\DataStorage\Database\Query\Column;
|
||||
|
||||
class CollectionMapper extends MediaMapper
|
||||
{
|
||||
protected static $hasMany = [
|
||||
'source' => [
|
||||
'mapper' => null,
|
||||
'table' => 'media_relation',
|
||||
'dst' => 'media_relation_dst',
|
||||
'src' => 'media_relation_src'
|
||||
]
|
||||
];
|
||||
|
||||
/**
|
||||
* Primary table.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $table = 'media';
|
||||
|
||||
protected static $createdAt = 'media_created_at';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $primaryField = 'media_id';
|
||||
|
||||
/**
|
||||
* Find.
|
||||
*
|
||||
* @param array $columns Columns to select
|
||||
*
|
||||
* @return Builder
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function find(...$columns) : Builder
|
||||
{
|
||||
return parent::find(...$columns)->from('account_permission')
|
||||
->where('account_permission.account_permission_for', '=', 'news')
|
||||
->where('account_permission.account_permission_id1', '=', 1)
|
||||
->where('news.news_id', '=', new Column('account_permission.account_permission_id2'))
|
||||
->where('account_permission.account_permission_r', '=', 1);
|
||||
}
|
||||
}
|
||||
15
Models/FileStorageInterface.php
Normal file
15
Models/FileStorageInterface.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/ // TODO: implement file storage interface
|
||||
49
Models/FileUploaderTrait.php
Normal file
49
Models/FileUploaderTrait.php
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Models;
|
||||
|
||||
use phpOMS\Asset\AssetType;
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
|
||||
/**
|
||||
* Options trait.
|
||||
*
|
||||
* @category Framework
|
||||
* @package phpOMS\Config
|
||||
* @since 1.0.0
|
||||
*/
|
||||
trait FileUploaderTrait
|
||||
{
|
||||
|
||||
/**
|
||||
* Setup file uploader.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Misc. data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setUpFileUploader(RequestAbstract $request, ResponseAbstract $response, $data = null)
|
||||
{
|
||||
$head = $response->getHead();
|
||||
$head->addAsset(AssetType::JS, $request->getUri()->getBase() . 'Modules/Media/ModuleMedia.js');
|
||||
}
|
||||
}
|
||||
15
Models/FtpFileStorage.php
Normal file
15
Models/FtpFileStorage.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/ // TODO: implement filestorage on remote ftp server
|
||||
15
Models/LocalFileStorage.php
Normal file
15
Models/LocalFileStorage.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/ // TODO: implement local file storage
|
||||
346
Models/Media.php
Normal file
346
Models/Media.php
Normal file
|
|
@ -0,0 +1,346 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Models;
|
||||
|
||||
/**
|
||||
* Media class.
|
||||
*
|
||||
* @category Modules
|
||||
* @package Modules\Media
|
||||
* @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 Media
|
||||
{
|
||||
|
||||
/**
|
||||
* ID.
|
||||
*
|
||||
* @var \int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $id = 0;
|
||||
|
||||
/**
|
||||
* Name.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $name = '';
|
||||
|
||||
/**
|
||||
* Extension.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $extension = '';
|
||||
|
||||
/**
|
||||
* File size in bytes.
|
||||
*
|
||||
* @var \int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $size = 0;
|
||||
|
||||
/**
|
||||
* Author.
|
||||
*
|
||||
* @var \int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $createdBy = 0;
|
||||
|
||||
/**
|
||||
* Uploaded.
|
||||
*
|
||||
* @var \DateTime
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $createdAt = null;
|
||||
|
||||
/**
|
||||
* Resource path.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $path = '';
|
||||
|
||||
/**
|
||||
* Is versioned.
|
||||
*
|
||||
* @var \bool
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $versioned = false;
|
||||
|
||||
/**
|
||||
* Media Description.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $description = '';
|
||||
|
||||
/**
|
||||
* Permissions.
|
||||
*
|
||||
* @var array
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $permissions = [
|
||||
'r' => ['groups' => [],
|
||||
'users' => [],],
|
||||
'w' => ['groups' => [],
|
||||
'users' => [],],
|
||||
'p' => ['groups' => [],
|
||||
'users' => [],],
|
||||
'd' => ['groups' => [],
|
||||
'users' => [],],
|
||||
];
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \int
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getId() : \int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \int $id Id
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setId(\int $id)
|
||||
{
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \int
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getCreatedBy() : \int
|
||||
{
|
||||
return $this->createdBy;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DateTime
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getCreatedAt() : \DateTime
|
||||
{
|
||||
return $this->createdAt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \string
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getExtension() : \string
|
||||
{
|
||||
return $this->extension;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \string
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getPath() : \string
|
||||
{
|
||||
return $this->path;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \string
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getName() : \string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \string
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getDescription() : \string
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \int
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getSize() : \int
|
||||
{
|
||||
return $this->size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \int $createdBy Creator
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setCreatedBy(\int $createdBy)
|
||||
{
|
||||
$this->createdBy = $createdBy;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DateTime $createdAt Creation date
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setCreatedAt(\DateTime $createdAt)
|
||||
{
|
||||
$this->createdAt = $createdAt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \string $extension Extension
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setExtension(\string $extension)
|
||||
{
|
||||
$this->extension = $extension;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \string $path $filepath
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setPath(\string $path)
|
||||
{
|
||||
$this->path = $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \string $name Media name (not file name)
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setName(\string $name)
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \string $description Media description
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setDescription(\string $description)
|
||||
{
|
||||
$this->description = $description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \int $size Filesize
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setSize(\int $size)
|
||||
{
|
||||
$this->size = $size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \bool $versioned File is version controlled
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setVersioned(\bool $versioned)
|
||||
{
|
||||
$this->versioned = $versioned;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \bool
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getVersioned() : \bool
|
||||
{
|
||||
return $this->versioned;
|
||||
}
|
||||
}
|
||||
120
Models/MediaMapper.php
Normal file
120
Models/MediaMapper.php
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Models;
|
||||
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
use phpOMS\DataStorage\Database\Query\Builder;
|
||||
use phpOMS\DataStorage\Database\Query\Column;
|
||||
|
||||
class MediaMapper extends DataMapperAbstract
|
||||
{
|
||||
|
||||
/**
|
||||
* Columns.
|
||||
*
|
||||
* @var array<string, array>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $columns = [
|
||||
'media_id' => ['name' => 'media_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'media_name' => ['name' => 'media_name', 'type' => 'string', 'internal' => 'name'],
|
||||
'media_versioned' => ['name' => 'media_versioned', 'type' => 'bool', 'internal' => 'versioned'],
|
||||
'media_file' => ['name' => 'media_file', 'type' => 'string', 'internal' => 'path'],
|
||||
'media_extension' => ['name' => 'media_extension', 'type' => 'string', 'internal' => 'extension'],
|
||||
'media_collection' => ['name' => 'media_collection', 'type' => 'int', 'internal' => 'collection'],
|
||||
'media_size' => ['name' => 'media_size', 'type' => 'int', 'internal' => 'size'],
|
||||
'media_created_by' => ['name' => 'media_created_by', 'type' => 'int', 'internal' => 'createdBy'],
|
||||
'media_created_at' => ['name' => 'media_created_at', 'type' => 'DateTime', 'internal' => 'createdAt'],
|
||||
];
|
||||
|
||||
/**
|
||||
* Primary table.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $table = 'media';
|
||||
|
||||
protected static $createdAt = 'media_created_at';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static $primaryField = 'media_id';
|
||||
|
||||
/**
|
||||
* Create media.
|
||||
*
|
||||
* @param Media $obj Media
|
||||
*
|
||||
* @return \bool
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function create(&$obj)
|
||||
{
|
||||
try {
|
||||
$objId = parent::create($obj);
|
||||
$query = new Builder($this->db);
|
||||
$query->prefix($this->db->getPrefix())
|
||||
->insert(
|
||||
'account_permission_account',
|
||||
'account_permission_from',
|
||||
'account_permission_for',
|
||||
'account_permission_id1',
|
||||
'account_permission_id2',
|
||||
'account_permission_r',
|
||||
'account_permission_w',
|
||||
'account_permission_m',
|
||||
'account_permission_d',
|
||||
'account_permission_p'
|
||||
)
|
||||
->into('account_permission')
|
||||
->values($obj->getCreatedBy(), 'media', 'media', 1, $objId, 1, 1, 1, 1, 1);
|
||||
|
||||
$this->db->con->prepare($query->toSql())->execute();
|
||||
} catch (\Exception $e) {
|
||||
var_dump($e);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return $objId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find.
|
||||
*
|
||||
* @param array $columns Columns to select
|
||||
*
|
||||
* @return Builder
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function find(...$columns) : Builder
|
||||
{
|
||||
return parent::find(...$columns)->from('account_permission')
|
||||
->where('account_permission.account_permission_for', '=', 'media')
|
||||
->where('account_permission.account_permission_id1', '=', 1)
|
||||
->where('media.media_id', '=', new Column('account_permission.account_permission_id2'))
|
||||
->where('account_permission.account_permission_r', '=', 1);
|
||||
}
|
||||
}
|
||||
31
Models/NullCollection.php
Normal file
31
Models/NullCollection.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Models;
|
||||
|
||||
/**
|
||||
* Media class.
|
||||
*
|
||||
* @category Modules
|
||||
* @package Modules\Media
|
||||
* @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 NullCollection extends Collection
|
||||
{
|
||||
}
|
||||
31
Models/NullMedia.php
Normal file
31
Models/NullMedia.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Models;
|
||||
|
||||
/**
|
||||
* Media class.
|
||||
*
|
||||
* @category Modules
|
||||
* @package Modules\Media
|
||||
* @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 NullMedia extends Media
|
||||
{
|
||||
}
|
||||
75
Models/Upload.js
Normal file
75
Models/Upload.js
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
(function (jsOMS, undefined) {
|
||||
jsOMS.Modules.Models.Media = typeof jsOMS.Modules.Models.Media == 'undefined' ? {} : jsOMS.Modules.Models.Media;
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload = function (responseManager) {
|
||||
this.responseManager = responseManager;
|
||||
this.success = [];
|
||||
|
||||
this.uri = '';
|
||||
this.allowedTypes = [];
|
||||
this.maxFileSize = 0;
|
||||
this.files = [];
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.setSuccess = function (id, callback) {
|
||||
this.success[id] = callback;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.setUri = function (uri) {
|
||||
this.uri = uri;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.setAllowedTypes = function (allowed) {
|
||||
this.allowedTypes = allowed;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.addAllowedType = function (allowed) {
|
||||
this.allowedTypes.push(allowed);
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.setMaxFileSize = function (size) {
|
||||
this.maxFileSize = size;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.addFile = function (file) {
|
||||
this.files.push(file);
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.upload = function (formId) {
|
||||
// TODO: validate file type + file size
|
||||
|
||||
var request = new jsOMS.Request(),
|
||||
formData = new FormData(),
|
||||
self = this;
|
||||
|
||||
this.files.forEach(function (element, index) {
|
||||
formData.append('file' + index, element);
|
||||
});
|
||||
|
||||
request.setData(formData);
|
||||
request.setType('raw');
|
||||
request.setUri(this.uri);
|
||||
request.setMethod('POST');
|
||||
request.setRequestHeader('HTTP_X_REQUESTED_WITH', 'XMLHttpRequest');
|
||||
request.setSuccess(function (xhr) {
|
||||
console.log(xhr); // TODO: remove this is for error checking
|
||||
var o = JSON.parse(xhr.response),
|
||||
response = Object.keys(o).map(function (k) {
|
||||
return o[k];
|
||||
});
|
||||
|
||||
console.log(response);
|
||||
|
||||
for (var k = 0; k < response.length; k++) {
|
||||
if (response[k] !== null) {
|
||||
if (!self.success[formId]) {
|
||||
self.responseManager.execute(response[k].type, response[k]);
|
||||
} else {
|
||||
self.success[formId](response[k].type, response[k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
request.send();
|
||||
};
|
||||
}(window.jsOMS = window.jsOMS || {}));
|
||||
317
Models/UploadFile.php
Normal file
317
Models/UploadFile.php
Normal file
|
|
@ -0,0 +1,317 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Models;
|
||||
|
||||
|
||||
/**
|
||||
* Upload.
|
||||
*
|
||||
* @category Modules
|
||||
* @package Modules\Media
|
||||
* @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 UploadFile
|
||||
{
|
||||
|
||||
/**
|
||||
* Upload max size.
|
||||
*
|
||||
* @var \int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $maxSize = 50000000;
|
||||
|
||||
/**
|
||||
* Allowed mime types.
|
||||
*
|
||||
* @var array
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $allowedTypes = [];
|
||||
|
||||
/**
|
||||
* Output directory.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $outputDir = '/Modules/Media/Files';
|
||||
|
||||
/**
|
||||
* Output file name.
|
||||
*
|
||||
* @var \string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $fileName = '';
|
||||
|
||||
/**
|
||||
* Output file name.
|
||||
*
|
||||
* @var \bool
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $preserveFileName = true;
|
||||
|
||||
/**
|
||||
* Upload file to server.
|
||||
*
|
||||
* @param array $files File data ($_FILE)
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function upload(array $files) : array
|
||||
{
|
||||
$result = [];
|
||||
|
||||
if (count($files) == count($files, COUNT_RECURSIVE)) {
|
||||
$files = [$files];
|
||||
}
|
||||
|
||||
if (count($files) > 1) {
|
||||
do {
|
||||
$rndPath = str_pad(dechex(rand(0, 65535)), 4, '0', STR_PAD_LEFT);
|
||||
} while (file_exists($this->outputDir . '/' . $rndPath));
|
||||
|
||||
$this->outputDir = $this->outputDir . '/' . $rndPath;
|
||||
}
|
||||
|
||||
$rpath = $this->outputDir;
|
||||
|
||||
foreach ($files as $key => $f) {
|
||||
$result[$key] = [];
|
||||
|
||||
if (!isset($f['error'])) {
|
||||
// TODO: handle wrong parameters
|
||||
$result[$key]['status'] = UploadStatus::WRONG_PARAMETERS;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
switch ($f['error']) {
|
||||
case UPLOAD_ERR_OK:
|
||||
break;
|
||||
case UPLOAD_ERR_NO_FILE:
|
||||
// TODO: no file sent
|
||||
$result[$key]['status'] = UploadStatus::NOTHING_UPLOADED;
|
||||
|
||||
return $result;
|
||||
case UPLOAD_ERR_INI_SIZE:
|
||||
case UPLOAD_ERR_FORM_SIZE:
|
||||
// too large
|
||||
$result[$key]['status'] = UploadStatus::UPLOAD_SIZE;
|
||||
|
||||
return $result;
|
||||
default:
|
||||
$result[$key]['status'] = UploadStatus::UNKNOWN_ERROR;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
$result[$key]['size'] = $f['size'];
|
||||
|
||||
if ($f['size'] > $this->maxSize) {
|
||||
// too large2
|
||||
$result[$key]['status'] = UploadStatus::CONFIG_SIZE;
|
||||
|
||||
return $result;
|
||||
}
|
||||
// TODO: do I need pecl fileinfo?
|
||||
if (!empty($this->allowedTypes) && false === $ext = array_search($f['type'], $this->allowedTypes, true)) {
|
||||
// wrong file format
|
||||
$result[$key]['status'] = UploadStatus::WRONG_EXTENSION;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
$path = __DIR__ . '/../../..' . $this->outputDir;
|
||||
|
||||
if ($this->preserveFileName) {
|
||||
$this->fileName = $f['name'];
|
||||
}
|
||||
|
||||
$split = explode('.', $f['name']);
|
||||
$extension = count($split) > 1 ? $split[count($split) - 1] : '';
|
||||
$result[$key]['extension'] = $extension;
|
||||
|
||||
if (!$this->fileName || empty($this->fileName) || file_exists($path . '/' . $this->fileName)) {
|
||||
$rnd = '';
|
||||
|
||||
do {
|
||||
$sha = sha1_file($f['tmp_name'] . $rnd);
|
||||
$sha .= '.' . $extension;
|
||||
|
||||
if ($sha === false) {
|
||||
$result[$key]['status'] = UploadStatus::FAILED_HASHING;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
$this->fileName = $sha;
|
||||
$rnd = rand();
|
||||
} while (file_exists($path . '/' . $this->fileName));
|
||||
}
|
||||
|
||||
$result[$key]['filename'] = $this->fileName;
|
||||
|
||||
if (!is_dir($path)) {
|
||||
\mkdir($path, '0655', true);
|
||||
}
|
||||
|
||||
if (!move_uploaded_file($f['tmp_name'], $path . '/' . $this->fileName)) {
|
||||
// couldn't move
|
||||
$result[$key]['status'] = UploadStatus::NOT_MOVABLE;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
$result[$key]['path'] = $rpath;
|
||||
|
||||
$result[$key]['status'] = UploadStatus::OK;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \int
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getMaxSize() : \int
|
||||
{
|
||||
return $this->maxSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \int $maxSize
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setMaxSize(\int $maxSize)
|
||||
{
|
||||
$this->maxSize = $maxSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getAllowedTypes() : array
|
||||
{
|
||||
return $this->allowedTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $allowedTypes
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setAllowedTypes(array $allowedTypes)
|
||||
{
|
||||
$this->allowedTypes = $allowedTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $allowedTypes
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function addAllowedTypes($allowedTypes)
|
||||
{
|
||||
$this->allowedTypes[] = $allowedTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \string
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getOutputDir() : \string
|
||||
{
|
||||
return $this->outputDir;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \string $outputDir
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setOutputDir(\string $outputDir)
|
||||
{
|
||||
$this->outputDir = $outputDir;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \string
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function getFileName() : \string
|
||||
{
|
||||
return $this->fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \string $fileName
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setFileName(\string $fileName)
|
||||
{
|
||||
$this->fileName = $fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \bool $preserveFileName
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setPreserveFileName(\bool $preserveFileName)
|
||||
{
|
||||
$this->preserveFileName = $preserveFileName;
|
||||
}
|
||||
}
|
||||
42
Models/UploadStatus.php
Normal file
42
Models/UploadStatus.php
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Models;
|
||||
|
||||
use phpOMS\Datatypes\Enum;
|
||||
|
||||
/**
|
||||
* Upload status.
|
||||
*
|
||||
* @category Framework
|
||||
* @package phpOMS\DataStorage\Database
|
||||
* @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 UploadStatus extends Enum
|
||||
{
|
||||
const OK = 0;
|
||||
const WRONG_PARAMETERS = -1;
|
||||
const NOTHING_UPLOADED = -2;
|
||||
const UPLOAD_SIZE = -3;
|
||||
const UNKNOWN_ERROR = -4;
|
||||
const CONFIG_SIZE = -5;
|
||||
const WRONG_EXTENSION = -6;
|
||||
const NOT_MOVABLE = -7;
|
||||
const FAILED_HASHING = -8;
|
||||
}
|
||||
115
ModuleMedia.js
Normal file
115
ModuleMedia.js
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
(function (jsOMS, undefined) {
|
||||
jsOMS.Modules.Models.Media = typeof jsOMS.Modules.Models.Media == 'undefined' ? {} : jsOMS.Modules.Models.Media;
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload = function (responseManager) {
|
||||
this.responseManager = responseManager;
|
||||
this.success = [];
|
||||
|
||||
this.uri = '';
|
||||
this.allowedTypes = [];
|
||||
this.maxFileSize = 0;
|
||||
this.files = [];
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.setSuccess = function (id, callback) {
|
||||
this.success[id] = callback;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.setUri = function (uri) {
|
||||
this.uri = uri;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.setAllowedTypes = function (allowed) {
|
||||
this.allowedTypes = allowed;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.addAllowedType = function (allowed) {
|
||||
this.allowedTypes.push(allowed);
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.setMaxFileSize = function (size) {
|
||||
this.maxFileSize = size;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.addFile = function (file) {
|
||||
this.files.push(file);
|
||||
};
|
||||
|
||||
jsOMS.Modules.Models.Media.Upload.prototype.upload = function (formId) {
|
||||
// TODO: validate file type + file size
|
||||
|
||||
var request = new jsOMS.Request(),
|
||||
formData = new FormData(),
|
||||
self = this;
|
||||
|
||||
this.files.forEach(function (element, index) {
|
||||
formData.append('file' + index, element);
|
||||
});
|
||||
|
||||
request.setData(formData);
|
||||
request.setType('raw');
|
||||
request.setUri(this.uri);
|
||||
request.setMethod('POST');
|
||||
request.setRequestHeader('HTTP_X_REQUESTED_WITH', 'XMLHttpRequest');
|
||||
request.setSuccess(function (xhr) {
|
||||
console.log(xhr); // TODO: remove this is for error checking
|
||||
var o = JSON.parse(xhr.response),
|
||||
response = Object.keys(o).map(function (k) {
|
||||
return o[k];
|
||||
});
|
||||
|
||||
console.log(response);
|
||||
|
||||
for (var k = 0; k < response.length; k++) {
|
||||
if (response[k] !== null) {
|
||||
if (!self.success[formId]) {
|
||||
self.responseManager.execute(response[k].type, response[k]);
|
||||
} else {
|
||||
self.success[formId](response[k].type, response[k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
request.send();
|
||||
};
|
||||
}(window.jsOMS = window.jsOMS || {}));
|
||||
(function (jsOMS, undefined) {
|
||||
jsOMS.Modules.Media = function (app) {
|
||||
this.app = app;
|
||||
};
|
||||
|
||||
jsOMS.Modules.Media.prototype.bind = function () {
|
||||
var forms = document.getElementsByTagName('form');
|
||||
|
||||
/* Handle media forms */
|
||||
for (var c = 0; c < forms.length; c++) {
|
||||
var self = this;
|
||||
|
||||
this.app.uiManager.getFormManager().injectSubmit(forms[c].id, function (e) {
|
||||
var fileFields = e.querySelectorAll('input[type=file]'),
|
||||
uploader = new jsOMS.Modules.Models.Media.Upload(self.app.responseManager);
|
||||
|
||||
uploader.setSuccess(e.id, function (type, response) {
|
||||
e.querySelector('input[type=file]+input[type=hidden]').value = JSON.stringify(response.uploads);
|
||||
|
||||
var data = self.app.uiManager.getFormManager().getData(e);
|
||||
self.app.uiManager.getFormManager().submit(e, data);
|
||||
});
|
||||
|
||||
uploader.setUri('http://127.0.0.1/en/api/media.php');
|
||||
|
||||
for (var i = 0; i < fileFields.length; i++) {
|
||||
for (var j = 0; j < fileFields[i].files.length; j++) {
|
||||
uploader.addFile(fileFields[i].files[j]);
|
||||
}
|
||||
}
|
||||
|
||||
uploader.upload(e.id);
|
||||
});
|
||||
}
|
||||
}
|
||||
}(window.jsOMS = window.jsOMS || {}));
|
||||
|
||||
jsOMS.ready(function () {
|
||||
window.omsApp.moduleManager.get('Media').bind();
|
||||
});
|
||||
0
Theme/backend/Elements/media-select.tpl.php
Normal file
0
Theme/backend/Elements/media-select.tpl.php
Normal file
1
Theme/backend/Elements/media-upload.tpl.php
Normal file
1
Theme/backend/Elements/media-upload.tpl.php
Normal file
|
|
@ -0,0 +1 @@
|
|||
<span id="media-upload"></span>
|
||||
34
Theme/backend/media-create.tpl.php
Normal file
34
Theme/backend/media-create.tpl.php
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
|
||||
echo $this->getData('nav')->render(); ?>
|
||||
<section class="box w-50">
|
||||
<h1><?= $this->l11n->lang['Media']['Upload']; ?></h1>
|
||||
<div class="inner">
|
||||
<form>
|
||||
<table class="layout wf-100">
|
||||
<tr><td><label for="iName"><?= $this->l11n->lang['Media']['Name']; ?></label>
|
||||
<tr><td><input type="text" id="iName" name="name" placeholder="">
|
||||
<tr><td><label for="iFiles"><?= $this->l11n->lang['Media']['Files']; ?></label>
|
||||
<tr><td><input type="file" id="iFiles" name="files" multiple>
|
||||
<tr><td><input type="submit" value="<?= $this->l11n->lang[0]['Create']; ?>">
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
47
Theme/backend/media-list.tpl.php
Normal file
47
Theme/backend/media-list.tpl.php
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
|
||||
|
||||
$footerView = new \Web\Views\Lists\PaginationView($this->app, $this->request, $this->response);
|
||||
$footerView->setTemplate('/Web/Templates/Lists/Footer/PaginationBig');
|
||||
$footerView->setPages(20);
|
||||
$footerView->setPage(1);
|
||||
|
||||
echo $this->getData('nav')->render(); ?>
|
||||
<section class="box">
|
||||
<table class="table">
|
||||
<caption><?= $this->l11n->lang['Media']['Media']; ?></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="wf-100"><?= $this->l11n->lang['Media']['Name']; ?>
|
||||
<td><?= $this->l11n->lang['Media']['Type']; ?>
|
||||
<td><?= $this->l11n->lang['Media']['Size']; ?>
|
||||
<td><?= $this->l11n->lang['Media']['Creator']; ?>
|
||||
<td><?= $this->l11n->lang['Media']['Created']; ?>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3"><?= $footerView->render(); ?>
|
||||
<tbody>
|
||||
<?php $count = 0; foreach([] as $key => $value) : $count++; ?>
|
||||
<?php endforeach; ?>
|
||||
<?php if($count === 0) : ?>
|
||||
<tr><td colspan="5" class="empty"><?= $this->l11n->lang[0]['Empty']; ?>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
</section>
|
||||
88
Theme/backend/media-single.tpl.php
Normal file
88
Theme/backend/media-single.tpl.php
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
/** @noinspection PhpUndefinedMethodInspection */
|
||||
\phpOMS\Module\ModuleFactory::$loaded['Navigation']->call([\Modules\Navigation\Models\NavigationType::CONTENT,
|
||||
1000401001,]);
|
||||
?>
|
||||
|
||||
<div class="b b-3 c4-2 c4" id="i4-2-1">
|
||||
<h1>
|
||||
<?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Preview']; ?>
|
||||
<i class="fa fa-minus min"></i>
|
||||
<i class="fa fa-plus max vh"></i>
|
||||
</h1>
|
||||
|
||||
<div class="bc-1">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="b b-1 c4-2 c4" id="i4-2-2">
|
||||
<h1>
|
||||
<?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Data']; ?>
|
||||
<i class="fa fa-minus min"></i>
|
||||
<i class="fa fa-plus max vh"></i>
|
||||
</h1>
|
||||
|
||||
<div class="bc-1">
|
||||
<!-- @formatter:off -->
|
||||
<table class="tc-1">
|
||||
<tr>
|
||||
<th><label><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Name']; ?></label>
|
||||
<td><?= $media->getName(); ?>
|
||||
<tr>
|
||||
<th><label><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Extension']; ?></label>
|
||||
<td><?= $media->getExtension(); ?>
|
||||
<tr>
|
||||
<th><label><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Size']; ?></label>
|
||||
<td><?= \phpOMS\Utils\Converter\File::byteSizeToString($media->getSize()); ?>
|
||||
<tr>
|
||||
<th><label><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Author']; ?></label>
|
||||
<td><?= $media->getAuthor(); ?>
|
||||
<tr>
|
||||
<th><label><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Created']; ?></label>
|
||||
<td><?= $media->getCreated()->format('Y-m-d H:i:s'); ?>
|
||||
<tr>
|
||||
<th><label><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Changed']; ?></label>
|
||||
<td>asldkf
|
||||
<tr>
|
||||
<th><label><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Changedby']; ?></label>
|
||||
<td>asldkf
|
||||
</table>
|
||||
<!-- @formatter:on -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="b b-1 c4-2 c4" id="i4-2-2">
|
||||
<h1>
|
||||
<?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Settings']; ?>
|
||||
<i class="fa fa-minus min"></i>
|
||||
<i class="fa fa-plus max vh"></i>
|
||||
</h1>
|
||||
|
||||
<div class="bc-1">
|
||||
<ul class="l-1">
|
||||
<li>
|
||||
<label><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Visibility']; ?></label>
|
||||
<li><input type="text">
|
||||
<button><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang[0]['Add']; ?></button>
|
||||
<li>
|
||||
<label><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang['Media']['Editability']; ?></label>
|
||||
<li><input type="text">
|
||||
<button><?= $this->app->accountManager->get($request->getAccount())->getL11n()->lang[0]['Add']; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
18
Theme/lang/api.en.lang.php
Normal file
18
Theme/lang/api.en.lang.php
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
$MODLANG[1] = [
|
||||
'i:ModuleInstalled' => 'Installation of the module {$1} was successful.',
|
||||
];
|
||||
36
Theme/lang/backend.en.lang.php
Normal file
36
Theme/lang/backend.en.lang.php
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
$MODLANG['Media'] = [
|
||||
'Account' => 'Account',
|
||||
'Author' => 'Author',
|
||||
'Changed' => 'Changed',
|
||||
'Changedby' => 'Changed by',
|
||||
'Created' => 'Created',
|
||||
'Creator' => 'Creator',
|
||||
'Data' => 'Data',
|
||||
'Editability' => 'Editability',
|
||||
'Extension' => 'Extension',
|
||||
'Files' => 'Files',
|
||||
'Media' => 'Media',
|
||||
'Name' => 'Name',
|
||||
'Permission' => 'Permission',
|
||||
'Preview' => 'Preview',
|
||||
'Settings' => 'Settings',
|
||||
'Size' => 'Size',
|
||||
'Type' => 'Type',
|
||||
'Upload' => 'Upload',
|
||||
'Visibility' => 'Visibility',
|
||||
];
|
||||
20
Theme/lang/nav.backend.en.lang.php
Normal file
20
Theme/lang/nav.backend.en.lang.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
$MODLANG['Navigation'] = [
|
||||
'Create' => 'Create',
|
||||
'List' => 'List',
|
||||
'Media' => 'Media',
|
||||
];
|
||||
33
Views/MediaCreateView.php
Normal file
33
Views/MediaCreateView.php
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 7.0
|
||||
*
|
||||
* @category TBD
|
||||
* @package TBD
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link http://orange-management.com
|
||||
*/
|
||||
namespace Modules\Media\Views;
|
||||
|
||||
use phpOMS\Views\View;
|
||||
|
||||
/**
|
||||
* Media list view.
|
||||
*
|
||||
* @category Modules
|
||||
* @package Modules\Media
|
||||
* @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 MediaCreateView extends View
|
||||
{
|
||||
}
|
||||
BIN
img/module_teaser_small.png
Normal file
BIN
img/module_teaser_small.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
80
info.json
Normal file
80
info.json
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
{
|
||||
"name": {
|
||||
"id": 1000400000,
|
||||
"internal": "Media",
|
||||
"external": "OMS Media"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"requirements": {
|
||||
"phpOMS": "1.0.0",
|
||||
"phpOMS-db": "1.0.0"
|
||||
},
|
||||
"creator": {
|
||||
"name": "Orange Management",
|
||||
"website": "www.spl1nes.com"
|
||||
},
|
||||
"description": "The profile module.",
|
||||
"directory": "Media",
|
||||
"dependencies": {},
|
||||
"providing": {
|
||||
"Navigation": "*"
|
||||
},
|
||||
"load": [
|
||||
{
|
||||
"pid": [
|
||||
"1ba288c868cacf14e56f8205efef31d697301d02"
|
||||
],
|
||||
"type": 4,
|
||||
"for": "Content",
|
||||
"file": "Media",
|
||||
"from": "Media"
|
||||
},
|
||||
{
|
||||
"pid": [
|
||||
"15b5e54cc7b2f8bdb84ed667d9931d758c6bc108"
|
||||
],
|
||||
"type": 4,
|
||||
"for": "CostUnitAccounting",
|
||||
"file": "Media",
|
||||
"from": "Media"
|
||||
},
|
||||
{
|
||||
"pid": [
|
||||
"e56f238d391b804975e0f47f26d20b6d2d675200"
|
||||
],
|
||||
"type": 4,
|
||||
"for": "Admin",
|
||||
"file": "Media",
|
||||
"from": "Media"
|
||||
},
|
||||
{
|
||||
"pid": [
|
||||
"1ba288c868cacf14e56f8205efef31d697301d02",
|
||||
"e269b5109994852366c276ad5f6bb4ef89f45d2e",
|
||||
"e56f238d391b804975e0f47f26d20b6d2d675200"
|
||||
],
|
||||
"type": 5,
|
||||
"for": "Content",
|
||||
"file": "backend",
|
||||
"from": "Media"
|
||||
},
|
||||
{
|
||||
"pid": [
|
||||
"15b5e54cc7b2f8bdb84ed667d9931d758c6bc108"
|
||||
],
|
||||
"type": 5,
|
||||
"for": "CostUnitAccounting",
|
||||
"file": "api",
|
||||
"from": "Media"
|
||||
},
|
||||
{
|
||||
"pid": [
|
||||
"754a08ddf8bcb1cf22f310f09206dd783d42f7dd"
|
||||
],
|
||||
"type": 5,
|
||||
"from": "Media",
|
||||
"for": "Navigation",
|
||||
"file": "nav.backend"
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user