Files
server/usr/share/psa-horde/imp/lib/Minimal/Base.php
2026-01-07 20:52:11 +01:00

119 lines
2.8 KiB
PHP

<?php
/**
* Base class for minimal view pages.
*
* Copyright 2012-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.horde.org/licenses/gpl.
*
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
abstract class IMP_Minimal_Base
{
/**
* @var IMP_Indices_Mailbox
*/
public $indices;
/**
* @var string
*/
public $title;
/**
* @var Horde_Variables
*/
public $vars;
/**
* @var Horde_View
*/
public $view;
/**
* @var array
*/
protected $_pages = array(
'header'
);
/**
*/
public function __construct(Horde_Variables $vars)
{
$this->vars = $vars;
$this->indices = new IMP_Indices_Mailbox($vars);
$this->view = new Horde_View(array(
'templatePath' => IMP_TEMPLATES . '/minimal'
));
$this->view->addHelper('Text');
$this->_init();
}
/**
*/
public function render()
{
foreach ($this->_pages as $val) {
echo $this->view->render($val);
}
}
/**
* Output the menu.
*
* @param string $page The current page ('compose', 'folders', 'mailbox',
* 'message', 'search').
* @param array $items Additional menu items to add to the menu. First
* element is label, second is URL to link to.
*
* @return string The menu.
*/
public function getMenu($page, $items = array())
{
if (!in_array($page, array('mailbox', 'message')) ||
!$this->indices->mailbox->inbox) {
$items[] = array(_("Inbox"), IMP_Minimal_Mailbox::url(array('mailbox' => 'INBOX')));
}
if (!in_array($page, array('compose', 'search')) &&
IMP_Compose::canCompose()) {
$items[] = array(_("New Message"), IMP_Minimal_Compose::url());
}
if (!in_array($page, array('folders', 'search')) &&
$GLOBALS['injector']->getInstance('IMP_Factory_Imap')->create()->access(IMP_Imap::ACCESS_FOLDERS)) {
$items[] = array(_("Folders"), IMP_Minimal_Folders::url());
}
$items[] = array(_("Log out"), $GLOBALS['registry']->getServiceLink('logout', 'imp')->setRaw(false));
$menu = new Horde_Menu();
foreach ($menu->getSiteLinks() as $menuitem) {
if ($menuitem != 'separator') {
$items[] = array($menuitem['text'], $menuitem['url']);
}
}
return $items;
}
/**
*/
abstract protected function _init();
/**
*/
static public function url(array $opts = array())
{
}
}