Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

612 lines (438 sloc) 21.857 kb
Welcome to Zotonic!
Release 0.9.0, not yet released
* New core features:
Ability to make mobile sites using automatic user agent classification
and template selection based on the detected user agent.
All base HTML has moved to use the Twitter Bootstrap CSS framework
instead of Atatonic. This includes the admin (which got a new design)
and the base templates for the skeleton sites.
* New tags/changed tags
{% javascript %}...{% endjavascript %}
Adds javascript that will be run after jQuery has been initialized.
In dynamic content it will run after the DOM has been updated with the
template where the javascript was defined.
{% image %} new attribute: imageclass
Image classes are defined using property files in the template
directory. Which image class definition is chosen depends on the
user agent classification.
* New filters
Finds the menu below a particular resource id.
Release 0.8.0, released on 2012-04-11
* New core features:
Module manager: module manager startup stability fixes, module
dependencies and starting/stopping modules in the correct order.
Status site - the site status got a redesign to be more in line with
the current site. It now shows a friendly welcome
message and requires a login to view / manage the running zotonic
PostgreSQL - we stabilized the pgsql connection pool in the presence
of database connection failures and improvoved query timeout
The "host" option in a site's config file is now optional. When not
present it will be derived from the site's directory name.
* New / updated modules:
** mod_oembed - Provides an easier way to embed external content into
your site, using the OEmbed standard.
** mod_translation - added support for RTL languages like Hebrew and
Arabic in the admin interface. Content pages that are translated in
multiple languages now have a separate URL for each language
version. Translations of the admin interface were added for Irish,
Spanish, Estonian and Polish.
** mod_mailinglist - Improved the mailinglist interface. It is now much
easier to track to which list a page has been sent to, to preview
the mailing and to view and manage bounced emails.
** mod_development - On Linux, development has been made easier by
integrating inotify. Supports on-the-fly compilation of Erlang
files, flushing caches, and compiling/minifying
* Other minor features
** New filter: index_of, which gives the index of an item in a list.
** filter_random:random/3 - create random sublist with length l.
** range filter: easily generate lists with integers
** replace_args filter: replace $N in string from a list of replacement values.
** date validator: validate input date against a given date format.
* Development process
The git master branch switched to using git submodules for the most
important external dependencies.
Documentation got updated, most source files now have @doc tags which
are generated and available online at from
Release 0.7.0, released on 2011-07-28
* New core features:
Native SMTP support for sending and receiving e-mails in any Zotonic
site. We integrated Andrew Thompson's gen_smtp library which allows us
to manage outgoing ánd incoming mails. mod_logging provides a new
email log-view for inspecting what mails go in and out.
A "zotonic" shell command. The "" shell command has been
replaced by a more generic and more powerful shell command with
support for pluggable subcommands.
Module repository: Zotonic now supports installing system-wide modules
which are not part of the core repository. We have created a place
where externally contributed modules can be linked at Modules registered on that site
can be easily installed through the "addsite" subcommand.
The default website has been replaced by the notion of "skeleton"
sites. The "zotonic addsite" command lets you create a new Zotonic
website based on one of the (currently two) website templates.
* New modules:
** mod_email_relay
Relay received e-mails to an user's email address. Serving as an
example for the SMTP functionality, this module looks up a username
by the local part of a received e-mail and forwards the mail to the
mail address the user configured.
** mod_email_receive
Handle received e-mails, notifies email observers depending on a
stored mapping of recipient addresses.
** mod_import_csv
Fairly generic module for importing CSV files, updating or creating
new content on the fly.
** mod_import_wordpress
Basic import module for Wordpress WXR file format, allowing you to
migrate a Wordpress blog into Zotonic.
** Discontinued modules
To make Zotonic more lightweight and remove some of the build
dependencies, some infrequently used modules have been removed from
the core and moved to their own repository, at These modules are
mod_search_solr, mod_pubsub, mod_slideshow, mod_broadcast,
mod_imageclipper, mod_admin_event and mod_calendar. They can still be
easily installed with the help of the "zotonic installmodule"
command. The mod_emailer module (and its esmtp library) has been
removed in favor of the native SMTP sending/receiving capabilities.
Each module now also can have its own dependencies by including a
"deps" subfolder in the module. This is used for example in the
mod_pubsub external module which has the exmpp library as a dependency.
* Other minor features
** to_json filter for representing template values as JSON objects
** split filter for splitting a string
** slice filter for manipulating lists
** Added {% raw %}..{% endraw %} support for representing literal code blocks.
** erlydtl: Added possibility to define atoms using backquoted strings.
** admin templates are reorganized, allowing to write admin customizations with less code
** translations of the admin updated and more translations added
* Bugfixes
Too many bugfixes to list. However, the base system is becoming more
stable and this release aims to be a good step towards the 1.0.
Release 0.6.1, released on 2011-07-06
This is a bugfix release. See doc/changelogs/0.6.1.txt for all the
relevant bugfixes.
Release 0.6.0, released on 2011-02-12
* New features:
** SSL support
Zotonic has gotten support for serving web pages over secure HTTPS
connections. When configured, it listens by default on port 8443.
See for details.
** z_logger
A new subsystem for the low-level logging and tracing of requests.
This module should be used to log lower level events during
development time. Higher-level log messages (e.g. events by
Zotonic modules) are still handled by 'mod_logging'.
** multilingual content
Every resource can have be translated in as many languages as you
like. The admin has gotten an interface to provide the editing of
the multiple language versions. Available languages are fully
dynamically configurable.
** z_depcache
Partial rewrite of depcache system, is now faster and using more
the process dictionary of the calling process to cache often used
* New and changed modules:
** mod_signal
New module providing a handy signal and slot mechanism for use in templates.
** mod_tkvstore
New module providing a simple typed key/value store for modules and Erlang code.
** mod_translation
Check if the user has a preferred language (in the user's persistent
data). If not then check the accept-language header (if any)
against the available languages.
** mod_mailinglist
Tweaks in the templates, updated dutch translations; do not send
mail when deleting recipient from admin; Added 'recipient_id' to
some e-mails so that the e-mails are sent in the correct language.
** mod_authentication
Fix user name display in password reminder e-mail.
** mod_emailer
Fix for e-mail override, escape the '@' in the original e-mail address.
Added flushing of poll messages
** mod_seo
Added option to set a no-index for a complete site.
New Google Analytics tracker code. With thanks to Richard Fergie.
** mod_contact
Configurable from address for contact email
** mod_admin_identity
Fix for finding users, select only identity records with type 'username_pw'
** mod_calendar
Better handling for undefined date_end values.
** mod_search
Improper months ordering in archive_year_month query. (#134)
** mod_menu
Possibility to create an arbitrary number of different menu's. Also
a new filter (menu_trail) which gets the menu trail for the main menu.
* Changes to template filters and tags
** 'first' filter
added optional length parameter
** min/max and minmax
3 new filters were added to clamp a value in an (integer) range.
** filesizeformat
New filter, similar to the Django filesizeformat filter.
** lib tag
Extended the lib tag with a 'use_absolute_url' option.
** confirm/alert actions
These actions were changed and now use HTML dialogs instead of javascript popups.
** reversed
New filter to reverse a list
** menu tag
Added 'menu_id' parameter to specify which menu to render
** date_diff
New filter to calculate the difference between two dates
** tinymce_add, tinymce_remove
New actions to dynamically initialize of de-initialize rich textareas
** trigger_event
New action to trigger a named wire.
** wire
Added a new 'visible' wire type, which triggers when the wired
element comes into view (by scrolling or using 'show').
** lazy
New scomp which shows a 'loader' image and performs onetime actions
when loader comes into view.
* General bug fixes
- Fix for 'double-dot' in e-mails when using postfix. Also encode the $. characters using quoted-printable.
- Fix for format_price filter. Show thousands when no cents.
- Make video embed code editable.
- Merged various webmachine fixes, updating it to 1.7.3:
- support {stream, TotalSize, StreamFun} body result for range-capable streams
- Add infinity timeout to gen_server calls
- Allow multiple IP/port bindings
- split chunk header on semicolon just in case a client is using chunk extensions
- properly extract peername from all rfc1918 addrs
- change H7 to match on any if-match, not just *
- webmachine: WM-1.7.3(compat) ignores client's Content-Type on HTTP PUT requests (#130)
- webmachine: prevent using chunked transfer encoding with HTTP/1.0.
- increase the startup timeouts for the gen_servers to prevent startup race condition
- Update mochiweb to latest version from mochi/mochiweb github repository (1.5.0)
- Pulled latest epgsql driver to support Postgres notifications.
- Added additional mime types (Office 2007, .rar)
- z_session: Only mark the persistent store as dirty when a persistent value changes.
- pgsql: Fix for a problem where a postgres connection was not returned to the pool in case of a sql error.
- z_media_preview: some files without a preview where not showing an icon.
- fixed an DoS vulnerability in Mochiweb/SSL
- Added flushing for most periodic internal messages (e.g. tick, poll)
- windows: fix build.cmd; remove some unix-specificness from imagemagick shell commands
- mochiweb: Cookie expire date format string now follows rfc2109
- ACL checks on static file serving
- Comet: support for cross-domain comet connections
Release 0.5.0, released on 2010-10-03
* New features:
** Simpler module system
Modules are simpler, do not have to be a fullblown
gen_server. Registering z_notifier for modules is made more simpler
by using erlang's introspection on modules.
** i18n support through gettext
Gettext .po and .pot file support for translations. Templates can
be translated per module. Pot files are automatically generated
from the templates.
** Pluggable Access Control system
The new ACL structure works through pluggable ACL modules. Two ACL
modules are included as examples. mod_acl_adminonly, where all
users are admins, and mod_acl_simple_roles, which implements a
simple role based ACL system.
** Authentication can now be customized and extended.
mod_authentication is the basic module used for
authentication. This module can be extended. The mod_facebook is an
(incomplete) example of such an extender. mod_authentication
implements the username/password authentication, including logon
and logoff. It also supports 'password forgotten' e-mails.
** User signup
Non admin users can sign up using the mod_signup. This module works
in harmony with the authentication module and authentication
** New OTP supervisor hierarchy.
The PostgreSQL connection pool is now part of the individual
sites. Sites are more isolated and can be individually started,
restarted or stopped. It is possible to add and remove sites
without restarting Zotonic. Modules are now isolated and the
running status of a module is displayed in the admin's module
** A status overview site, zotonic_status.
zotonic_status shows the running status of all sites. When logged
in, the user can start/stop/restart sites using his browser. It is
also possible to do 'hg pull' updates of sites that contain a
mercurial repo.
** New ErlyDTL tags: {% inherit %}, {% overrule %}
** New ErlyDTL support for multiple argument {% with %}: {% with a,b as c,d %}
** New ErlyDTL support for filters with multiple parameters.
** New ErlyDTL test set, including regression tests.
** New ErlyDTL filters
group_by_title_firstchar, is_visible, pprint, urlize, without_embedded_media.
** Media preview enhancements
{% image %} now supports the the following new arguments:
'extent' - create a larger image then the original not by scaling
up but by adding a border to the image.
'removebg' - removes the image's
background. It accepts an optional fuzziness parameter (range
'upscale' - Forces a small image to scale up to the requested
** Extended support for Websocket connections.
The two newest protocols, as used by Chrome and Safari, are
** mod_development improvements
It now supports turning on or off the concatenation of {% lib %}
includes as one file or separate files, and can give a live trace
of translated templates, showing clearly the template inheritance
and selections.
** mod_menu improvements
It implements the menu now as a template, easing your own menu implementation.
** mod_emailer improvements
It can now inline images into the e-mails
** New: mod_slideshow
It can make a slideshow of any collection, you can add your own slide templates.
** New: mod_contact
Simple contact form which gets sent over e-mail
** New: mod_facebook
Facebook logon
** New: mod_imageclipper
A simple javascript image-clipper bookmarklet for grabbing images
from other websites.
** New: mod_logging
A realtime log of debug messages and errors in the system.
** System wide configuration system (z_config) using a configuration file at 'priv/config'
* Bugfixes:
** AllowHTML5 audio and video tags (#75)
** Typo in m_config, line 127. undefind -> undefined (#83)
** setting initial admin password does not work (#88)
** After upgrading the code to latest changeset admin authentication causes exception (#91)
** Menu module does not follow ACL rules (#92)
** Crash in using Erlang R14A on Mac OS X 10.6 (#93)
** Extra Atom Link (#95)
** Makefiles use rm GNUism (#96)
** z_email:split_name_email/1 does not what it says it should do (#97)
** dots in page paths are transformed into dashes (#98)
** attaching media to pages does not work correctly (#99)
** After a module crashes, the new dynamic observe_* methods are not re-initialized (#100)
** setting page path and unique name is broken (#101)
** IF statements on empty rsc_list structures (#104)
** When image is too small, providing only a width should not make the image very large (#105)
** And many various other fixes which users noted on the mailinglist and were fixed quickly.
Release 0.4.0, released on 2010-04-19
* New modules:
** mod_pubsub
Enables resource sharing over XMPP's PubSub; share content between
sites and get realtime updates when content changes. See:
** mod_search_solr
Added a module which plugs into Zotonic's search system to support
Solr ( Using Solr enables quick
fulltext searching and facetting.
* New features:
** Default site improvements
The default site of a vanilla Zotonic install has been improved
with nicer graphics, cleaner typography, a "contact form"
example and styles for the Twitter module.
** "More results" scomp
A twitter/facebook style ajaxified "read more" pager, which is a
button which will fetch more results for the current search
question inline on the same page.
** Windows support
Initial support for building and running Zotonic on the Windows platform.
** Database schema support
Multiple sites running inside one Postgres database is now possible
thanks to Postgres' support for multiple table namespaces (schema's)
** Template expressions
It is now possible to use full boolean and arithmetic expressions in the ErlyDTL templates.
** Webserver IPv6 support
** Yandex.Video support in mod_video_embed module (#52)
** PID-file for zotonic (#74)
** Support for HTML5 audio/video tags in TinyMCE editor (#75)
** Newer TinyMCE 3.3.2 release from upstream (#69)
** Newer Mochiweb r153 release from upstream
* Bugfixes:
** page_path controller should not redirect to the default_page_url (#6)
** Get the name of the current dispatch rule (#21)
** zotonic fails after postgresql restart (#49)
** Unreliable pivot? (#50)
** Module manager should feedback when module cannot be started. (#51)
** Do not depend on the 'default' site (#59)
** i18n of scomp_pager (#62)
** Buttons and "Logoff" link problems in Chrome (#63)
** Comment form breaks on new default site (#64)
** Getting an unknown_rsc error on startup (#66)
** Zotonic fails to (re)start if an existing admin panel is open with browser supporting WebSockets (#70)
** Can't save location without e-mail (#71)
** Improve the default styles to include list bullets/numbers (#72)
** Twitter module cannot be enabled (#76)
Release 0.3.0, released on 2010-01-25
* New modules:
** mod_comment
Enables a simple commenting system on your site using mod_comment.
* New core features
** A new default site
The default site of a vanilla Zotonic install is now modelled after
a simple blog-style website, complete with an archive section,
keywords, navigation to previous and next posts, atom feeds and comments.
** Speed improvements
The Webmachine code was restructured to be more lean-and-mean,
yielding up to 20% more performance on page requests.
** WebSockets support
When WebSockets is available in the browser, then it is used as a
replacement for the Comet long poll. Currently only Google Chrome
supports this feature but it is expected to arrive in other
browsers soon.
** Admin updates
Support for editing a location (Google map picker), a new
collection type "query" was added for creating "saved searches".
** EUnit support
A start has been made to put the core functionality of Zotonic in
unit tests using the EUnit testing framework. As of yet, only a
small fraction of the code has been covered, but we'll keep working
on increasing the code coverage of the tests.
* Bugfixes:
** Resizing animated GIFs (#28)
** Determining EXIF orientation for images (#27)
** The OAuth API key management interface is now available from the admin. (#35)
** Hiding "meta" pages from the admin overview (#12)
** And dozens of small fixes which did not go through the issue tracker.
Release 0.2.0, released on 2009-12-11
* New modules:
** mod_broadcast
Send system messages to all users which are currently logged in in
the Zotonic admin.
** mod_calendar
Shows event resources in a week-overview, and generates ICalendar
** mod_mailinglist
Module which allows you to define groups of recipients and send
mailings to them. Can also send via the unix sendmail program.
** mod_twitter
Receives feeds for Zotonic persons,using the Twitter streaming API.
* New core features:
** "catinclude" and "all catinclude" tags
These include templates based on the category of a resource. Used
in the admin to create custom fields based on category.
** Query search model
Generate lists of resources on the fly. Used in mod_atom_feed to
generate atom feeds, and has an API entrypoint, /api/search.
** More template filters:
in_future, in_past, rand, twitter, escape_ical
* Bugfixes:
** Dynamic postgresql pool size, based on system load (issue #4)
** Issue in postgres pooling on stresstesting (#15)
** Uploaded files now get a proper mime type and extension (#5)
** And other issues: #2, #3, #9, #11, #14, #19, #20
Release 0.1.0, released on 2009-11-13
* Initial release.
* Packaged the site as the prime "example" site in the default install.
Jump to Line
Something went wrong with that request. Please try again.