Zenario 8.0

Our new major release, Zenario 8, is now publicly available! This includes several big new features.

Admin Toolbar

The admin toolbar is now responsive, allowing use on mobile devices. Also if you have a small browser window it changes size to be more friendly.

Many standard-definition icons have been replaced by high-res versions for "retina" screens.

Shortcuts to some commonly used buttons have been added on the right of the toolbar.

You can now click on the title of a content item or menu node on the toolbar to change it.

We've added the ability to immediately republish a hidden content item. We've also made a few tweaks to the buttons on the Admin Toolbar to make how to do this more clear.

Managing content items

When you create a new content item and press Save, Zenario will take you to that item's Edit tab. It will automatically add a <h1> pre-populated the content item's title if there is a WYSIWYG editor placed on the layout.

Aliases for content items now support both lower and upper-case characters.

We've added the ability to exclude a content item from the XML site map. There is now support for gated content (a visitor must fill in a form in order to see a gated page or document) and you can use this feature to tell search engines not to index the gated content item.

When duplicating a content item, Zenario now asks you what you wish to do with any plugins from the library that have been placed on the content item. You can either keep the same ones, or create copies. 

Managing plugins

You can now change a plugin's name whilst editing its settings. If you attempt to change a plugin's name, an option will appear to save a copy of the plugin instead of saving over the existing one.

The drop-down menus for managing slots will now always appear when on the Edit Plugin and Layout tabs of the admin toolbar. (Previously, the drop-downs used to appear conditionally, which could cause some confusion.)

We've tweaked which options appear in the drop-down menus and when, to make things easier to find.

Improvements to the Diagnostics screen

  • The Diagnostics screen now checks which Apache modules are available, and warns you if a recommended one is missing
  • The Diagnostics screen will now warn you if Scheduled Tasks are not enabled, or if they appear to have stopped running
  • The Diagnostics screen now shows you a list of unpublished content items, rather than just a count
  • The Diagnostics screen now reports non-standard changes in your robots.txt file
  • Any messages on the Diagnostics screen that suggests that you change a site setting now has a link that takes you directly to the setting its talking about.

Editing plugins in Nests and Slideshows

We've added shortcut buttons next to each plugin in a nest that lets you quickly edit the options for that plugin.

Zenario Forms

When a user fills in a Zenario Form and makes an incorrect entry, the relevant field(s) are now highlighted, so the user can more easily amend his input.

Improvements for Admin permissions

The admin permissions for managing layouts, users and contacts have been reorganized to be a little more friendly to set up.

All frameworks have been rewritten to use Twig

In this version we've dropped support for the older, slower, "Tribiq" framework system. All of our plugin frameworks have been rewritten to use Twig.

Twig is more familiar to web developers, and offers several features that the old "Tribiq" framework system did not, including the ability to cache frameworks for a faster run-time.

Zenario has been rewritten to use an Autoloader

All core libraries in Zenario now use Composer's autoloader. This means that libraries can be selectively loaded for smaller memory footprint.

Security-related changes

Extranet user password can no longer be stored in plain-text. If you were still using this plain-text passwords, any such passwords will be automatically encrypted and hashed when you next apply database updates.

We've removed the Password Reminder module. If you were still using this plugin on your site, you should install the Password Reset module instead.

We've added a warning on the diagnostics page if you're using the Extranet Login plugin but are not using SSL.

If you wish to download a backup of the site, you must now re-enter your administrator password before you can download the backup.

Other changes

  • You can now specifically set the default privacy option for newly-uploaded images.
  • You can now choose where you want the admin login link to appear on the website for administrators: possible options are top left, top center, top right, bottom left, bottom center or bottom right.
  • The Menu Navigation section in Organizer has been reorganized to be friendlier and quicker to use.
  • The Scheduled Tasks section in Organizer has been tweaked slightly to make it more transparent and easier to use, with a master on/off switch for all jobs.
  • When email debug mode is enabled, all emails that are sent will now have "DEBUG MODE" added to their subject line. Also, we've now placed a limit on how large these emails can be.

