add view own mails, view all mails (admin role required)

add email delete
This commit is contained in:
Markus Warg 2010-07-07 09:41:44 +02:00
parent 46d228ccc3
commit 1a0d0c99c3
8 changed files with 182 additions and 15 deletions

View file

@ -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

View file

@ -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');
}
}
}
}

View 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 . '">';

View 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>

View file

@ -5,24 +5,33 @@
*/
$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) {
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 " </tr>\n";
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>

View file

@ -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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,8 @@
var delay = 2000;
setTimeout('redirect()', delay);
function redirect() {
var returnto = document.getElementById('returnto');
window.location = returnto.value;
}