This commit is contained in:
Dennis Eichhorn 2015-11-29 21:57:18 +01:00
commit 0f28b9e7d6
20 changed files with 1094 additions and 0 deletions

View 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\Messages\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);
}
}

View File

@ -0,0 +1,108 @@
[
{
"id": 1001201001,
"pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd",
"type": 1,
"subtype": 1,
"name": "Messages",
"uri": "/{/lang}/backend/messages/dashboard",
"target": "self",
"icon": "fa fa-envelope",
"order": 10,
"from": "Messages",
"permission": null,
"parent": 0,
"children": [
{
"id": 1001202001,
"pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd",
"type": 3,
"subtype": 1,
"name": "Inbox",
"uri": "/{/lang}/backend/messages/dashboard",
"target": "self",
"icon": null,
"order": 1,
"from": "Messages",
"permission": null,
"parent": 1001201001,
"children": []
},
{
"id": 1001203001,
"pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd",
"type": 3,
"subtype": 1,
"name": "Outbox",
"uri": "/{/lang}/backend/messages/outbox",
"target": "self",
"icon": null,
"order": 5,
"from": "Messages",
"permission": null,
"parent": 1001201001,
"children": []
},
{
"id": 1001204001,
"pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd",
"type": 3,
"subtype": 1,
"name": "Trash",
"uri": "/{/lang}/backend/messages/trash",
"target": "self",
"icon": null,
"order": 10,
"from": "Messages",
"permission": null,
"parent": 1001201001,
"children": []
},
{
"id": 1001205001,
"pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd",
"type": 3,
"subtype": 1,
"name": "Spam",
"uri": "/{/lang}/backend/messages/spam",
"target": "self",
"icon": null,
"order": 15,
"from": "Messages",
"permission": null,
"parent": 1001201001,
"children": []
},
{
"id": 1001206001,
"pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd",
"type": 3,
"subtype": 1,
"name": "Draft",
"uri": "/{/lang}/backend/messages/draft",
"target": "self",
"icon": null,
"order": 20,
"from": "Messages",
"permission": null,
"parent": 1001201001,
"children": []
},
{
"id": 1001207001,
"pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd",
"type": 3,
"subtype": 1,
"name": "Settings",
"uri": "/{/lang}/backend/messages/settings",
"target": "self",
"icon": null,
"order": 50,
"from": "Messages",
"permission": null,
"parent": 1001201001,
"children": []
}
]
}
]

87
Admin/Installer.php Normal file
View File

