add view own mails, view all mails (admin role required)
add email delete
This commit is contained in:
parent
46d228ccc3
commit
1a0d0c99c3
8 changed files with 182 additions and 15 deletions
|
@ -1,4 +1,4 @@
|
|||
#Wed Mar 31 11:13:35 CEST 2010
|
||||
#Thu Apr 22 14:01:49 CEST 2010
|
||||
eclipse.preferences.version=1
|
||||
include_path=0;/ca-mgr (mawaunix)\u00055;org.zend.php.framework.CONTAINER
|
||||
phpVersion=php5
|
||||
|
|
|
@ -12,11 +12,53 @@ class MailController extends Zend_Controller_Action
|
|||
public function init()
|
||||
{
|
||||
/* Initialize action controller here */
|
||||
$session = Zend_Registry::get('session');
|
||||
$auth = $session->authdata['authed_permissions'];
|
||||
|
||||
$action = $this->getRequest()->getActionName();
|
||||
|
||||
$this->view->leftNav('<a href="' .
|
||||
$this->view->url(array('controller' => 'mail', 'action' => 'index'), 'default', true) .
|
||||
'"' . (($action == 'index')?' class="active"':'') . '>' . I18n::_('View own Mails') . '</a>', Zend_View_Helper_Placeholder_Container_Abstract::SET, 1);
|
||||
if ($session->authdata['authed_role'] == 'Admin') {
|
||||
$this->view->leftNav('<a href="' .
|
||||
$this->view->url(array('controller' => 'mail', 'action' => 'full'), 'default', true) .
|
||||
'"' . (($action == 'full')?' class="active"':'') . '>' . I18n::_('View all Mails') . '</a>', Zend_View_Helper_Placeholder_Container_Abstract::SET, 2);
|
||||
}
|
||||
}
|
||||
|
||||
public function indexAction()
|
||||
{
|
||||
$config = Zend_Registry::get('config');
|
||||
$session = Zend_Registry::get('session');
|
||||
|
||||
$imap_config = $config->imap;
|
||||
$imap = imapConnection::getInstance('cacert', $imap_config);
|
||||
$imap->imapSwitchMbox('INBOX');
|
||||
|
||||
$ck = $imap->imapCheck();
|
||||
|
||||
$headers = array();
|
||||
for ($i=0; $i < $ck->Nmsgs; $i++) {
|
||||
$header = $imap->imapHeader($i+1);
|
||||
|
||||
// skip all emails that do not belong to the user
|
||||
if ($header->toaddress != $session->authdata['authed_username'])
|
||||
continue;
|
||||
|
||||
$header->uid = $imap->imapUID($i+1);
|
||||
$header->detailslink = $this->view->url(array('controller' => 'mail', 'action' => 'read', 'uid' => $header->uid), 'default', true);
|
||||
$header->deletelink = $this->view->url(array('controller' => 'mail', 'action' => 'delete', 'uid' => $header->uid), 'default', true);
|
||||
$headers[] = $header;
|
||||
}
|
||||
|
||||
$this->view->headers = $headers;
|
||||
}
|
||||
|
||||
public function fullAction()
|
||||
{
|
||||
$config = Zend_Registry::get('config');
|
||||
|
||||
$imap_config = $config->imap;
|
||||
$imap = imapConnection::getInstance('cacert', $imap_config);
|
||||
$imap->imapSwitchMbox('INBOX');
|
||||
|
@ -28,6 +70,7 @@ class MailController extends Zend_Controller_Action
|
|||
$header = $imap->imapHeader($i+1);
|
||||
$header->uid = $imap->imapUID($i+1);
|
||||
$header->detailslink = $this->view->url(array('controller' => 'mail', 'action' => 'read', 'uid' => $header->uid), 'default', true);
|
||||
$header->deletelink = $this->view->url(array('controller' => 'mail', 'action' => 'delete', 'uid' => $header->uid), 'default', true);
|
||||
$headers[] = $header;
|
||||
}
|
||||
|
||||
|
@ -47,4 +90,38 @@ class MailController extends Zend_Controller_Action
|
|||
|
||||
$this->view->mail_body = $body;
|
||||
}
|
||||
|
||||
/**
|
||||
* delete message with unique id
|
||||
*/
|
||||
public function deleteAction()
|
||||
{
|
||||
$config = Zend_Registry::get('config');
|
||||
$uid = $this->getRequest()->getParam('uid', -1);
|
||||
$this->view->returnto = $_SERVER['HTTP_REFERER'];
|
||||
|
||||
if ($uid == -1) {
|
||||
$this->view->message = I18n::_('You did not select an email for deletion');
|
||||
}
|
||||
elseif ($this->view->returnto == '') {
|
||||
$this->view->message = I18n::_('Please use the delete icons in the mail inventory to delete mails');
|
||||
}
|
||||
else {
|
||||
$imap_config = $config->imap;
|
||||
$imap = imapConnection::getInstance('cacert', $imap_config);
|
||||
$imap->imapSwitchMbox('INBOX');
|
||||
|
||||
$header = $imap->imapFetchOverview($uid);
|
||||
|
||||
$session = Zend_Registry::get('session');
|
||||
if ($session->authdata['authed_role'] != 'Admin' && $header->to != $session->authdata['authed_username']) {
|
||||
$this->view->message = I18n::_('This message does not belong to you');
|
||||
}
|
||||
else {
|
||||
$imap->imapDelete($uid);
|
||||
$imap->imapExpunge();
|
||||
$this->view->message = I18n::_('Message deleted');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
12
manager/application/views/scripts/mail/delete.phtml
Normal file
12
manager/application/views/scripts/mail/delete.phtml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
/**
|
||||
* @author markus
|
||||
* $Id: index.phtml 25 2009-12-02 15:43:21Z markus $
|
||||
*/
|
||||
$this->headLink()->appendStylesheet('/css/mail.css');
|
||||
$this->headScript()->appendFile('/js/mail_redirect.js');
|
||||
?>
|
||||
<H1><?php print I18n::_('Delete Mail'); ?></H1>
|
||||
<?php
|
||||
print $this->message;
|
||||
print '<input type="hidden" id="returnto" value="' . $this->returnto . '">';
|
37
manager/application/views/scripts/mail/full.phtml
Normal file
37
manager/application/views/scripts/mail/full.phtml
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
* @author markus
|
||||
* $Id: index.phtml 25 2009-12-02 15:43:21Z markus $
|
||||
*/
|
||||
$this->headLink()->appendStylesheet('/css/mail.css');
|
||||
?>
|
||||
<H1><?php print I18n::_('View all Mail'); ?></H1>
|
||||
<?php
|
||||
if (count($this->headers) == 0) {
|
||||
print I18n::_('You currently have no mail.');
|
||||
}
|
||||
else {
|
||||
?>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="col1"><?php print I18n::_('From');?></th>
|
||||
<th class="col2"><?php print I18n::_('To');?></th>
|
||||
<th class="col3"><?php print I18n::_('Subject');?></th>
|
||||
<th class="col4"><?php print I18n::_('Date');?></th>
|
||||
<th class="col5"><?php print I18n::_('Size');?></th>
|
||||
<th class="col6"><?php print I18n::_('Del');?></th>
|
||||
</tr>
|
||||
<?php
|
||||
foreach ($this->headers as $header) {
|
||||
print " <tr>\n";
|
||||
print " <td><a href=\"" . $header->detailslink . "\">" . $header->fromaddress . "</a></td>";
|
||||
print " <td>" . $header->toaddress . "</td>";
|
||||
print " <td>" . $header->subject . "</td>";
|
||||
print " <td>" . $header->date . "</td>";
|
||||
print " <td>" . $header->Size . "</td>";
|
||||
print " <td><a class=\"delete\" href=\"" . $header->deletelink . "\"><img src=\"/img/delete_icon.jpg\"></a></td>";
|
||||
print " </tr>\n";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</table>
|
|
@ -5,14 +5,21 @@
|
|||
*/
|
||||
$this->headLink()->appendStylesheet('/css/mail.css');
|
||||
?>
|
||||
<H1><?php print I18n::_('Mail'); ?></H1>
|
||||
<H1><?php print I18n::_('View own Mail'); ?></H1>
|
||||
<?php
|
||||
if (count($this->headers) == 0) {
|
||||
print I18n::_('You currently have no mail.');
|
||||
}
|
||||
else {
|
||||
?>
|
||||
<table>
|
||||
<tr>
|
||||
<th><?php print I18n::_('From');?></th>
|
||||
<th><?php print I18n::_('To');?></th>
|
||||
<th><?php print I18n::_('Subject');?></th>
|
||||
<th><?php print I18n::_('Date');?></th>
|
||||
<th><?php print I18n::_('Size');?></th>
|
||||
<th class="col1"><?php print I18n::_('From');?></th>
|
||||
<th class="col2"><?php print I18n::_('To');?></th>
|
||||
<th class="col3"><?php print I18n::_('Subject');?></th>
|
||||
<th class="col4"><?php print I18n::_('Date');?></th>
|
||||
<th class="col5"><?php print I18n::_('Size');?></th>
|
||||
<th class="col6"><?php print I18n::_('Del');?></th>
|
||||
</tr>
|
||||
<?php
|
||||
foreach ($this->headers as $header) {
|
||||
|
@ -22,7 +29,9 @@ foreach ($this->headers as $header) {
|
|||
print " <td>" . $header->subject . "</td>";
|
||||
print " <td>" . $header->date . "</td>";
|
||||
print " <td>" . $header->Size . "</td>";
|
||||
print " <td><a class=\"delete\" href=\"" . $header->deletelink . "\"><img src=\"/img/delete_icon.jpg\"></a></td>";
|
||||
print " </tr>\n";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
|
|
|
@ -15,6 +15,25 @@
|
|||
padding: 3px;
|
||||
}
|
||||
|
||||
#content .col1 {
|
||||
width: 170px;
|
||||
}
|
||||
#content .col2 {
|
||||
width: 170px;
|
||||
}
|
||||
#content .col3 {
|
||||
width: 165px;
|
||||
}
|
||||
#content .col4 {
|
||||
width: 170px;
|
||||
}
|
||||
#content .col5 {
|
||||
width: 50px;
|
||||
}
|
||||
#content .col6 {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
#content a {
|
||||
text-decoration: none;
|
||||
color: #000000;
|
||||
|
@ -23,3 +42,8 @@
|
|||
#content a:hover {
|
||||
color: #777777;
|
||||
}
|
||||
|
||||
#content a.delete {
|
||||
background-color: #ffffff;
|
||||
color: white;
|
||||
}
|
||||
|
|
BIN
manager/public/img/delete_icon.jpg
Normal file
BIN
manager/public/img/delete_icon.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
8
manager/public/js/mail_redirect.js
Normal file
8
manager/public/js/mail_redirect.js
Normal file
|
@ -0,0 +1,8 @@
|
|||
var delay = 2000;
|
||||
setTimeout('redirect()', delay);
|
||||
|
||||
function redirect() {
|
||||
var returnto = document.getElementById('returnto');
|
||||
|
||||
window.location = returnto.value;
|
||||
}
|
Loading…
Reference in a new issue