Notes on converting apps from Horde 4 to Horde 5. These are by far not complete. ++ Mandatory +++ Use Horde_PageOutput * There is a new class Horde_PageOutput which is an OO-style output buffer* horde/templates/common-header.inc++++ common header to $page_output->header horde/templates/common-header.inc does not exist anymore @@---require $registry->get('templates', 'horde') . '/common-header.inc'; echo Horde::menu();@@ @@+++ $page_output->header(array( 'title' => _("List") )); @@ ++++ Page Footer @@---require $registry->get('templates', 'horde') . '/common-footer.inc';@@ $page_output->footer(); ++++ Adding Javascript @@---Horde::addScriptFile('jquery-ui/jquery-1.7.min.js', 'insysgui');@@ @@+++$page_output->addScriptFile('jquery-ui/jquery-1.7.min.js');@@ +++ New parameter format for entries in menu In Application.php's menu function, entries now go like this <code> $menu->add(Horde::url('data.php'), _("_Import/Export"), 'horde-data'); </code> It's link, caption, css class. The Icon now has to be defined in css: <code> .turba-edit, #tabEditContact a { background-image: url("graphics/edit.png"); } </code> ++ ++ UI +++ Topbar search bar * If your app sported a custom search bar (like wicked, sesha or whups), convert it to the Horde Topbar <code> $topbar = $injector->getInstance('Horde_View_Topbar'); /* Make topbar visible */ $topbar->search = true; /* Define where to redirect when the button is clicked */ $topbar->searchAction = new Horde_Url('list.php'); /* Define the grayed-out hint text in the search field */ $topbar->searchLabel = $session->get('sesha', 'search') ?: _("Stock Id"); /* Define a search icon. Leave away if you want the default */ $topbar->searchIcon = Horde_Themes::img('search-topbar.png'); </code> +++ Custom apps handling If your conf.xml had such a section <code> <configsection name="menu"> <configheader>Menu Settings</configheader> <configmultienum name="apps" desc="Select any applications that should be linked in Insysgui's menu" required="false"> <values> <configspecial application="horde" name="apps" /> </values> </configmultienum> </configsection> </code> drop it. It won't work anymore now that the app-specific menu lives in the sidebar.