From: Michael M Slusarz Date: Wed, 14 Jul 2010 22:02:24 +0000 (-0600) Subject: Merge horde/Ui with horde/Core. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=6fb6926b2a115f3410d0a924bc6e8eb008ee3cf9;p=horde.git Merge horde/Ui with horde/Core. --- diff --git a/agora/forums.php b/agora/forums.php index 23702f273..187a40529 100644 --- a/agora/forums.php +++ b/agora/forums.php @@ -67,7 +67,7 @@ $view->actions = empty($actions) ? null : $actions; /* Set up pager. */ $vars = Horde_Variables::getDefaultVariables(); -$pager_ob = new Horde_Ui_Pager('forum_page', $vars, array('num' => $forums_count, 'url' => 'forums.php', 'perpage' => $forums_per_page)); +$pager_ob = new Horde_Core_Ui_Pager('forum_page', $vars, array('num' => $forums_count, 'url' => 'forums.php', 'perpage' => $forums_per_page)); $pager_ob->preserve('scope', $scope); $view->pager_link = $pager_ob->render(); diff --git a/agora/lib/Comments.php b/agora/lib/Comments.php index 5f2fac45c..656947847 100644 --- a/agora/lib/Comments.php +++ b/agora/lib/Comments.php @@ -99,7 +99,7 @@ class Agora_ViewComments { if ($messages->_forum['message_count'] > $thread_per_page && $view_bodies == 2) { $vars = new Horde_Variables(array('comments_page' => $thread_page)); - $pager_ob = new Horde_Ui_Pager('comments_page', $vars, + $pager_ob = new Horde_Core_Ui_Pager('comments_page', $vars, array('num' => $messages->_forum['message_count'], 'url' => $base_url, 'perpage' => $thread_per_page)); diff --git a/agora/messages/index.php b/agora/messages/index.php index b3494e80b..60959d029 100644 --- a/agora/messages/index.php +++ b/agora/messages/index.php @@ -134,7 +134,7 @@ if ($threads_list instanceof PEAR_Error) { /* Set up pager. */ if ($thread_count > $thread_per_page && $view_bodies == 2) { $vars = new Horde_Variables(array('thread_page' => $thread_page)); - $pager_ob = new Horde_Ui_Pager('thread_page', $vars, array('num' => $thread_count, 'url' => 'messages/index.php', 'perpage' => $thread_per_page)); + $pager_ob = new Horde_Core_Ui_Pager('thread_page', $vars, array('num' => $thread_count, 'url' => 'messages/index.php', 'perpage' => $thread_per_page)); $pager_ob->preserve('agora', Horde_Util::getFormData('agora')); $view->pager_link = $pager_ob->render(); } diff --git a/agora/moderate.php b/agora/moderate.php index 4d2f27589..abec4396b 100644 --- a/agora/moderate.php +++ b/agora/moderate.php @@ -71,7 +71,7 @@ $view->notify = Horde::endBuffer(); /* Set up pager. */ $vars = Horde_Variables::getDefaultVariables(); -$pager_ob = new Horde_Ui_Pager('moderate_page', $vars, array('num' => $messages_count, 'url' => Horde::selfUrl(true), 'perpage' => $messages_per_page)); +$pager_ob = new Horde_Core_Ui_Pager('moderate_page', $vars, array('num' => $messages_count, 'url' => Horde::selfUrl(true), 'perpage' => $messages_per_page)); $pager_ob->preserve('agora', Horde_Util::getFormData('agora')); $view->pager = $pager_ob->render(); diff --git a/agora/search.php b/agora/search.php index 9cce5d7d1..e03be900e 100644 --- a/agora/search.php +++ b/agora/search.php @@ -45,7 +45,7 @@ if ($form->isSubmitted() || $thread_page != null) { } if ($searchResults['total'] > count($searchResults['results'])) { - $pager_ob = new Horde_Ui_Pager('thread_page', $vars, array('num' => $searchResults['total'], 'url' => 'search.php', 'perpage' => $thread_per_page)); + $pager_ob = new Horde_Core_Ui_Pager('thread_page', $vars, array('num' => $searchResults['total'], 'url' => 'search.php', 'perpage' => $thread_per_page)); foreach ($info as $key => $val) { if ($val) { if ($key == 'keywords') { diff --git a/agora/threads.php b/agora/threads.php index acdbe2880..e300818c5 100644 --- a/agora/threads.php +++ b/agora/threads.php @@ -73,7 +73,7 @@ $view->rss = Horde_Util::addParameter(Horde::applicationUrl('rss/threads.php', t /* Set up pager. */ $vars = Horde_Variables::getDefaultVariables(); -$pager_ob = new Horde_Ui_Pager('thread_page', $vars, array('num' => $threads_count, 'url' => 'threads.php', 'perpage' => $threads_per_page)); +$pager_ob = new Horde_Core_Ui_Pager('thread_page', $vars, array('num' => $threads_count, 'url' => 'threads.php', 'perpage' => $threads_per_page)); $pager_ob->preserve('agora', Horde_Util::getFormData('agora')); $view->pager_link = $pager_ob->render(); diff --git a/ansel/faces/gallery.php b/ansel/faces/gallery.php index b30ddb821..7ff5e2f5e 100644 --- a/ansel/faces/gallery.php +++ b/ansel/faces/gallery.php @@ -45,7 +45,7 @@ $face = $injector->getInstance('Ansel_Faces'); $autogenerate = $face->canAutogenerate(); $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager( +$pager = new Horde_Core_Ui_Pager( 'page', $vars, array( diff --git a/ansel/faces/search/all.php b/ansel/faces/search/all.php index 88f1f61f6..4bc49be40 100644 --- a/ansel/faces/search/all.php +++ b/ansel/faces/search/all.php @@ -24,7 +24,7 @@ try { $results = array(); } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager( +$pager = new Horde_Core_Ui_Pager( 'page', $vars, array( 'num' => $count, diff --git a/ansel/faces/search/image_search.php b/ansel/faces/search/image_search.php index ae8b75f2a..99114bbe3 100644 --- a/ansel/faces/search/image_search.php +++ b/ansel/faces/search/image_search.php @@ -41,7 +41,7 @@ if (($face_id = Horde_Util::getGet('face_id')) !== null) { $title = _("Photo search"); $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager( +$pager = new Horde_Core_Ui_Pager( 'page', $vars, array( diff --git a/ansel/faces/search/name.php b/ansel/faces/search/name.php index d042a90b2..817659542 100644 --- a/ansel/faces/search/name.php +++ b/ansel/faces/search/name.php @@ -34,7 +34,7 @@ if (!empty($name)) { } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager( +$pager = new Horde_Core_Ui_Pager( 'page', $vars, array('num' => $count, 'url' => 'faces/search/name.php', diff --git a/ansel/faces/search/named.php b/ansel/faces/search/named.php index 65116af49..c2b25289b 100644 --- a/ansel/faces/search/named.php +++ b/ansel/faces/search/named.php @@ -24,7 +24,7 @@ try { } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager( +$pager = new Horde_Core_Ui_Pager( 'page', $vars, array( 'num' => $count, diff --git a/ansel/faces/search/owner.php b/ansel/faces/search/owner.php index 806423796..ba4c4c1ce 100644 --- a/ansel/faces/search/owner.php +++ b/ansel/faces/search/owner.php @@ -32,7 +32,7 @@ try { } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager( +$pager = new Horde_Core_Ui_Pager( 'page', $vars, array( diff --git a/ansel/faces/search/tabs.php b/ansel/faces/search/tabs.php index c76d66565..a4a57960b 100644 --- a/ansel/faces/search/tabs.php +++ b/ansel/faces/search/tabs.php @@ -17,7 +17,7 @@ $faces = $GLOBALS['injector']->getInstance('Ansel_Faces'); /* Show tabs */ $vars = Horde_Variables::getDefaultVariables(); -$tabs = new Horde_Ui_Tabs('search_faces', $vars); +$tabs = new Horde_Core_Ui_Tabs('search_faces', $vars); $tabs->addTab(_("All faces"), Horde::applicationUrl('faces/search/all.php'), 'all'); $tabs->addTab(_("From my galleries"), Horde::applicationUrl('faces/search/owner.php'), 'owner'); $tabs->addTab(_("Named faces"), Horde::applicationUrl('faces/search/named.php'), 'named'); diff --git a/ansel/group.php b/ansel/group.php index 15ca18da0..93b7a7933 100644 --- a/ansel/group.php +++ b/ansel/group.php @@ -75,7 +75,7 @@ default: // Set up pager. $vars = Horde_Variables::getDefaultVariables(); -$group_pager = new Horde_Ui_Pager('gbpage', +$group_pager = new Horde_Core_Ui_Pager('gbpage', $vars, array( 'num' => $num_groups, diff --git a/ansel/lib/Block/cloud.php b/ansel/lib/Block/cloud.php index 676bf3af3..d2a2be409 100644 --- a/ansel/lib/Block/cloud.php +++ b/ansel/lib/Block/cloud.php @@ -55,7 +55,7 @@ class Horde_Block_ansel_cloud extends Horde_Block /* Get the tags */ $tags = Ansel_Tags::listTagInfo(null, $this->_params['count']); if (count($tags)) { - $cloud = new Horde_Ui_TagCloud(); + $cloud = new Horde_Core_Ui_TagCloud(); foreach ($tags as $id => $tag) { $link = Ansel::getUrlFor('view', array('view' => 'Results', 'tag' => $tag['tag_name'])); diff --git a/ansel/lib/View/GalleryRenderer/Gallery.php b/ansel/lib/View/GalleryRenderer/Gallery.php index 44465f962..42775d28c 100644 --- a/ansel/lib/View/GalleryRenderer/Gallery.php +++ b/ansel/lib/View/GalleryRenderer/Gallery.php @@ -89,7 +89,7 @@ class Ansel_View_GalleryRenderer_Gallery extends Ansel_View_GalleryRenderer_Base 'perpage' => $this->perpage, 'url_callback' => $callback); - $pager = new Horde_Ui_Pager('page', $vars, $params); + $pager = new Horde_Core_Ui_Pager('page', $vars, $params); // Note that we can't use Horde_Util::bufferOutput() here since the // include file would be included inside that method's scope, and not diff --git a/ansel/lib/View/GalleryRenderer/GalleryLightbox.php b/ansel/lib/View/GalleryRenderer/GalleryLightbox.php index af5d565db..89cb213b7 100644 --- a/ansel/lib/View/GalleryRenderer/GalleryLightbox.php +++ b/ansel/lib/View/GalleryRenderer/GalleryLightbox.php @@ -114,7 +114,7 @@ class Ansel_View_GalleryRenderer_GalleryLightbox extends Ansel_View_GalleryRende 'perpage' => $this->perpage, 'url_callback' => $callback); - $pager = new Horde_Ui_Pager('page', $vars, $params); + $pager = new Horde_Core_Ui_Pager('page', $vars, $params); Horde::startBuffer(); /* Create the js variables to pass to the lightbox script */ $jsvars = array('graphics_dir' => Horde::applicationUrl(Horde_Themes::img(), true, -1), diff --git a/ansel/lib/View/List.php b/ansel/lib/View/List.php index 1faad199b..076023d00 100644 --- a/ansel/lib/View/List.php +++ b/ansel/lib/View/List.php @@ -219,7 +219,7 @@ class Ansel_View_List extends Ansel_View_Base if ($override) { $p_params['url_callback'] = null; } - $this->_pager = new Horde_Ui_Pager('page', $vars, $p_params); + $this->_pager = new Horde_Core_Ui_Pager('page', $vars, $p_params); $preserve = array('sort_dir' => $this->_sortDir); if (!empty($this->_sortBy)) { $preserve['sort'] = $this->_sortBy; diff --git a/ansel/lib/View/Results.php b/ansel/lib/View/Results.php index 18dc4e836..ea1391731 100644 --- a/ansel/lib/View/Results.php +++ b/ansel/lib/View/Results.php @@ -251,7 +251,7 @@ class Ansel_View_Results extends Ansel_View_Base $this->_pagestart = ($this->_page * $this->_perPage) + 1; $this->_pageend = min($this->_pagestart + $numimages - 1, $this->_pagestart + $this->_perPage - 1); - $this->_pager = new Horde_Ui_Pager('page', $vars, array('num' => $total, + $this->_pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $total, 'url' => $viewurl, 'perpage' => $this->_perPage)); Horde::startBuffer(); diff --git a/babel/view.php b/babel/view.php index dd40c8f1f..c0125b31b 100644 --- a/babel/view.php +++ b/babel/view.php @@ -490,7 +490,7 @@ $viewurl = Horde_Util::addParameter($viewurl, array('editmode' => $editmode, 'module' => $app, 'filter' => $filter, 'search' => $search)); - $pager = new Horde_Ui_Pager('page', $vars, array('num' => $numitem, 'url' => $viewurl, 'page_count' => 10, 'perpage' => $perpage)); + $pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $numitem, 'url' => $viewurl, 'page_count' => 10, 'perpage' => $perpage)); echo $pager->render($page, $numitem, $viewurl); ?> diff --git a/beatnik/listzones.php b/beatnik/listzones.php index 5d8051da2..d43fde6f8 100644 --- a/beatnik/listzones.php +++ b/beatnik/listzones.php @@ -27,7 +27,7 @@ $_SESSION['beatnik']['curpage'] = $page; $pager_vars = Horde_Variables::getDefaultVariables(); $pager_vars->set('page', $page); $perpage = $prefs->getValue('domains_perpage'); -$pager = new Horde_Ui_Pager('page', $pager_vars, +$pager = new Horde_Core_Ui_Pager('page', $pager_vars, array('num' => count($beatnik->domains), 'url' => 'listzones.php', 'page_count' => 10, diff --git a/fima/lib/UI/VarRenderer/fima.php b/fima/lib/UI/VarRenderer/fima.php index 58187355e..4d9b57277 100644 --- a/fima/lib/UI/VarRenderer/fima.php +++ b/fima/lib/UI/VarRenderer/fima.php @@ -1,7 +1,7 @@ * @package Fima */ -class Horde_Ui_VarRenderer_Fima extends Horde_Ui_VarRenderer_Html { +class Horde_Core_Ui_VarRenderer_Fima extends Horde_Core_Ui_VarRenderer_Html { protected function _renderVarInput_fima_dspostings($form, &$var, &$vars) { diff --git a/fima/postings.php b/fima/postings.php index 4fc043456..690ee52d4 100644 --- a/fima/postings.php +++ b/fima/postings.php @@ -696,7 +696,7 @@ if ($pageOb['mode'] == 'edit') { /* Generate tabs. */ if ($pageOb['mode'] != 'transfer' && !$print_view) { - $tabs = new Horde_Ui_Tabs('postingtype', $vars); + $tabs = new Horde_Core_Ui_Tabs('postingtype', $vars); $postingtypes = Fima::getPostingTypes(); foreach ($postingtypes as $typeValue => $typeLabel) { $tabs->addTab($typeLabel, $pageOb['url'], $typeValue); diff --git a/folks/account/tabs.php b/folks/account/tabs.php index 14cd20b95..cd57efd4c 100644 --- a/folks/account/tabs.php +++ b/folks/account/tabs.php @@ -16,7 +16,7 @@ require_once dirname(__FILE__) . '/../lib/base.php'; $auth = $injector->getInstance('Horde_Auth')->getAuth(); $vars = Horde_Variables::getDefaultVariables(); -$tabs = new Horde_Ui_Tabs('what', $vars); +$tabs = new Horde_Core_Ui_Tabs('what', $vars); $tabs->addTab(_("Login"), Horde::applicationUrl('login.php'), 'login'); if ($conf['signup']['allow'] === true && $auth->hasCapability('add')) { diff --git a/folks/activity.php b/folks/activity.php index 5085afb35..d9aa49d75 100644 --- a/folks/activity.php +++ b/folks/activity.php @@ -31,7 +31,7 @@ if ($users instanceof PEAR_Error) { } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager('page', +$pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $count, 'url' => 'activity.php', 'perpage' => $perpage)); diff --git a/folks/birthday.php b/folks/birthday.php index 89bad2771..8dd092284 100644 --- a/folks/birthday.php +++ b/folks/birthday.php @@ -43,7 +43,7 @@ if ($users instanceof PEAR_Error) { } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager('page', +$pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $count, 'url' => 'birthday.php', 'perpage' => $perpage)); diff --git a/folks/edit/tabs.php b/folks/edit/tabs.php index e4632a34f..2ec6f015b 100644 --- a/folks/edit/tabs.php +++ b/folks/edit/tabs.php @@ -16,7 +16,7 @@ if (!$registry->isAuthenticated()) { } $vars = Horde_Variables::getDefaultVariables(); -$tabs = new Horde_Ui_Tabs('what', $vars); +$tabs = new Horde_Core_Ui_Tabs('what', $vars); $tabs->addTab(_("Edit my profile"), Horde::applicationUrl('edit/edit.php'), 'edit'); $tabs->addTab(_("Privacy"), Horde::applicationUrl('edit/privacy.php'), 'privacy'); $tabs->addTab(_("Blacklist"), Horde::applicationUrl('edit/friends/blacklist.php'), 'blacklist'); diff --git a/folks/list.php b/folks/list.php index 1c055fffa..3b07e0ca3 100644 --- a/folks/list.php +++ b/folks/list.php @@ -43,7 +43,7 @@ if ($users instanceof PEAR_Error) { } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager('page', +$pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $count, 'url' => 'list.php', 'perpage' => $perpage)); diff --git a/folks/new.php b/folks/new.php index 5996834f8..bec0f7121 100644 --- a/folks/new.php +++ b/folks/new.php @@ -31,7 +31,7 @@ if ($users instanceof PEAR_Error) { } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager('page', +$pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $count, 'url' => 'new.php', 'perpage' => $perpage)); diff --git a/folks/online.php b/folks/online.php index b761dc385..dd85be3e5 100644 --- a/folks/online.php +++ b/folks/online.php @@ -43,7 +43,7 @@ if ($users instanceof PEAR_Error) { } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager('page', +$pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $count, 'url' => 'online.php', 'perpage' => $perpage)); diff --git a/folks/popularity.php b/folks/popularity.php index 8faec7537..e4936596b 100644 --- a/folks/popularity.php +++ b/folks/popularity.php @@ -31,7 +31,7 @@ if ($users instanceof PEAR_Error) { } $vars = Horde_Variables::getDefaultVariables(); -$pager = new Horde_Ui_Pager('page', +$pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $count, 'url' => 'popularity.php', 'perpage' => $perpage)); diff --git a/folks/search.php b/folks/search.php index 6bd39f5e7..00d09c2e6 100644 --- a/folks/search.php +++ b/folks/search.php @@ -60,7 +60,7 @@ if (!empty($criteria)) { } $vars = Horde_Variables::getDefaultVariables(); - $pager = new Horde_Ui_Pager('page', + $pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $count, 'url' => 'search.php', 'perpage' => $perpage)); diff --git a/framework/Core/lib/Horde/Core/Ui/FlagImage.php b/framework/Core/lib/Horde/Core/Ui/FlagImage.php new file mode 100644 index 000000000..17f8bef24 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/FlagImage.php @@ -0,0 +1,39 @@ + + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Core + */ +class Horde_Core_Ui_FlagImage +{ + /** + * Render the language selection. + * + * @param boolean $form Return the selection box as a complete standalone + * form. + * + * @return string The HTML selection box. + */ + static public function generateFlagImageByHost($host) + { + $data = Horde_Nls::getCountryByHost($host, empty($GLOBALS['conf']['geoip']['datafile']) ? null : $GLOBALS['conf']['geoip']['datafile']); + if ($data === false) { + return ''; + } + + $img = $data['code'] . '.png'; + return file_exists($GLOBALS['registry']->get('themesfs', 'horde') . '/graphics/flags/' . $img) + ? Horde::img('flags/' . $img, $data['name'], array('title' => $data['name'])) + : '[' . $data['name'] . ']'; + } + +} diff --git a/framework/Core/lib/Horde/Core/Ui/JsCalendar.php b/framework/Core/lib/Horde/Core/Ui/JsCalendar.php new file mode 100644 index 000000000..47afb1592 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/JsCalendar.php @@ -0,0 +1,85 @@ + + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Core + */ +class Horde_Core_Ui_JsCalendar +{ + /** + * Output the necessary javascript code to allow display of the calendar + * widget. + * + * @param array $params Configuration parameters for the widget: + * - short_weekdays: display only the first letter of + * weekdays? + */ + static public function init($params = array()) + { + $params += array('short_weekdays' => false); + $weekdays = self::weekdays(); + if ($params['short_weekdays']) { + foreach ($weekdays as &$day) { + $day = substr($day, 0, 1); + } + } + + Horde::addScriptFile('calendar.js', 'horde'); + Horde::addInlineScript(array( + 'Horde_Calendar.firstDayOfWeek = ' . (isset($GLOBALS['prefs']) ? intval($GLOBALS['prefs']->getValue('first_week_day')) : 1), + 'Horde_Calendar.weekdays = ' . Horde_Serialize::serialize($weekdays, Horde_Serialize::JSON, $GLOBALS['registry']->getCharset()), + 'Horde_Calendar.months = ' . Horde_Serialize::serialize(self::months(), Horde_Serialize::JSON, $GLOBALS['registry']->getCharset()), + )); + } + + /** + * Return the list of localized abbreviated weekdays. + * + * @return array Abbreviated weekdays. + */ + static public function weekdays() + { + return array( + _("Su"), + _("Mo"), + _("Tu"), + _("We"), + _("Th"), + _("Fr"), + _("Sa") + ); + } + + /** + * Return the localized list of months. + * + * @return array Month list. + */ + static public function months() + { + return array( + _("January"), + _("February"), + _("March"), + _("April"), + _("May"), + _("June"), + _("July"), + _("August"), + _("September"), + _("October"), + _("November"), + _("December") + ); + } + +} diff --git a/framework/Core/lib/Horde/Core/Ui/Language.php b/framework/Core/lib/Horde/Core/Ui/Language.php new file mode 100644 index 000000000..1467f7018 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/Language.php @@ -0,0 +1,46 @@ + + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Core + */ +class Horde_Core_Ui_Language { + + /** + * Render the language selection. + * + * @param boolean $form Return the selection box as a complete standalone + * form. + * + * @return string The HTML selection box. + */ + static public function render() + { + $html = ''; + + if (!$GLOBALS['prefs']->isLocked('language')) { + $_SESSION['horde_language'] = $GLOBALS['registry']->preferredLang(); + $html = sprintf('
', + Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/language.php', false, -1)); + $html .= ''; + $html .= '
'; + } + + return $html; + } + +} diff --git a/framework/Core/lib/Horde/Core/Ui/Pager.php b/framework/Core/lib/Horde/Core/Ui/Pager.php new file mode 100644 index 000000000..7dab22f6e --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/Pager.php @@ -0,0 +1,128 @@ + + * @author Joel Vandal + * @author Chuck Hagenbuch + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Core + */ +class Horde_Core_Ui_Pager extends Horde_Core_Ui_Widget +{ + /** + * Constructor. + * + * TODO + */ + public function __construct($name, $vars, $config) + { + $config = array_merge(array( + 'page_limit' => 10, + 'perpage' => 100 + ), $config); + + parent::__construct($name, $vars, $config); + } + + /** + * Render the pager. + * + * @return string HTML code containing a centered table with the pager + * links. + */ + public function render($data = null) + { + global $prefs, $registry, $conf; + + $num = $this->_config['num']; + $url = $this->_config['url']; + + $page_limit = $this->_config['page_limit']; + $perpage = $this->_config['perpage']; + + $current_page = $this->_vars->get($this->_name); + + // Figure out how many pages there will be. + $pages = ($num / $perpage); + if (is_integer($pages)) { + $pages--; + } + $pages = (int)$pages; + + // Return nothing if there is only one page. + if ($pages == 0 || $num == 0) { + return ''; + } + + $html = '
'; + + if ($current_page > 0) { + // Create the '<< Prev' link if we are not on the first page. + $link = Horde_Util::addParameter($url, $this->_name, $current_page - 1); + $link = $this->_addPreserved($link); + $link = $this->_link($link); + if (isset($this->_config['previousHTML'])) { + $html .= Horde::link($link, '', 'prev') . $this->_config['previousHTML'] . ''; + } else { + $html .= Horde::link($link, '', 'prev') . htmlspecialchars(_("'; + } + } + + // Figure out the top & bottom display limits. + $bottom = max(0, $current_page - ($page_limit / 2) + 1); + $top = $bottom + $page_limit - 1; + if ($top - 1 > $pages) { + $bottom -= ($top - 1) - $pages; + $top = $pages + 1; + } + + // Create bottom '[x-y]' link if necessary. + $link = $this->_addPreserved(Horde_Util::addParameter($url, $this->_name, $bottom - 1)); + $link = $this->_link($link); + + if ($bottom > 0) { + $html .= ' ' . Horde::link($link, '', 'prevRange') . '[' . ($bottom == 1 ? $bottom : '1-' . $bottom) . ']'; + } + + // Create links to individual pages between limits. + for ($i = $bottom; $i <= $top && $i <= $pages; ++$i) { + if ($i == $current_page) { + $html .= ' (' . ($i + 1) . ')'; + } elseif ($i >= 0 && $i <= $pages) { + $link = $this->_addPreserved(Horde_Util::addParameter($url, $this->_name, $i)); + $link = $this->_link($link); + $html .= ' ' . Horde::link($link) . ($i + 1) . ''; + } + } + + // Create top '[x-y]' link if necessary. + if ($top < $pages) { + $link = $this->_addPreserved(Horde_Util::addParameter($url, $this->_name, $top + 1)); + $link = $this->_link($link); + + $html .= ' ' . Horde::link($link, '', 'nextRange') . '[' . + ($top + 2 == $pages + 1 ? $pages + 1 : ($top + 2) . '-' . ($pages + 1)) . ']'; + } + + // Create the 'Next>>' link if we are not on the last page. + if ($current_page < $pages) { + $link = $this->_addPreserved(Horde_Util::addParameter($url, $this->_name, $current_page + 1)); + $link = $this->_link($link); + if (isset($this->_config['nextHTML'])) { + $html .= Horde::link($link, '', 'next') . $this->_config['nextHTML'] . ''; + } else { + $html .= ' ' . Horde::link($link, '', 'next') . htmlspecialchars(_("Next>")) . ''; + } + } + + return $html . '
'; + } + +} diff --git a/framework/Core/lib/Horde/Core/Ui/Tabs.php b/framework/Core/lib/Horde/Core/Ui/Tabs.php new file mode 100644 index 000000000..bdc878318 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/Tabs.php @@ -0,0 +1,114 @@ + + * Copyright 2003-2010 The Horde Project (http://www.horde.org/) + * + * See the enclosed file COPYING for license information (LGPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. + * + * @author Jason M. Felice + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Core + */ +class Horde_Core_Ui_Tabs extends Horde_Core_Ui_Widget +{ + /** + * The array of tabs. + * + * @var array + */ + protected $_tabs = array(); + + /** + * Adds a tab to the interface. + * + * @param string $title The text which appears on the tab. + * @param string $link The target page. + * @param mixed $params Either a string value to set the tab variable to, + * or a hash of parameters. If an array, the tab + * variable can be set by the 'tabname' key. + */ + public function addTab($title, $link, $params = array()) + { + if (!is_array($params)) { + $params = array('tabname' => $params); + } + + $this->_tabs[] = array_merge(array('title' => $title, + 'link' => $link, + 'tabname' => null), + $params); + } + + /** + * Returns the title of the tab with the specified name. + * + * @param string $tabname The name of the tab. + * + * @return string The tab's title. + */ + public function getTitleFromAction($tabname) + { + foreach ($this->_tabs as $tab) { + if ($tab['tabname'] == $tabname) { + return $tab['title']; + } + } + + return null; + } + + /** + * Renders the tabs. + * + * @param string $active_tab If specified, the name of the active tab. If + * not, the active tab is determined + * automatically. + */ + public function render($active_tab = null) + { + $html = "
    \n"; + + $first = true; + $active = $_SERVER['PHP_SELF'] . $this->_vars->get($this->_name); + + foreach ($this->_tabs as $tab) { + $link = $this->_addPreserved($tab['link']); + if (!is_null($this->_name) && !is_null($tab['tabname'])) { + $link->add($this->_name, $tab['tabname']); + } + + $class = ''; + if ((!is_null($active_tab) && $active_tab == $tab['tabname']) || + ($active == $tab['link'] . $tab['tabname'])) { + $class = ' class="activeTab"'; + } + + $id = ''; + if (!empty($tab['id'])) { + $id = ' id="' . htmlspecialchars($tab['id']) . '"'; + } + + if (!isset($tab['target'])) { + $tab['target'] = ''; + } + + if (!isset($tab['onclick'])) { + $tab['onclick'] = ''; + } + + $accesskey = Horde::getAccessKey($tab['title']); + + $html .= '' + . $link->link(array('target' => $tab['target'], 'onclick' => $tab['onclick'], 'accesskey' => $accesskey)) + . Horde::highlightAccessKey(str_replace(' ', ' ', $tab['title']), $accesskey) + . " \n"; + } + + return $html . "

\n"; + } + +} diff --git a/framework/Core/lib/Horde/Core/Ui/TagCloud.php b/framework/Core/lib/Horde/Core/Ui/TagCloud.php new file mode 100644 index 000000000..364620271 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/TagCloud.php @@ -0,0 +1,317 @@ +basefontsize = $basefontsize; + $this->minfontsize = max($this->basefontsize - $this->fontsizerange, 0); + $this->maxfontsize = $this->basefontsize + $this->fontsizerange; + } + + /** + * Add a Tag Element to build Tag Cloud. + * + * @param string $tag TODO + * @param string $url TODO + * @param integer $count TODO + * @param integer $timestamp UNIX timestamp. + * @param string $onclick Javascript onclick event handler. + */ + public function addElement($name, $url ='', $count = 0, $timestamp = null, + $onclick = null) + { + + if (isset($this->_map[$name])) { + $i = $this->_map[$name]; + // Increase the count + $this->_elements[$i]['count'] += $count; + + // Keep the latest timestamp + if (!empty($timestamp) && + $timestamp > $this->_elements[$i]['timestamp']) { + $this->_elements[$i]['timestamp'] = $timestamp; + } + // For onclick and url we will simply overwrite the existing values + // instead of checking if they are empty, then overwriting. + $this->_elements[$i]['onclick'] = $onclick; + $this->elements[$i]['url'] = $url; + } else { + $i = count($this->_elements); + $this->_elements[$i]['name'] = $name; + $this->_elements[$i]['url'] = $url; + $this->_elements[$i]['count'] = $count; + $this->_elements[$i]['timestamp'] = $timestamp == null ? time() : $timestamp; + $this->_elements[$i]['onclick'] = $onclick; + $this->_map[$name] = $i; + } + } + + /** + * Add a Tag Element to build Tag Cloud. + * + * @param array $tags Associative array to $this->_elements. + */ + public function addElements($tags) + { + $this->_elements = array_merge($this->_elements, $tags); + } + + /** + * Clear Tag Elements. + */ + public function clearElements() + { + $this->_elements = array(); + } + + /** + * Build HTML part. + * + * @param array $param 'limit' => int limit of generation tag num. + * + * @return string HTML + */ + public function buildHTML($param = array()) + { + return $this->_wrapDiv($this->_buidHTMLTags($param)); + } + + /** + * Calc Tag level and create whole HTML of each Tags. + * + * @param array $param Limit of Tag Number. + * + * @return string HTML + */ + protected function _buidHTMLTags($param) + { + $this->total = count($this->_elements); + // no tags elements + if ($this->total == 0) { + return ''; + } elseif ($this->total == 1) { + $tag = $this->_elements[0]; + return $this->_createHTMLTag($tag, 'latest', $this->basefontsize); + } + + $limit = array_key_exists('limit', $param) ? $param['limit'] : 0; + $this->_sortTags($limit); + $this->_calcMumCount(); + $this->_calcMumEpoc(); + + $range = $this->maxfontsize - $this->minfontsize; + $this->factor = ($this->_max == $this->_min) + ? 1 + : $range / (sqrt($this->_max) - sqrt($this->_min)); + $this->epoc_factor = ($this->_max_epoc == $this->_min_epoc) + ? 1 + : count($this->epoc_level) / (sqrt($this->_max_epoc) - sqrt($this->_min_epoc)); + $rtn = array(); + foreach ($this->_elements as $tag){ + $count_lv = $this->_getCountLevel($tag['count']); + if (!isset($tag['timestamp']) || empty($tag['timestamp'])) { + $epoc_lv = count($this->epoc_level) - 1; + } else { + $epoc_lv = $this->_getEpocLevel($tag['timestamp']); + } + $color_type = $this->epoc_level[$epoc_lv]; + $font_size = $this->minfontsize + $count_lv; + $rtn[] = $this->_createHTMLTag($tag, $color_type, $font_size); + } + return implode('', $rtn); + } + + /** + * Create a Element of HTML part. + * + * @param array $tag TODO + * @param string $type CSS class of time line param. + * @param integer $fontsize TODO + * + * @return string a Element of Tag HTML + */ + protected function _createHTMLTag($tag, $type, $fontsize) + { + return sprintf('%s' . "\n", + $fontsize, + $this->size_suffix, + $type, + $tag['url'], + (empty($tag['onclick']) ? '' : ' onclick="' . $tag['onclick'] . '"'), + htmlspecialchars($tag['name'])); + } + + /** + * Sort tags by name. + * + * @param integer $limit Limit element number of create TagCloud. + */ + protected function _sortTags($limit = 0) + { + usort($this->_elements, array($this, 'cmpElementsName')); + if ($limit != 0){ + $this->_elements = array_splice($this->_elements, 0, $limit); + } + } + + /** + * Using for usort(). + * + * @return integer TODO + */ + public function cmpElementsName($a, $b) + { + return ($a['name'] == $b['name']) + ? 0 + : (($a['name'] < $b['name']) ? -1 : 1); + } + + /** + * Calc max and min tag count of use. + */ + protected function _calcMumCount() + { + foreach($this->_elements as $item){ + $array[] = $item['count']; + } + $this->_min = min($array); + $this->_max = max($array); + } + + /** + * Calc max and min timestamp. + */ + protected function _calcMumEpoc() + { + foreach($this->_elements as $item){ + $array[] = $item['timestamp']; + } + $this->_min_epoc = min($array); + $this->_max_epoc = max($array); + } + + /** + * Calc Tag Level of size. + * + * @param integer $count TODO + * + * @return integer Level. + */ + protected function _getCountLevel($count = 0) + { + return (int)((sqrt($count) - sqrt($this->_min)) * $this->factor); + } + + /** + * Calc timeline level of Tag. + * + * @param integer $timestamp TODO + * + * @return integer Level of timeline. + */ + protected function _getEpocLevel($timestamp = 0) + { + return (int)((sqrt($timestamp) - sqrt($this->_min_epoc)) * $this->epoc_factor); + } + + /** + * Wrap div tag. + * + * @param string $html TODO + * + * @return string TODO + */ + protected function _wrapDiv($html) + { + return ($html == '') + ? '' + : sprintf("
\n%s
\n", $this->css_class, $html); + } + +} diff --git a/framework/Core/lib/Horde/Core/Ui/VarRenderer.php b/framework/Core/lib/Horde/Core/Ui/VarRenderer.php new file mode 100644 index 000000000..e96840b02 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/VarRenderer.php @@ -0,0 +1,105 @@ + + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Core + */ +class Horde_Core_Ui_VarRenderer +{ + /** + * Parameters which change this renderer's behavior. + * + * @var array + */ + protected $_params; + + /** + * Charset to use for output. + * + * @var string + */ + protected $_charset; + + /** + * Constructs a new renderer. + * + * @param array $params The name of the variable which will track this UI + * widget's state. + */ + public function __construct($params = array()) + { + $this->_params = $params; + $this->_charset = $GLOBALS['registry']->getCharset(); + } + + /** + * Constructs a new instance. + * + * @param mixed $driver This is the renderer subclass we will instantiate. + * If an array is passed, the first element is the + * library path and the second element is the driver + * name. + * @param array $params Parameters specific to the subclass. + * + * @return Horde_Core_Ui_VarRenderer A subclass instance. + * @throws Horde_Exception + */ + static public function factory($driver, $params = array()) + { + if (is_array($driver)) { + $app = $driver[0]; + $driver = $driver[1]; + } + + $driver = ucfirst(basename($driver)); + if (!empty($app)) { + include $GLOBALS['registry']->get('fileroot', $app) . '/lib/Ui/VarRenderer/' . $driver . '.php'; + } + + $class = __CLASS__ . '_' . $driver; + if (!class_exists($class)) { + throw new Horde_Exception('Class definition of ' . $class . ' not found.'); + } + + return new $class($params); + } + + /** + * Renders a variable. + * + * @param Horde_Form $form A Horde_Form instance, + * or null if none is available. + * @param Horde_Form_Variable $va r A Horde_Form_Variable. + * @param Variables $vars A Horde_Variables instance. + * @param boolean $isInput Whether this is an input field. + */ + public function render($form, $var, $vars, $isInput = false) + { + $state = $isInput ? 'Input' : 'Display'; + $method = "_renderVar${state}_" . $var->type->getTypeName(); + if (!method_exists($this, $method)) { + $method = "_renderVar${state}Default"; + } + + return $this->$method($form, $var, $vars); + } + + /** + * Finishes rendering after all fields are output. + * + * @return string TODO + */ + public function renderEnd() + { + return ''; + } +} diff --git a/framework/Core/lib/Horde/Core/Ui/VarRenderer/Html.php b/framework/Core/lib/Horde/Core/Ui/VarRenderer/Html.php new file mode 100644 index 000000000..4552635a0 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/VarRenderer/Html.php @@ -0,0 +1,1673 @@ + + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Core + */ +class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer +{ + protected $_onLoadJS = array(); + + protected function _renderVarInputDefault($form, &$var, &$vars) + { + return 'Warning: Unknown variable type ' . + @htmlspecialchars($var->getTypeName(), ENT_QUOTES, $this->_charset); + } + + protected function _renderVarInput_number($form, &$var, &$vars) + { + $value = $var->getValue($vars); + if ($var->type->getProperty('fraction')) { + $value = sprintf('%01.' . $var->type->getProperty('fraction') . 'f', $value); + } + $linfo = Horde_Nls::getLocaleInfo(); + /* Only if there is a mon_decimal_point do the + * substitution. */ + if (!empty($linfo['mon_decimal_point'])) { + $value = str_replace('.', $linfo['mon_decimal_point'], $value); + } + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + $value, + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_int($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_octal($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + sprintf('0%o', octdec($var->getValue($vars))), + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_intlist($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_text($form, &$var, &$vars) + { + $maxlength = $var->type->getMaxLength(); + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + $var->type->getSize(), + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $var->isDisabled() ? ' disabled="disabled" ' : '', + empty($maxlength) ? '' : ' maxlength="' . $maxlength . '"', + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_stringlist($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_stringarray($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars(implode(', ', $var->getValue($vars)), ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_phone($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $var->isDisabled() ? ' disabled="disabled" ' : '', + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_cellphone($form, &$var, &$vars) + { + return $this->_renderVarInput_phone($form, $var, $vars); + } + + protected function _renderVarInput_ipaddress($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $var->isDisabled() ? ' disabled="disabled" ' : '', + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_ip6address($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $var->isDisabled() ? ' disabled="disabled" ' : '', + $this->_getActionScripts($form, $var) + ); + } + + protected function _renderVarInput_file($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + $this->_getActionScripts($form, $var)); + } + + /** + * @todo Show image dimensions in the width/height boxes. + */ + protected function _renderVarInput_image($form, &$var, &$vars) + { + $varname = htmlspecialchars($var->getVarName()); + $image = $var->type->getImage($vars, $var); + Horde::addScriptFile('image.js', 'horde'); + $html = ''; + + /* Check if there is existing img information stored. */ + if (isset($image['img'])) { + /* Hidden tag to store the preview image id. */ + $html = sprintf('', + $varname . '[hash]', + $varname . '[hash]', + $var->type->getRandomId()); + } + + /* Output MAX_FILE_SIZE parameter to limit large files. */ + if ($var->type->getProperty('max_filesize')) { + $html .= sprintf('', + $var->type->getProperty('max_filesize')); + } + + /* Output the input tag. */ + $html .= sprintf('', + $varname . '[new]', + $varname . '[new]'); + + /* Output the button to upload/reset the image. */ + if ($var->type->getProperty('show_upload')) { + $html .= ' '; + $html .= sprintf(' ', + '_do_' . $varname, + '_do_' . $varname, + _("Upload")); + } + + if (!empty($image['img'])) { + /* Image information stored, show preview, add buttons for image + * manipulation. */ + $html .= '
'; + $img = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/images/view.php'); + if (isset($image['img']['vfs_id'])) { + /* Calling an image from VFS. */ + $img = Horde_Util::addParameter($img, array('f' => $image['img']['vfs_id'], + 's' => 'vfs', + 'p' => $image['img']['vfs_path'])); + } else { + /* Calling an image from a tmp directory (uploads). */ + $img = Horde_Util::addParameter($img, 'f', $image['img']['file']); + } + + /* Reset. */ + $html .= Horde::link('#', _("Reset"), '', '', 'showImage(\'' . $img . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/refresh.png', _("Reset")) . ''; + + /* Rotate 270. */ + $html .= Horde::link('#', _("Rotate Left"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, array('a' => 'rotate', 'v' => '270')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-270.png', _("Rotate Left")) . ''; + + /* Rotate 180. */ + $html .= Horde::link('#', _("Rotate 180"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, array('a' => 'rotate', 'v' => '180')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-180.png', _("Rotate 180")) . ''; + + /* Rotate 90. */ + $html .= Horde::link('#', _("Rotate Right"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, array('a' => 'rotate', 'v' => '90')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-90.png', _("Rotate Right")) . ''; + + /* Flip image. */ + $html .= Horde::link('#', _("Flip"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, 'a', 'flip') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/flip.png', _("Flip")) . ''; + + /* Mirror image. */ + $html .= Horde::link('#', _("Mirror"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, 'a', 'mirror') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/mirror.png', _("Mirror")) . ''; + + /* Apply grayscale. */ + $html .= Horde::link('#', _("Grayscale"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, 'a', 'grayscale') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/grayscale.png', _("Grayscale")) . ''; + + /* Resize width. */ + $html .= sprintf('%s', + _("w:"), + Horde_Util::addParameter($img, 'a', 'resize'), + $varname, + $varname, + $this->_genID('_w_' . $varname)); + + /* Resize height. */ + $html .= sprintf('%s', + _("h:"), + Horde_Util::addParameter($img, 'a', 'resize'), + $varname, + $varname, + $this->_genID('_h_' . $varname)); + + /* Apply fixed ratio resize. */ + $html .= Horde::link('#', _("Fix ratio"), '', '', 'src=getResizeSrc(\'' . Horde_Util::addParameter($img, 'a', 'resize') . '\', \'' . $varname . '\', \'1\');showImage(src, \'_p_' . $varname . '\', true);') . Horde::img('ratio.png', _("Fix ratio"), '', $img_dir) . ''; + + /* Keep also original if it has been requested. */ + if ($var->type->getProperty('show_keeporig')) { + $html .= sprintf('%s' . "\n", + $varname . '[keep_orig]', + $varname . '[keep_orig]', + !empty($image['keep_orig']) ? ' checked="checked"' : '', + _("Keep original?")); + } + + /* The preview image element. */ + $html .= '
_genID('_p_' . $varname) . ">\n"; + } + + return $html; + } + + protected function _renderVarInput_longtext($form, &$var, &$vars) + { + global $browser; + + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + $html = sprintf('', + $varname, + $varname, + (int)$var->type->getCols(), + (int)$var->type->getRows(), + $this->_getActionScripts($form, $var), + $var->isDisabled() ? ' disabled="disabled"' : '', + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)); + + if ($var->type->hasHelper('rte')) { + $GLOBALS['injector']->getInstance('Horde_Editor')->getEditor('fckeditor', array('id' => $varname, 'relativelinks' => $var->type->hasHelper('relativelinks'))); + } + + if ($var->type->hasHelper() && $browser->hasFeature('javascript')) { + $html .= '
'; + Horde::addScriptFile('open_html_helper.js', 'horde', array('direct' => false)); + $imgId = $this->_genID($var->getVarName(), false) . 'ehelper'; + if ($var->type->hasHelper('emoticons')) { + $html .= Horde::link('#', _("Emoticons"), '', '', 'openHtmlHelper(\'emoticons\', \'' . $var->getVarName() . '\'); return false;') . Horde::img('emoticons/smile.png', _("Emoticons"), 'id="' . $imgId . '"') . ''; + } + $html .= '
_genID('htmlhelper_' . $var->getVarName()) . ' class="control">
' . "\n"; + } + + return $html; + } + + protected function _renderVarInput_countedtext($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + (int)$var->type->getCols(), + (int)$var->type->getRows(), + $this->_getActionScripts($form, $var), + $var->isDisabled() ? ' disabled="disabled"' : '', + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)); + } + + protected function _renderVarInput_address($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + (int)$var->type->getCols(), + (int)$var->type->getRows(), + $this->_getActionScripts($form, $var), + $var->isDisabled() ? ' disabled="disabled"' : '', + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)); + } + + protected function _renderVarInput_addresslink($form, &$var, &$vars) + { + return ''; + } + + protected function _renderVarInput_pgp($form, &$var, &$vars) + { + return $this->_renderVarInput_longtext($form, $var, $vars); + } + + protected function _renderVarInput_smime($form, &$var, &$vars) + { + return $this->_renderVarInput_longtext($form, $var, $vars); + } + + protected function _renderVarInput_country($form, &$var, &$vars) + { + return $this->_renderVarInput_enum($form, $var, $vars); + } + + protected function _renderVarInput_date($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var)); + } + + protected function _renderVarInput_time($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var)); + } + + protected function _renderVarInput_hourminutesecond($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + $time = $var->type->getTimeParts($var->getValue($vars)); + + /* Output hours. */ + $hours = array('' => _("hh")); + for ($i = 0; $i <= 23; $i++) { + $hours[$i] = $i; + } + $html = sprintf('', + $varname, + $varname, + $this->_getActionScripts($form, $var), + $this->selectOptions($hours, ($time['hour'] === '') ? '' : $time['hour'])); + + /* Output minutes. */ + $minutes = array('' => _("mm")); + for ($i = 0; $i <= 59; $i++) { + $m = sprintf('%02d', $i); + $minutes[$m] = $m; + } + $html .= sprintf('', + $varname, + $varname, + $this->_getActionScripts($form, $var), + $this->selectOptions($minutes, ($time['minute'] === '') ? '' : sprintf('%02d', $time['minute']))); + + /* Return if seconds are not required. */ + if (!$var->type->getProperty('show_seconds')) { + return $html; + } + + /* Output seconds. */ + $seconds = array('' => _("ss")); + for ($i = 0; $i <= 59; $i++) { + $s = sprintf('%02d', $i); + $seconds[$s] = $s; + } + return $html . sprintf('', + $varname, + $varname, + $this->_getActionScripts($form, $var), + $this->selectOptions($seconds, ($time['second'] === '') ? '' : sprintf('%02d', $time['second']))); + } + + protected function _renderVarInput_monthyear($form, &$var, &$vars) + { + $dates = array(); + $dates['month'] = array('' => _("MM"), + 1 => _("January"), + 2 => _("February"), + 3 => _("March"), + 4 => _("April"), + 5 => _("May"), + 6 => _("June"), + 7 => _("July"), + 8 => _("August"), + 9 => _("September"), + 10 => _("October"), + 11 => _("November"), + 12 => _("December")); + $dates['year'] = array('' => _("YYYY")); + if ($var->type->getProperty('start_year') > $var->type->getProperty('end_year')) { + for ($i = $var->type->getProperty('start_year'); $i >= $var->type->getProperty('end_year'); $i--) { + $dates['year'][$i] = $i; + } + } else { + for ($i = $var->type->getProperty('start_year'); $i <= $var->type->getProperty('end_year'); $i++) { + $dates['year'][$i] = $i; + } + } + return sprintf('', + $var->type->getMonthVar($var), + $var->type->getMonthVar($var), + $this->_getActionScripts($form, $var), + $this->selectOptions($dates['month'], $vars->get($var->type->getMonthVar($var)))) . + sprintf('', + $var->type->getYearVar($var), + $var->type->getYearVar($var), + $this->_getActionScripts($form, $var), + $this->selectOptions($dates['year'], $vars->get($var->type->getYearVar($var)))); + } + + protected function _renderVarInput_monthdayyear($form, &$var, &$vars) + { + $dates = array(); + $dates['month'] = array('' => _("MM"), + '1' => _("January"), + '2' => _("February"), + '3' => _("March"), + '4' => _("April"), + '5' => _("May"), + '6' => _("June"), + '7' => _("July"), + '8' => _("August"), + '9' => _("September"), + '10' => _("October"), + '11' => _("November"), + '12' => _("December")); + $dates['day'] = array('' => _("DD")); + for ($i = 1; $i <= 31; $i++) { + $dates['day'][$i] = $i; + } + $dates['year'] = array('' => _("YYYY")); + if ($var->type->getProperty('start_year') > $var->type->getProperty('end_year')) { + for ($i = $var->type->getProperty('start_year'); $i >= $var->type->getProperty('end_year'); $i--) { + $dates['year'][$i] = $i; + } + } else { + for ($i = $var->type->getProperty('start_year'); $i <= $var->type->getProperty('end_year'); $i++) { + $dates['year'][$i] = $i; + } + } + $date = $var->type->getDateParts($var->getValue($vars)); + + // TODO: use NLS to get the order right for the Rest Of The + // World. + $html = ''; + $date_parts = array('month', 'day', 'year'); + foreach ($date_parts as $part) { + $varname = @htmlspecialchars($var->getVarName() . '[' . $part . ']', ENT_QUOTES, $this->_charset); + $html .= sprintf('', + $varname, + $varname, + $this->_getActionScripts($form, $var), + $this->selectOptions($dates[$part], $date[$part])); + } + + if ($var->type->getProperty('picker') && + $GLOBALS['browser']->hasFeature('javascript')) { + Horde_Core_Ui_JsCalendar::init(); + $imgId = $this->_genID($var->getVarName(), false) . 'goto'; + $html .= Horde::link('#', _("Select a date"), '', '', 'Horde_Calendar.open(\'' . $imgId . '\', null)') . Horde::img('calendar.png', _("Calendar"), 'id="' . $imgId . '"') . "\n"; + } + + return $html; + } + + protected function _renderVarInput_datetime(&$form, &$var, &$vars) + { + $js = "document.observe('Horde_Calendar:select', " . + "function(e) {" . + "var elt = e.element();" . + "elt.up().previous('SELECT[name$=\"[month]\"]').setValue(e.memo.getMonth() + 1);" . + "elt.up().previous('SELECT[name$=\"[day]\"]').setValue(e.memo.getDate());" . + "elt.up().previous('SELECT[name$=\"[year]\"]').setValue(e.memo.getFullYear());" . + "});\n"; + Horde::addInlineScript($js, 'dom'); + return $this->_renderVarInput_monthdayyear($form, $var, $vars) . + $this->_renderVarInput_hourminutesecond($form, $var, $vars); + } + + protected function _renderVarInput_sound(&$form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + $value = @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset); + $html = '
    '; + if (!$var->isRequired()) { + $html .= '
  • '; + } + foreach ($var->type->getSounds() as $sound) { + $sound = @htmlspecialchars($sound, ENT_QUOTES, $this->_charset); + $html .= '
  • ' + . '
  • '; + } + return $html . '
'; + } + + protected function _renderVarInput_colorpicker($form, &$var, &$vars) + { + global $registry, $browser; + + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + $color = $var->getValue($vars); + if ($color) { + $style = ' style="background-color:' . $color . ';color:' + . (Horde_Image::brightness($color) < 128 ? '#fff' : '#000') . '"'; + } else { + $style = ''; + } + $html = ''; + if ($browser->hasFeature('javascript')) { + Horde::addScriptFile('prototype.js', 'horde'); + Horde::addScriptFile('colorpicker.js', 'horde'); + $html .= ''; + } + return $html . '
' + . '' + . Horde::link('#', _("Color Picker"), '', '', + 'new ColorPicker({ color: \'' . htmlspecialchars($color) . '\', offsetParent: Event.element(event), update: [[\'' . $varname . '\', \'value\'], [\'' . $varname . '\', \'background\']] }); return false;') + . Horde::img('colorpicker.png', _("Color Picker"), 'height="16"') . '
'; + } + + protected function _renderVarInput_sorter($form, &$var, &$vars) + { + global $registry; + + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + $instance = $var->type->getProperty('instance'); + + Horde::addScriptFile('sorter.js', 'horde'); + + return '_genID($varname . '[array]') . '/>' . + '
' . + Horde::link('#', _("Move up"), '', '', $instance . '.moveColumnUp(); return false;') . Horde::img('nav/up.png', _("Move up")) . '
' . + Horde::link('#', _("Move up"), '', '', $instance . '.moveColumnDown(); return false;') . Horde::img('nav/down.png', _("Move down")) . '
' . + '\n", $instance); + } + + protected function _renderVarInput_assign($form, &$var, &$vars) + { + global $registry; + + Horde::addScriptFile('form_assign.js', 'horde'); + + $name = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + $size = $var->type->getSize(); + $width = $var->type->getWidth(); + $lhdr = (bool)$var->type->getHeader(0); + $rhdr = (bool)$var->type->getHeader(1); + $this->_addOnLoadJavascript('Horde_Form_Assign.setField(\'' . $form->getName() . '\', \'' . $var->getVarName() . '\');'); + + return '' . + '
' . + sprintf('' . + '' . + Horde::img('rhand.png', _("Add")) . + '
' . + Horde::img('lhand.png', _("Remove")) . + '
' . + sprintf('
'; + } + + protected function _renderVarInput_invalid($form, &$var, &$vars) + { + return $this->_renderVarDisplay_invalid($form, $var, $vars); + } + + protected function _renderVarInput_enum($form, &$var, &$vars) + { + $values = $var->getValues(); + $prompt = $var->type->getPrompt(); + $htmlchars = $var->getOption('htmlchars'); + if (!empty($prompt)) { + $prompt = ''; + } + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + $this->_getActionScripts($form, $var), + $prompt, + $this->selectOptions($values, $var->getValue($vars), $htmlchars)); + } + + protected function _renderVarInput_mlenum($form, &$var, &$vars) + { + $varname = $var->getVarName(); + $hvarname = @htmlspecialchars($varname, ENT_QUOTES, $this->_charset); + $values = $var->getValues(); + $prompts = $var->type->getPrompts(); + $selected = $var->getValue($vars); + /* If passing a non-array value need to get the keys. */ + if (!is_array($selected)) { + foreach ($values as $key_1 => $values_2) { + if (isset($values_2[$selected])) { + $selected = array('1' => $key_1, '2' => $selected); + break; + } + } + } + + /* Hidden tag to store the current first level. */ + $html = sprintf('', + $hvarname, + @htmlspecialchars($selected['1'], ENT_QUOTES, $this->_charset), + $this->_genID($varname . '[old]')); + + /* First level. */ + $values_1 = Horde_Array::valuesToKeys(array_keys($values)); + $html .= sprintf(''; + + /* Second level. */ + $html .= sprintf(''; + } + + protected function _renderVarInput_multienum($form, &$var, &$vars) + { + $values = $var->getValues(); + $selected = $vars->getExists($var->getVarName(), $wasset); + if (!$wasset) { + $selected = $var->getDefault(); + } + return sprintf('', + (int)$var->type->size, + @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var), + $this->_multiSelectOptions($values, $selected)) . + "
\n" . _("To select multiple items, hold down the Control (PC) or Command (Mac) key while clicking.") . "\n"; + } + + protected function _renderVarInput_keyval_multienum($form, &$var, &$vars) + { + return $this->_renderVarInput_multienum($form, $var, $vars); + } + + protected function _renderVarInput_radio($form, &$var, &$vars) + { + return $this->_radioButtons($var->getVarName(), + $var->getValues(), + $var->getValue($vars), + $this->_getActionScripts($form, $var)); + } + + protected function _renderVarInput_set($form, &$var, &$vars) + { + $html = $this->_checkBoxes($var->getVarName(), + $var->getValues(), + $var->getValue($vars), + $this->_getActionScripts($form, $var)); + + if ($var->type->getProperty('checkAll')) { + $form_name = $form->getName(); + $var_name = $var->getVarName() . '[]'; + $function_name = 'select' . $form_name . $var->getVarName(); + $enable = _("Select all"); + $disable = _("Select none"); + $invert = _("Invert selection"); + $html .= << +function $function_name() +{ + for (var i = 0; i < document.$form_name.elements.length; i++) { + f = document.$form_name.elements[i]; + if (f.name != '$var_name') { + continue; + } + if (arguments.length) { + f.checked = arguments[0]; + } else { + f.checked = !f.checked; + } + } +} + +$enable, +$disable, +$invert +EOT; + } + + return $html; + } + + protected function _renderVarInput_link($form, &$var, &$vars) + { + return $this->_renderVarDisplay_link($form, $var, $vars); + } + + protected function _renderVarInput_html($form, &$var, &$vars) + { + return $this->_renderVarDisplay_html($form, $var, $vars); + } + + protected function _renderVarInput_email($form, &$var, &$vars) + { + return sprintf('', + $var->getVarName(), + $var->getVarName(), + @htmlspecialchars($var->getValue($vars)), + $this->_getActionScripts($form, $var)); + } + + protected function _renderVarInput_matrix($form, &$var, &$vars) + { + $varname = $var->getVarName(); + $var_array = $var->getValue($vars); + $cols = $var->type->getCols(); + $rows = $var->type->getRows(); + $matrix = $var->type->getMatrix(); + $new_input = $var->type->getNewInput(); + + $html = ''; + + $html .= ''; + foreach ($cols as $col_title) { + $html .= ''; + } + $html .= ''; + + /* Offer a new row of data to be added to the matrix? */ + if ($new_input) { + $html .= ''; + foreach ($cols as $col_id => $col_title) { + $html .= sprintf('', $varname, $col_id); + } + $html .= ''; + } + + /* Loop through the rows and create checkboxes for each column. */ + foreach ($rows as $row_id => $row_title) { + $html .= sprintf('', $row_title); + foreach ($cols as $col_id => $col_title) { + $html .= sprintf('', $varname, $row_id, $col_id, (!empty($matrix[$row_id][$col_id]) ? ' checked="checked"' : '')); + } + $html .= ''; + } + + return $html . '
' . htmlspecialchars($col_title) . '
'; + if (is_array($new_input)) { + $html .= sprintf('
', + $this->_genID($varname . '[n][r]'), + $varname, + _("-- select --"), + $this->selectOptions($new_input, $var_array['n']['r'])); + } elseif ($new_input == true) { + $html .= sprintf('', + $this->_genID($varname . '[n][r]'), + $varname, + $var_array['n']['r']); + } + $html .= '
%s
'; + } + + protected function _renderVarInput_password($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var)); + } + + protected function _renderVarInput_emailconfirm($form, &$var, &$vars) + { + $email = $var->getValue($vars); + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($email['original'], ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var)) . + ' ' . sprintf('', + $varname, + $varname, + @htmlspecialchars($email['confirm'], ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var)); + } + + protected function _renderVarInput_passwordconfirm($form, &$var, &$vars) + { + $password = $var->getValue($vars); + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + @htmlspecialchars($password['original'], ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var)) . + ' ' . sprintf('', + $varname, + $varname, + @htmlspecialchars($password['confirm'], ENT_QUOTES, $this->_charset), + $this->_getActionScripts($form, $var)); + } + + protected function _renderVarInput_boolean($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + $html = 'getValue($vars) ? ' checked="checked"' : ''); + if ($var->hasAction()) { + $html .= $this->_genActionScript($form, $var->_action, + $var->getVarName()); + } + return $html . ' />'; + } + + protected function _renderVarInput_creditcard($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + $html = 'hasAction()) { + $html .= $this->_genActionScript($form, $var->_action, + $var->getVarName()); + } + return $html . ' />'; + } + + protected function _renderVarInput_obrowser($form, &$var, &$vars) + { + $varname = $var->getVarName(); + $varvalue = $vars->get($varname); + $fieldId = $this->_genID(md5(uniqid(rand(), true)), false) . 'id'; + $html = ' + + '; + $html .= sprintf('', + @htmlspecialchars($varname, ENT_QUOTES, $this->_charset), + $fieldId, + $this->_getActionScripts($form, $var), + @htmlspecialchars($varvalue, ENT_QUOTES, $this->_charset)); + if (!empty($varvalue)) { + $html .= $varvalue; + } + + if ($GLOBALS['browser']->hasFeature('javascript')) { + $html .= Horde::link($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/', _("Select an object"), '', '_blank', 'obrowserWindow = ' . Horde::popupJs($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/', array('urlencode' => true)) . 'obrowserWindowName = obrowserWindow.name; return false;') . Horde::img('tree/leaf.png', _("Object")) . "\n"; + } + + return $html; + } + + protected function _renderVarInput_dblookup($form, &$var, &$vars) + { + return $this->_renderVarInput_enum($form, $var, $vars); + } + + protected function _renderVarInput_figlet($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + strlen($var->type->getText()), + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)) . + '
' . _("Enter the letters below:") . '
' . + $this->_renderVarDisplay_figlet($form, $var, $vars); + } + + protected function _renderVarInput_captcha($form, &$var, &$vars) + { + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + return sprintf('', + $varname, + $varname, + strlen($var->type->getText()), + @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)) . + '
' . _("Enter the letters below:") . '
' . + $this->_renderVarDisplay_captcha($form, $var, $vars); + } + + protected function _renderVarDisplayDefault($form, &$var, &$vars) + { + return nl2br(@htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)); + } + + protected function _renderVarDisplay_html($form, &$var, &$vars) + { + // Since this is an HTML type we explicitly don't escape + // it. User beware. + return $var->getValue($vars); + } + + protected function _renderVarDisplay_email($form, &$var, &$vars) + { + $email_val = $var->getValue($vars); + + if ($var->type->getProperty('link_compose')) { + // Multiple email addresses? + $addrs = $var->type->getProperty('allow_multi') + ? Horde_Mime_Address::explode($email_val) + : array($email_val); + + $link = ''; + foreach ($addrs as $addr) { + $addr = trim($addr); + + $display_email = $addr; + if ($var->type->getProperty('strip_domain') && strpos($addr, '@') !== false) { + $display_email = str_replace(array('@', '.'), + array(' (at) ', ' (dot) '), + $addr); + } + + // Format the address according to RFC822. + $mailbox_host = explode('@', $addr); + if (!isset($mailbox_host[1])) { + $mailbox_host[1] = ''; + } + + $name = $var->type->getProperty('link_name'); + + $address = Horde_Mime_Address::writeAddress($mailbox_host[0], $mailbox_host[1], $name); + + // Get rid of the trailing @ (when no host is included in + // the email address). + $address = str_replace('@>', '>', $address); + try { + $mail_link = $GLOBALS['registry']->call('mail/compose', array(array('to' => addslashes($address)))); + } catch (Horde_Exception $e) { + $mail_link = 'mailto:' . urlencode($address); + } + + if (!empty($link)) { + $link .= ', '; + } + $link .= Horde::link($mail_link, $addr) . @htmlspecialchars($display_email, ENT_QUOTES, $this->_charset) . ''; + } + + return $link; + } else { + $email_val = trim($email_val); + + if ($var->type->getProperty('strip_domain') && strpos($email_val, '@') !== false) { + $email_val = str_replace(array('@', '.'), + array(' (at) ', ' (dot) '), + $email_val); + } + + return nl2br(@htmlspecialchars($email_val, ENT_QUOTES, $this->_charset)); + } + } + + protected function _renderVarDisplay_password($form, &$var, &$vars) + { + return '********'; + } + + protected function _renderVarDisplay_passwordconfirm($form, &$var, &$vars) + { + return '********'; + } + + protected function _renderVarDisplay_octal($form, &$var, &$vars) + { + return sprintf('0%o', octdec($var->getValue($vars))); + } + + protected function _renderVarDisplay_boolean($form, &$var, &$vars) + { + return $var->getValue($vars) ? _("Yes") : _("No"); + } + + protected function _renderVarDisplay_enum($form, &$var, &$vars) + { + $values = $var->getValues(); + $value = $var->getValue($vars); + if (count($values) == 0) { + return _("No values"); + } elseif (isset($values[$value]) && $value != '') { + return @htmlspecialchars($values[$value], ENT_QUOTES, $this->_charset); + } + } + + protected function _renderVarDisplay_radio($form, &$var, &$vars) + { + $values = $var->getValues(); + if (count($values) == 0) { + return _("No values"); + } elseif (isset($values[$var->getValue($vars)])) { + return @htmlspecialchars($values[$var->getValue($vars)], ENT_QUOTES, $this->_charset); + } + } + + protected function _renderVarDisplay_multienum($form, &$var, &$vars) + { + $values = $var->getValues(); + $on = $var->getValue($vars); + if (!count($values) || !count($on)) { + return _("No values"); + } else { + $display = array(); + foreach ($values as $value => $name) { + if (in_array($value, $on)) { + $display[] = $name; + } + } + return @htmlspecialchars(implode(', ', $display), ENT_QUOTES, $this->_charset); + } + } + + protected function _renderVarDisplay_set($form, &$var, &$vars) + { + $values = $var->getValues(); + $on = $var->getValue($vars); + if (!count($values) || !count($on)) { + return _("No values"); + } else { + $display = array(); + foreach ($values as $value => $name) { + if (in_array($value, $on)) { + $display[] = $name; + } + } + return @htmlspecialchars(implode(', ', $display), ENT_QUOTES, $this->_charset); + } + } + + protected function _renderVarDisplay_image($form, &$var, &$vars) + { + $image = $var->getValue($vars); + + /* Check if existing image data is being loaded. */ + $var->type->loadImageData($image); + + if (empty($image['img'])) { + return ''; + } + + $img = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/images/view.php'); + if (isset($image['img']['vfs_id'])) { + /* Calling an image from VFS. */ + $img = Horde_Util::addParameter($img, array('f' => $image['img']['vfs_id'], + 's' => 'vfs', + 'p' => $image['img']['vfs_path'])); + } else { + /* Calling an image from a tmp directory (uploads). */ + $img = (string)Horde_Util::addParameter($img, 'f', $image['img']['file']); + } + + return Horde::img($img, '', '', ''); + } + + protected function _renderVarDisplay_phone($form, &$var, &$vars) + { + global $registry; + + $number = $var->getValue($vars); + $html = @htmlspecialchars($number, ENT_QUOTES, $this->_charset); + + if ($number && $registry->hasMethod('telephony/dial')) { + $url = $registry->call('telephony/dial', array($number)); + $label = sprintf(_("Dial %s"), $number); + $html .= ' ' . Horde::link($url, $label) . Horde::img('phone.png', $label) . ''; + } + + return $html; + } + + protected function _renderVarDisplay_cellphone($form, &$var, &$vars) + { + global $registry; + + $html = $this->_renderVarDisplay_phone($form, $var, $vars); + + $number = $var->getValue($vars); + if ($number && $registry->hasMethod('sms/compose')) { + $url = $registry->link('sms/compose', array('to' => $number)); + $html .= ' ' . Horde::link($url, _("Send SMS")) . Horde::img('mobile.png', _("Send SMS")) . ''; + } + + return $html; + } + + protected function _renderVarDisplay_address($form, &$var, &$vars, $text = true) + { + global $registry; + + $address = $var->getValue($vars); + if (empty($address)) { + return ''; + } + + $info = $var->type->parse($address); + + $google_icon = 'map.png'; + if (!empty($info['country'])) { + switch ($info['country']) { + case 'uk': + /* Multimap.co.uk generated map */ + $mapurl = 'http://www.multimap.com/map/browse.cgi?pc=' + . urlencode($info['zip']); + $desc = _("Multimap UK map"); + $icon = 'map.png'; + break; + + case 'au': + /* Whereis.com.au generated map */ + $mapurl = 'http://www.whereis.com.au/whereis/mapping/geocodeAddress.do?'; + $desc = _("Whereis Australia map"); + $icon = 'map.png'; + /* See if it's the street number & name. */ + if (isset($info['streetNumber']) && + isset($info['streetName'])) { + $mapurl .= '&streetNumber=' + . urlencode($info['streetNumber']) . '&streetName=' + . urlencode($info['streetName']); + } + /* Look for "Suburb, State". */ + if (isset($info['city'])) { + $mapurl .= '&suburb=' . urlencode($info['city']); + } + /* Look for "State <4 digit postcode>". */ + if (isset($info['state'])) { + $mapurl .= '&state=' . urlencode($info['state']); + } + break; + + case 'us': + case 'ca': + /* American/Canadian address style. */ + /* Mapquest generated map */ + $mapurl = 'http://www.mapquest.com/maps/map.adp?size=big&zoom=7'; + $desc = _("MapQuest map"); + $icon = 'map.png'; + if (!empty($info['street'])) { + $mapurl .= '&address=' . urlencode($info['street']); + } + if (!empty($info['city'])) { + $mapurl .= '&city=' . urlencode($info['city']); + } + if (!empty($info['state'])) { + $mapurl .= '&state=' . urlencode($info['state']); + } + if (!empty($info['zip'])) { + if ($info['country'] == 'ca') { + $mapurl .= '&country=CA'; + } + $mapurl .= '&zipcode=' . urlencode($info['zip']); + } + + /* Yahoo! generated map. */ + $mapurl2 = 'http://us.rd.yahoo.com/maps/home/submit_a/*-http://maps.yahoo.com/maps?srchtype=a&getmap=Get+Map&'; + $desc2 = _("Yahoo! map"); + $icon2 = 'map.png'; + if (!empty($info['street'])) { + $mapurl2 .= '&addr=' . urlencode($info['street']); + } + /* Give precedence to zipcode over city/state */ + if (empty($info['zip']) && + !empty($info['city']) && !empty($info['state'])) { + $mapurl2 .= '&csz=' + . urlencode($info['city'] . ' ' . $info['state']); + } + if (!empty($info['zip'])) { + if (preg_match('|([a-zA-Z]\d[a-zA-Z])\s?(\d[a-zA-Z]\d)|', $info['zip'], $pcParts)) { + $mapurl2 .= '&country=ca'; + /* make sure the postal-code has a space */ + $info['zip'] = $pcParts[1] . ' ' . $pcParts[2]; + } + $mapurl2 .= '&csz=' . urlencode($info['zip']); + } + break; + + default: + if (!count($info)) { + break; + } + /* European address style. */ + $google_icon = 'map_eu.png'; + /* Mapquest generated map. */ + $mapurl2 = 'http://www.mapquest.com/maps/map.adp?country=' . Horde_String::upper($info['country']); + $desc2 = _("MapQuest map"); + $icon2 = 'map_eu.png'; + if (!empty($info['street'])) { + $mapurl2 .= '&address=' . urlencode($info['street']); + } + if (!empty($info['zip'])) { + $mapurl2 .= '&zipcode=' . urlencode($info['zip']); + } + if (!empty($info['city'])) { + $mapurl2 .= '&city=' . urlencode($info['city']); + } + break; + } + } + + $html = $text ? nl2br(@htmlspecialchars($address, ENT_QUOTES, $this->_charset)) : ''; + if (!empty($mapurl)) { + $html .= '  ' . Horde::link(Horde::externalUrl($mapurl), $desc, null, '_blank') . Horde::img($icon, $desc) . ''; + } + if (!empty($mapurl2)) { + $html .= ' ' . Horde::link(Horde::externalUrl($mapurl2), $desc2, null, '_blank') . Horde::img($icon2, $desc2) . ''; + } + + /* Google generated map. */ + if ($address) { + $html .= ' ' . Horde::link(Horde::externalUrl('http://maps.google.com/maps?q=' . urlencode(preg_replace('/\r?\n/', ',', $address)) . '&hl=en'), _("Google Maps"), null, '_blank') . Horde::img($google_icon, _("Google Maps")) . ''; + } + + return $html; + } + + protected function _renderVarDisplay_addresslink($form, &$var, &$vars) + { + return $this->_renderVarDisplay_address($form, $var, $vars, false); + } + + protected function _renderVarDisplay_pgp($form, &$var, &$vars) + { + $key = $var->getValue($vars); + if (empty($key)) { + return ''; + } + return '
' .
+            $GLOBALS['injector']->getInstance('Horde_Crypt')->getCrypr('Pgp', $var->type->getPGPParams())->pgpPrettyKey($key) .
+            '
'; + } + + protected function _renderVarDisplay_smime($form, &$var, &$vars) + { + $cert = $var->getValue($vars); + if (empty($cert)) { + return ''; + } + return $GLOBALS['injector']->getInstance('Horde_Crypt')->getCrypt('Smime', $var->type->getSMIMEParams())->certToHTML($cert); + } + + protected function _renderVarDisplay_country($form, &$var, &$vars) + { + return $this->_renderVarDisplay_enum($form, $var, $vars); + } + + protected function _renderVarDisplay_date($form, &$var, &$vars) + { + return htmlspecialchars($var->type->getFormattedTime($var->getValue($vars))); + } + + protected function _renderVarDisplay_hourminutesecond($form, &$var, &$vars) + { + $time = $var->type->getTimeParts($var->getValue($vars)); + if (!$var->type->getProperty('show_seconds')) { + return (int)$time['hour'] . ':' . sprintf('%02d', (int)$time['minute']); + } else { + return (int)$time['hour'] . ':' . sprintf('%02d', (int)$time['minute']) . ':' . sprintf('%02d', (int)$time['second']); + } + } + + protected function _renderVarDisplay_monthyear($form, &$var, &$vars) + { + return (int)$vars->get($var->getVarName() . '[month]') . ', ' . (int)$vars->get($var->getVarName() . '[year]'); + } + + protected function _renderVarDisplay_monthdayyear($form, &$var, &$vars) + { + $date = $var->getValue($vars); + if ((is_array($date) && !empty($date['year']) && + !empty($date['month']) && !empty($date['day'])) || + (!is_array($date) && !empty($date) && $date != '0000-00-00')) { + return $var->type->formatDate($date); + } + return ''; + } + + protected function _renderVarDisplay_datetime($form, &$var, &$vars) + { + return htmlspecialchars($var->type->formatDate($var->getValue($vars))) . Horde_Form_Type_date::getAgo($var->getValue($vars)); + } + + protected function _renderVarDisplay_invalid($form, &$var, &$vars) + { + return '' . @htmlspecialchars($var->type->message, ENT_QUOTES, $this->_charset) . ''; + } + + protected function _renderVarDisplay_link($form, &$var, &$vars) + { + $values = $var->type->values; + if (!isset($values[0])) { + $values = array($values); + } + + $count = count($values); + $html = ''; + for ($i = 0; $i < $count; $i++) { + if (empty($values[$i]['url']) || empty($values[$i]['text'])) { + continue; + } + if (!isset($values[$i]['target'])) { + $values[$i]['target'] = ''; + } + if (!isset($values[$i]['onclick'])) { + $values[$i]['onclick'] = ''; + } + if (!isset($values[$i]['title'])) { + $values[$i]['title'] = ''; + } + if (!isset($values[$i]['accesskey'])) { + $values[$i]['accesskey'] = ''; + } + if ($i > 0) { + $html .= ' | '; + } + $html .= Horde::link($values[$i]['url'], $values[$i]['text'], 'widget', $values[$i]['target'], $values[$i]['onclick'], $values[$i]['title'], $values[$i]['accesskey']) . @htmlspecialchars($values[$i]['text'], ENT_QUOTES, $this->_charset) . ''; + } + + return $html; + } + + protected function _renderVarDisplay_dblookup($form, &$var, &$vars) + { + return $this->_renderVarDisplay_enum($form, $var, $vars); + } + + protected function _renderVarDisplay_figlet($form, &$var, &$vars) + { + static $figlet; + + if (!isset($figlet)) { + $figlet = new Text_Figlet(); + } + + $result = $figlet->loadFont($var->type->getFont()); + if (is_a($result, 'PEAR_Error')) { + return $result->getMessage(); + } + + return '
' . $figlet->lineEcho($var->type->getText()) . '
'; + } + + protected function _renderVarDisplay_captcha($form, &$var, &$vars) + { + static $captcha; + + if (!isset($captcha)) { + $captcha = Text_CAPTCHA::factory('Image'); + } + + $image = $captcha->init(150, 60, $var->type->getText(), + array('font_path' => dirname($var->type->getFont()) . '/', + 'font_file' => basename($var->type->getFont()))); + if (is_a($image, 'PEAR_Error')) { + return $image->getMessage(); + } + + $cid = md5($var->type->getText()); + $cache = $GLOBALS['injector']->getInstance('Horde_Cache'); + + $cache->set($cid, serialize(array('data' => $captcha->getCAPTCHAAsJPEG(), + 'ctype' => 'image/jpeg'))); + + $url = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/cacheview.php'); + $url = Horde_Util::addParameter($url, 'cid', $cid, false); + + return ''; + + } + + protected function _renderVarInput_selectFiles($form, &$var, &$vars) + { + /* Needed for gollem js calls */ + $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); + $html = sprintf('', + 'selectlist_selectid', + 'selectlist_selectid', + $var->type->getProperty('selectid')) . + sprintf('', 'actionID', 'actionID') . + + /* Form field. */ + sprintf('', + $varname, + $varname, + $var->type->getProperty('selectid')); + + /* Open window link. */ + $param = array($var->type->getProperty('link_text'), + $var->type->getProperty('link_style'), + $form->getName(), + $var->type->getProperty('icon'), + $var->type->getProperty('selectid')); + $html .= $GLOBALS['registry']->call('files/selectlistLink', $param) . "
\n"; + + if ($var->type->getProperty('selectid')) { + $param = array($var->type->getProperty('selectid')); + $files = $GLOBALS['registry']->call('files/selectlistResults', $param); + if ($files) { + $html .= '
    '; + foreach ($files as $id => $file) { + $dir = key($file); + $filename = current($file); + if ($GLOBALS['registry']->hasMethod('files/getViewLink')) { + $filename = basename($filename); + $url = $GLOBALS['registry']->call('files/getViewLink', array($dir, $filename)); + $filename = Horde::link($url, _("Preview"), null, 'form_file_view') . @htmlspecialchars(Horde_Util::realPath($dir . '/' . $filename), ENT_QUOTES, $this->_charset) . ''; + } else { + if (!empty($dir) && ($dir != '.')) { + $filename = $dir . '/' . $filename; + } + $filename = @htmlspecialchars($filename, ENT_QUOTES, $this->_charset); + } + $html .= '
  1. ' . $filename . "
  2. \n"; + } + $html .= '
'; + } + } + + return $html; + } + + protected function _renderVarInput_category($form, &$var, &$vars) + { + Horde::addScriptFile('form_helpers.js', 'horde'); + $this->_addOnLoadJavascript('addEvent(document.getElementById(\'' . $form->getName() . '\'), \'submit\', checkCategory);'); + return '' + . Horde_Prefs_CategoryManager::getJavaScript($form->getName(), $var->getVarName()) + . Horde_Prefs_CategoryManager::getSelect($var->getVarName(), $var->getValue($vars)); + } + + public function selectOptions(&$values, $selectedValue = false, + $htmlchars = false) + { + $result = ''; + $sel = false; + foreach ($values as $value => $display) { + if (!is_null($selectedValue) && !$sel && + $value == $selectedValue && + strlen($value) == strlen($selectedValue)) { + $selected = ' selected="selected"'; + $sel = true; + } else { + $selected = ''; + } + $result .= ' \n"; + } + + return $result; + } + + protected function _multiSelectOptions(&$values, $selectedValues) + { + if (!is_array($selectedValues)) { + $selectedValues = array(); + } else { + $selectedValues = array_flip($selectedValues); + } + + $result = ''; + $sel = false; + foreach ($values as $value => $display) { + if (isset($selectedValues[$value])) { + $selected = ' selected="selected"'; + } else { + $selected = ''; + } + $result .= " \n"; + } + + return $result; + } + + protected function _checkBoxes($name, $values, $checkedValues, $actions = '') + { + $result = ''; + if (!is_array($checkedValues)) { + $checkedValues = array(); + } + $i = 0; + foreach ($values as $value => $display) { + $checked = (in_array($value, $checkedValues)) ? ' checked="checked"' : ''; + $result .= sprintf('
', + @htmlspecialchars($name, ENT_QUOTES, $this->_charset), + $i, + @htmlspecialchars($name, ENT_QUOTES, $this->_charset), + @htmlspecialchars($value, ENT_QUOTES, $this->_charset), + $checked, + $actions, + @htmlspecialchars($name, ENT_QUOTES, $this->_charset), + $i, + @htmlspecialchars($display, ENT_QUOTES, $this->_charset)); + $i++; + } + + return $result; + } + + protected function _radioButtons($name, $values, $checkedValue = null, $actions = '') + { + $result = ''; + $i = 0; + foreach ($values as $value => $display) { + $checked = (!is_null($checkedValue) && $value == $checkedValue) ? ' checked="checked"' : ''; + $result .= sprintf('
', + @htmlspecialchars($name, ENT_QUOTES, $this->_charset), + $i, + @htmlspecialchars($name, ENT_QUOTES, $this->_charset), + @htmlspecialchars($value, ENT_QUOTES, $this->_charset), + $checked, + $actions, + @htmlspecialchars($name, ENT_QUOTES, $this->_charset), + $i, + @htmlspecialchars($display, ENT_QUOTES, $this->_charset)); + $i++; + } + + return $result; + } + + protected function _genID($name, $fulltag = true) + { + $name = @htmlspecialchars($name, ENT_QUOTES, $this->_charset); + return $fulltag ? 'id="' . $name . '"' : $name; + } + + protected function _genActionScript($form, $action, $varname) + { + $html = ''; + $triggers = $action->getTrigger(); + if (!is_array($triggers)) { + $triggers = array($triggers); + } + $js = $action->getActionScript($form, $this, $varname); + foreach ($triggers as $trigger) { + if ($trigger == 'onload') { + $this->_addOnLoadJavascript($js); + } else { + $html .= ' ' . $trigger . '="' . $js . '"'; + } + } + return $html; + } + + protected function _getActionScripts($form, &$var) + { + $actions = ''; + if ($var->hasAction()) { + $varname = $var->getVarName(); + $action = &$var->_action; + $triggers = $action->getTrigger(); + if (!is_array($triggers)) { + $triggers = array($triggers); + } + $js = $action->getActionScript($form, $this, $varname); + foreach ($triggers as $trigger) { + if ($trigger == 'onload') { + $this->_addOnLoadJavascript($js); + } else { + $actions .= ' ' . $trigger . '="' . $js . '"'; + } + } + } + return $actions; + } + + protected function _addOnLoadJavascript($script) + { + $this->_onLoadJS[] = $script; + } + + public function renderEnd() + { + if (count($this->_onLoadJS)) { + return ""; + } else { + return ''; + } + } + +} diff --git a/framework/Core/lib/Horde/Core/Ui/VarRenderer/TablesetHtml.php b/framework/Core/lib/Horde/Core/Ui/VarRenderer/TablesetHtml.php new file mode 100644 index 000000000..7adc10d2d --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/VarRenderer/TablesetHtml.php @@ -0,0 +1,123 @@ +type->getHeader(); + $name = $var->getVarName(); + $values = $var->getValues(); + $form_name = $form->getName(); + $var_name = $var->getVarName() . '[]'; + $checkedValues = $var->getValue($vars); + $actions = $this->_getActionScripts($form, $var); + $function_name = 'select' . $form_name . $var->getVarName(); + $enable = _("Select all"); + $disable = _("Select none"); + $invert = _("Invert selection"); + + Horde::addScriptFile('tables.js', 'horde'); + + $html = << +function $function_name() +{ + for (var i = 0; i < document.$form_name.elements.length; i++) { + f = document.$form_name.elements[i]; + if (f.name != '$var_name') { + continue; + } + if (arguments.length) { + f.checked = arguments[0]; + } else { + f.checked = !f.checked; + } + } +} + +$enable, +$disable, +$invert + + +EOT; + + foreach ($header as $col_title) { + $html .= sprintf('', $col_title); + } + $html .= ''; + + if (!is_array($checkedValues)) { + $checkedValues = array(); + } + $i = 0; + foreach ($values as $value => $displays) { + $checked = (in_array($value, $checkedValues)) ? ' checked="checked"' : ''; + $html .= '' . + sprintf('', + $name, + $name, + $value, + $checked, + $actions); + foreach ($displays as $col) { + $html .= sprintf('', $col); + } + $html .= '' . "\n"; + $i++; + } + + $html .= '
 %s
 %s
' + . '' . $enable . ', ' + . '' . $disable . ', ' + . '' . $invert . ''; + + return $html; + } + + protected function _renderVarDisplay_tableset($form, &$var, &$vars) + { + $header = $var->type->getHeader(); + $name = $var->getVarName(); + $values = $var->getValues(); + $checkedValues = $var->getValue($vars); + $actions = $this->_getActionScripts($form, $var); + + Horde::addScriptFile('tables.js', 'horde'); + $html = '' . + ''; + foreach ($header as $col_title) { + $html .= sprintf('', $col_title); + } + $html .= ''; + + if (!is_array($checkedValues)) { + $checkedValues = array(); + } + $i = 0; + foreach ($values as $value => $displays) { + $checked = '[ V' : 'red">X' + . ' ]'; + $html .= ''. + sprintf('', $checked); + foreach ($displays as $col) { + $html .= ''; + } + $html .= ''; + $i++; + } + + return $html . '
 %s
%s ' . $col . '
'; + } + +} diff --git a/framework/Core/lib/Horde/Core/Ui/Widget.php b/framework/Core/lib/Horde/Core/Ui/Widget.php new file mode 100644 index 000000000..89feffae2 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Ui/Widget.php @@ -0,0 +1,129 @@ + + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Core + */ +abstract class Horde_Core_Ui_Widget +{ + /** + * Any variables that should be preserved in all of the widget's + * links. + * + * @var array + */ + protected $_preserve = array(); + + /** + * The name of this widget. This is used as the basename for variables + * we access and manipulate. + * + * @var string + */ + protected $_name; + + /** + * A reference to a Horde_Variables:: object this widget will use and + * manipulate. + * + * @var Horde_Variables + */ + protected $_vars; + + /** + * An array of name => value pairs which configure how this widget + * behaves. + * + * @var array + */ + protected $_config; + + /** + * Holds the name of a callback function to call on any URLS before they + * are used/returned. If an array, it is taken as an object/method name, if + * a string, it is taken as a php function. + * + * @var callable + */ + protected $_url_callback = array('Horde', 'applicationUrl'); + + /** + * Construct a new UI Widget interface. + * + * @param string $name The name of the variable which will + * track this UI widget's state. + * @param Horde_Variables &$vars A Horde_Variables:: object. + * @param array $config The widget's configuration. + */ + public function __construct($name, &$vars, $config = array()) + { + $this->_name = $name; + $this->_vars = &$vars; + + if (array_key_exists('url_callback', $config)) { + $this->_url_callback = $config['url_callback']; + unset($config['url_callback']); + } + $this->_config = $config; + } + + /** + * Instructs widget to preserve a variable or a set of variables. + * + * @param string|array $var The name of the variable to preserve, or + * an array of variables to preserve. + * @param mixed $value If preserving a single key, the value of the + * variable to preserve. + */ + public function preserve($var, $value = null) + { + if (!is_array($var)) { + $var = array($var => $value); + } + + foreach ($var as $key => $value) { + $this->_preserve[$key] = $value; + } + } + + /** + * TODO + */ + protected function _addPreserved($link) + { + foreach ($this->_preserve as $varName => $varValue) { + $link->add($varName, $varValue); + } + + return $link; + } + + /** + * Render the widget. + * + * @param mixed $data The widget's state data. + */ + abstract public function render($data = null); + + /** + * TODO + */ + protected function _link($link) + { + if (is_callable($this->_url_callback)) { + return call_user_func($this->_url_callback, $link); + } + + return $link; + } + +} diff --git a/framework/Core/package.xml b/framework/Core/package.xml index 67ad707d1..7838361fb 100644 --- a/framework/Core/package.xml +++ b/framework/Core/package.xml @@ -34,7 +34,8 @@ Application Framework. beta LGPL - * Absorb horde/Ajax package. + * Absorb horde/Ui package. + * Absorb horde/Ajax package. * Import application auth driver from horde/Auth. * Import signup code from horde/Auth. * Import Horde backend driver from horde/LoginTasks. @@ -187,6 +188,20 @@ Application Framework. + + + + + + + + + + + + + + @@ -428,6 +443,16 @@ Application Framework. + + + + + + + + + + diff --git a/framework/Form/Form/Renderer.php b/framework/Form/Form/Renderer.php index ca166890e..8984417d7 100644 --- a/framework/Form/Form/Renderer.php +++ b/framework/Form/Form/Renderer.php @@ -46,7 +46,7 @@ class Horde_Form_Renderer { * @param array $params This is a hash of renderer-specific parameters. * Possible keys: * 'varrenderer_driver': specifies the driver - * parameter to Horde_Ui_VarRenderer::factory(). + * parameter to Horde_Core_Ui_VarRenderer::factory(). * 'encode_title': @see $_encodeTitle */ function Horde_Form_Renderer($params = array()) @@ -68,7 +68,7 @@ class Horde_Form_Renderer { if (isset($params['varrenderer_driver'])) { $driver = $params['varrenderer_driver']; } - $this->_varRenderer = Horde_Ui_VarRenderer::factory($driver, $params); + $this->_varRenderer = Horde_Core_Ui_VarRenderer::factory($driver, $params); } function showHeader($bool) diff --git a/framework/Ui/lib/Horde/Ui/FlagImage.php b/framework/Ui/lib/Horde/Ui/FlagImage.php deleted file mode 100644 index 13b55873c..000000000 --- a/framework/Ui/lib/Horde/Ui/FlagImage.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @category Horde - * @license http://www.fsf.org/copyleft/lgpl.html LGPL - * @package Ui - */ -class Horde_Ui_FlagImage -{ - /** - * Render the language selection. - * - * @param boolean $form Return the selection box as a complete standalone - * form. - * - * @return string The HTML selection box. - */ - static public function generateFlagImageByHost($host) - { - $data = Horde_Nls::getCountryByHost($host, empty($GLOBALS['conf']['geoip']['datafile']) ? null : $GLOBALS['conf']['geoip']['datafile']); - if ($data === false) { - return ''; - } - - $img = $data['code'] . '.png'; - return file_exists($GLOBALS['registry']->get('themesfs', 'horde') . '/graphics/flags/' . $img) - ? Horde::img('flags/' . $img, $data['name'], array('title' => $data['name'])) - : '[' . $data['name'] . ']'; - } - -} diff --git a/framework/Ui/lib/Horde/Ui/JsCalendar.php b/framework/Ui/lib/Horde/Ui/JsCalendar.php deleted file mode 100644 index ff7ff2062..000000000 --- a/framework/Ui/lib/Horde/Ui/JsCalendar.php +++ /dev/null @@ -1,82 +0,0 @@ - - * @package Horde_Ui - */ -class Horde_Ui_JsCalendar -{ - /** - * Output the necessary javascript code to allow display of the calendar - * widget. - * - * @param array $params Configuration parameters for the widget: - * - short_weekdays: display only the first letter of - * weekdays? - */ - static public function init($params = array()) - { - $params += array('short_weekdays' => false); - $weekdays = self::weekdays(); - if ($params['short_weekdays']) { - foreach ($weekdays as &$day) { - $day = substr($day, 0, 1); - } - } - Horde::addScriptFile('calendar.js', 'horde'); - Horde::addInlineScript(array( - 'Horde_Calendar.firstDayOfWeek = ' . (isset($GLOBALS['prefs']) ? intval($GLOBALS['prefs']->getValue('first_week_day')) : 1), - 'Horde_Calendar.weekdays = ' . Horde_Serialize::serialize($weekdays, Horde_Serialize::JSON, $GLOBALS['registry']->getCharset()), - 'Horde_Calendar.months = ' . Horde_Serialize::serialize(self::months(), Horde_Serialize::JSON, $GLOBALS['registry']->getCharset()), - )); - } - - /** - * Return the list of localized abbreviated weekdays. - * - * @return array Abbreviated weekdays. - */ - static public function weekdays() - { - return array( - _("Su"), - _("Mo"), - _("Tu"), - _("We"), - _("Th"), - _("Fr"), - _("Sa") - ); - } - - /** - * Return the localized list of months. - * - * @return array Month list. - */ - static public function months() - { - return array( - _("January"), - _("February"), - _("March"), - _("April"), - _("May"), - _("June"), - _("July"), - _("August"), - _("September"), - _("October"), - _("November"), - _("December") - ); - } - -} diff --git a/framework/Ui/lib/Horde/Ui/Language.php b/framework/Ui/lib/Horde/Ui/Language.php deleted file mode 100644 index e75a2114a..000000000 --- a/framework/Ui/lib/Horde/Ui/Language.php +++ /dev/null @@ -1,44 +0,0 @@ - - * @package Horde_Ui - */ -class Horde_Ui_Language { - - /** - * Render the language selection. - * - * @param boolean $form Return the selection box as a complete standalone - * form. - * - * @return string The HTML selection box. - */ - static public function render() - { - $html = ''; - - if (!$GLOBALS['prefs']->isLocked('language')) { - $_SESSION['horde_language'] = $GLOBALS['registry']->preferredLang(); - $html = sprintf('
', - Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/language.php', false, -1)); - $html .= ''; - $html .= '
'; - } - - return $html; - } - -} diff --git a/framework/Ui/lib/Horde/Ui/Pager.php b/framework/Ui/lib/Horde/Ui/Pager.php deleted file mode 100644 index e5cebde58..000000000 --- a/framework/Ui/lib/Horde/Ui/Pager.php +++ /dev/null @@ -1,129 +0,0 @@ - - * @author Joel Vandal - * @author Chuck Hagenbuch - * @package Horde_Ui - */ -class Horde_Ui_Pager extends Horde_Ui_Widget -{ - /** - * Constructor - * - * TODO - */ - public function __construct($name, &$vars, $config) - { - if (!isset($config['page_limit'])) { - $config['page_limit'] = 10; - } - - if (!isset($config['perpage'])) { - $config['perpage'] = 100; - } - - parent::__construct($name, $vars, $config); - } - - /** - * Render the pager. - * - * @return string HTML code containing a centered table with the pager - * links. - */ - public function render($data = null) - { - global $prefs, $registry, $conf; - - $num = $this->_config['num']; - $url = $this->_config['url']; - - $page_limit = $this->_config['page_limit']; - $perpage = $this->_config['perpage']; - - $current_page = $this->_vars->get($this->_name); - - // Figure out how many pages there will be. - $pages = ($num / $perpage); - if (is_integer($pages)) { - $pages--; - } - $pages = (int)$pages; - - // Return nothing if there is only one page. - if ($pages == 0 || $num == 0) { - return ''; - } - - $html = '
'; - - if ($current_page > 0) { - // Create the '<< Prev' link if we are not on the first page. - $link = Horde_Util::addParameter($url, $this->_name, $current_page - 1); - $link = $this->_addPreserved($link); - $link = $this->_link($link); - if (isset($this->_config['previousHTML'])) { - $html .= Horde::link($link, '', 'prev') . $this->_config['previousHTML'] . ''; - } else { - $html .= Horde::link($link, '', 'prev') . htmlspecialchars(_("'; - } - } - - // Figure out the top & bottom display limits. - $bottom = max(0, $current_page - ($page_limit / 2) + 1); - $top = $bottom + $page_limit - 1; - if ($top - 1 > $pages) { - $bottom -= ($top - 1) - $pages; - $top = $pages + 1; - } - - // Create bottom '[x-y]' link if necessary. - $link = $this->_addPreserved(Horde_Util::addParameter($url, $this->_name, $bottom - 1)); - $link = $this->_link($link); - - if ($bottom > 0) { - $html .= ' ' . Horde::link($link, '', 'prevRange') . '[' . ($bottom == 1 ? $bottom : '1-' . $bottom) . ']'; - } - - // Create links to individual pages between limits. - for ($i = $bottom; $i <= $top && $i <= $pages; ++$i) { - if ($i == $current_page) { - $html .= ' (' . ($i + 1) . ')'; - } elseif ($i >= 0 && $i <= $pages) { - $link = $this->_addPreserved(Horde_Util::addParameter($url, $this->_name, $i)); - $link = $this->_link($link); - $html .= ' ' . Horde::link($link) . ($i + 1) . ''; - } - } - - // Create top '[x-y]' link if necessary. - if ($top < $pages) { - $link = $this->_addPreserved(Horde_Util::addParameter($url, $this->_name, $top + 1)); - $link = $this->_link($link); - - $html .= ' ' . Horde::link($link, '', 'nextRange') . '[' . - ($top + 2 == $pages + 1 ? $pages + 1 : ($top + 2) . '-' . ($pages + 1)) . ']'; - } - - // Create the 'Next>>' link if we are not on the last page. - if ($current_page < $pages) { - $link = $this->_addPreserved(Horde_Util::addParameter($url, $this->_name, $current_page + 1)); - $link = $this->_link($link); - if (isset($this->_config['nextHTML'])) { - $html .= Horde::link($link, '', 'next') . $this->_config['nextHTML'] . ''; - } else { - $html .= ' ' . Horde::link($link, '', 'next') . htmlspecialchars(_("Next>")) . ''; - } - } - - return $html . '
'; - } - -} diff --git a/framework/Ui/lib/Horde/Ui/Tabs.php b/framework/Ui/lib/Horde/Ui/Tabs.php deleted file mode 100644 index 18977bc39..000000000 --- a/framework/Ui/lib/Horde/Ui/Tabs.php +++ /dev/null @@ -1,112 +0,0 @@ - - * Copyright 2003-2010 The Horde Project (http://www.horde.org/) - * - * See the enclosed file COPYING for license information (LGPL). If you - * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. - * - * @author Jason M. Felice - * @package Horde_Ui - */ -class Horde_Ui_Tabs extends Horde_Ui_Widget -{ - /** - * The array of tabs. - * - * @var array - */ - protected $_tabs = array(); - - /** - * Adds a tab to the interface. - * - * @param string $title The text which appears on the tab. - * @param string $link The target page. - * @param mixed $params Either a string value to set the tab variable to, - * or a hash of parameters. If an array, the tab - * variable can be set by the 'tabname' key. - */ - public function addTab($title, $link, $params = array()) - { - if (!is_array($params)) { - $params = array('tabname' => $params); - } - - $this->_tabs[] = array_merge(array('title' => $title, - 'link' => $link, - 'tabname' => null), - $params); - } - - /** - * Returns the title of the tab with the specified name. - * - * @param string $tabname The name of the tab. - * - * @return string The tab's title. - */ - public function getTitleFromAction($tabname) - { - foreach ($this->_tabs as $tab) { - if ($tab['tabname'] == $tabname) { - return $tab['title']; - } - } - - return null; - } - - /** - * Renders the tabs. - * - * @param string $active_tab If specified, the name of the active tab. If - * not, the active tab is determined - * automatically. - */ - public function render($active_tab = null) - { - $html = "
    \n"; - - $first = true; - $active = $_SERVER['PHP_SELF'] . $this->_vars->get($this->_name); - - foreach ($this->_tabs as $tab) { - $link = $this->_addPreserved($tab['link']); - if (!is_null($this->_name) && !is_null($tab['tabname'])) { - $link->add($this->_name, $tab['tabname']); - } - - $class = ''; - if ((!is_null($active_tab) && $active_tab == $tab['tabname']) || - ($active == $tab['link'] . $tab['tabname'])) { - $class = ' class="activeTab"'; - } - - $id = ''; - if (!empty($tab['id'])) { - $id = ' id="' . htmlspecialchars($tab['id']) . '"'; - } - - if (!isset($tab['target'])) { - $tab['target'] = ''; - } - - if (!isset($tab['onclick'])) { - $tab['onclick'] = ''; - } - - $accesskey = Horde::getAccessKey($tab['title']); - - $html .= '' - . $link->link(array('target' => $tab['target'], 'onclick' => $tab['onclick'], 'accesskey' => $accesskey)) - . Horde::highlightAccessKey(str_replace(' ', ' ', $tab['title']), $accesskey) - . " \n"; - } - - return $html . "

\n"; - } - -} diff --git a/framework/Ui/lib/Horde/Ui/TagCloud.php b/framework/Ui/lib/Horde/Ui/TagCloud.php deleted file mode 100644 index ea8ca58ac..000000000 --- a/framework/Ui/lib/Horde/Ui/TagCloud.php +++ /dev/null @@ -1,315 +0,0 @@ -basefontsize = $basefontsize; - $this->minfontsize = max($this->basefontsize - $this->fontsizerange, 0); - $this->maxfontsize = $this->basefontsize + $this->fontsizerange; - } - - /** - * Add a Tag Element to build Tag Cloud. - * - * @param string $tag TODO - * @param string $url TODO - * @param integer $count TODO - * @param integer $timestamp UNIX timestamp. - * @param string $onclick Javascript onclick event handler. - */ - public function addElement($name, $url ='', $count = 0, $timestamp = null, - $onclick = null) - { - - if (isset($this->_map[$name])) { - $i = $this->_map[$name]; - // Increase the count - $this->_elements[$i]['count'] += $count; - - // Keep the latest timestamp - if (!empty($timestamp) && - $timestamp > $this->_elements[$i]['timestamp']) { - $this->_elements[$i]['timestamp'] = $timestamp; - } - // For onclick and url we will simply overwrite the existing values - // instead of checking if they are empty, then overwriting. - $this->_elements[$i]['onclick'] = $onclick; - $this->elements[$i]['url'] = $url; - } else { - $i = count($this->_elements); - $this->_elements[$i]['name'] = $name; - $this->_elements[$i]['url'] = $url; - $this->_elements[$i]['count'] = $count; - $this->_elements[$i]['timestamp'] = $timestamp == null ? time() : $timestamp; - $this->_elements[$i]['onclick'] = $onclick; - $this->_map[$name] = $i; - } - } - - /** - * Add a Tag Element to build Tag Cloud. - * - * @param array $tags Associative array to $this->_elements. - */ - public function addElements($tags) - { - $this->_elements = array_merge($this->_elements, $tags); - } - - /** - * Clear Tag Elements. - */ - public function clearElements() - { - $this->_elements = array(); - } - - /** - * Build HTML part. - * - * @param array $param 'limit' => int limit of generation tag num. - * - * @return string HTML - */ - public function buildHTML($param = array()) - { - return $this->_wrapDiv($this->_buidHTMLTags($param)); - } - - /** - * Calc Tag level and create whole HTML of each Tags. - * - * @param array $param Limit of Tag Number. - * - * @return string HTML - */ - protected function _buidHTMLTags($param) - { - $this->total = count($this->_elements); - // no tags elements - if ($this->total == 0) { - return ''; - } elseif ($this->total == 1) { - $tag = $this->_elements[0]; - return $this->_createHTMLTag($tag, 'latest', $this->basefontsize); - } - - $limit = array_key_exists('limit', $param) ? $param['limit'] : 0; - $this->_sortTags($limit); - $this->_calcMumCount(); - $this->_calcMumEpoc(); - - $range = $this->maxfontsize - $this->minfontsize; - $this->factor = ($this->_max == $this->_min) - ? 1 - : $range / (sqrt($this->_max) - sqrt($this->_min)); - $this->epoc_factor = ($this->_max_epoc == $this->_min_epoc) - ? 1 - : count($this->epoc_level) / (sqrt($this->_max_epoc) - sqrt($this->_min_epoc)); - $rtn = array(); - foreach ($this->_elements as $tag){ - $count_lv = $this->_getCountLevel($tag['count']); - if (!isset($tag['timestamp']) || empty($tag['timestamp'])) { - $epoc_lv = count($this->epoc_level) - 1; - } else { - $epoc_lv = $this->_getEpocLevel($tag['timestamp']); - } - $color_type = $this->epoc_level[$epoc_lv]; - $font_size = $this->minfontsize + $count_lv; - $rtn[] = $this->_createHTMLTag($tag, $color_type, $font_size); - } - return implode('', $rtn); - } - - /** - * Create a Element of HTML part. - * - * @param array $tag TODO - * @param string $type CSS class of time line param. - * @param integer $fontsize TODO - * - * @return string a Element of Tag HTML - */ - protected function _createHTMLTag($tag, $type, $fontsize) - { - return sprintf('%s' . "\n", - $fontsize, - $this->size_suffix, - $type, - $tag['url'], - (empty($tag['onclick']) ? '' : ' onclick="' . $tag['onclick'] . '"'), - htmlspecialchars($tag['name'])); - } - - /** - * Sort tags by name. - * - * @param integer $limit Limit element number of create TagCloud. - */ - protected function _sortTags($limit = 0) - { - usort($this->_elements, array($this, 'cmpElementsName')); - if ($limit != 0){ - $this->_elements = array_splice($this->_elements, 0, $limit); - } - } - - /** - * Using for usort(). - * - * @return integer TODO - */ - public function cmpElementsName($a, $b) - { - return ($a['name'] == $b['name']) - ? 0 - : (($a['name'] < $b['name']) ? -1 : 1); - } - - /** - * Calc max and min tag count of use. - */ - protected function _calcMumCount() - { - foreach($this->_elements as $item){ - $array[] = $item['count']; - } - $this->_min = min($array); - $this->_max = max($array); - } - - /** - * Calc max and min timestamp. - */ - protected function _calcMumEpoc() - { - foreach($this->_elements as $item){ - $array[] = $item['timestamp']; - } - $this->_min_epoc = min($array); - $this->_max_epoc = max($array); - } - - /** - * Calc Tag Level of size. - * - * @param integer $count TODO - * - * @return integer Level. - */ - protected function _getCountLevel($count = 0) - { - return (int)((sqrt($count) - sqrt($this->_min)) * $this->factor); - } - - /** - * Calc timeline level of Tag. - * - * @param integer $timestamp TODO - * - * @return integer Level of timeline. - */ - protected function _getEpocLevel($timestamp = 0) - { - return (int)((sqrt($timestamp) - sqrt($this->_min_epoc)) * $this->epoc_factor); - } - - /** - * Wrap div tag. - * - * @param string $html TODO - * - * @return string TODO - */ - protected function _wrapDiv($html) - { - return ($html == '') - ? '' - : sprintf("
\n%s
\n", $this->css_class, $html); - } - -} diff --git a/framework/Ui/lib/Horde/Ui/VarRenderer.php b/framework/Ui/lib/Horde/Ui/VarRenderer.php deleted file mode 100644 index d0ce59a7f..000000000 --- a/framework/Ui/lib/Horde/Ui/VarRenderer.php +++ /dev/null @@ -1,103 +0,0 @@ - - * @package Horde_Ui - */ -class Horde_Ui_VarRenderer -{ - /** - * Parameters which change this renderer's behavior. - * - * @var array - */ - protected $_params; - - /** - * Charset to use for output. - * - * @var string - */ - protected $_charset; - - /** - * Constructs a new renderer. - * - * @param array $params The name of the variable which will track this UI - * widget's state. - */ - public function __construct($params = array()) - { - $this->_params = $params; - $this->_charset = $GLOBALS['registry']->getCharset(); - } - - /** - * Constructs a new instance. - * - * @param mixed $driver This is the renderer subclass we will instantiate. - * If an array is passed, the first element is the - * library path and the second element is the driver - * name. - * @param array $params Parameters specific to the subclass. - * - * @return Horde_Ui_VarRenderer A subclass instance. - * @throws Horde_Exception - */ - static public function factory($driver, $params = array()) - { - if (is_array($driver)) { - $app = $driver[0]; - $driver = $driver[1]; - } - - $driver = ucfirst(basename($driver)); - if (!empty($app)) { - include $GLOBALS['registry']->get('fileroot', $app) . '/lib/Ui/VarRenderer/' . $driver . '.php'; - } - - $class = 'Horde_Ui_VarRenderer_' . $driver; - if (!class_exists($class)) { - throw new Horde_Exception('Class definition of ' . $class . ' not found.'); - } - - return new $class($params); - } - - /** - * Renders a variable. - * - * @param Horde_Form $form A Horde_Form instance, - * or null if none is available. - * @param Horde_Form_Variable $va r A Horde_Form_Variable. - * @param Variables $vars A Horde_Variables instance. - * @param boolean $isInput Whether this is an input field. - */ - public function render($form, $var, $vars, $isInput = false) - { - $state = $isInput ? 'Input' : 'Display'; - $method = "_renderVar${state}_" . $var->type->getTypeName(); - if (!method_exists($this, $method)) { - $method = "_renderVar${state}Default"; - } - - return $this->$method($form, $var, $vars); - } - - /** - * Finishes rendering after all fields are output. - * - * @return string TODO - */ - public function renderEnd() - { - return ''; - } -} diff --git a/framework/Ui/lib/Horde/Ui/VarRenderer/Html.php b/framework/Ui/lib/Horde/Ui/VarRenderer/Html.php deleted file mode 100644 index 2a7b4fe63..000000000 --- a/framework/Ui/lib/Horde/Ui/VarRenderer/Html.php +++ /dev/null @@ -1,1671 +0,0 @@ - - * @package Horde_Ui - */ -class Horde_Ui_VarRenderer_Html extends Horde_Ui_VarRenderer -{ - protected $_onLoadJS = array(); - - protected function _renderVarInputDefault($form, &$var, &$vars) - { - return 'Warning: Unknown variable type ' . - @htmlspecialchars($var->getTypeName(), ENT_QUOTES, $this->_charset); - } - - protected function _renderVarInput_number($form, &$var, &$vars) - { - $value = $var->getValue($vars); - if ($var->type->getProperty('fraction')) { - $value = sprintf('%01.' . $var->type->getProperty('fraction') . 'f', $value); - } - $linfo = Horde_Nls::getLocaleInfo(); - /* Only if there is a mon_decimal_point do the - * substitution. */ - if (!empty($linfo['mon_decimal_point'])) { - $value = str_replace('.', $linfo['mon_decimal_point'], $value); - } - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - $value, - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_int($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_octal($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - sprintf('0%o', octdec($var->getValue($vars))), - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_intlist($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_text($form, &$var, &$vars) - { - $maxlength = $var->type->getMaxLength(); - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - $var->type->getSize(), - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $var->isDisabled() ? ' disabled="disabled" ' : '', - empty($maxlength) ? '' : ' maxlength="' . $maxlength . '"', - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_stringlist($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_stringarray($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars(implode(', ', $var->getValue($vars)), ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_phone($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $var->isDisabled() ? ' disabled="disabled" ' : '', - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_cellphone($form, &$var, &$vars) - { - return $this->_renderVarInput_phone($form, $var, $vars); - } - - protected function _renderVarInput_ipaddress($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $var->isDisabled() ? ' disabled="disabled" ' : '', - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_ip6address($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $var->isDisabled() ? ' disabled="disabled" ' : '', - $this->_getActionScripts($form, $var) - ); - } - - protected function _renderVarInput_file($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - $this->_getActionScripts($form, $var)); - } - - /** - * @todo Show image dimensions in the width/height boxes. - */ - protected function _renderVarInput_image($form, &$var, &$vars) - { - $varname = htmlspecialchars($var->getVarName()); - $image = $var->type->getImage($vars, $var); - Horde::addScriptFile('image.js', 'horde'); - $html = ''; - - /* Check if there is existing img information stored. */ - if (isset($image['img'])) { - /* Hidden tag to store the preview image id. */ - $html = sprintf('', - $varname . '[hash]', - $varname . '[hash]', - $var->type->getRandomId()); - } - - /* Output MAX_FILE_SIZE parameter to limit large files. */ - if ($var->type->getProperty('max_filesize')) { - $html .= sprintf('', - $var->type->getProperty('max_filesize')); - } - - /* Output the input tag. */ - $html .= sprintf('', - $varname . '[new]', - $varname . '[new]'); - - /* Output the button to upload/reset the image. */ - if ($var->type->getProperty('show_upload')) { - $html .= ' '; - $html .= sprintf(' ', - '_do_' . $varname, - '_do_' . $varname, - _("Upload")); - } - - if (!empty($image['img'])) { - /* Image information stored, show preview, add buttons for image - * manipulation. */ - $html .= '
'; - $img = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/images/view.php'); - if (isset($image['img']['vfs_id'])) { - /* Calling an image from VFS. */ - $img = Horde_Util::addParameter($img, array('f' => $image['img']['vfs_id'], - 's' => 'vfs', - 'p' => $image['img']['vfs_path'])); - } else { - /* Calling an image from a tmp directory (uploads). */ - $img = Horde_Util::addParameter($img, 'f', $image['img']['file']); - } - - /* Reset. */ - $html .= Horde::link('#', _("Reset"), '', '', 'showImage(\'' . $img . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/refresh.png', _("Reset")) . ''; - - /* Rotate 270. */ - $html .= Horde::link('#', _("Rotate Left"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, array('a' => 'rotate', 'v' => '270')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-270.png', _("Rotate Left")) . ''; - - /* Rotate 180. */ - $html .= Horde::link('#', _("Rotate 180"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, array('a' => 'rotate', 'v' => '180')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-180.png', _("Rotate 180")) . ''; - - /* Rotate 90. */ - $html .= Horde::link('#', _("Rotate Right"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, array('a' => 'rotate', 'v' => '90')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-90.png', _("Rotate Right")) . ''; - - /* Flip image. */ - $html .= Horde::link('#', _("Flip"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, 'a', 'flip') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/flip.png', _("Flip")) . ''; - - /* Mirror image. */ - $html .= Horde::link('#', _("Mirror"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, 'a', 'mirror') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/mirror.png', _("Mirror")) . ''; - - /* Apply grayscale. */ - $html .= Horde::link('#', _("Grayscale"), '', '', 'showImage(\'' . Horde_Util::addParameter($img, 'a', 'grayscale') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/grayscale.png', _("Grayscale")) . ''; - - /* Resize width. */ - $html .= sprintf('%s', - _("w:"), - Horde_Util::addParameter($img, 'a', 'resize'), - $varname, - $varname, - $this->_genID('_w_' . $varname)); - - /* Resize height. */ - $html .= sprintf('%s', - _("h:"), - Horde_Util::addParameter($img, 'a', 'resize'), - $varname, - $varname, - $this->_genID('_h_' . $varname)); - - /* Apply fixed ratio resize. */ - $html .= Horde::link('#', _("Fix ratio"), '', '', 'src=getResizeSrc(\'' . Horde_Util::addParameter($img, 'a', 'resize') . '\', \'' . $varname . '\', \'1\');showImage(src, \'_p_' . $varname . '\', true);') . Horde::img('ratio.png', _("Fix ratio"), '', $img_dir) . ''; - - /* Keep also original if it has been requested. */ - if ($var->type->getProperty('show_keeporig')) { - $html .= sprintf('%s' . "\n", - $varname . '[keep_orig]', - $varname . '[keep_orig]', - !empty($image['keep_orig']) ? ' checked="checked"' : '', - _("Keep original?")); - } - - /* The preview image element. */ - $html .= '
_genID('_p_' . $varname) . ">\n"; - } - - return $html; - } - - protected function _renderVarInput_longtext($form, &$var, &$vars) - { - global $browser; - - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - $html = sprintf('', - $varname, - $varname, - (int)$var->type->getCols(), - (int)$var->type->getRows(), - $this->_getActionScripts($form, $var), - $var->isDisabled() ? ' disabled="disabled"' : '', - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)); - - if ($var->type->hasHelper('rte')) { - $GLOBALS['injector']->getInstance('Horde_Editor')->getEditor('fckeditor', array('id' => $varname, 'relativelinks' => $var->type->hasHelper('relativelinks'))); - } - - if ($var->type->hasHelper() && $browser->hasFeature('javascript')) { - $html .= '
'; - Horde::addScriptFile('open_html_helper.js', 'horde', array('direct' => false)); - $imgId = $this->_genID($var->getVarName(), false) . 'ehelper'; - if ($var->type->hasHelper('emoticons')) { - $html .= Horde::link('#', _("Emoticons"), '', '', 'openHtmlHelper(\'emoticons\', \'' . $var->getVarName() . '\'); return false;') . Horde::img('emoticons/smile.png', _("Emoticons"), 'id="' . $imgId . '"') . ''; - } - $html .= '
_genID('htmlhelper_' . $var->getVarName()) . ' class="control">
' . "\n"; - } - - return $html; - } - - protected function _renderVarInput_countedtext($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - (int)$var->type->getCols(), - (int)$var->type->getRows(), - $this->_getActionScripts($form, $var), - $var->isDisabled() ? ' disabled="disabled"' : '', - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)); - } - - protected function _renderVarInput_address($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - (int)$var->type->getCols(), - (int)$var->type->getRows(), - $this->_getActionScripts($form, $var), - $var->isDisabled() ? ' disabled="disabled"' : '', - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)); - } - - protected function _renderVarInput_addresslink($form, &$var, &$vars) - { - return ''; - } - - protected function _renderVarInput_pgp($form, &$var, &$vars) - { - return $this->_renderVarInput_longtext($form, $var, $vars); - } - - protected function _renderVarInput_smime($form, &$var, &$vars) - { - return $this->_renderVarInput_longtext($form, $var, $vars); - } - - protected function _renderVarInput_country($form, &$var, &$vars) - { - return $this->_renderVarInput_enum($form, $var, $vars); - } - - protected function _renderVarInput_date($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var)); - } - - protected function _renderVarInput_time($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var)); - } - - protected function _renderVarInput_hourminutesecond($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - $time = $var->type->getTimeParts($var->getValue($vars)); - - /* Output hours. */ - $hours = array('' => _("hh")); - for ($i = 0; $i <= 23; $i++) { - $hours[$i] = $i; - } - $html = sprintf('', - $varname, - $varname, - $this->_getActionScripts($form, $var), - $this->selectOptions($hours, ($time['hour'] === '') ? '' : $time['hour'])); - - /* Output minutes. */ - $minutes = array('' => _("mm")); - for ($i = 0; $i <= 59; $i++) { - $m = sprintf('%02d', $i); - $minutes[$m] = $m; - } - $html .= sprintf('', - $varname, - $varname, - $this->_getActionScripts($form, $var), - $this->selectOptions($minutes, ($time['minute'] === '') ? '' : sprintf('%02d', $time['minute']))); - - /* Return if seconds are not required. */ - if (!$var->type->getProperty('show_seconds')) { - return $html; - } - - /* Output seconds. */ - $seconds = array('' => _("ss")); - for ($i = 0; $i <= 59; $i++) { - $s = sprintf('%02d', $i); - $seconds[$s] = $s; - } - return $html . sprintf('', - $varname, - $varname, - $this->_getActionScripts($form, $var), - $this->selectOptions($seconds, ($time['second'] === '') ? '' : sprintf('%02d', $time['second']))); - } - - protected function _renderVarInput_monthyear($form, &$var, &$vars) - { - $dates = array(); - $dates['month'] = array('' => _("MM"), - 1 => _("January"), - 2 => _("February"), - 3 => _("March"), - 4 => _("April"), - 5 => _("May"), - 6 => _("June"), - 7 => _("July"), - 8 => _("August"), - 9 => _("September"), - 10 => _("October"), - 11 => _("November"), - 12 => _("December")); - $dates['year'] = array('' => _("YYYY")); - if ($var->type->getProperty('start_year') > $var->type->getProperty('end_year')) { - for ($i = $var->type->getProperty('start_year'); $i >= $var->type->getProperty('end_year'); $i--) { - $dates['year'][$i] = $i; - } - } else { - for ($i = $var->type->getProperty('start_year'); $i <= $var->type->getProperty('end_year'); $i++) { - $dates['year'][$i] = $i; - } - } - return sprintf('', - $var->type->getMonthVar($var), - $var->type->getMonthVar($var), - $this->_getActionScripts($form, $var), - $this->selectOptions($dates['month'], $vars->get($var->type->getMonthVar($var)))) . - sprintf('', - $var->type->getYearVar($var), - $var->type->getYearVar($var), - $this->_getActionScripts($form, $var), - $this->selectOptions($dates['year'], $vars->get($var->type->getYearVar($var)))); - } - - protected function _renderVarInput_monthdayyear($form, &$var, &$vars) - { - $dates = array(); - $dates['month'] = array('' => _("MM"), - '1' => _("January"), - '2' => _("February"), - '3' => _("March"), - '4' => _("April"), - '5' => _("May"), - '6' => _("June"), - '7' => _("July"), - '8' => _("August"), - '9' => _("September"), - '10' => _("October"), - '11' => _("November"), - '12' => _("December")); - $dates['day'] = array('' => _("DD")); - for ($i = 1; $i <= 31; $i++) { - $dates['day'][$i] = $i; - } - $dates['year'] = array('' => _("YYYY")); - if ($var->type->getProperty('start_year') > $var->type->getProperty('end_year')) { - for ($i = $var->type->getProperty('start_year'); $i >= $var->type->getProperty('end_year'); $i--) { - $dates['year'][$i] = $i; - } - } else { - for ($i = $var->type->getProperty('start_year'); $i <= $var->type->getProperty('end_year'); $i++) { - $dates['year'][$i] = $i; - } - } - $date = $var->type->getDateParts($var->getValue($vars)); - - // TODO: use NLS to get the order right for the Rest Of The - // World. - $html = ''; - $date_parts = array('month', 'day', 'year'); - foreach ($date_parts as $part) { - $varname = @htmlspecialchars($var->getVarName() . '[' . $part . ']', ENT_QUOTES, $this->_charset); - $html .= sprintf('', - $varname, - $varname, - $this->_getActionScripts($form, $var), - $this->selectOptions($dates[$part], $date[$part])); - } - - if ($var->type->getProperty('picker') && - $GLOBALS['browser']->hasFeature('javascript')) { - Horde_Ui_JsCalendar::init(); - $imgId = $this->_genID($var->getVarName(), false) . 'goto'; - $html .= Horde::link('#', _("Select a date"), '', '', 'Horde_Calendar.open(\'' . $imgId . '\', null)') . Horde::img('calendar.png', _("Calendar"), 'id="' . $imgId . '"') . "\n"; - } - - return $html; - } - - protected function _renderVarInput_datetime(&$form, &$var, &$vars) - { - $js = "document.observe('Horde_Calendar:select', " . - "function(e) {" . - "var elt = e.element();" . - "elt.up().previous('SELECT[name$=\"[month]\"]').setValue(e.memo.getMonth() + 1);" . - "elt.up().previous('SELECT[name$=\"[day]\"]').setValue(e.memo.getDate());" . - "elt.up().previous('SELECT[name$=\"[year]\"]').setValue(e.memo.getFullYear());" . - "});\n"; - Horde::addInlineScript($js, 'dom'); - return $this->_renderVarInput_monthdayyear($form, $var, $vars) . - $this->_renderVarInput_hourminutesecond($form, $var, $vars); - } - - protected function _renderVarInput_sound(&$form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - $value = @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset); - $html = '
    '; - if (!$var->isRequired()) { - $html .= '
  • '; - } - foreach ($var->type->getSounds() as $sound) { - $sound = @htmlspecialchars($sound, ENT_QUOTES, $this->_charset); - $html .= '
  • ' - . '
  • '; - } - return $html . '
'; - } - - protected function _renderVarInput_colorpicker($form, &$var, &$vars) - { - global $registry, $browser; - - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - $color = $var->getValue($vars); - if ($color) { - $style = ' style="background-color:' . $color . ';color:' - . (Horde_Image::brightness($color) < 128 ? '#fff' : '#000') . '"'; - } else { - $style = ''; - } - $html = ''; - if ($browser->hasFeature('javascript')) { - Horde::addScriptFile('prototype.js', 'horde'); - Horde::addScriptFile('colorpicker.js', 'horde'); - $html .= ''; - } - return $html . '
' - . '' - . Horde::link('#', _("Color Picker"), '', '', - 'new ColorPicker({ color: \'' . htmlspecialchars($color) . '\', offsetParent: Event.element(event), update: [[\'' . $varname . '\', \'value\'], [\'' . $varname . '\', \'background\']] }); return false;') - . Horde::img('colorpicker.png', _("Color Picker"), 'height="16"') . '
'; - } - - protected function _renderVarInput_sorter($form, &$var, &$vars) - { - global $registry; - - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - $instance = $var->type->getProperty('instance'); - - Horde::addScriptFile('sorter.js', 'horde'); - - return '_genID($varname . '[array]') . '/>' . - '
' . - Horde::link('#', _("Move up"), '', '', $instance . '.moveColumnUp(); return false;') . Horde::img('nav/up.png', _("Move up")) . '
' . - Horde::link('#', _("Move up"), '', '', $instance . '.moveColumnDown(); return false;') . Horde::img('nav/down.png', _("Move down")) . '
' . - '\n", $instance); - } - - protected function _renderVarInput_assign($form, &$var, &$vars) - { - global $registry; - - Horde::addScriptFile('form_assign.js', 'horde'); - - $name = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - $size = $var->type->getSize(); - $width = $var->type->getWidth(); - $lhdr = (bool)$var->type->getHeader(0); - $rhdr = (bool)$var->type->getHeader(1); - $this->_addOnLoadJavascript('Horde_Form_Assign.setField(\'' . $form->getName() . '\', \'' . $var->getVarName() . '\');'); - - return '' . - '
' . - sprintf('' . - '' . - Horde::img('rhand.png', _("Add")) . - '
' . - Horde::img('lhand.png', _("Remove")) . - '
' . - sprintf('
'; - } - - protected function _renderVarInput_invalid($form, &$var, &$vars) - { - return $this->_renderVarDisplay_invalid($form, $var, $vars); - } - - protected function _renderVarInput_enum($form, &$var, &$vars) - { - $values = $var->getValues(); - $prompt = $var->type->getPrompt(); - $htmlchars = $var->getOption('htmlchars'); - if (!empty($prompt)) { - $prompt = ''; - } - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - $this->_getActionScripts($form, $var), - $prompt, - $this->selectOptions($values, $var->getValue($vars), $htmlchars)); - } - - protected function _renderVarInput_mlenum($form, &$var, &$vars) - { - $varname = $var->getVarName(); - $hvarname = @htmlspecialchars($varname, ENT_QUOTES, $this->_charset); - $values = $var->getValues(); - $prompts = $var->type->getPrompts(); - $selected = $var->getValue($vars); - /* If passing a non-array value need to get the keys. */ - if (!is_array($selected)) { - foreach ($values as $key_1 => $values_2) { - if (isset($values_2[$selected])) { - $selected = array('1' => $key_1, '2' => $selected); - break; - } - } - } - - /* Hidden tag to store the current first level. */ - $html = sprintf('', - $hvarname, - @htmlspecialchars($selected['1'], ENT_QUOTES, $this->_charset), - $this->_genID($varname . '[old]')); - - /* First level. */ - $values_1 = Horde_Array::valuesToKeys(array_keys($values)); - $html .= sprintf(''; - - /* Second level. */ - $html .= sprintf(''; - } - - protected function _renderVarInput_multienum($form, &$var, &$vars) - { - $values = $var->getValues(); - $selected = $vars->getExists($var->getVarName(), $wasset); - if (!$wasset) { - $selected = $var->getDefault(); - } - return sprintf('', - (int)$var->type->size, - @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var), - $this->_multiSelectOptions($values, $selected)) . - "
\n" . _("To select multiple items, hold down the Control (PC) or Command (Mac) key while clicking.") . "\n"; - } - - protected function _renderVarInput_keyval_multienum($form, &$var, &$vars) - { - return $this->_renderVarInput_multienum($form, $var, $vars); - } - - protected function _renderVarInput_radio($form, &$var, &$vars) - { - return $this->_radioButtons($var->getVarName(), - $var->getValues(), - $var->getValue($vars), - $this->_getActionScripts($form, $var)); - } - - protected function _renderVarInput_set($form, &$var, &$vars) - { - $html = $this->_checkBoxes($var->getVarName(), - $var->getValues(), - $var->getValue($vars), - $this->_getActionScripts($form, $var)); - - if ($var->type->getProperty('checkAll')) { - $form_name = $form->getName(); - $var_name = $var->getVarName() . '[]'; - $function_name = 'select' . $form_name . $var->getVarName(); - $enable = _("Select all"); - $disable = _("Select none"); - $invert = _("Invert selection"); - $html .= << -function $function_name() -{ - for (var i = 0; i < document.$form_name.elements.length; i++) { - f = document.$form_name.elements[i]; - if (f.name != '$var_name') { - continue; - } - if (arguments.length) { - f.checked = arguments[0]; - } else { - f.checked = !f.checked; - } - } -} - -$enable, -$disable, -$invert -EOT; - } - - return $html; - } - - protected function _renderVarInput_link($form, &$var, &$vars) - { - return $this->_renderVarDisplay_link($form, $var, $vars); - } - - protected function _renderVarInput_html($form, &$var, &$vars) - { - return $this->_renderVarDisplay_html($form, $var, $vars); - } - - protected function _renderVarInput_email($form, &$var, &$vars) - { - return sprintf('', - $var->getVarName(), - $var->getVarName(), - @htmlspecialchars($var->getValue($vars)), - $this->_getActionScripts($form, $var)); - } - - protected function _renderVarInput_matrix($form, &$var, &$vars) - { - $varname = $var->getVarName(); - $var_array = $var->getValue($vars); - $cols = $var->type->getCols(); - $rows = $var->type->getRows(); - $matrix = $var->type->getMatrix(); - $new_input = $var->type->getNewInput(); - - $html = ''; - - $html .= ''; - foreach ($cols as $col_title) { - $html .= ''; - } - $html .= ''; - - /* Offer a new row of data to be added to the matrix? */ - if ($new_input) { - $html .= ''; - foreach ($cols as $col_id => $col_title) { - $html .= sprintf('', $varname, $col_id); - } - $html .= ''; - } - - /* Loop through the rows and create checkboxes for each column. */ - foreach ($rows as $row_id => $row_title) { - $html .= sprintf('', $row_title); - foreach ($cols as $col_id => $col_title) { - $html .= sprintf('', $varname, $row_id, $col_id, (!empty($matrix[$row_id][$col_id]) ? ' checked="checked"' : '')); - } - $html .= ''; - } - - return $html . '
' . htmlspecialchars($col_title) . '
'; - if (is_array($new_input)) { - $html .= sprintf('
', - $this->_genID($varname . '[n][r]'), - $varname, - _("-- select --"), - $this->selectOptions($new_input, $var_array['n']['r'])); - } elseif ($new_input == true) { - $html .= sprintf('', - $this->_genID($varname . '[n][r]'), - $varname, - $var_array['n']['r']); - } - $html .= '
%s
'; - } - - protected function _renderVarInput_password($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var)); - } - - protected function _renderVarInput_emailconfirm($form, &$var, &$vars) - { - $email = $var->getValue($vars); - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($email['original'], ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var)) . - ' ' . sprintf('', - $varname, - $varname, - @htmlspecialchars($email['confirm'], ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var)); - } - - protected function _renderVarInput_passwordconfirm($form, &$var, &$vars) - { - $password = $var->getValue($vars); - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - @htmlspecialchars($password['original'], ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var)) . - ' ' . sprintf('', - $varname, - $varname, - @htmlspecialchars($password['confirm'], ENT_QUOTES, $this->_charset), - $this->_getActionScripts($form, $var)); - } - - protected function _renderVarInput_boolean($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - $html = 'getValue($vars) ? ' checked="checked"' : ''); - if ($var->hasAction()) { - $html .= $this->_genActionScript($form, $var->_action, - $var->getVarName()); - } - return $html . ' />'; - } - - protected function _renderVarInput_creditcard($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - $html = 'hasAction()) { - $html .= $this->_genActionScript($form, $var->_action, - $var->getVarName()); - } - return $html . ' />'; - } - - protected function _renderVarInput_obrowser($form, &$var, &$vars) - { - $varname = $var->getVarName(); - $varvalue = $vars->get($varname); - $fieldId = $this->_genID(md5(uniqid(rand(), true)), false) . 'id'; - $html = ' - - '; - $html .= sprintf('', - @htmlspecialchars($varname, ENT_QUOTES, $this->_charset), - $fieldId, - $this->_getActionScripts($form, $var), - @htmlspecialchars($varvalue, ENT_QUOTES, $this->_charset)); - if (!empty($varvalue)) { - $html .= $varvalue; - } - - if ($GLOBALS['browser']->hasFeature('javascript')) { - $html .= Horde::link($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/', _("Select an object"), '', '_blank', 'obrowserWindow = ' . Horde::popupJs($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/', array('urlencode' => true)) . 'obrowserWindowName = obrowserWindow.name; return false;') . Horde::img('tree/leaf.png', _("Object")) . "\n"; - } - - return $html; - } - - protected function _renderVarInput_dblookup($form, &$var, &$vars) - { - return $this->_renderVarInput_enum($form, $var, $vars); - } - - protected function _renderVarInput_figlet($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - strlen($var->type->getText()), - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)) . - '
' . _("Enter the letters below:") . '
' . - $this->_renderVarDisplay_figlet($form, $var, $vars); - } - - protected function _renderVarInput_captcha($form, &$var, &$vars) - { - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - return sprintf('', - $varname, - $varname, - strlen($var->type->getText()), - @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)) . - '
' . _("Enter the letters below:") . '
' . - $this->_renderVarDisplay_captcha($form, $var, $vars); - } - - protected function _renderVarDisplayDefault($form, &$var, &$vars) - { - return nl2br(@htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)); - } - - protected function _renderVarDisplay_html($form, &$var, &$vars) - { - // Since this is an HTML type we explicitly don't escape - // it. User beware. - return $var->getValue($vars); - } - - protected function _renderVarDisplay_email($form, &$var, &$vars) - { - $email_val = $var->getValue($vars); - - if ($var->type->getProperty('link_compose')) { - // Multiple email addresses? - $addrs = $var->type->getProperty('allow_multi') - ? Horde_Mime_Address::explode($email_val) - : array($email_val); - - $link = ''; - foreach ($addrs as $addr) { - $addr = trim($addr); - - $display_email = $addr; - if ($var->type->getProperty('strip_domain') && strpos($addr, '@') !== false) { - $display_email = str_replace(array('@', '.'), - array(' (at) ', ' (dot) '), - $addr); - } - - // Format the address according to RFC822. - $mailbox_host = explode('@', $addr); - if (!isset($mailbox_host[1])) { - $mailbox_host[1] = ''; - } - - $name = $var->type->getProperty('link_name'); - - $address = Horde_Mime_Address::writeAddress($mailbox_host[0], $mailbox_host[1], $name); - - // Get rid of the trailing @ (when no host is included in - // the email address). - $address = str_replace('@>', '>', $address); - try { - $mail_link = $GLOBALS['registry']->call('mail/compose', array(array('to' => addslashes($address)))); - } catch (Horde_Exception $e) { - $mail_link = 'mailto:' . urlencode($address); - } - - if (!empty($link)) { - $link .= ', '; - } - $link .= Horde::link($mail_link, $addr) . @htmlspecialchars($display_email, ENT_QUOTES, $this->_charset) . ''; - } - - return $link; - } else { - $email_val = trim($email_val); - - if ($var->type->getProperty('strip_domain') && strpos($email_val, '@') !== false) { - $email_val = str_replace(array('@', '.'), - array(' (at) ', ' (dot) '), - $email_val); - } - - return nl2br(@htmlspecialchars($email_val, ENT_QUOTES, $this->_charset)); - } - } - - protected function _renderVarDisplay_password($form, &$var, &$vars) - { - return '********'; - } - - protected function _renderVarDisplay_passwordconfirm($form, &$var, &$vars) - { - return '********'; - } - - protected function _renderVarDisplay_octal($form, &$var, &$vars) - { - return sprintf('0%o', octdec($var->getValue($vars))); - } - - protected function _renderVarDisplay_boolean($form, &$var, &$vars) - { - return $var->getValue($vars) ? _("Yes") : _("No"); - } - - protected function _renderVarDisplay_enum($form, &$var, &$vars) - { - $values = $var->getValues(); - $value = $var->getValue($vars); - if (count($values) == 0) { - return _("No values"); - } elseif (isset($values[$value]) && $value != '') { - return @htmlspecialchars($values[$value], ENT_QUOTES, $this->_charset); - } - } - - protected function _renderVarDisplay_radio($form, &$var, &$vars) - { - $values = $var->getValues(); - if (count($values) == 0) { - return _("No values"); - } elseif (isset($values[$var->getValue($vars)])) { - return @htmlspecialchars($values[$var->getValue($vars)], ENT_QUOTES, $this->_charset); - } - } - - protected function _renderVarDisplay_multienum($form, &$var, &$vars) - { - $values = $var->getValues(); - $on = $var->getValue($vars); - if (!count($values) || !count($on)) { - return _("No values"); - } else { - $display = array(); - foreach ($values as $value => $name) { - if (in_array($value, $on)) { - $display[] = $name; - } - } - return @htmlspecialchars(implode(', ', $display), ENT_QUOTES, $this->_charset); - } - } - - protected function _renderVarDisplay_set($form, &$var, &$vars) - { - $values = $var->getValues(); - $on = $var->getValue($vars); - if (!count($values) || !count($on)) { - return _("No values"); - } else { - $display = array(); - foreach ($values as $value => $name) { - if (in_array($value, $on)) { - $display[] = $name; - } - } - return @htmlspecialchars(implode(', ', $display), ENT_QUOTES, $this->_charset); - } - } - - protected function _renderVarDisplay_image($form, &$var, &$vars) - { - $image = $var->getValue($vars); - - /* Check if existing image data is being loaded. */ - $var->type->loadImageData($image); - - if (empty($image['img'])) { - return ''; - } - - $img = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/images/view.php'); - if (isset($image['img']['vfs_id'])) { - /* Calling an image from VFS. */ - $img = Horde_Util::addParameter($img, array('f' => $image['img']['vfs_id'], - 's' => 'vfs', - 'p' => $image['img']['vfs_path'])); - } else { - /* Calling an image from a tmp directory (uploads). */ - $img = (string)Horde_Util::addParameter($img, 'f', $image['img']['file']); - } - - return Horde::img($img, '', '', ''); - } - - protected function _renderVarDisplay_phone($form, &$var, &$vars) - { - global $registry; - - $number = $var->getValue($vars); - $html = @htmlspecialchars($number, ENT_QUOTES, $this->_charset); - - if ($number && $registry->hasMethod('telephony/dial')) { - $url = $registry->call('telephony/dial', array($number)); - $label = sprintf(_("Dial %s"), $number); - $html .= ' ' . Horde::link($url, $label) . Horde::img('phone.png', $label) . ''; - } - - return $html; - } - - protected function _renderVarDisplay_cellphone($form, &$var, &$vars) - { - global $registry; - - $html = $this->_renderVarDisplay_phone($form, $var, $vars); - - $number = $var->getValue($vars); - if ($number && $registry->hasMethod('sms/compose')) { - $url = $registry->link('sms/compose', array('to' => $number)); - $html .= ' ' . Horde::link($url, _("Send SMS")) . Horde::img('mobile.png', _("Send SMS")) . ''; - } - - return $html; - } - - protected function _renderVarDisplay_address($form, &$var, &$vars, $text = true) - { - global $registry; - - $address = $var->getValue($vars); - if (empty($address)) { - return ''; - } - - $info = $var->type->parse($address); - - $google_icon = 'map.png'; - if (!empty($info['country'])) { - switch ($info['country']) { - case 'uk': - /* Multimap.co.uk generated map */ - $mapurl = 'http://www.multimap.com/map/browse.cgi?pc=' - . urlencode($info['zip']); - $desc = _("Multimap UK map"); - $icon = 'map.png'; - break; - - case 'au': - /* Whereis.com.au generated map */ - $mapurl = 'http://www.whereis.com.au/whereis/mapping/geocodeAddress.do?'; - $desc = _("Whereis Australia map"); - $icon = 'map.png'; - /* See if it's the street number & name. */ - if (isset($info['streetNumber']) && - isset($info['streetName'])) { - $mapurl .= '&streetNumber=' - . urlencode($info['streetNumber']) . '&streetName=' - . urlencode($info['streetName']); - } - /* Look for "Suburb, State". */ - if (isset($info['city'])) { - $mapurl .= '&suburb=' . urlencode($info['city']); - } - /* Look for "State <4 digit postcode>". */ - if (isset($info['state'])) { - $mapurl .= '&state=' . urlencode($info['state']); - } - break; - - case 'us': - case 'ca': - /* American/Canadian address style. */ - /* Mapquest generated map */ - $mapurl = 'http://www.mapquest.com/maps/map.adp?size=big&zoom=7'; - $desc = _("MapQuest map"); - $icon = 'map.png'; - if (!empty($info['street'])) { - $mapurl .= '&address=' . urlencode($info['street']); - } - if (!empty($info['city'])) { - $mapurl .= '&city=' . urlencode($info['city']); - } - if (!empty($info['state'])) { - $mapurl .= '&state=' . urlencode($info['state']); - } - if (!empty($info['zip'])) { - if ($info['country'] == 'ca') { - $mapurl .= '&country=CA'; - } - $mapurl .= '&zipcode=' . urlencode($info['zip']); - } - - /* Yahoo! generated map. */ - $mapurl2 = 'http://us.rd.yahoo.com/maps/home/submit_a/*-http://maps.yahoo.com/maps?srchtype=a&getmap=Get+Map&'; - $desc2 = _("Yahoo! map"); - $icon2 = 'map.png'; - if (!empty($info['street'])) { - $mapurl2 .= '&addr=' . urlencode($info['street']); - } - /* Give precedence to zipcode over city/state */ - if (empty($info['zip']) && - !empty($info['city']) && !empty($info['state'])) { - $mapurl2 .= '&csz=' - . urlencode($info['city'] . ' ' . $info['state']); - } - if (!empty($info['zip'])) { - if (preg_match('|([a-zA-Z]\d[a-zA-Z])\s?(\d[a-zA-Z]\d)|', $info['zip'], $pcParts)) { - $mapurl2 .= '&country=ca'; - /* make sure the postal-code has a space */ - $info['zip'] = $pcParts[1] . ' ' . $pcParts[2]; - } - $mapurl2 .= '&csz=' . urlencode($info['zip']); - } - break; - - default: - if (!count($info)) { - break; - } - /* European address style. */ - $google_icon = 'map_eu.png'; - /* Mapquest generated map. */ - $mapurl2 = 'http://www.mapquest.com/maps/map.adp?country=' . Horde_String::upper($info['country']); - $desc2 = _("MapQuest map"); - $icon2 = 'map_eu.png'; - if (!empty($info['street'])) { - $mapurl2 .= '&address=' . urlencode($info['street']); - } - if (!empty($info['zip'])) { - $mapurl2 .= '&zipcode=' . urlencode($info['zip']); - } - if (!empty($info['city'])) { - $mapurl2 .= '&city=' . urlencode($info['city']); - } - break; - } - } - - $html = $text ? nl2br(@htmlspecialchars($address, ENT_QUOTES, $this->_charset)) : ''; - if (!empty($mapurl)) { - $html .= '  ' . Horde::link(Horde::externalUrl($mapurl), $desc, null, '_blank') . Horde::img($icon, $desc) . ''; - } - if (!empty($mapurl2)) { - $html .= ' ' . Horde::link(Horde::externalUrl($mapurl2), $desc2, null, '_blank') . Horde::img($icon2, $desc2) . ''; - } - - /* Google generated map. */ - if ($address) { - $html .= ' ' . Horde::link(Horde::externalUrl('http://maps.google.com/maps?q=' . urlencode(preg_replace('/\r?\n/', ',', $address)) . '&hl=en'), _("Google Maps"), null, '_blank') . Horde::img($google_icon, _("Google Maps")) . ''; - } - - return $html; - } - - protected function _renderVarDisplay_addresslink($form, &$var, &$vars) - { - return $this->_renderVarDisplay_address($form, $var, $vars, false); - } - - protected function _renderVarDisplay_pgp($form, &$var, &$vars) - { - $key = $var->getValue($vars); - if (empty($key)) { - return ''; - } - return '
' .
-            $GLOBALS['injector']->getInstance('Horde_Crypt')->getCrypr('Pgp', $var->type->getPGPParams())->pgpPrettyKey($key) .
-            '
'; - } - - protected function _renderVarDisplay_smime($form, &$var, &$vars) - { - $cert = $var->getValue($vars); - if (empty($cert)) { - return ''; - } - return $GLOBALS['injector']->getInstance('Horde_Crypt')->getCrypt('Smime', $var->type->getSMIMEParams())->certToHTML($cert); - } - - protected function _renderVarDisplay_country($form, &$var, &$vars) - { - return $this->_renderVarDisplay_enum($form, $var, $vars); - } - - protected function _renderVarDisplay_date($form, &$var, &$vars) - { - return htmlspecialchars($var->type->getFormattedTime($var->getValue($vars))); - } - - protected function _renderVarDisplay_hourminutesecond($form, &$var, &$vars) - { - $time = $var->type->getTimeParts($var->getValue($vars)); - if (!$var->type->getProperty('show_seconds')) { - return (int)$time['hour'] . ':' . sprintf('%02d', (int)$time['minute']); - } else { - return (int)$time['hour'] . ':' . sprintf('%02d', (int)$time['minute']) . ':' . sprintf('%02d', (int)$time['second']); - } - } - - protected function _renderVarDisplay_monthyear($form, &$var, &$vars) - { - return (int)$vars->get($var->getVarName() . '[month]') . ', ' . (int)$vars->get($var->getVarName() . '[year]'); - } - - protected function _renderVarDisplay_monthdayyear($form, &$var, &$vars) - { - $date = $var->getValue($vars); - if ((is_array($date) && !empty($date['year']) && - !empty($date['month']) && !empty($date['day'])) || - (!is_array($date) && !empty($date) && $date != '0000-00-00')) { - return $var->type->formatDate($date); - } - return ''; - } - - protected function _renderVarDisplay_datetime($form, &$var, &$vars) - { - return htmlspecialchars($var->type->formatDate($var->getValue($vars))) . Horde_Form_Type_date::getAgo($var->getValue($vars)); - } - - protected function _renderVarDisplay_invalid($form, &$var, &$vars) - { - return '' . @htmlspecialchars($var->type->message, ENT_QUOTES, $this->_charset) . ''; - } - - protected function _renderVarDisplay_link($form, &$var, &$vars) - { - $values = $var->type->values; - if (!isset($values[0])) { - $values = array($values); - } - - $count = count($values); - $html = ''; - for ($i = 0; $i < $count; $i++) { - if (empty($values[$i]['url']) || empty($values[$i]['text'])) { - continue; - } - if (!isset($values[$i]['target'])) { - $values[$i]['target'] = ''; - } - if (!isset($values[$i]['onclick'])) { - $values[$i]['onclick'] = ''; - } - if (!isset($values[$i]['title'])) { - $values[$i]['title'] = ''; - } - if (!isset($values[$i]['accesskey'])) { - $values[$i]['accesskey'] = ''; - } - if ($i > 0) { - $html .= ' | '; - } - $html .= Horde::link($values[$i]['url'], $values[$i]['text'], 'widget', $values[$i]['target'], $values[$i]['onclick'], $values[$i]['title'], $values[$i]['accesskey']) . @htmlspecialchars($values[$i]['text'], ENT_QUOTES, $this->_charset) . ''; - } - - return $html; - } - - protected function _renderVarDisplay_dblookup($form, &$var, &$vars) - { - return $this->_renderVarDisplay_enum($form, $var, $vars); - } - - protected function _renderVarDisplay_figlet($form, &$var, &$vars) - { - static $figlet; - - if (!isset($figlet)) { - $figlet = new Text_Figlet(); - } - - $result = $figlet->loadFont($var->type->getFont()); - if (is_a($result, 'PEAR_Error')) { - return $result->getMessage(); - } - - return '
' . $figlet->lineEcho($var->type->getText()) . '
'; - } - - protected function _renderVarDisplay_captcha($form, &$var, &$vars) - { - static $captcha; - - if (!isset($captcha)) { - $captcha = Text_CAPTCHA::factory('Image'); - } - - $image = $captcha->init(150, 60, $var->type->getText(), - array('font_path' => dirname($var->type->getFont()) . '/', - 'font_file' => basename($var->type->getFont()))); - if (is_a($image, 'PEAR_Error')) { - return $image->getMessage(); - } - - $cid = md5($var->type->getText()); - $cache = $GLOBALS['injector']->getInstance('Horde_Cache'); - - $cache->set($cid, serialize(array('data' => $captcha->getCAPTCHAAsJPEG(), - 'ctype' => 'image/jpeg'))); - - $url = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/cacheview.php'); - $url = Horde_Util::addParameter($url, 'cid', $cid, false); - - return ''; - - } - - protected function _renderVarInput_selectFiles($form, &$var, &$vars) - { - /* Needed for gollem js calls */ - $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset); - $html = sprintf('', - 'selectlist_selectid', - 'selectlist_selectid', - $var->type->getProperty('selectid')) . - sprintf('', 'actionID', 'actionID') . - - /* Form field. */ - sprintf('', - $varname, - $varname, - $var->type->getProperty('selectid')); - - /* Open window link. */ - $param = array($var->type->getProperty('link_text'), - $var->type->getProperty('link_style'), - $form->getName(), - $var->type->getProperty('icon'), - $var->type->getProperty('selectid')); - $html .= $GLOBALS['registry']->call('files/selectlistLink', $param) . "
\n"; - - if ($var->type->getProperty('selectid')) { - $param = array($var->type->getProperty('selectid')); - $files = $GLOBALS['registry']->call('files/selectlistResults', $param); - if ($files) { - $html .= '
    '; - foreach ($files as $id => $file) { - $dir = key($file); - $filename = current($file); - if ($GLOBALS['registry']->hasMethod('files/getViewLink')) { - $filename = basename($filename); - $url = $GLOBALS['registry']->call('files/getViewLink', array($dir, $filename)); - $filename = Horde::link($url, _("Preview"), null, 'form_file_view') . @htmlspecialchars(Horde_Util::realPath($dir . '/' . $filename), ENT_QUOTES, $this->_charset) . ''; - } else { - if (!empty($dir) && ($dir != '.')) { - $filename = $dir . '/' . $filename; - } - $filename = @htmlspecialchars($filename, ENT_QUOTES, $this->_charset); - } - $html .= '
  1. ' . $filename . "
  2. \n"; - } - $html .= '
'; - } - } - - return $html; - } - - protected function _renderVarInput_category($form, &$var, &$vars) - { - Horde::addScriptFile('form_helpers.js', 'horde'); - $this->_addOnLoadJavascript('addEvent(document.getElementById(\'' . $form->getName() . '\'), \'submit\', checkCategory);'); - return '' - . Horde_Prefs_CategoryManager::getJavaScript($form->getName(), $var->getVarName()) - . Horde_Prefs_CategoryManager::getSelect($var->getVarName(), $var->getValue($vars)); - } - - public function selectOptions(&$values, $selectedValue = false, - $htmlchars = false) - { - $result = ''; - $sel = false; - foreach ($values as $value => $display) { - if (!is_null($selectedValue) && !$sel && - $value == $selectedValue && - strlen($value) == strlen($selectedValue)) { - $selected = ' selected="selected"'; - $sel = true; - } else { - $selected = ''; - } - $result .= ' \n"; - } - - return $result; - } - - protected function _multiSelectOptions(&$values, $selectedValues) - { - if (!is_array($selectedValues)) { - $selectedValues = array(); - } else { - $selectedValues = array_flip($selectedValues); - } - - $result = ''; - $sel = false; - foreach ($values as $value => $display) { - if (isset($selectedValues[$value])) { - $selected = ' selected="selected"'; - } else { - $selected = ''; - } - $result .= " \n"; - } - - return $result; - } - - protected function _checkBoxes($name, $values, $checkedValues, $actions = '') - { - $result = ''; - if (!is_array($checkedValues)) { - $checkedValues = array(); - } - $i = 0; - foreach ($values as $value => $display) { - $checked = (in_array($value, $checkedValues)) ? ' checked="checked"' : ''; - $result .= sprintf('
', - @htmlspecialchars($name, ENT_QUOTES, $this->_charset), - $i, - @htmlspecialchars($name, ENT_QUOTES, $this->_charset), - @htmlspecialchars($value, ENT_QUOTES, $this->_charset), - $checked, - $actions, - @htmlspecialchars($name, ENT_QUOTES, $this->_charset), - $i, - @htmlspecialchars($display, ENT_QUOTES, $this->_charset)); - $i++; - } - - return $result; - } - - protected function _radioButtons($name, $values, $checkedValue = null, $actions = '') - { - $result = ''; - $i = 0; - foreach ($values as $value => $display) { - $checked = (!is_null($checkedValue) && $value == $checkedValue) ? ' checked="checked"' : ''; - $result .= sprintf('
', - @htmlspecialchars($name, ENT_QUOTES, $this->_charset), - $i, - @htmlspecialchars($name, ENT_QUOTES, $this->_charset), - @htmlspecialchars($value, ENT_QUOTES, $this->_charset), - $checked, - $actions, - @htmlspecialchars($name, ENT_QUOTES, $this->_charset), - $i, - @htmlspecialchars($display, ENT_QUOTES, $this->_charset)); - $i++; - } - - return $result; - } - - protected function _genID($name, $fulltag = true) - { - $name = @htmlspecialchars($name, ENT_QUOTES, $this->_charset); - return $fulltag ? 'id="' . $name . '"' : $name; - } - - protected function _genActionScript($form, $action, $varname) - { - $html = ''; - $triggers = $action->getTrigger(); - if (!is_array($triggers)) { - $triggers = array($triggers); - } - $js = $action->getActionScript($form, $this, $varname); - foreach ($triggers as $trigger) { - if ($trigger == 'onload') { - $this->_addOnLoadJavascript($js); - } else { - $html .= ' ' . $trigger . '="' . $js . '"'; - } - } - return $html; - } - - protected function _getActionScripts($form, &$var) - { - $actions = ''; - if ($var->hasAction()) { - $varname = $var->getVarName(); - $action = &$var->_action; - $triggers = $action->getTrigger(); - if (!is_array($triggers)) { - $triggers = array($triggers); - } - $js = $action->getActionScript($form, $this, $varname); - foreach ($triggers as $trigger) { - if ($trigger == 'onload') { - $this->_addOnLoadJavascript($js); - } else { - $actions .= ' ' . $trigger . '="' . $js . '"'; - } - } - } - return $actions; - } - - protected function _addOnLoadJavascript($script) - { - $this->_onLoadJS[] = $script; - } - - public function renderEnd() - { - if (count($this->_onLoadJS)) { - return ""; - } else { - return ''; - } - } - -} diff --git a/framework/Ui/lib/Horde/Ui/VarRenderer/TablesetHtml.php b/framework/Ui/lib/Horde/Ui/VarRenderer/TablesetHtml.php deleted file mode 100644 index 057888c1a..000000000 --- a/framework/Ui/lib/Horde/Ui/VarRenderer/TablesetHtml.php +++ /dev/null @@ -1,121 +0,0 @@ -type->getHeader(); - $name = $var->getVarName(); - $values = $var->getValues(); - $form_name = $form->getName(); - $var_name = $var->getVarName() . '[]'; - $checkedValues = $var->getValue($vars); - $actions = $this->_getActionScripts($form, $var); - $function_name = 'select' . $form_name . $var->getVarName(); - $enable = _("Select all"); - $disable = _("Select none"); - $invert = _("Invert selection"); - - Horde::addScriptFile('tables.js', 'horde'); - - $html = << -function $function_name() -{ - for (var i = 0; i < document.$form_name.elements.length; i++) { - f = document.$form_name.elements[i]; - if (f.name != '$var_name') { - continue; - } - if (arguments.length) { - f.checked = arguments[0]; - } else { - f.checked = !f.checked; - } - } -} - -$enable, -$disable, -$invert - - -EOT; - - foreach ($header as $col_title) { - $html .= sprintf('', $col_title); - } - $html .= ''; - - if (!is_array($checkedValues)) { - $checkedValues = array(); - } - $i = 0; - foreach ($values as $value => $displays) { - $checked = (in_array($value, $checkedValues)) ? ' checked="checked"' : ''; - $html .= '' . - sprintf('', - $name, - $name, - $value, - $checked, - $actions); - foreach ($displays as $col) { - $html .= sprintf('', $col); - } - $html .= '' . "\n"; - $i++; - } - - $html .= '
 %s
 %s
' - . '' . $enable . ', ' - . '' . $disable . ', ' - . '' . $invert . ''; - - return $html; - } - - protected function _renderVarDisplay_tableset($form, &$var, &$vars) - { - $header = $var->type->getHeader(); - $name = $var->getVarName(); - $values = $var->getValues(); - $checkedValues = $var->getValue($vars); - $actions = $this->_getActionScripts($form, $var); - - Horde::addScriptFile('tables.js', 'horde'); - $html = '' . - ''; - foreach ($header as $col_title) { - $html .= sprintf('', $col_title); - } - $html .= ''; - - if (!is_array($checkedValues)) { - $checkedValues = array(); - } - $i = 0; - foreach ($values as $value => $displays) { - $checked = '[ V' : 'red">X' - . ' ]'; - $html .= ''. - sprintf('', $checked); - foreach ($displays as $col) { - $html .= ''; - } - $html .= ''; - $i++; - } - - return $html . '
 %s
%s ' . $col . '
'; - } - -} diff --git a/framework/Ui/lib/Horde/Ui/Widget.php b/framework/Ui/lib/Horde/Ui/Widget.php deleted file mode 100644 index feeafc133..000000000 --- a/framework/Ui/lib/Horde/Ui/Widget.php +++ /dev/null @@ -1,127 +0,0 @@ - - * @package Horde_Ui - */ -abstract class Horde_Ui_Widget -{ - /** - * Any variables that should be preserved in all of the widget's - * links. - * - * @var array - */ - protected $_preserve = array(); - - /** - * The name of this widget. This is used as the basename for variables - * we access and manipulate. - * - * @var string - */ - protected $_name; - - /** - * A reference to a Horde_Variables:: object this widget will use and - * manipulate. - * - * @var Horde_Variables - */ - protected $_vars; - - /** - * An array of name => value pairs which configure how this widget - * behaves. - * - * @var array - */ - protected $_config; - - /** - * Holds the name of a callback function to call on any URLS before they - * are used/returned. If an array, it is taken as an object/method name, if - * a string, it is taken as a php function. - * - * @var callable - */ - protected $_url_callback = array('Horde', 'applicationUrl'); - - /** - * Construct a new UI Widget interface. - * - * @param string $name The name of the variable which will - * track this UI widget's state. - * @param Horde_Variables &$vars A Horde_Variables:: object. - * @param array $config The widget's configuration. - */ - public function __construct($name, &$vars, $config = array()) - { - $this->_name = $name; - $this->_vars = &$vars; - - if (array_key_exists('url_callback', $config)) { - $this->_url_callback = $config['url_callback']; - unset($config['url_callback']); - } - $this->_config = $config; - } - - /** - * Instructs widget to preserve a variable or a set of variables. - * - * @param string|array $var The name of the variable to preserve, or - * an array of variables to preserve. - * @param mixed $value If preserving a single key, the value of the - * variable to preserve. - */ - public function preserve($var, $value = null) - { - if (!is_array($var)) { - $var = array($var => $value); - } - - foreach ($var as $key => $value) { - $this->_preserve[$key] = $value; - } - } - - /** - * TODO - */ - protected function _addPreserved($link) - { - foreach ($this->_preserve as $varName => $varValue) { - $link->add($varName, $varValue); - } - - return $link; - } - - /** - * Render the widget. - * - * @param mixed $data The widget's state data. - */ - abstract public function render($data = null); - - /** - * TODO - */ - protected function _link($link) - { - if (is_callable($this->_url_callback)) { - return call_user_func($this->_url_callback, $link); - } - - return $link; - } - -} diff --git a/framework/Ui/package.xml b/framework/Ui/package.xml deleted file mode 100644 index bcd189e53..000000000 --- a/framework/Ui/package.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - Ui - pear.horde.org - Horde's User Interface Classes - The Horde_Ui package provides several classes for handling UI elements in Horde. - - - Chuck Hagenbuch - chuck - chuck@horde.org - yes - - - Jay Felice - eraserhd - jason.m.felice@gmail.com - yes - - 2009-11-19 - - 0.1.0 - 0.1.0 - - - beta - beta - - LGPL - * Added Horde_Ui_FlagImage::. - * Initial Horde 4 package. - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.2.0 - - - 1.7.0 - - - Core - pear.horde.org - - - Nls - pear.horde.org - - - - - - - - - - - - - - - - - - - - - 0.0.2 - 0.0.2 - - - alpha - alpha - - 2006-05-08 - - LGPL - * Added Horde_UI_JsCalendar::. - * Converted to package.xml 2.0 for pear.horde.org - - - - - 0.0.1 - 0.0.1 - - - alpha - alpha - - 2003-11-14 - LGPL - Initial release as a PEAR package - - - - diff --git a/gollem/manager.php b/gollem/manager.php index 00df09ac8..a03075c6b 100644 --- a/gollem/manager.php +++ b/gollem/manager.php @@ -455,7 +455,7 @@ if (is_array($list) && $numitem && $read_perms) { $vars = Horde_Variables::getDefaultVariables(); $vars->set('page', $page); - $pager = new Horde_Ui_Pager('page', $vars, array('num' => $total, 'url' => $refresh_url, 'page_count' => 10, 'perpage' => $perpage)); + $pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $total, 'url' => $refresh_url, 'page_count' => 10, 'perpage' => $perpage)); $page_caption = $pager->render(); } diff --git a/hermes/lib/Hermes.php b/hermes/lib/Hermes.php index c42f94471..af454411b 100644 --- a/hermes/lib/Hermes.php +++ b/hermes/lib/Hermes.php @@ -218,7 +218,7 @@ class Hermes { { /* Build search mode tabs. */ $sUrl = Horde::selfUrl(); - $tabs = new Horde_Ui_Tabs('search_mode', Horde_Variables::getDefaultVariables()); + $tabs = new Horde_Core_Ui_Tabs('search_mode', Horde_Variables::getDefaultVariables()); $tabs->addTab(_("Summary"), $sUrl, 'summary'); $tabs->addTab(_("By Date"), $sUrl, 'date'); $tabs->addTab(_("By Employee"), $sUrl, 'employee'); diff --git a/hermes/lib/Table.php b/hermes/lib/Table.php index 7286290f9..1e3eb7842 100644 --- a/hermes/lib/Table.php +++ b/hermes/lib/Table.php @@ -7,10 +7,8 @@ * * See the enclosed file LICENSE for license information (BSD). If you * did not receive this file, see http://www.horde.org/licenses/bsdl.php. - * - * @package Horde_Ui */ -class Horde_Ui_Table extends Horde_Ui_Widget { +class Horde_Core_Ui_Table extends Horde_Core_Ui_Widget { /** * Data loaded from the getTableMetaData API. @@ -120,7 +118,7 @@ class Horde_Ui_Table extends Horde_Ui_Widget { return false; } - $varRenderer = new Horde_Ui_VarRenderer_Html(); + $varRenderer = new Horde_Core_Ui_VarRenderer_Html(); $html = '

'; @@ -180,7 +178,7 @@ class Horde_Ui_Table extends Horde_Ui_Widget { $html .= ($secname == 'footer') ? '' : ''; /* This Horde_Variables object is populated for each table row - * so that we can use the Horde_Ui_VarRenderer. */ + * so that we can use the Horde_Core_Ui_VarRenderer. */ $vars = new Horde_Variables(); $form = null; foreach ($data[$secname] as $row) { diff --git a/hermes/search.php b/hermes/search.php index dc0bde0d9..33d3e890a 100644 --- a/hermes/search.php +++ b/hermes/search.php @@ -110,7 +110,7 @@ if (isset($_SESSION['hermes_search_criteria'])) { $criteria = $form->getSearchCriteria($searchVars); } - $table = new Horde_Ui_Table('results', $vars, + $table = new Horde_Core_Ui_Table('results', $vars, array('title' => _("Search Results"), 'name' => 'hermes/hours', 'params' => $criteria)); diff --git a/hermes/time.php b/hermes/time.php index 415125ba8..2e389c910 100644 --- a/hermes/time.php +++ b/hermes/time.php @@ -57,7 +57,7 @@ $tabs = Hermes::tabs(); $criteria = array('employee' => $GLOBALS['registry']->getAuth(), 'submitted' => false, 'link_page' => 'time.php'); -$table = new Horde_Ui_Table('week', $vars, +$table = new Horde_Core_Ui_Table('week', $vars, array('title' => _("My Unsubmitted Time"), 'name' => 'hermes/hours', 'params' => $criteria)); diff --git a/horde/admin/sessions.php b/horde/admin/sessions.php index d64b752cc..111674414 100644 --- a/horde/admin/sessions.php +++ b/horde/admin/sessions.php @@ -47,7 +47,7 @@ try { } else { $host = @gethostbyaddr($data['remoteAddr']); } - $entry[_("Remote Host:")] = $host . ' [' . $data['remoteAddr'] . '] ' . Horde_Ui_FlagImage::generateFlagImageByHost($host); + $entry[_("Remote Host:")] = $host . ' [' . $data['remoteAddr'] . '] ' . Horde_Core_Ui_FlagImage::generateFlagImageByHost($host); } echo '
  • ' . $plus . $minus . htmlspecialchars($data['userid']) . ' [' . htmlspecialchars($id) . ']' diff --git a/horde/lib/Block/cloud.php b/horde/lib/Block/cloud.php index d99156035..fab6d045c 100644 --- a/horde/lib/Block/cloud.php +++ b/horde/lib/Block/cloud.php @@ -32,7 +32,7 @@ class Horde_Block_Horde_cloud extends Horde_Block { Horde::addScriptFile('prototype.js', 'horde'); - $cloud = new Horde_Ui_TagCloud(); + $cloud = new Horde_Core_Ui_TagCloud(); foreach ($this->_getTags() as $tag) { $cloud->addElement($tag['tag_name'], '#', $tag['total'], null, diff --git a/horde/services/help/index.php b/horde/services/help/index.php index d1a362c12..b3bdbdc96 100644 --- a/horde/services/help/index.php +++ b/horde/services/help/index.php @@ -66,7 +66,7 @@ case 'sidebar': } /* Generate Tabs */ - $tabs = new Horde_Ui_Tabs('side_show', $vars); + $tabs = new Horde_Core_Ui_Tabs('side_show', $vars); $tabs->addTab(_("Help _Topics"), $sidebar_url, 'index'); $tabs->addTab(_("Sea_rch"), $sidebar_url, 'search'); diff --git a/horde/templates/admin/user/list.inc b/horde/templates/admin/user/list.inc index de858d084..a503f0331 100644 --- a/horde/templates/admin/user/list.inc +++ b/horde/templates/admin/user/list.inc @@ -38,7 +38,7 @@ foreach ($users as $user): $total, 'url' => $viewurl, 'page_count' => 10, 'perpage' => $perpage)); + $pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $total, 'url' => $viewurl, 'page_count' => 10, 'perpage' => $perpage)); echo $pager->render($page, $total, $viewurl); } ?> diff --git a/imp/message.php b/imp/message.php index 0dc768226..750c83141 100644 --- a/imp/message.php +++ b/imp/message.php @@ -249,14 +249,14 @@ if ($origin_host) { $origin_host = array($origin_host); } foreach ($origin_host as $host) { - $from_img .= Horde_Ui_FlagImage::generateFlagImageByHost($host) . ' '; + $from_img .= Horde_Core_Ui_FlagImage::generateFlagImageByHost($host) . ' '; } trim($from_img); } if (empty($from_img) && !empty($envelope['from'])) { $from_ob = reset($envelope['from']); - $from_img .= Horde_Ui_FlagImage::generateFlagImageByHost($from_ob['host']) . ' '; + $from_img .= Horde_Core_Ui_FlagImage::generateFlagImageByHost($from_ob['host']) . ' '; } if (!empty($from_img)) { diff --git a/imp/search.php b/imp/search.php index 69e747cd0..eb7763b66 100644 --- a/imp/search.php +++ b/imp/search.php @@ -179,7 +179,7 @@ foreach ($imp_search->flagFields() as $key => $val) { } $t->set('f_fields', $f_fields); -Horde_Ui_JsCalendar::init(); +Horde_Core_Ui_JsCalendar::init(); /* Gettext strings for this page. */ $gettext_strings = array( @@ -198,7 +198,7 @@ $gettext_strings = array( /* Javascript data for this page. */ $js_data = array( - 'months' => Horde_Ui_JsCalendar::months(), + 'months' => Horde_Core_Ui_JsCalendar::months(), 'searchmbox' => $search_mailbox, 'types' => $types ); diff --git a/ingo/lib/Ui/VarRenderer/Ingo.php b/ingo/lib/Ui/VarRenderer/Ingo.php index f553e61b6..3635d0d06 100644 --- a/ingo/lib/Ui/VarRenderer/Ingo.php +++ b/ingo/lib/Ui/VarRenderer/Ingo.php @@ -11,7 +11,7 @@ * @author Jan Schneider * @package Ingo */ -class Horde_Ui_VarRenderer_Ingo extends Horde_Ui_VarRenderer_Html +class Horde_Core_Ui_VarRenderer_Ingo extends Horde_Core_Ui_VarRenderer_Html { protected function _renderVarInput_ingo_folders(&$form, &$var, &$vars) { diff --git a/ingo/spam.php b/ingo/spam.php index 3d682e9d3..999404ea6 100644 --- a/ingo/spam.php +++ b/ingo/spam.php @@ -17,7 +17,7 @@ Horde_Registry::appInit('ingo'); /** * Dummy class to hold the select box created by {@link Ingo::flistSelect()}. * - * @see Horde_Ui_VarRenderer_Ingo + * @see Horde_Core_Ui_VarRenderer_Ingo * @see Ingo::flistSelect() */ class Horde_Form_Type_ingo_folders extends Horde_Form_Type { diff --git a/jonah/lib/Block/cloud.php b/jonah/lib/Block/cloud.php index 2cf1c1a22..e0fe33b3f 100644 --- a/jonah/lib/Block/cloud.php +++ b/jonah/lib/Block/cloud.php @@ -40,7 +40,7 @@ class Horde_Block_jonah_cloud extends Horde_Block { /* Get the tags */ $tags = $news->listTagInfo(); if (count($tags)) { - $cloud = new Horde_Ui_TagCloud(); + $cloud = new Horde_Core_Ui_TagCloud(); foreach ($tags as $id => $tag) { $cloud->addElement($tag['tag_name'], str_replace(array('@id@', '@tag@'), array($id, $tag['tag_name']), $this->_params['results_url']), $tag['total']); } diff --git a/jonah/stories/view.php b/jonah/stories/view.php index 62e20618e..994d42f76 100644 --- a/jonah/stories/view.php +++ b/jonah/stories/view.php @@ -41,7 +41,7 @@ if (is_a($story, 'PEAR_Error')) { } /* Grab tag related content for entire channel */ -$cloud = new Horde_Ui_TagCloud(); +$cloud = new Horde_Core_Ui_TagCloud(); $allTags = $news->listTagInfo(array(), $channel_id); foreach ($allTags as $tag_id => $taginfo) { $cloud->addElement($taginfo['tag_name'], Horde_Util::addParameter('results.php', array('tag_id' => $tag_id, 'channel_id' => $channel_id)), $taginfo['total']); diff --git a/koward/lib/Koward/Controller/ObjectController.php b/koward/lib/Koward/Controller/ObjectController.php index cd73b431d..a22cf2b66 100644 --- a/koward/lib/Koward/Controller/ObjectController.php +++ b/koward/lib/Koward/Controller/ObjectController.php @@ -65,7 +65,7 @@ class ObjectController extends Koward_Controller_Application } } - $this->tabs = new Horde_Ui_Tabs(null, Horde_Variables::getDefaultVariables()); + $this->tabs = new Horde_Core_Ui_Tabs(null, Horde_Variables::getDefaultVariables()); foreach ($this->koward->objects as $key => $configuration) { if (!$this->koward->hasAccess($this->getPermissionId() . '/' . $key)) { continue; diff --git a/kronolith/attendees.php b/kronolith/attendees.php index 6ba870a3b..be23be6d2 100644 --- a/kronolith/attendees.php +++ b/kronolith/attendees.php @@ -182,7 +182,7 @@ $delimg = Horde::img('delete.png', _("Remove Attendee")); $ident = $injector->getInstance('Horde_Prefs_Identity')->getIdentity(); $identities = $ident->getAll('id'); $vars = Horde_Variables::getDefaultVariables(); -$tabs = new Horde_Ui_Tabs(null, $vars); +$tabs = new Horde_Core_Ui_Tabs(null, $vars); $tabs->addTab(_("Day"), new Horde_Url('javascript:switchView(\'Day\')'), 'Day'); $tabs->addTab(_("Work Week"), new Horde_Url('javascript:switchView(\'Workweek\')'), 'Workweek'); $tabs->addTab(_("Week"), new Horde_Url('javascript:switchView(\'Week\')'), 'Week'); diff --git a/kronolith/lib/Event.php b/kronolith/lib/Event.php index 19cb5a1a0..9d53774c0 100644 --- a/kronolith/lib/Event.php +++ b/kronolith/lib/Event.php @@ -230,7 +230,7 @@ abstract class Kronolith_Event /** * The VarRenderer class to use for printing select elements. * - * @var Horde_Ui_VarRenderer + * @var Horde_Core_Ui_VarRenderer */ private $_varRenderer; @@ -2531,7 +2531,7 @@ abstract class Kronolith_Event } if (!$this->_varRenderer) { - $this->_varRenderer = Horde_Ui_VarRenderer::factory('Html'); + $this->_varRenderer = Horde_Core_Ui_VarRenderer::factory('Html'); } return '' . diff --git a/kronolith/lib/Kronolith.php b/kronolith/lib/Kronolith.php index 410161126..16172df1f 100644 --- a/kronolith/lib/Kronolith.php +++ b/kronolith/lib/Kronolith.php @@ -76,7 +76,7 @@ class Kronolith Horde::addScriptFile('date/' . $datejs, 'horde'); Horde::addScriptFile('date/date.js', 'horde'); Horde::addScriptFile('kronolith.js', 'kronolith'); - Horde_Ui_JsCalendar::init(array('short_weekdays' => true)); + Horde_Core_Ui_JsCalendar::init(array('short_weekdays' => true)); if (isset($GLOBALS['language'])) { header('Content-type: text/html; charset=' . $GLOBALS['registry']->getCharset()); @@ -2527,7 +2527,7 @@ class Kronolith $date = self::currentDate(); $date_stamp = $date->dateString(); - $tabs = new Horde_Ui_Tabs('view', Horde_Variables::getDefaultVariables()); + $tabs = new Horde_Core_Ui_Tabs('view', Horde_Variables::getDefaultVariables()); $tabs->preserve('date', $date_stamp); $tabs->addTab(_("Day"), Horde::applicationUrl('day.php'), @@ -2557,7 +2557,7 @@ class Kronolith return; } - $tabs = new Horde_Ui_Tabs('event', Horde_Variables::getDefaultVariables()); + $tabs = new Horde_Core_Ui_Tabs('event', Horde_Variables::getDefaultVariables()); $date = self::currentDate(); $tabs->preserve('datetime', $date->dateString()); diff --git a/nag/lib/Ui/VarRenderer/Nag.php b/nag/lib/Ui/VarRenderer/Nag.php index 8d2247741..016e61645 100644 --- a/nag/lib/Ui/VarRenderer/Nag.php +++ b/nag/lib/Ui/VarRenderer/Nag.php @@ -1,7 +1,7 @@ * @package Nag */ -class Horde_Ui_VarRenderer_Nag extends Horde_Ui_VarRenderer_Html +class Horde_Core_Ui_VarRenderer_Nag extends Horde_Core_Ui_VarRenderer_Html { protected function _renderVarInput_nag_method($form, $var, $vars) { diff --git a/nag/list.php b/nag/list.php index d0df3a8f1..763667bb6 100644 --- a/nag/list.php +++ b/nag/list.php @@ -95,7 +95,7 @@ echo '
    '; if (!$prefs->isLocked('show_completed')) { $listurl = Horde::applicationUrl('list.php'); - $tabs = new Horde_Ui_Tabs('show_completed', $vars); + $tabs = new Horde_Core_Ui_Tabs('show_completed', $vars); $tabs->addTab(_("_All tasks"), $listurl, Nag::VIEW_ALL); $tabs->addTab(_("Incom_plete tasks"), $listurl, Nag::VIEW_INCOMPLETE); $tabs->addTab(_("_Future tasks"), $listurl, Nag::VIEW_FUTURE); diff --git a/news/admin/tabs.php b/news/admin/tabs.php index bda8b0da9..f5d715d0b 100644 --- a/news/admin/tabs.php +++ b/news/admin/tabs.php @@ -17,7 +17,7 @@ if (!$registry->isAdmin(array('permission' => 'news:admin'))) { } $vars = Horde_Variables::getDefaultVariables(); -$tabs = new Horde_Ui_Tabs('admin', $vars); +$tabs = new Horde_Core_Ui_Tabs('admin', $vars); $tabs->addTab(_("Sources"), Horde::applicationUrl('admin/sources/index.php'), 'sources'); $tabs->addTab(_("Categories"), Horde::applicationUrl('admin/categories/index.php'), 'categories'); diff --git a/news/lib/Forms/Search.php b/news/lib/Forms/Search.php index 85059a137..97cb035a6 100644 --- a/news/lib/Forms/Search.php +++ b/news/lib/Forms/Search.php @@ -60,7 +60,7 @@ class News_Search extends Horde_Form { */ public function getPager($info, $count, $url) { - $pager = new Horde_Ui_Pager('news_page', + $pager = new Horde_Core_Ui_Pager('news_page', Horde_Variables::getDefaultVariables(), array('num' => $count, 'url' => $url, diff --git a/news/lib/Search.php b/news/lib/Search.php index 969d2474c..2d4e76131 100644 --- a/news/lib/Search.php +++ b/news/lib/Search.php @@ -62,7 +62,7 @@ class News_Search extends Horde_Form { */ static public function getPager($info, $count, $url) { - $pager = new Horde_Ui_Pager('news_page', + $pager = new Horde_Core_Ui_Pager('news_page', Horde_Variables::getDefaultVariables(), array('num' => $count, 'url' => $url, diff --git a/news/lib/TagCloud.php b/news/lib/TagCloud.php index 5c540e4b9..2bb165211 100644 --- a/news/lib/TagCloud.php +++ b/news/lib/TagCloud.php @@ -12,7 +12,7 @@ * @author Duck * @package News */ -class News_TagCloud extends Horde_Ui_TagCloud { +class News_TagCloud extends Horde_Core_Ui_TagCloud { /** * create a Element of HTML part diff --git a/operator/search.php b/operator/search.php index 3b3f648b5..ca944b41b 100644 --- a/operator/search.php +++ b/operator/search.php @@ -70,7 +70,7 @@ $page = Horde_Util::getGet('page', 0); $pager_vars = Horde_Variables::getDefaultVariables(); $pager_vars->set('page', $page); $perpage = $prefs->getValue('rowsperpage'); -$pager = new Horde_Ui_Pager('page', $pager_vars, +$pager = new Horde_Core_Ui_Pager('page', $pager_vars, array('num' => count($data), 'url' => 'search.php', 'page_count' => 10, diff --git a/shout/lib/Shout.php b/shout/lib/Shout.php index 8701a7b9a..334b62125 100644 --- a/shout/lib/Shout.php +++ b/shout/lib/Shout.php @@ -245,7 +245,7 @@ class Shout static public function getAdminTabs() { $tabname = Horde_Util::getFormData('view'); - $tabs = new Horde_Ui_Tabs('view', Horde_Variables::getDefaultVariables()); + $tabs = new Horde_Core_Ui_Tabs('view', Horde_Variables::getDefaultVariables()); $tabs->addTab(_("Telephone Numbers"), Horde::applicationUrl('admin/numbers.php'), array('view' => 'numbers', id => 'tabnumbers')); diff --git a/skoli/entry.php b/skoli/entry.php index 6f4a1868e..b10ee2ae2 100644 --- a/skoli/entry.php +++ b/skoli/entry.php @@ -81,7 +81,7 @@ if ($actionID == 'delete') { // Get tabs. $url = Horde_Util::addParameter(Horde::applicationUrl('entry.php'), 'entry', $entry['object_id']); -$tabs = new Horde_Ui_Tabs('view', $vars); +$tabs = new Horde_Core_Ui_Tabs('view', $vars); $tabs->addTab(_("View"), $url, array('tabname' => 'Entry', 'id' => 'tabEntry')); if ($share->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::EDIT)) { $tabs->addTab(_("Edit"), $url, array('tabname' => 'EditEntry', 'id' => 'tabEditEntry')); diff --git a/turba/contact.php b/turba/contact.php index df928ed68..2948bd516 100644 --- a/turba/contact.php +++ b/turba/contact.php @@ -74,7 +74,7 @@ case 'DeleteContact': // Get tabs. $url = $contact->url(); -$tabs = new Horde_Ui_Tabs('view', $vars); +$tabs = new Horde_Core_Ui_Tabs('view', $vars); $tabs->addTab(_("_View"), $url, array('tabname' => 'Contact', 'id' => 'tabContact', 'onclick' => 'return ShowTab(\'Contact\');')); if ($contact->hasPermission(Horde_Perms::EDIT)) { diff --git a/turba/lib/View/List.php b/turba/lib/View/List.php index 4aec8646e..1ac2c8f35 100644 --- a/turba/lib/View/List.php +++ b/turba/lib/View/List.php @@ -61,7 +61,7 @@ class Turba_View_List { /** * The HTML renderer. * - * @var Horde_Ui_VarRenderer_Html + * @var Horde_Core_Ui_VarRenderer_Html */ var $renderer; @@ -114,7 +114,7 @@ class Turba_View_List { $this->list = &$list; $this->setControls($controls); - $this->renderer = Horde_Ui_VarRenderer::factory('Html'); + $this->renderer = Horde_Core_Ui_VarRenderer::factory('Html'); $this->vars = new Horde_Variables(); } @@ -217,7 +217,7 @@ class Turba_View_List { $viewurl = urldecode(Horde_Util::addParameter('search.php', $params)); $vars = Horde_Variables::getDefaultVariables(); - $pager = new Horde_Ui_Pager('page', $vars, + $pager = new Horde_Core_Ui_Pager('page', $vars, array('num' => $numitem, 'url' => $viewurl, 'page_limit' => $maxpage, diff --git a/turba/search.php b/turba/search.php index fd924036c..122ef3430 100644 --- a/turba/search.php +++ b/turba/search.php @@ -212,7 +212,7 @@ foreach ($addressBooks as $key => $entry) { /* Build search mode tabs. */ $sUrl = Horde::applicationUrl('search.php'); $vars = Horde_Variables::getDefaultVariables(); -$tabs = new Horde_Ui_Tabs('search_mode', $vars); +$tabs = new Horde_Core_Ui_Tabs('search_mode', $vars); $tabs->addTab(_("Basic Search"), $sUrl, 'basic'); $tabs->addTab(_("Advanced Search"), $sUrl, 'advanced'); if (count($editableAddressBooks)) { diff --git a/vilma/lib/Vilma.php b/vilma/lib/Vilma.php index ed2e8f16c..2705c8c45 100644 --- a/vilma/lib/Vilma.php +++ b/vilma/lib/Vilma.php @@ -72,12 +72,12 @@ class Vilma { /** * Create tabs to navigate the user manager area * - * return object Horde_Ui_Tabs object + * return object Horde_Core_Ui_Tabs object */ function getUserMgrTabs(&$vars) { $url = Horde::applicationUrl('users/index.php'); - $tabs = new Horde_Ui_Tabs('section', $vars); + $tabs = new Horde_Core_Ui_Tabs('section', $vars); foreach (Vilma::getUserMgrTypes() as $section => $desc) { $tabs->addTab($desc['plural'], $url, $section); } diff --git a/vilma/users/index.php b/vilma/users/index.php index b3d32576d..0affc5d1d 100644 --- a/vilma/users/index.php +++ b/vilma/users/index.php @@ -39,7 +39,7 @@ $page = Horde_Util::getGet('page', 0); $perpage = $prefs->getValue('addresses_perpage'); $url = 'users/index.php'; $url = Horde_Util::addParameter($url, 'section', $section); -$pager = new Horde_Ui_Pager('page', +$pager = new Horde_Core_Ui_Pager('page', Horde_Variables::getDefaultVariables(), array('num' => count($addresses), 'url' => $url, diff --git a/whups/admin/index.php b/whups/admin/index.php index aa7856fe2..3c6413bdc 100644 --- a/whups/admin/index.php +++ b/whups/admin/index.php @@ -26,7 +26,7 @@ if (!$vars->exists('action')) { // Admin actions. $adminurl = Horde::selfUrl(false, false); -$tabs = new Horde_Ui_Tabs('action', $vars); +$tabs = new Horde_Core_Ui_Tabs('action', $vars); $tabs->addTab(_("_Edit Queues"), $adminurl, 'queue'); $tabs->addTab(_("Edit _Types"), $adminurl, 'type'); $tabs->addTab(_("Queue/Type Matri_x"), $adminurl, 'mtmatrix'); diff --git a/whups/lib/Forms/VarRenderer.php b/whups/lib/Forms/VarRenderer.php index 725c36a0c..2b218d557 100644 --- a/whups/lib/Forms/VarRenderer.php +++ b/whups/lib/Forms/VarRenderer.php @@ -1,7 +1,7 @@ - * @package Horde_UI + * @package Whups */ /** - * The Horde_UI_VarRenderer_whups class provides additional methods for + * The Horde_Core_Ui_VarRenderer_whups class provides additional methods for * rendering Horde_Form_Type_whups_email fields. * * @author Jan Schneider - * @package Horde_UI + * @package Whups */ -class Horde_Ui_VarRenderer_whups extends Horde_Ui_VarRenderer_Html { +class Horde_Core_Ui_VarRenderer_whups extends Horde_Core_Ui_VarRenderer_Html { function _renderVarInput_whups_email($form, &$var, &$vars) { diff --git a/whups/lib/Query.php b/whups/lib/Query.php index 200832abe..5ddf99a7e 100644 --- a/whups/lib/Query.php +++ b/whups/lib/Query.php @@ -207,7 +207,7 @@ class Whups_Query { $edit = $this->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::EDIT); $delete = $this->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::DELETE); - $tabs = new Horde_Ui_Tabs('action', $vars); + $tabs = new Horde_Core_Ui_Tabs('action', $vars); $tabs->addTab(_("Ne_w Query"), $queryurl, 'new'); if (!$this->id || $edit) { $tabs->addTab(_("_Edit Query"), $queryurl, 'edit'); diff --git a/whups/lib/Renderer/Query.php b/whups/lib/Renderer/Query.php index f8ad7ebc2..f7e50f671 100644 --- a/whups/lib/Renderer/Query.php +++ b/whups/lib/Renderer/Query.php @@ -17,7 +17,7 @@ { global $whups_driver; - $droptext = Horde_UI_VarRenderer_html::selectOptions($whups_driver->getAllTypes()); + $droptext = Horde_Core_Ui_VarRenderer_html::selectOptions($whups_driver->getAllTypes()); include WHUPS_TEMPLATES . '/renderer/querysetcurrenttype.inc'; } diff --git a/whups/lib/Whups.php b/whups/lib/Whups.php index 9bf8b01f8..d3724707a 100644 --- a/whups/lib/Whups.php +++ b/whups/lib/Whups.php @@ -288,7 +288,7 @@ class Whups { */ function getTicketTabs(&$vars, $id) { - $tabs = new Horde_Ui_Tabs(null, $vars); + $tabs = new Horde_Core_Ui_Tabs(null, $vars); $queue = $vars->get('queue'); $tabs->addTab(_("_History"), Whups::urlFor('ticket', $id), 'history'); diff --git a/whups/query/index.php b/whups/query/index.php index bc6e96e4f..1ef651a52 100644 --- a/whups/query/index.php +++ b/whups/query/index.php @@ -148,7 +148,7 @@ $queryTabs = $whups_query->getTabs($vars); // Criterion form types. $queryurl = Horde::applicationUrl('query/index.php'); $vars->set('action', $_SESSION['whups']['query_form']); -$criteriaTabs = new Horde_Ui_Tabs('action', $vars); +$criteriaTabs = new Horde_Core_Ui_Tabs('action', $vars); $criteriaTabs->preserve('path', $vars->get('path')); $criteriaTabs->addTab(_("_Property Criteria"), $queryurl, 'props'); $criteriaTabs->addTab(_("_User Criteria"), $queryurl, 'user');