Fork me on GitHub

We talk about new ideas, improvements and anything related to the increasing splendor of our garden.

If you would like to keep in touch, you can subscribe to the blog feed or to the mailing list. You can also follow zena_ on twitter for finer grains of zena development and news.


  1. 1.2.3 Release

    Hi there, Zena 1.2.3 is finally out. This release is mainly concerned with incremental improvements of the framework. Maybe the most important aspect is that caching has been simplified by including the cache stamp in the filename (this implies some virtual host configuration update).

    Another important aspect is that Passenger is now the official deployment strategy.


    • Upload field tag to allow custom upload forms (with progress bar and Ajax updates)
    • img_tag_{mode} property to allow custom image tags for objects (we use it to display videos with !34! by having img_tag_std hold the code to insert the video. Javascript is possible but not with a [JS] [/JS] tag because of the Ajax stuff.
    • Live preview of custom forms ....
    • in_group zafu method on visitor.
    • Simplified caching using cachstamp in filename like foo.2349a.jpg.
    • Better support for Passenger (what we now use in all our hosts).
    • html_escape all properties on display by default.
    • Support for “sortable” in lists. <li do='each' sortable='true'>xxx</li>


    • Support for lang_list option when creating vhost files (automatic redirect to lang without needing Rails loading)
    • Support for Range class in Zafu.
    • Added options to query_parse to ignore unwanted parameters.
    • Added ‘hparams’ option to only return Hash parameters from params.
    • Fixed query_parse to convert dates to UTC.
    • Fixed form preview inside block.
    • Added unique id to img_tag_{mode} code generated ‘UUID’.
    • Added PATH_mode.format and [JS] marker to img_tag_{mode}.
    • Fixed form preview with long text (use POST).

    Gaspard Bucher

  2. 1.2.2 Release

    This release has an important new feature: filesystem stored zafu templates.

    This feature enables a more classic based development of complex applications.

    Other changes:

    • No need to use &gt; instead of ”>” in queries and RubyLess (better zafu parser).
    • Assignments in RubyLess by using set. This enables lots of interesting features such as preparing empty lists and triggering conditional queries, etc.
    • Template rebuild on partial query (in case a partial is called before the main template through a an Ajax call).
    • Added the “hash” property type (to store random strings).
    • Support for “new” in RubyLess: “”. Typically used to initialize empty lists in “set”: <r:set list='[]'>...
    • Fixed expire bug (some pages were not properly removed).
    • Basic javascript to create and update nodes “, Zena.put, ...”.
    • Added Javascript triggering on toggle.

    Gaspard Bucher

  3. 1.2.0 Release

    This release has the new xlsx generation engine and is a first step in the direction of a powerful javascript integration to ease batch work on objects.

    The first step is a the trivially simple grid editor.

    You can test the grid.

    Major changes

    And some minor changes to zafu like “tprefix” on select or to_date (to document).

    Gaspard Bucher

  4. 1.1.3 Release

    This is a small release with just a few bug fixes and little changes to make us all a little happier.

    Does not expire templates in “dev”

    The most important changes concern editing a live site (either an application or public website). Before 1.1.3, whenever you edited a template, all dependent compiled templates would instantly expire. This is fine if you never make any mistakes but otherwise this becomes pretty bad.

    Now, in dev mode, only the “dev” templates are expired as a safety net. Once everything is working as needed, you must expire the cache by hand. You can set “expire_in_dev” in “site” to get previous behavior (instant cache expiration).

    Monolingual virtual classes

    When you have a multi-lingual site, you usually do not want to translate CSS files and zafu templates. This changes helps avoid mistakes with this type of files.

    By default all TextDocuments are now monolingual. You can easily create a different TextDocument for a given language by manually changing the “lang” setting in the edit popup.

    Full list of changes:

    Major changes

    • Does not expire compiled templates when working in dev mode by default.
    • Added ‘monolingual’ option for virtual classes. All TextDocuments are monolingual by default.

    Minor changes

    • Support sorting by scope index fields.
    • Fixed bug in math brick (using Open4 instead of system with redirections).
    • Added ‘change_prop’ method in console.
    • Fixed a bug with 404 pages not showing in the correct language.
    • Fixed a bug with properties called ‘copy’ not working as expected.
    • Added tag for dynamic CSS.
    • Added support for ‘value’ in ‘date’ input fields.
    • Added comment on property definition.
    • Added ‘coalesce’ method in queries.
    • Added ‘asset_host?’ in Acl queries.
    • Fixed scoped DOM ids in saved template.
    • Cosmetic changes to backend.css (menu on the left).

    Gaspard Bucher

  5. Added support for coalesce

    With the new “1.1.0” release of query builder, we are now supporting “coalesce” in SQLiss.

    You can simply use it in queries such as:

    actions in project order by done_at.coalesce(todo_at) desc

    In the current trunk, we are working on making it easier to attach documents to any object by simply providing an attachment during create or update. More later…

    Gaspard Bucher

  6. older posts newer posts
    archives: 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014