@ -0,0 +1,87 @@
<?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\Messages\Admin;
use phpOMS\DataStorage\Database\DatabaseType;
use phpOMS\DataStorage\Database\Pool;
use phpOMS\Module\InstallerAbstract;
/**
* Messages install class.
*
* @category Modules
* @package Modules\Messages
* @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 . 'message` (
`message_id` int(11) NOT NULL AUTO_INCREMENT,
`message_type` tinyint(11) NOT NULL,
`message_account` int(11) DEFAULT NULL,
`message_email` varchar(256) NULL,
`message_sent` datetime NULL,
`message_cc` varchar(256) DEFAULT NULL,
`message_bcc` varchar(256) DEFAULT NULL,
`message_content` text DEFAULT NULL,
`message_reference` int(11) DEFAULT NULL,
PRIMARY KEY (`message_id`),
KEY `message_account` (`message_account`),
KEY `message_reference` (`message_reference`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;'
)->execute();
$dbPool->get('core')->con->prepare(
'ALTER TABLE `' . $dbPool->get('core')->prefix . 'message`
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'message_ibfk_1` FOREIGN KEY (`message_account`) REFERENCES `' . $dbPool->get('core')->prefix . 'account` (`account_id`),
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'message_ibfk_2` FOREIGN KEY (`message_reference`) REFERENCES `' . $dbPool->get('core')->prefix . 'message` (`message_id`);'
)->execute();
$dbPool->get('core')->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'messages_attachment` (
`messages_attachment_id` int(11) NOT NULL AUTO_INCREMENT,
`messages_attachment_media` int(11) DEFAULT NULL,
`messages_attachment_message` int(11) NULL,
PRIMARY KEY (`messages_attachment_id`),
KEY `messages_attachment_media` (`messages_attachment_media`),
KEY `messages_attachment_message` (`messages_attachment_message`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;'
)->execute();
$dbPool->get('core')->con->prepare(
'ALTER TABLE `' . $dbPool->get('core')->prefix . 'messages_attachment`
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'messages_attachment_ibfk_1` FOREIGN KEY (`messages_attachment_media`) REFERENCES `' . $dbPool->get('core')->prefix . 'media` (`media_id`),
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'messages_attachment_ibfk_2` FOREIGN KEY (`messages_attachment_message`) REFERENCES `' . $dbPool->get('core')->prefix . 'message` (`message_id`);'
)->execute();
break;
}
}
}

251
Controller.php Normal file
View File

@ -0,0 +1,251 @@
<?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\Messages;
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;
/**
* Messages controller class.
*
* @category Messages
* @package Modules\Messages
* @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 = 'Messages';
/**
* 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/messages/dashboard.*$' => [['dest' => '\Modules\Messages\Controller:viewMessageInbox', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/backend/messages/outbox.*$' => [['dest' => '\Modules\Messages\Controller:viewMessageOutbox', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/backend/messages/trash.*$' => [['dest' => '\Modules\Messages\Controller:viewMessageTrash', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/backend/messages/spam.*$' => [['dest' => '\Modules\Messages\Controller:viewMessageSpam', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/backend/messages/settings.*$' => [['dest' => '\Modules\Messages\Controller:viewMessageSettings', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/backend/messages/mail/create.*$' => [['dest' => '\Modules\Messages\Controller:viewMessageCreate', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/backend/messages/mail/single.*$' => [['dest' => '\Modules\Messages\Controller:viewMessageView', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
'^.*/api/messages/mail/single.*$' => [['dest' => '\Modules\Messages\Controller:viewMessageView', 'method' => 'GET', 'type' => ViewLayout::MAIN],],
];
/**
* @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 viewMessageInbox(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Messages/Theme/backend/dashboard');
$view->addData('nav', $this->createNavigation(1001201001, $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 viewMessageOutbox(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Messages/Theme/backend/mail-out-view');
$view->addData('nav', $this->createNavigation(1001201001, $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 viewMessageTrash(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Messages/Theme/backend/mail-trash-view');
$view->addData('nav', $this->createNavigation(1001201001, $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 viewMessageSpam(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Messages/Theme/backend/mail-spam-view');
$view->addData('nav', $this->createNavigation(1001201001, $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 viewMessageView(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Messages/Theme/backend/mail-view');
$view->addData('nav', $this->createNavigation(1001201001, $request, $response));
$view->addData('id', (int) $request->getData('id'));
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 viewMessageCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Messages/Theme/backend/mail-create');
$view->addData('nav', $this->createNavigation(1001201001, $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 viewMessageSettings(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Messages/Theme/backend/message-settings');
$view->addData('nav', $this->createNavigation(1001201001, $request, $response));
return $view;
}
/**
* @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;
}
}

42
Models/Email.php Normal file
View 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\Messages;
/**
* Email interface.
*
* @category Modules
* @package Messages
* @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
*/
interface Email
{
public function connect($host, $port, $user, $password);
public function getListNew();
public function getListAll();
public function getMessage();
public function removeMessage();
public function setStatus();
}

