mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-25 17:33:49 +01:00
Mail folder ACLs feature on mail app
This commit is contained in:
parent
f8752688e0
commit
34827545cc
102
mail/inc/class.mail_acl.inc.php
Normal file
102
mail/inc/class.mail_acl.inc.php
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware - Mail Folder ACL- interface class
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package mail
|
||||||
|
* @author Hadi Nategh [hn@stylite.de]
|
||||||
|
* @copyright (c) 2013 by Stylite AG <info-AT-stylite.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version
|
||||||
|
*/
|
||||||
|
|
||||||
|
class mail_acl
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Methods callable via menuaction
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
var $public_functions = array(
|
||||||
|
'edit' => True,
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* instance of mail_bo
|
||||||
|
*
|
||||||
|
* @var mail_bo
|
||||||
|
*/
|
||||||
|
var $mail_bo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @var mail_account
|
||||||
|
*/
|
||||||
|
var $current_account;
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function __construct()
|
||||||
|
{
|
||||||
|
$this->mail_bo = mail_bo::getInstance(false, (int)$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID']);
|
||||||
|
$this->current_account = $this->mail_bo->icServer->acc_imap_username;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Edit folder ACLs for account(s)
|
||||||
|
*
|
||||||
|
* @param string $msg
|
||||||
|
* @param array $content
|
||||||
|
*/
|
||||||
|
function edit(array $content=null ,$msg='')
|
||||||
|
{
|
||||||
|
if (!is_array($content))
|
||||||
|
{
|
||||||
|
$mailbox = $_GET['mailbox'];
|
||||||
|
if (!empty($mailbox))
|
||||||
|
{
|
||||||
|
$acl = $this->retrive_acl($mailbox, $msg);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$tmpl = new etemplate_new('mail.acl');
|
||||||
|
$content = array();
|
||||||
|
$tmpl->exec('mail.mail_ui.edit_acl', $content, $sel_options, $readonlys, array(),2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update Folder ACL rights
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function update_acl ($mailbox, $ident,$options, &$msg)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrive Folder ACL rights
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function retrive_acl ($mailbox, &$msg)
|
||||||
|
{
|
||||||
|
if ($acl = $this->mail_bo->icServer->getACL($mailbox))
|
||||||
|
{
|
||||||
|
if (is_array($acl))
|
||||||
|
{
|
||||||
|
$msg = lang('ACL rights retrived successfully!');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$msg = lang('ACL rights retrive failed, seems there are no rights set!');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$msg = lang('Get ACL rights failed from IMAP server!');
|
||||||
|
error_log(__METHOD__. "(" . $acl . ")" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -288,7 +288,13 @@ class mail_ui
|
|||||||
$etpl = new etemplate_new('mail.index');
|
$etpl = new etemplate_new('mail.index');
|
||||||
|
|
||||||
// Set tree actions
|
// Set tree actions
|
||||||
$etpl->setElementAttribute(self::$nm_index.'[foldertree]','actions', array(
|
$tree_actions = array(
|
||||||
|
'all_folders' => array(
|
||||||
|
'caption' => 'Show all folders',
|
||||||
|
'checkbox' => true,
|
||||||
|
'onExecute' => 'javaScript:app.mail.all_folders',
|
||||||
|
'group' => $group++,
|
||||||
|
),
|
||||||
'drop_move_mail' => array(
|
'drop_move_mail' => array(
|
||||||
'type' => 'drop',
|
'type' => 'drop',
|
||||||
'acceptedTypes' => 'mail',
|
'acceptedTypes' => 'mail',
|
||||||
@ -327,8 +333,16 @@ class mail_ui
|
|||||||
'onExecute' => 'javaScript:app.mail.edit_account',
|
'onExecute' => 'javaScript:app.mail.edit_account',
|
||||||
//'enableId' => '^\\d+$', // only show action on account itself
|
//'enableId' => '^\\d+$', // only show action on account itself
|
||||||
),
|
),
|
||||||
));
|
'edit_acl' => array(
|
||||||
//error_log(__METHOD__.__LINE__.array2string($content));
|
'caption' => 'Edit folder ACL',
|
||||||
|
'icon' => 'configure',
|
||||||
|
'onExecute' => 'javaScript:app.mail.edit_acl',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!$this->mail_bo->icServer->queryCapability('ACL')) unset($tree_actions['edit_acl']);
|
||||||
|
$etpl->setElementAttribute(self::$nm_index.'[foldertree]','actions', $tree_actions);
|
||||||
|
|
||||||
if (empty($content[self::$nm_index]['filter2']) || empty($content[self::$nm_index]['search'])) $content[self::$nm_index]['filter2']='quick';
|
if (empty($content[self::$nm_index]['filter2']) || empty($content[self::$nm_index]['search'])) $content[self::$nm_index]['filter2']='quick';
|
||||||
$readonlys = $preserv = $sel_options;
|
$readonlys = $preserv = $sel_options;
|
||||||
return $etpl->exec('mail.mail_ui.index',$content,$sel_options,$readonlys,$preserv);
|
return $etpl->exec('mail.mail_ui.index',$content,$sel_options,$readonlys,$preserv);
|
||||||
|
@ -1949,6 +1949,18 @@ app.classes.mail = AppJS.extend(
|
|||||||
request.sendRequest();
|
request.sendRequest();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Edit a folder acl for account(s)
|
||||||
|
*
|
||||||
|
* @param _action
|
||||||
|
* @param _senders - the representation of the tree leaf to be manipulated
|
||||||
|
*/
|
||||||
|
edit_acl: function(_action, _senders)
|
||||||
|
{
|
||||||
|
var folder_id = _senders[0].id.split('::INBOX/');
|
||||||
|
this.egw.open_link('mail.mail_acl.edit&mailbox='+folder_id[1], '_blank', '640x480');
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Edit a mail account
|
* Edit a mail account
|
||||||
*
|
*
|
||||||
|
78
mail/templates/default/acl.xet
Executable file
78
mail/templates/default/acl.xet
Executable file
@ -0,0 +1,78 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="mail.acl" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid>
|
||||||
|
<columns>
|
||||||
|
<column width="100%" />
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="!@msg">
|
||||||
|
<description id="msg" class="message"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<grid id="grid">
|
||||||
|
<columns>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="th">
|
||||||
|
<description value="Name"/>
|
||||||
|
<description value="Common ACL"/>
|
||||||
|
<description align="center" value="L"/>
|
||||||
|
<description align="center" value="R"/>
|
||||||
|
<description align="center" value="S"/>
|
||||||
|
<description align="center" value="W"/>
|
||||||
|
<description align="center" value="I"/>
|
||||||
|
<description align="center" value="P"/>
|
||||||
|
<description align="center" value="C"/>
|
||||||
|
<description align="center" value="D"/>
|
||||||
|
<description align="center" value="A"/>
|
||||||
|
<description align="center" value="Recursively"/>
|
||||||
|
<description value="Action"/>
|
||||||
|
</row>
|
||||||
|
<row class="row">
|
||||||
|
<taglist-email allowFreeEntries="true" maxSelection="1" />
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="${row}[]"/>
|
||||||
|
</menulist>
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<checkbox align="center" id="${row}[]" />
|
||||||
|
<hbox orient=",0,0" options="0,0,0,0">
|
||||||
|
<button align="right" statustext="Delete this ACL" label="Delete" id="delete[$row_cont[]]" image="delete"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<hbox>
|
||||||
|
<button statustext="Saves this ACL" label="Save" id="button[save]"/>
|
||||||
|
<button statustext="Applies the changes made" label="Apply" id="button[apply]"/>
|
||||||
|
<button label="Cancel" id="button[cancel]"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
Loading…
Reference in New Issue
Block a user