/**
* Returns the appropriate link to call the message composition script.
*
* @param string $simplejs Use simple JS (instead of HordePopup JS)?
*
* @return Horde_Url The link to the message composition script.
*/
public function link($simplejs = false)
{
global $browser, $prefs, $registry;
$args = $this->args;
$callback = $raw = false;
$view = $registry->getView();
if ($view == Horde_Registry::VIEW_SMARTMOBILE) {
$url = new Horde_Core_Smartmobile_Url(Horde::url('smartmobile.php'));
$url->setAnchor('compose');
} elseif ($simplejs || $view == Horde_Registry::VIEW_DYNAMIC) {
$args['popup'] = 1;
$url = $view == Horde_Registry::VIEW_DYNAMIC ? IMP_Dynamic_Compose::url() : IMP_Basic_Compose::url();
$raw = true;
$callback = array($this, 'composeLinkSimpleCallback');
} elseif ($view != Horde_Registry::VIEW_MINIMAL && $prefs->getValue('compose_popup') && $browser->hasFeature('javascript')) {
$url = IMP_Basic_Compose::url();
$callback = array($this, 'composeLinkJsCallback');
} else {
$url = $view == Horde_Registry::VIEW_MINIMAL ? IMP_Minimal_Compose::url() : IMP_Basic_Compose::url();
}
if (isset($args['mailbox'])) {
$url = IMP_Mailbox::get($args['mailbox'])->url($url, $args['buid']);
unset($args['buid'], $args['mailbox']);
} elseif (!$url instanceof Horde_Url) {
$url = Horde::url($url);
}
$url->setRaw($raw)->add($args);
if ($callback) {
$url->toStringCallback = $callback;
}
return $url;
}