68
Models/IMAP.php Normal file
View 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\Messages;
use Modules\Messages\Email;
/**
* IMAP class.
*
* @category Modules
* @package Messages
* @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 IMAP implements Email
{
private $con = null;
public function __construct()
{
}
public function connect($host, $port, $user, $password)
{
$this->con = imap_open('{' . $host . ':' . $port . '}', $user, $password);
}
public function getListNew()
{
// TODO: Implement getListNew() method.
}
public function getListAll()
{
// TODO: Implement getListAll() method.
}
public function getMessage()
{
// TODO: Implement getMessage() method.
}
public function removeMessage()
{
// TODO: Implement removeMessage() method.
}
public function setStatus()
{
// TODO: Implement setStatus() method.
}
}

0
Models/SMTP.php Normal file
View File

1
README.md Normal file
View File

@ -0,0 +1 @@
# Messages #

View 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
*/
$mail = new \phpOMS\Message\Mail\Imap();
$mail->connect('{imap.gmail.com:993/imap/ssl}INBOX', 'dev.orange.management@gmail.com', DEV_PASSWORD);
$unseen = $mail->getInboxUnseen();
$seen = $mail->getInboxSeen();
$quota = $mail->getQuota();
echo $this->getData('nav')->render(); ?>
<section class="box w-100">
<ul class="btns floatLeft">
<li><a href="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/backend/messages/mail/create'); ?>"><i class="fa fa-pencil"></i> <?= $this->l11n->lang[0]['Create']; ?></a>
<li><a href=""><i class="fa fa-trash"></i> <?= $this->l11n->lang[0]['Delete']; ?></a>
</ul>
</section>
<section class="box w-100">
<table class="table">
<caption><?= $this->l11n->lang['Messages']['Messages']; ?></caption>
<thead>
<tr>
<td><span class="check"><input type="checkbox"></span>
<td><?= $this->l11n->lang['Messages']['Tag']; ?>
<td class="wf-100"><?= $this->l11n->lang['Messages']['Subject']; ?>
<td><?= $this->l11n->lang['Messages']['From']; ?>
<td><?= $this->l11n->lang['Messages']['Date']; ?>
<tfoot>
<tr><td colspan="5"><?= \phpOMS\Utils\Converter\File::kilobyteSizeToString($quota['usage']); ?> / <?= \phpOMS\Utils\Converter\File::kilobyteSizeToString($quota['limit']); ?>
<tbody>
<?php $count = 0; foreach($unseen as $key => $value) : $count++;
$url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/messages/mail/single?id=' . $value->uid); ?>
<tr>
<td><span class="check"><input type="checkbox"></span>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= str_replace('_',' ', mb_decode_mimeheader($value->subject)); ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= $value->from; ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= (new \DateTime($value->date))->format('Y-m-d H:i:s'); ?></a>
<?php endforeach; ?>
<?php foreach($seen as $key => $value) : $count++;
$url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/messages/mail/single?id=' . $value->uid); ?>
<tr>
<td><span class="check"><input type="checkbox"></span>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= str_replace('_',' ', mb_decode_mimeheader($value->subject)); ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= $value->from; ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= (new \DateTime($value->date))->format('Y-m-d H:i:s'); ?></a>
<?php endforeach; ?>
<?php if($count < 1) : ?>
<tr>
<td colspan="5" class="empty"><?= $this->l11n->lang[0]['Empty']; ?>
<?php endif; ?>
</table>
</section>

View File

@ -0,0 +1,32 @@
<?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
*/
echo $this->getData('nav')->render(); ?>
<section class="box w-100">
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td style="width: 1%"><button class="simple"><i class="fa fa-book"></i></button><td><input type="text" placeholder="&#xf007; <?= $this->l11n->lang['Messages']['To']; ?>" name="to">
<tr><td style="width: 1%"><button class="simple"><i class="fa fa-book"></i></button><td><input type="text" placeholder="&#xf007; <?= $this->l11n->lang['Messages']['CC']; ?>" name="cc">
<tr><td style="width: 1%"><button class="simple"><i class="fa fa-book"></i></button><td><input type="text" placeholder="&#xf007; <?= $this->l11n->lang['Messages']['BCC']; ?>" name="bcc">
<tr><td><td><input type="text" placeholder="&#xf040; <?= $this->l11n->lang['Messages']['Subject']; ?>" name="subject">
<tr><td><td><input type="file" name="files" multiple>
<tr><td><td><div class="textarea" contenteditable="true" style="height: 400px;"></div><textarea placeholder="&#xf040;" style="display: none" name="mail"></textarea>
<tr><td><td><input type="submit" value="<?= $this->l11n->lang[0]['Send']; ?>"> <input type="submit" value="<?= $this->l11n->lang[0]['Save']; ?>">
</table>
</form>
</div>
</section>

