<?php /** * Mail - admin, preferences and sidebox-menus and other hooks * * @link http://www.egroupware.org * @package mail * @author Stylite AG [info@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 $Id$ */ /** * Class containing admin, preferences and sidebox-menus and other hooks */ class mail_hooks { /** * Several hooks calling an instanciated mail_bo, which need to use the mail_bo::getInstance() singelton * * @param string|array $hookData */ static public function accountHooks($hookData) { if (($default_profile_id = emailadmin_bo::getDefaultAccID())) { $mail_bo = mail_bo::forceEAProfileLoad($default_profile_id); switch(is_array($hookData) ? $hookData['location'] : $hookData) { case 'addaccount': $mail_bo->addAccount($hookData); break; case 'deleteaccount': $mail_bo->deleteAccount($hookData); break; case 'editaccount': $mail_bo->updateAccount($hookData); break; } emailadmin_bo::unsetCachedObjects($default_profile_id); } } /** * Menu for Admin >> Edit accounts */ static public function adminMenu() { if (($default_profile_id = emailadmin_bo::getDefaultAccID())) { $mail_bo = mail_bo::forceEAProfileLoad($default_profile_id); $ogServer = $mail_bo->mailPreferences->getOutgoingServer($default_profile_id); //error_log(__METHOD__."() default_profile_id = $default_profile_id, get_class(ogServer)=".get_class($ogServer)); if (!in_array(get_class($ogServer), array('defaultsmtp', 'emailadmin_smtp'))) { global $menuData; $menuData[] = Array ( 'description' => 'email settings', 'url' => '/index.php', 'extradata' => 'menuaction=emailadmin.uiuserdata.editUserData' ); } } } /** * Hook called by link-class to include mail in the appregistry of the linkage * * @param array/string $location location and other parameters (not used) * @return array with method-names */ static function search_link($location) { return array( 'view' => array( 'menuaction' => 'mail.mail_ui.displayMessage', ), 'view_id' => 'id', 'view_popup' => '870xegw_getWindowOuterHeight()', 'view_list' => 'mail.mail_ui.index', 'add' => array( 'menuaction' => 'mail.mail_compose.compose', ), 'add_popup' => '870xegw_getWindowOuterHeight()', 'edit' => array( 'menuaction' => 'mail.mail_compose.compose', ), 'edit_id' => 'id', 'edit_popup' => '870xegw_getWindowOuterHeight()', // register fmail as handler for .eml files 'mime' => array( 'message/rfc822' => array( 'menuaction' => 'felamimail.uifelamimail.importMessageFromVFS2DraftAndDisplay', //'menuaction' => 'mail.mail_ui.importMessageFromVFS2DraftAndDisplay', 'mime_popup' => '870xegw_getWindowOuterHeight()', 'mime_url' => 'formData[file]', ), ), ); } /** * Settings hook * * @param array|string $hook_data */ static function settings($hook_data) { unset($GLOBALS['egw_info']['user']['preferences']['common']['auto_hide_sidebox']); if (!$hook_data['setup']) // does not work on setup time { $folderList = array(); $profileID = 0; if (isset($GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'])) $profileID = (int)$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID']; $mail_bo = mail_bo::getInstance(true,$profileID); $profileID = $GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'] = $mail_bo->profileID; if($profileID && $mail_bo->openConnection($profileID)) { $folderObjects = $mail_bo->getFolderObjects(true, false); foreach($folderObjects as $folderName => $folderInfo) { #_debug_array($folderData); $folderList[$folderName] = $folderInfo->displayName; } if ($GLOBALS['type'] === 'user') { $trashFolder = $mail_bo->getTrashFolder(); $draftFolder = $mail_bo->getDraftFolder(); $templateFolder = $mail_bo->getTemplateFolder(); $sentFolder = $mail_bo->getSentFolder(); // use displaynames, if available if (isset($folderList[$trashFolder])) $trashFolder = $folderList[$trashFolder]; if (isset($folderList[$draftFolder])) $draftFolder = $folderList[$draftFolder]; if (isset($folderList[$templateFolder])) $templateFolder = $folderList[$templateFolder]; if (isset($folderList[$sentFolder])) $sentFolder = $folderList[$sentFolder]; } $mail_bo->closeConnection(); } $availableAutoFolders['none'] = lang('none, create all'); foreach(mail_bo::$autoFolders as $aname) { $availableAutoFolders[$aname] = lang($aname); } $mailConfig = config::read('mail'); } $refreshTime = array( '0' => lang('disabled'), '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '15' => '15', '20' => '20', '30' => '30' ); $connectionTimeout = array( '0' => lang('use default timeout (20 seconds)'), '10' => '10', // timeout used in SIEVE '20' => '20', '30' => '30', '40' => '40', '50' => '50', '60' => '60', '70' => '70', '80' => '80', '90' => '90', ); $no_yes = array( '0' => lang('no'), '1' => lang('yes') ); $no_yes_copy = array_merge($no_yes,array('2'=>lang('yes, offer copy option'))); $prefAllowManageFolders = $no_yes; $test_connection = array( 'full' => lang('yes, show all debug information available for the user'), 'nocredentials' => lang('yes, but mask all usernames and passwords'), 'nopasswords' => lang('yes, but mask all passwords'), 'basic' => lang('yes, show basic info only'), 'reset' => lang('yes, only trigger connection reset'), 'none' => lang('no'), ); $forwardOptions = array( 'asmail' => lang('forward as attachment'), 'inline' => lang('forward inline'), ); $sortOrder = array( '0' => lang('date(newest first)'), '1' => lang('date(oldest first)'), '3' => lang('from(A->Z)'), '2' => lang('from(Z->A)'), '5' => lang('subject(A->Z)'), '4' => lang('subject(Z->A)'), '7' => lang('size(0->...)'), '6' => lang('size(...->0)') ); $trustServersUnseenOptions = array_merge( $no_yes, array('2' => lang('yes') . ' - ' . lang('but check shared folders')) ); $selectOptions = array_merge( $no_yes, array('2' => lang('yes') . ' - ' . lang('small view')) ); $newWindowOptions = array( '1' => lang('only one window'), '2' => lang('allways a new window'), ); $deleteOptions = array( 'move_to_trash' => lang('move to trash'), 'mark_as_deleted' => lang('mark as deleted'), 'remove_immediately' => lang('remove immediately') ); $sendOptions = array( 'move_to_sent' => lang('send message and move to send folder (if configured)'), 'send_only' => lang('only send message, do not copy a version of the message to the configured sent folder') ); $composeOptions = array( 'html' => lang('html'), 'text' => lang('text/plain'), ); $replyOptions = array( 'none' => lang('use source as displayed, if applicable'), 'html' => lang('force html'), 'text' => lang('force plain text'), ); $saveAsOptions = array( 'text' => lang('convert Mail to item and attach its attachments to this item (standard)'), 'add_raw' => lang('convert Mail to item, attach its attachments and add raw message (message/rfc822 (.eml)) as attachment'), ); $htmlOptions = array( 'never_display' => lang('never display html emails'), 'only_if_no_text' => lang('display only when no plain text is available'), 'always_display' => lang('always show html emails'), ); $toggle = false; if ($GLOBALS['egw_info']['user']['preferences']['common']['select_mode'] == 'EGW_SELECTMODE_TOGGLE') $toggle=true; $rowOrderStyle = array( 'mail' => lang('mail'), 'outlook' => 'Outlook', 'mail_wCB' => lang('mail').' '.($toggle?lang('(select mails by clicking on the line, like a checkbox)'):lang('(with checkbox enforced)')), 'outlook_wCB' => 'Outlook'.' '.($toggle?lang('(select mails by clicking on the line, like a checkbox)'):lang('(with checkbox enforced)')), ); // otherwise we get warnings during setup if (!is_array($folderList)) $folderList = array(); $trashOptions = array_merge( array( 'none' => lang("Don't use Trash") ), $folderList ); $sentOptions = array_merge( array( 'none' => lang("Don't use Sent") ), $folderList ); $draftOptions = array_merge( array( 'none' => lang("Don't use draft folder") ), $folderList ); $templateOptions = array_merge( array( 'none' => lang("Don't use template folder") ), $folderList ); // modify folderlist, add a none entry, to be able to force the regarding settings, if no folders apply $folderList['none'] = lang('no folders'); /* Settings array for this app */ $settingsArray = array( array( 'type' => 'section', 'title' => lang('Mail settings'), 'no_lang'=> true, 'xmlrpc' => False, 'admin' => False ), 'message_forwarding' => array( 'type' => 'select', 'label' => 'how to forward messages', 'help' => 'Which method to use when forwarding a message', 'name' => 'message_forwarding', 'values' => $forwardOptions, 'xmlrpc' => True, 'admin' => False, 'default'=> 'asmail', ), 'composeOptions' => array( 'type' => 'select', 'label' => 'New message type', 'help' => 'start new messages with mime type plain/text or html?', 'name' => 'composeOptions', 'values' => $composeOptions, 'xmlrpc' => True, 'admin' => False, 'default'=> 'html', ), 'replyOptions' => array( 'type' => 'select', 'label' => 'Reply message type', 'help' => 'start reply messages with mime type plain/text or html or try to use the displayed format (default)?', 'name' => 'replyOptions', 'values' => $replyOptions, 'xmlrpc' => True, 'admin' => False, 'default'=> 'none', ), 'disableRulerForSignatureSeparation' => array( 'type' => 'select', 'label' => 'disable Ruler for separation of mailbody and signature', 'help' => 'Turn off horizontal line between signature and composed message (this is not according to RFC).<br>If you use templates, this option is only applied to the text part of the message.', 'name' => 'disableRulerForSignatureSeparation', 'values' => $no_yes, 'xmlrpc' => True, 'default'=> 0, 'admin' => False, ), 'insertSignatureAtTopOfMessage' => array( 'type' => 'select', 'label' => 'signature at top', 'help' => 'insert the signature at top of the new (or reply) message when opening compose dialog (you may not be able to switch signatures)', 'name' => 'insertSignatureAtTopOfMessage', 'values' => $no_yes, 'xmlrpc' => True, 'default'=> 0, 'admin' => False, ), 'attachVCardAtCompose' => array( 'type' => 'select', 'label' => 'Attach vCard', 'help' => 'attach users VCard at compose to every new mail', 'name' => 'attachVCardAtCompose', 'values' => $no_yes, 'xmlrpc' => True, 'default'=> 0, 'admin' => False, ), array( 'type' => 'section', 'title' => lang('General settings'), 'no_lang'=> true, 'xmlrpc' => False, 'admin' => False ), 'refreshTime' => array( 'type' => 'select', 'label' => 'Refresh time in minutes', 'help' => 'How often to check with the server for new mail', 'name' => 'refreshTime', 'values' => $refreshTime, 'xmlrpc' => True, 'admin' => False, 'forced'=> 5, ), 'htmlOptions' => array( 'type' => 'select', 'label' => 'display of html emails', 'help' => 'What do do with html email', 'name' => 'htmlOptions', 'values' => $htmlOptions, 'xmlrpc' => True, 'admin' => False, 'forced' => 'always_display', ), 'message_newwindow' => array( 'type' => 'select', 'label' => 'display messages in multiple windows', 'help' => 'When displaying messages in a popup, re-use the same popup for all or open a new popup for each message', 'name' => 'message_newwindow', 'values' => $newWindowOptions, 'xmlrpc' => True, 'admin' => False, 'forced' => '1', ), 'allowExternalIMGs' => array( 'type' => 'check', 'label' => 'Allow external images', 'help' => 'allow images from external sources in html emails', 'name' => 'allowExternalIMGs', 'xmlrpc' => True, 'admin' => True, 'forced' => true, ), 'sortOrder' => array( 'type' => 'select', 'label' => 'Sort order', 'help' => 'Default sorting order', 'name' => 'sortOrder', 'values' => $sortOrder, 'xmlrpc' => True, 'admin' => False, 'default'=> '0', // newest first ), 'rowOrderStyle' => array( 'type' => 'select', 'label' => 'row order style', 'help' => 'What order the list columns are in', 'name' => 'rowOrderStyle', 'values' => $rowOrderStyle, 'xmlrpc' => True, 'admin' => False, 'default'=> 'mail', ), 'enablePreViewArea' => array( 'type' => 'select', 'label' => 'Message preview area', 'help' => 'If you want to see a preview of a mail by single clicking onto the subject, enable this.', 'name' => 'enablePreViewArea', 'values' => $no_yes_copy, 'xmlrpc' => True, 'admin' => False, 'forced' => '300', ), 'prefaskformove' => array( 'type' => 'select', 'label' => 'Confirm move to folder', 'help' => 'Do you want to be asked for confirmation before moving selected messages to another folder?', 'name' => 'prefaskformove', 'values' => $no_yes_copy, 'xmlrpc' => True, 'admin' => False, 'forced' => '1', ), 'prefaskformultipleforward' => array( 'type' => 'select', 'label' => 'Confirm attach message', 'help' => 'Do you want to be asked for confirmation before attaching selected messages to new mail?', 'name' => 'prefaskformultipleforward', 'values' => $no_yes, 'xmlrpc' => True, 'admin' => False, 'forced' => '1', ), 'mainscreen_showmail' => array( 'type' => 'select', 'label' => 'show new messages on home page', 'help' => 'Should new messages show up on the Home page', 'name' => 'mainscreen_showmail', 'values' => $selectOptions, 'xmlrpc' => True, 'admin' => False, ), 'mainscreen_showfolders' => array( 'type' => 'multiselect', 'label' => 'home page folders', 'help' => 'if shown, which folders should appear on the Home page', 'name' => 'mainscreen_showfolders', 'values' => $folderList, 'xmlrpc' => True, 'admin' => False, ), 'notify_folders' => array( 'type' => 'multiselect', 'label' => 'New mail notification', 'help' => 'notify when new mails arrive in these folders', 'name' => 'notify_folders', 'values' => $folderList, 'xmlrpc' => True, 'admin' => False, ), array( 'type' => 'section', 'title' => lang('Folder settings'), 'no_lang'=> true, 'xmlrpc' => False, 'admin' => False ), 'trashFolder' => array( 'type' => 'select', 'label' => lang('trash folder'), 'help' => (isset($trashFolder) && !empty($trashFolder)?lang('The folder <b>%1</b> will be used, if there is nothing set here, and no valid predefine given.',$trashFolder):''), 'name' => 'trashFolder', 'values' => $trashOptions, 'xmlrpc' => True, 'admin' => False, ), 'sentFolder' => array( 'type' => 'select', 'label' => lang('sent folder'), 'help' => (isset($sentFolder) && !empty($sentFolder)?lang('The folder <b>%1</b> will be used, if there is nothing set here, and no valid predefine given.',$sentFolder):''), 'name' => 'sentFolder', 'values' => $sentOptions, 'xmlrpc' => True, 'admin' => False, ), 'draftFolder' => array( 'type' => 'select', 'label' => lang('draft folder'), 'help' => (isset($draftFolder) && !empty($draftFolder)?lang('The folder <b>%1</b> will be used, if there is nothing set here, and no valid predefine given.',$draftFolder):''), 'name' => 'draftFolder', 'values' => $draftOptions, 'xmlrpc' => True, 'admin' => False, ), 'templateFolder' => array( 'type' => 'select', 'label' => lang('template folder'), 'help' => (isset($templateFolder) && !empty($templateFolder)?lang('The folder <b>%1</b> will be used, if there is nothing set here, and no valid predefine given.',$templateFolder):''), 'name' => 'templateFolder', 'values' => $templateOptions, 'xmlrpc' => True, 'admin' => False, ), 'deleteOptions' => array( 'type' => 'select', 'label' => 'when deleting messages', 'help' => 'what to do when you delete a message', 'name' => 'deleteOptions', 'values' => $deleteOptions, 'xmlrpc' => True, 'admin' => False, 'default'=> 'move_to_trash', ), 'sendOptions' => array( 'type' => 'select', 'label' => 'when sending messages', 'help' => 'what to do when you send a message', 'name' => 'sendOptions', 'values' => $sendOptions, 'xmlrpc' => True, 'admin' => False, 'default'=> 'move_to_sent', ), 'trustServersUnseenInfo' => array( 'type' => 'select', 'label' => 'trust servers SEEN / UNSEEN info', 'help' => 'Trust the server when retrieving the folder status. if you select no, we will search for the UNSEEN messages and count them ourselves', 'name' => 'trustServersUnseenInfo', 'values' => $trustServersUnseenOptions, 'xmlrpc' => True, 'default'=> 2, 'admin' => False, ), 'showAllFoldersInFolderPane' => array( 'type' => 'select', 'label' => 'show all Folders', 'help' => 'show all folders, (subscribed AND unsubscribed) in Main Screen Folder Pane', 'name' => 'showAllFoldersInFolderPane', 'values' => $no_yes, 'xmlrpc' => True, 'default'=> 0, 'admin' => False, ), 'messages_showassent_0' => array( 'type' => 'multiselect', 'label' => 'Extra sent folders', 'help' => 'which folders (additional to the Sent Folder) should be displayed using the Sent Folder View Schema', 'name' => 'messages_showassent_0', 'values' => $folderList, 'xmlrpc' => True, 'admin' => False, 'forced' => 'none', ), array( 'type' => 'section', 'title' => lang('Configuration settings'), 'no_lang'=> true, 'xmlrpc' => False, 'admin' => False ), 'prefpreventmanagefolders' => array( 'type' => 'select', 'label' => 'Prevent managing folders', 'help' => 'Do you want to prevent the managing of folders (creation, accessrights AND subscribtion)?', 'name' => 'prefpreventmanagefolders', 'values' => $prefAllowManageFolders, 'xmlrpc' => True, 'admin' => False, 'forced' => '0', ), 'prefpreventforwarding' => array( 'type' => 'select', 'label' => 'Prevent managing forwards', 'help' => 'Do you want to prevent the editing/setup for forwarding of mails via settings (, even if SIEVE is enabled)?', 'name' => 'prefpreventforwarding', 'values' => $no_yes, 'xmlrpc' => True, 'admin' => False, 'forced' => '0', ), 'prefpreventnotificationformailviaemail' => array( 'type' => 'select', 'label' => 'Prevent managing notifications', 'help' => 'Do you want to prevent the editing/setup of notification by mail to other emailadresses if emails arrive (, even if SIEVE is enabled)?', 'name' => 'prefpreventnotificationformailviaemail', 'values' => $no_yes, 'xmlrpc' => True, 'admin' => False, 'forced' => '1', ), 'prefpreventeditfilterrules' => array( 'type' => 'select', 'label' => 'Prevent managing filters', 'help' => 'Do you want to prevent the editing/setup of filter rules (, even if SIEVE is enabled)?', 'name' => 'prefpreventeditfilterrules', 'values' => $no_yes, 'xmlrpc' => True, 'admin' => False, 'forced' => '0', ), 'prefpreventabsentnotice' => array( 'type' => 'select', 'label' => 'Prevent managing vacation notice', 'help' => 'Do you want to prevent the editing/setup of the absent/vacation notice (, even if SIEVE is enabled)?', 'name' => 'prefpreventabsentnotice', 'values' => $no_yes, 'xmlrpc' => True, 'admin' => False, 'forced' => '0', ), 'connectionTimeout' => array( 'type' => 'select', 'label' => 'IMAP timeout', 'help' => 'Timeout on connections to your IMAP Server', 'name' => 'connectionTimeout', 'values' => $connectionTimeout, 'xmlrpc' => True, 'admin' => False, ), 'sieveScriptName' => array( 'type' => 'input', 'label' => 'sieve script name', 'help' => 'sieve script name', 'name' => 'sieveScriptName', 'xmlrpc' => True, 'admin' => False, 'forced' => 'mail', ), 'prefcontroltestconnection' => array( 'type' => 'select', 'label' => 'Test connection', 'help' => 'Show Test Connection section and control the level of info displayed?', 'name' => 'prefcontroltestconnection', 'values' => $test_connection, 'xmlrpc' => True, 'admin' => False, 'forced' => '0', ), 'notavailableautofolders' => array( 'type' => 'multiselect', 'label' => 'do not auto create folders', 'help' => 'which folders - in general - should NOT be automatically created, if not existing', 'name' => 'notavailableautofolders', 'values' => $availableAutoFolders, 'xmlrpc' => True, 'admin' => False, 'forced' => 'none', ), 'saveAsOptions' => array( 'type' => 'select', 'label' => 'Save as', 'help' => 'when saving messages as item of a different app', 'name' => 'saveAsOptions', 'values' => $saveAsOptions, 'xmlrpc' => True, 'admin' => False, 'default'=> 'text', ), 'add_popup' => '600x425', ); if (!$GLOBALS['egw_info']['apps']['stylite']) unset($settingsArray['attachVCardAtCompose']); return $settingsArray; } /** * Admin hook * * @param array|string $hook_data */ static function admin($hook_data) { unset($GLOBALS['egw_info']['user']['preferences']['common']['auto_hide_sidebox']); // Only Modify the $file and $title variables..... $title = $appname = 'mail'; $profileID = 0; if (isset($GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'])) $profileID = (int)$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID']; $file = Array( 'Site Configuration' => egw::link('/index.php',array('menuaction'=>'admin.uiconfig.index','appname'=>'mail')), ); display_section($appname,$title,$file); } /** * Sidebox menu hook * * @param array|string $hook_data */ static function sidebox_menu($hook_data) { //error_log(__METHOD__); // always show the side bar unset($GLOBALS['egw_info']['user']['preferences']['common']['auto_hide_sidebox']); $appname = 'mail'; $menu_title = $GLOBALS['egw_info']['apps'][$appname]['title'] . ' '. lang('Menu'); $file = array(); $profileID = 0; if (isset($GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'])) $profileID = (int)$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID']; $mail_bo = mail_bo::getInstance(true,$profileID); $profileID = $GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'] = $mail_bo->profileID; $preferences =& $mail_bo->mailPreferences; $serverCounter = $sieveEnabledServerCounter = 0; if (count($preferences->ic_server)) { foreach ($preferences->ic_server as $tmpkey => $accountData) { if ($tmpkey==0) continue; $icServer =& $accountData; if (empty($icServer->host)) continue; if ($icServer->enableSieve && $icServer->sievePort) $sieveEnabledServerCounter++; $serverCounter++; } } $showMainScreenStuff = false; if (!$showMainScreenStuff) { // action links that are mostly static and dont need any connection and additional classes ... $file += array( 'mail' => egw::link('/index.php','menuaction=mail.mail_ui.index&ajax=true'), ); } // Destination div for folder tree $file[] = array( 'no_lang' => true, 'text'=>'<span id="mail-index_buttonmailcreate" class="button" />', 'link'=>false, 'icon' => false ); $file[] = array( 'no_lang' => true, 'text'=>'<span id="mail-tree_target" class="dtree" />', 'link'=>false, 'icon' => false ); // empty trash (if available -> move to trash ) if($preferences['deleteOptions'] == 'move_to_trash') { $file += array( '_NewLine_' => '', // give a newline 'empty trash' => "javascript:mail_callEmptyTrash();", ); } if($preferences['deleteOptions'] == 'mark_as_deleted') { $file += array( '_NewLine_' => '', // give a newline 'compress folder' => "javascript:mail_callCompressFolder();", ); } // import Message link - only when the required library is available if ((@include_once 'Mail/mimeDecode.php') !== false) { $linkData = array( 'menuaction' => 'mail.mail_ui.importMessage', ); $file += array( 'import message' => "javascript:egw_openWindowCentered2('".egw::link('/index.php', $linkData,false)."','importMessageDialog',870,125,'no','$appname');", ); } // display them all display_sidebox($appname,$menu_title,$file); if ($GLOBALS['egw_info']['user']['apps']['preferences']) { #$mailPreferences = ExecMethod('mail.bopreferences.getPreferences'); $menu_title = lang('Preferences'); // ToDo: remove Preferences sub-menu from sidebox $file = array(); // create account wizard $file += array( 'create new account' => "javascript:egw_openWindowCentered2('" . egw::link('/index.php', array('menuaction' => 'mail.mail_wizard.add'), ''). "','_blank',640,480,'yes')", ); if ($preferences['prefcontroltestconnection'] <> 'none') $file['Test Connection'] = egw::link('/index.php','menuaction=mail.mail_ui.TestConnection&appname=mail'); display_sidebox($appname,$menu_title,$file); unset($file); $menu_title = lang('Sieve'); if (is_object($preferences)) $icServer = $preferences->getIncomingServer($profileID); $linkData = array ( 'menuaction' => 'mail.mail_sieve.index', ); if(empty($preferences['prefpreventeditfilterrules']) || $preferences['prefpreventeditfilterrules'] == 0) $file['filter rules'] = egw::link('/index.php',$linkData); $linkData = array ( 'menuaction' => 'mail.mail_sieve.editVacation', ); if(empty($preferences['prefpreventabsentnotice']) || $preferences['prefpreventabsentnotice'] == 0) { $file['vacation notice'] = egw::link('/index.php',$linkData); } if((empty($preferences['prefpreventnotificationformailviaemail']) || $preferences['prefpreventnotificationformailviaemail'] == 0)) { $file['email notification'] = egw::link('/index.php','menuaction=mail.mail_sieve.editEmailNotification'); //Added email notifications } if ($sieveEnabledServerCounter>=1) { if($sieveEnabledServerCounter==1 && ($icServer instanceof defaultimap)) { if($icServer->enableSieve) { if (count($file)) display_sidebox($appname,$menu_title,$file); unset($file); } } else { if (count($file)) display_sidebox($appname,$menu_title,$file); unset($file); } } } if ($GLOBALS['egw_info']['user']['apps']['admin']) { $file = Array( 'Site Configuration' => egw::link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname), ); display_sidebox($appname,lang('Admin'),$file); } } }