Last Modified 2014-11-27 by Jan Schneider


Hydra is the new CMS/wiki-like app being created for Project/HordeWeb



Hydra is being developed in the Horde hatchery


ChuckHagenbuch is thinking about Hydra a lot.


Draft specification

We need some sort of CMS to manage the content of the site and to make some areas user-editable like the current wiki. We may adopt an existing CMS, or we may adapt some of our own existing code. I propose that we create a new app similar to Wicked and the old Giapeto app, with the following feature list:

  • Must have a solid API for plugins, external access, embedding, etc.
  • Support for different page content-types (wiki, HTML, textile)
  • a GUI HTML editor for html content pages
    • loki and fckeditor seem most promising so far for this; I want something that supports h1-h6, p, and tables at least - no <font>, mostly semantic markup.
  • inline preview (instead of wicked's popup - can just be an overlay). only necessary for non-HTML
  • permissions like Wicked
  • implicit or explicit hierarchies based on / as a separator
  • use Horde_Routes for URL management
  • use Rdo for data classes
  • store versions of content like wicked does
  • Good search based on Horde_Content_Index
  • generate feeds of edit activity across the site/sites; good storage of when and by whom content was last edited
  • hierarchical navigation of content (http://twiki.org/cgi-bin/view/Plugins/TreePlugin)
  • support for URL shorteners (http://googlecode.blogspot.com/2011/01/google-url-shortener-gets-api.html or built-in?)


We should have a few nice, if generic, layouts available by default. See http://www.noupe.com/wordpress/15-high-quality-premium-like-free-wordpress-themes.html for some potential inspiration/sources.


Page Object


- how to return block from driver, inherit Block methods, but also inherit Rdo_Base

Mapper! Mappers are the drivers


  • text_to_html
  • html_to_text
  • wiki_to_html
  • wiki_to_?
  • textile_to_html

Horde_Text_Transformer::transform($text, $from, $to = 'html');

  • finds the best transformer
  • if there's no exact match, sees if there's an intermediate through 'text' (i.e., textile_to_text goes from textile_to_html through html_to_text)

Other potential formats


Usage Roles

First guess

  • (anonymous) visitors
  • (logged in or anonymous) users that interact with application widgets (shop, wiki, whatever) on the front-end website side
  • (logged in) users/editors that generate content by direct interaction with the "horde desktop" and its applications like jonah, wicked in the traditional way
  • (logged in) site operators that can edit layouts, style sheets etc
  • (logged in) hydra application admins that can add new Websites etc

chuck suggested that the "horde desktop" role should be solely a content administration role.
End users should see a website that doesn't necessarily look like an application.

--Ralf Lang

Old requirements list from the rampage cms project

Steps from Giapeto:

  • Templates have been moved into the VFS. A default template is loaded if none are present. Now we need a template manager for editing templates.
    • Simplify configuration as much as possible.
    • Allow for hosting multiple sites from one giapeto config. Need a way to differentiate. Perhaps have a small set of files that host a giapeto site? Problem is then you wouldn't be able to create them through the web.
    • Probably want to keep php4 compatibility for now
    • Need some sort of workflow
    • Versioning: At least one previous version should be kept to facilitate rollback
    • Default config should result in a reasonable site that looks like a web site, not a Horde app
    • Ease of use all over
    • Rely on Horde_Template blocks integration, instead of "main" content area with confusing block splitting?
    • If so, need some sort of a "compositeblock" functionality to allow users to put custom content into an area without editing a template
    • Provide a standard blog template with Jonah integration?
    • How to handle user-supplied images? Not galleries - do that through Ansel - but page design images - borders, etc.
    • Should sites be able to lock themselves to a specific theme? Probably...
    • Give a theme selector widget for sites that want to allow variation
    • If possible, make the CMS link in the Horde sidebar go to an admin screen, while having /horde/giapeto/ still be the root user-facing site

CMS Suggestion: Add some native support for Horde_Blocks or a new kind of widget. That will encourage more people to build Blocks which one can integrate into Websites.Currently you only need few lines of code but if the CMS is going to be a new app for release, this may really push Horde deployment a step forward.See also the CMS module of egroupware which allows joomla templates to be used, and easily integrates all egroupware apps (but is a bit clumsy)

The page object will glue together a grid of widgets (plain html content widgets, hydra's own menu/navigation widget, horde app

block widgets, etc) with a style, header object, footer object etc to a page which can be rendered to a complete html page or other output type.


Relevant tools/resources for web sites to integrate with/consider for inspiration:

Content auto-tagging:

Show authorship in google search results:

Back to the Project List