View File

@ -0,0 +1,57 @@
<?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
*/
$mail = new \phpOMS\Message\Mail\Imap();
$mail->connect('{imap.gmail.com:993/imap/ssl}[Gmail]/Gesendet', 'dev.orange.management@gmail.com', DEV_PASSWORD);
$sent = $mail->getInboxAll();
$quota = $mail->getQuota();
echo $this->getData('nav')->render(); ?>
<section class="box w-100">
<ul class="btns floatLeft">
<li><a href="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/backend/messages/mail/create'); ?>"><i class="fa fa-pencil"></i> <?= $this->l11n->lang[0]['Create']; ?></a>
<li><a href=""><i class="fa fa-trash"></i> <?= $this->l11n->lang[0]['Delete']; ?></a>
</ul>
</section>
<section class="box w-100">
<table class="table">
<caption><?= $this->l11n->lang['Messages']['Messages']; ?></caption>
<thead>
<tr>
<td><span class="check"><input type="checkbox"></span>
<td><?= $this->l11n->lang['Messages']['Tag']; ?>
<td class="wf-100"><?= $this->l11n->lang['Messages']['Subject']; ?>
<td><?= $this->l11n->lang['Messages']['From']; ?>
<td><?= $this->l11n->lang['Messages']['Date']; ?>
<tfoot>
<tr><td colspan="5"><?= \phpOMS\Utils\Converter\File::kilobyteSizeToString($quota['usage']); ?> / <?= \phpOMS\Utils\Converter\File::kilobyteSizeToString($quota['limit']); ?>
<tbody>
<?php $count = 0; foreach($sent as $key => $value) : $count++;
$url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/messages/mail/single?id=' . $value->uid); ?>
<tr>
<td><span class="check"><input type="checkbox"></span>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= str_replace('_',' ', mb_decode_mimeheader($value->subject)); ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= $value->from; ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= (new \DateTime($value->date))->format('Y-m-d H:i:s'); ?></a>
<?php endforeach; ?>
<?php if($count < 1) : ?>
<tr>
<td colspan="5" class="empty"><?= $this->l11n->lang[0]['Empty']; ?>
<?php endif; ?>
</table>
</section>

View File

@ -0,0 +1,57 @@
<?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
*/
$mail = new \phpOMS\Message\Mail\Imap();
$mail->connect('{imap.gmail.com:993/imap/ssl}[Gmail]/Gesendet', 'dev.orange.management@gmail.com', DEV_PASSWORD);
$sent = $mail->getInboxAll();
$quota = $mail->getQuota();
echo $this->getData('nav')->render(); ?>
<section class="box w-100">
<ul class="btns floatLeft">
<li><a href="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/backend/messages/mail/create'); ?>"><i class="fa fa-pencil"></i> <?= $this->l11n->lang[0]['Create']; ?></a>
<li><a href=""><i class="fa fa-trash"></i> <?= $this->l11n->lang[0]['Delete']; ?></a>
</ul>
</section>
<section class="box w-100">
<table class="table">
<caption><?= $this->l11n->lang['Messages']['Messages']; ?></caption>
<thead>
<tr>
<td><span class="check"><input type="checkbox"></span>
<td><?= $this->l11n->lang['Messages']['Tag']; ?>
<td class="wf-100"><?= $this->l11n->lang['Messages']['Subject']; ?>
<td><?= $this->l11n->lang['Messages']['From']; ?>
<td><?= $this->l11n->lang['Messages']['Date']; ?>
<tfoot>
<tr><td colspan="5"><?= \phpOMS\Utils\Converter\File::kilobyteSizeToString($quota['usage']); ?> / <?= \phpOMS\Utils\Converter\File::kilobyteSizeToString($quota['limit']); ?>
<tbody>
<?php $count = 0; foreach($sent as $key => $value) : $count++;
$url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/messages/mail/single?id=' . $value->uid); ?>
<tr>
<td><span class="check"><input type="checkbox"></span>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= str_replace('_',' ', mb_decode_mimeheader($value->subject)); ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= $value->from; ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= (new \DateTime($value->date))->format('Y-m-d H:i:s'); ?></a>
<?php endforeach; ?>
<?php if($count < 1) : ?>
<tr>
<td colspan="5" class="empty"><?= $this->l11n->lang[0]['Empty']; ?>
<?php endif; ?>
</table>
</section>