New features for designers

Zenario 8 includes some new features that designers can take advantage of:

Auto set the height of elements

In Zenario 8 there are now new CSS classes that you can add to your HTML to automatically set elements to the same height, for example:

<div class="setmychildren">
<ul>
        <li class="tothesameheight"></li>
        <li class="tothesameheight"></li>
    </ul>
</div>

You can also set this differently on a responsive site, e.g.:

<div class="setmychildren">
<ul>
        <li class="tothesameheight"></li>
        <li class="tothesameheight ondesktop"></li>
        <li class="tothesameheight onmobile"></li>
    </ul>
</div>

Custom break points in Grid Maker

Grid Maker now has two custom break points, that designers can use when styling their plugins. This avoids a designer having to hardcode the values of custom break points in their CSS code.

You can use them as follows:

body.overBP1 div.my_class {
/* Some CSS if wider than breakpoint 1 */
}

body.underBP1 div.my_class {
/* Some CSS if smaller than breakpoint 1 */
}

body.overBP2 div.my_class {
/* Some CSS if wider than breakpoint 2 */
}

body.underBP2 div.my_class {
/* Some CSS if smaller than breakpoint 2 */
}

Targeting devices with Touch screens

Zenario now allows designers to add custom logic for devices with (or without) touch screens.

You can add different styles in your CSS code as follows:

body.touch .my_class {
/* Rules for touch screens */
}

body.no_touching .my_class {
/* Rules for devices without touch screens */
}

There is also a new JavaScript function, zenario.isTouchScreen(), that you can call to check this.

Ability to call JavaScript from a Twig Framework

You can use the callScript function to call any JavaScript library function from your Twig Framework.

For example, if your module has the following function definition in it's plugin.js file:

my_module.setInfo = function(selector, title, message) {
$(selector).tooltip({
items: "*",
        content:
         '<h2>' + zenario.htmlspecialchars(title) + '</h2>'
         + '<p>' + zenario.htmlspecialchars(message) + '</p>'
    });
}

Then you can call this from your Twig Framework:

<a id="info_{{containerId}}">info</a>

{% set title = 'Information' | trans %}
{% set message = 'Here is some information' | trans %}
{% do this.callScript('my_module', 'setInfo', '#info_' ~ containerId, title, message) %}

Ability to load JavaScript libraries from a Twig Framework

If your Twig framework needs a JavaScript library to function, you can use the requireJsLib() function to automatically include the library if it's not already on the page, e.g.:

{% do this.requireJsLib('zenario/libs/unmanaged/mit/jquery/jquery-ui.button.min.js') %}
{% do this.requireJsLib('zenario/libs/unmanaged/mit/jquery/jquery-ui.spinner.min.js') %}

Ability to call jQuery from a Twig Framework

If you are using a jQuery library, then you , and use the new jQuery() function to apply it to elements in your framework, e.g.:

<input type="text" class="example" value="10" />
<input type="text" class="example" value="20" />

{% do this.jQuery('#' ~ containerId ~ ' input.example', 'spinner', {step: 10}) %}

Notes for developers

Version 8 of Zenario includes some compatibility-breaking changes from version 7:

Removal of the old "Tribiq" framework system 

All support for the old "Tribiq" framework system has been removed.

Where you have used one of these frameworks, you will need to rewrite it as a Twig framework.

Most third party libraries now use either Bower or Composer

Where possible, we now use either the bower or composer package managers to manage our third libraries.

As a result, we've reorganized our libraries/ directory.

If you linked to anything in the libraries/ directory, you may need to adjust your links as the paths have changed.

All core libraries now use Composer's autoloader

As all of our core library of functions now use composer, any PHP code you've written that calls them will need to be rewritten to adjust to their new names.

A tool has been added at zenar.io/php-functions-zenario-8 that allows you to search for the old names of the functions to find out what they have been renamed to.

Calling functions from within Twig frameworks

Many of our core library functions can now be called from inside Twig frameworks.

The documentation at zenar.io/php-functions-zenario-8 will tell you which ones, and how to call them.