174 lines
6.2 KiB
PHP
174 lines
6.2 KiB
PHP
<?php
|
|
/**
|
|
* Horde_Form for editing address books.
|
|
*
|
|
* See the enclosed file LICENSE for license information (ASL). If you
|
|
* did not receive this file, see http://www.horde.org/licenses/apache.
|
|
*
|
|
* @package Turba
|
|
*/
|
|
|
|
/**
|
|
* The Turba_Form_EditAddressBook class provides the form for
|
|
* editing an address book.
|
|
*
|
|
* @author Chuck Hagenbuch <chuck@horde.org>
|
|
* @package Turba
|
|
*/
|
|
class Turba_Form_EditAddressBook extends Horde_Form
|
|
{
|
|
/**
|
|
* Address book being edited
|
|
*
|
|
* @var Horde_Share_Object
|
|
*/
|
|
protected $_addressbook;
|
|
|
|
public function __construct($vars, Horde_Share_Object $addressbook)
|
|
{
|
|
global $conf, $injector, $registry;
|
|
|
|
$this->_addressbook = $addressbook;
|
|
|
|
$owner = $addressbook->get('owner') == $registry->getAuth() ||
|
|
(is_null($addressbook->get('owner')) &&
|
|
$registry->isAdmin());
|
|
|
|
parent::__construct(
|
|
$vars,
|
|
$owner
|
|
? sprintf(_("Edit %s"), $addressbook->get('name'))
|
|
: $addressbook->get('name')
|
|
);
|
|
|
|
$this->addHidden('', 'a', 'text', true);
|
|
$this->addVariable(_("Name"), 'name', 'text', true);
|
|
|
|
if (!$owner) {
|
|
$v = $this->addVariable(_("Owner"), 'owner', 'text', false);
|
|
$owner_name = $injector
|
|
->getInstance('Horde_Core_Factory_Identity')
|
|
->create($addressbook->get('owner'))
|
|
->getValue('fullname');
|
|
if (trim($owner_name) == '') {
|
|
$owner_name = $addressbook->get('owner');
|
|
}
|
|
$v->setDefault($owner_name ? $owner_name : _("System"));
|
|
}
|
|
|
|
$this->addVariable(_("Description"), 'description', 'longtext', false, false, null, array(4, 60));
|
|
|
|
/* Subscription URLs. */
|
|
$url = $registry->get('webroot', 'horde');
|
|
if (isset($conf['urls']['pretty']) &&
|
|
$conf['urls']['pretty'] == 'rewrite') {
|
|
$webdavUrl = $url . '/rpc/turba/';
|
|
$carddavUrl = $url . '/rpc/addressbooks/';
|
|
$accountUrl = $url . '/rpc/';
|
|
} else {
|
|
$webdavUrl = $url . '/rpc.php/turba/';
|
|
$carddavUrl = $url . '/rpc.php/addressbooks/';
|
|
$accountUrl = $url . '/rpc.php/';
|
|
}
|
|
try {
|
|
$accountUrl = Horde::url($accountUrl, true, -1)
|
|
. 'principals/'
|
|
. $registry->convertUsername($registry->getAuth(), false) . '/';
|
|
if ($addressbook->get('owner')) {
|
|
$carddavUrl = Horde::url($carddavUrl, true, -1)
|
|
. $registry->convertUsername($registry->getAuth(), false)
|
|
. '/'
|
|
. $injector->getInstance('Horde_Dav_Storage')
|
|
->getExternalCollectionId(
|
|
$addressbook->getName(),
|
|
'contacts'
|
|
)
|
|
. '/';
|
|
$this->addVariable(
|
|
_("CardDAV Subscription URL"), '', 'link', false, false, null,
|
|
array(array(
|
|
'url' => $carddavUrl,
|
|
'text' => $carddavUrl,
|
|
'title' => _("Copy this URL to a CardDAV client to subscribe to this address book"),
|
|
'target' => '_blank')
|
|
)
|
|
);
|
|
}
|
|
$this->addVariable(
|
|
_("CardDAV Account URL"), '', 'link', false, false, null,
|
|
array(array(
|
|
'url' => $accountUrl,
|
|
'text' => $accountUrl,
|
|
'title' => _("Copy this URL to a CarddAV client to subscribe to all your address books"),
|
|
'target' => '_blank')
|
|
)
|
|
);
|
|
} catch (Horde_Exception $e) {
|
|
}
|
|
$webdavUrl = Horde::url($webdavUrl, true, -1)
|
|
. ($addressbook->get('owner')
|
|
? $registry->convertUsername($addressbook->get('owner'), false)
|
|
: '-system-')
|
|
. '/' . $addressbook->getName() . '/';
|
|
$this->addVariable(
|
|
_("WebDAV URL"), '', 'link', false, false, null,
|
|
array(array(
|
|
'url' => $webdavUrl,
|
|
'text' => $webdavUrl,
|
|
'title' => _("Copy this URL to a WebDAV client to browse this address book"),
|
|
'target' => '_blank')
|
|
)
|
|
);
|
|
|
|
/* Permissions link. */
|
|
if (empty($conf['share']['no_sharing']) && $owner) {
|
|
$url = Horde::url($registry->get('webroot', 'horde')
|
|
. '/services/shares/edit.php')
|
|
->add(array('app' => 'turba', 'share' => $addressbook->getName()));
|
|
$this->addVariable(
|
|
'', '', 'link', false, false, null,
|
|
array(array(
|
|
'url' => $url,
|
|
'text' => _("Change Permissions"),
|
|
'onclick' => Horde::popupJs(
|
|
$url,
|
|
array('params' => array('urlencode' => true)))
|
|
. 'return false;',
|
|
'class' => 'horde-button',
|
|
'target' => '_blank')
|
|
)
|
|
);
|
|
}
|
|
|
|
$this->setButtons(array(
|
|
_("Save"),
|
|
array('class' => 'horde-delete', 'value' => _("Delete")),
|
|
array('class' => 'horde-cancel', 'value' => _("Cancel"))
|
|
));
|
|
}
|
|
|
|
public function execute()
|
|
{
|
|
switch ($this->_vars->submitbutton) {
|
|
case _("Save"):
|
|
$this->_addressbook->set('name', $this->_vars->get('name'));
|
|
$this->_addressbook->set('desc', $this->_vars->get('description'));
|
|
try {
|
|
$this->_addressbook->save();
|
|
} catch (Horde_Share_Exception $e) {
|
|
throw new Turba_Exception(sprintf(_("Unable to save address book \"%s\": %s"), $this->_vars->get('name'), $e->getMessage()));
|
|
}
|
|
break;
|
|
case _("Delete"):
|
|
Horde::url('addressbooks/delete.php')
|
|
->add('a', $this->_vars->a)
|
|
->redirect();
|
|
break;
|
|
case _("Cancel"):
|
|
Horde::url('', true)->redirect();
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|