View File

@ -0,0 +1,57 @@
<?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
*/
$mail = new \phpOMS\Message\Mail\Imap();
$mail->connect('{imap.gmail.com:993/imap/ssl}[Gmail]/Gesendet', 'dev.orange.management@gmail.com', DEV_PASSWORD);
$sent = $mail->getInboxAll();
$quota = $mail->getQuota();
echo $this->getData('nav')->render(); ?>
<section class="box w-100">
<ul class="btns floatLeft">
<li><a href="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/backend/messages/mail/create'); ?>"><i class="fa fa-pencil"></i> <?= $this->l11n->lang[0]['Create']; ?></a>
<li><a href=""><i class="fa fa-trash"></i> <?= $this->l11n->lang[0]['Delete']; ?></a>
</ul>
</section>
<section class="box w-100">
<table class="table">
<caption><?= $this->l11n->lang['Messages']['Messages']; ?></caption>
<thead>
<tr>
<td><span class="check"><input type="checkbox"></span>
<td><?= $this->l11n->lang['Messages']['Tag']; ?>
<td class="wf-100"><?= $this->l11n->lang['Messages']['Subject']; ?>
<td><?= $this->l11n->lang['Messages']['From']; ?>
<td><?= $this->l11n->lang['Messages']['Date']; ?>
<tfoot>
<tr><td colspan="5"><?= \phpOMS\Utils\Converter\File::kilobyteSizeToString($quota['usage']); ?> / <?= \phpOMS\Utils\Converter\File::kilobyteSizeToString($quota['limit']); ?>
<tbody>
<?php $count = 0; foreach($sent as $key => $value) : $count++;
$url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/messages/mail/single?id=' . $value->uid); ?>
<tr>
<td><span class="check"><input type="checkbox"></span>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= str_replace('_',' ', mb_decode_mimeheader($value->subject)); ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= $value->from; ?></a>
<td><a href="<?= $url; ?>"<?= $value->seen == 0 ? ' class="unseen"' : ''; ?>><?= (new \DateTime($value->date))->format('Y-m-d H:i:s'); ?></a>
<?php endforeach; ?>
<?php if($count < 1) : ?>
<tr>
<td colspan="5" class="empty"><?= $this->l11n->lang[0]['Empty']; ?>
<?php endif; ?>
</table>
</section>

View File

@ -0,0 +1,27 @@
<?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
*/
$mail = new \phpOMS\Message\Mail\Imap();
$mail->connect('{imap.gmail.com:993/imap/ssl}INBOX', 'dev.orange.management@gmail.com', DEV_PASSWORD);
$mails = $mail->getEmail($this->getData('id'));
echo $this->getData('nav')->render(); ?>
<section class="box w-100">
<h1><?= str_replace('_',' ', mb_decode_mimeheader($mails['overview'][0]->subject)); ?></h1>
<div class="inner">
<?= $mail::decode($mails['body'], $mails['encoding']->encoding); ?>
</div>
</section>

View File

@ -0,0 +1,66 @@
<?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
*/
$mail = new \phpOMS\Message\Mail\Imap();
$mail->connect('{imap.gmail.com:993/imap/ssl}', 'dev.orange.management@gmail.com', DEV_PASSWORD);
$boxes = $mail->getBoxes();
echo $this->getData('nav')->render(); ?>
<section class="box w-33">
<h1><?= $this->l11n->lang['Messages']['Mailboxes']; ?></h1>
<div class="inner">
<form>
<table class="layout">
<tr><td><label for="iInbox"><?= $this->l11n->lang['Messages']['Inbox']; ?></label>
<tr><td><select id="iInbox" name="inbox">
<option value=""><?= $this->l11n->lang[0]['Select']; ?>
<?php foreach($boxes as $box) : ?>
<option value="<?= $box; ?>"><?= $box; ?>
<?php endforeach; ?>
</select>
<tr><td><label for="iOutbox"><?= $this->l11n->lang['Messages']['Outbox']; ?></label>
<tr><td><select id="iOutbox" name="outbox">
<option value=""><?= $this->l11n->lang[0]['Select']; ?>
<?php foreach($boxes as $box) : ?>
<option value="<?= $box; ?>"><?= $box; ?>
<?php endforeach; ?>
</select>
<tr><td><label for="iDraft"><?= $this->l11n->lang['Messages']['Draft']; ?></label>
<tr><td><select id="iDraft" name="draft">
<option value=""><?= $this->l11n->lang[0]['Select']; ?>
<?php foreach($boxes as $box) : ?>
<option value="<?= $box; ?>"><?= $box; ?>
<?php endforeach; ?>
</select>
<tr><td><label for="iTrash"><?= $this->l11n->lang['Messages']['Trash']; ?></label>
<tr><td><select id="iTrash" name="trash">
<option value=""><?= $this->l11n->lang[0]['Select']; ?>
<?php foreach($boxes as $box) : ?>
<option value="<?= $box; ?>"><?= $box; ?>
<?php endforeach; ?>
</select>
<tr><td><label for="iSpam"><?= $this->l11n->lang['Messages']['Spam']; ?></label>
<tr><td><select id="iSpam" name="spam">
<option value=""><?= $this->l11n->lang[0]['Select']; ?>
<?php foreach($boxes as $box) : ?>
<option value="<?= $box; ?>"><?= $box; ?>
<?php endforeach; ?>
</select>
<tr><td><input type="submit" value="<?= $this->l11n->lang[0]['Save']; ?>">
</table>
</form>
</div>
</section>

View File

@ -0,0 +1,17 @@
<?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] = [
];

View File

@ -0,0 +1,43 @@
<?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['Messages'] = [
'All' => 'All',
'AverageAmount' => 'Avg. Amount',
'BCC' => 'BCC',
'CC' => 'CC',
'Date' => 'Date',
'Draft' => 'Draft',
'From' => 'From',
'Inbox' => 'Inbox',
'Interval' => 'Interval',
'Mailboxes' => 'Mailboxes',
'Messages' => 'Messages',
'Month' => 'Month',
'New' => 'New',
'Outbox' => 'Outbox',
'Received' => 'Received',
'Sent' => 'Sent',
'Spam' => 'Spam',
'Statistics' => 'Statistics',
'Status' => 'Status',
'Subject' => 'Subject',
'Tag' => 'Tag',
'To' => 'To',
'Today' => 'Today',
'Trash' => 'Trash',
'Week' => 'Week',
'Year' => 'Year',
];

View File

@ -0,0 +1,24 @@
<?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'] = [
'Draft' => 'Draft',
'Inbox' => 'Inbox',
'Messages' => 'Messages',
'Outbox' => 'Outbox',
'Settings' => 'Settings',
'Spam' => 'Spam',
'Trash' => 'Trash',
];

BIN
img/module_teaser_small.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

51
info.json Normal file
View File

@ -0,0 +1,51 @@
{
"name": {
"id": 1001200000,
"internal": "Messages",
"external": "OMS Messages"
},
"version": "1.0.0",
"requirements": {
"phpOMS": "1.0.0",
"phpOMS-db": "1.0.0"
},
"creator": {
"name": "Orange Management",
"website": "www.spl1nes.com"
},
"description": "Messages module.",
"directory": "Messages",
"dependencies": {},
"providing": {
"Navigation": "*"
},
"load": [
{
"pid": [
"ea312354fa4b4029c8a121b7da7992983d3132a9"
],
"type": 4,
"for": 0,
"from": "Messages",
"file": "Messages"
},
{
"pid": [
"754a08ddf8bcb1cf22f310f09206dd783d42f7dd"
],
"type": 5,
"from": "Messages",
"for": "Navigation",
"file": "nav.backend"
},
{
"pid": [
"ea312354fa4b4029c8a121b7da7992983d3132a9"
],
"type": 5,
"for": "Content",
"file": "backend",
"from": "Messages"
}
]
}