We're very happy announce the release of Fabrik 3.3. Our Joomla! application builder is now fully compatible with Joomla 3.4. This is a security update which we recommend you update to.

As usual its extremely gratifying to see everyone helping out on the code, in the forums and translating. Those people who have committed code to the project during this release include: gobezu, Jaanus Nurmoja, BodgeIT, Ajyama, Sophist, Robert Högberg, Bauer, Troester, Hugh Messenger, Rob Clayburn.

You can download Fabrik 3.3 here.

General

We have fixed a bug which could lead to a SQL injection attack. An update is strongly recommended

We ironed out a couple of issues that were blocking the use of Fabrik with Joomla 3.4

Most select lists (CDD) can now be rendered using Chosen

Improved index handling, this should increase page load times for list which use joins, or which have multi-select database join elements. The indexes are created on new or on save.

We've been seeing more issues with the fact we use Require.js to asynchronously load our Javascript, specifically with certain jQuery plugins such as widgetkit. These issues should be resolved now as we ensure that require.js is loaded last.

Recent versions of Joomla have introduced JLayouts. These micro-templates allow components to place markup in files which can be overridden inside a template. This system allows you fine grained control over the design of your page. An example of where this could be useful is when your site template uses a custom icon set, and you need to overwrite a button to use that icon rather than the standard icons supplied by Joomla. In this release we have started to move our element output over to use JLayouts. Currently we have done this for two elements:

  • Button
  • YesNo

The standard JLayout files for these elements is located in plugins/fabrik_element/{plugin}/layouts/. In each folder we can have up to three files:

  • fabrik-element-{pluginname}-form.php - Responsible for rendering the field in the form
  • fabrik-element-{pluginname}-details.php - Responsible for rendering the field in the details view
  • fabrik-element-{pluginname}-list.php - Responsible for rendering the field in the list view

To override these fields you should copy them and place them in 

  •  /templates/{mytmpl}/layouts/

Lists

  • When copying form with joined data, copy the joined data as well, rather than removing it from the original and pointing it at the copy.  First cut at this, need to make it an option. 
  • removing trailing \0, breaks Excel import

Plugins

Order

  • The order plugin will now correctly work with lists containing joined data.

Webservice

  • The button to trigger the webservice in the list view is now shown at the top of the list

Pivot

  • We've added the option to count or sum the data in the pivot view.

PHP

  • "return false;" from JavaScript now works in stopping PHP code from running.
  • The plugin's JavaScript code has had a "rows" variable added, which is an array of objects containing the selected rows' data.

Forms

Form submissions have been sped up for certain cases. Specifically any form plugin which was getting data from the form (e.g. the email plugin) will now render a lot quicker than before.

Fabrik has some extensive profiling options and these have been improved in 3.4. We can now profile the form submission process allowing you to pin point any parts of the submission process which take longer than expect. To access the form profiling you should add "&fabrikdebug=2" to your form's URL. When the form is submitted, any form redirect that would normally run is ignored enabling you to see the profile output.

We've added optional minimum and maximum notices which are shown when the user tries to add or remove repeat groups which are constrained by the min/max repeat options.

Whilst in the form module, failed validation messages were not being displayed if the form was set to not "submit with ajax".

Plugins

Email

  • Added option to run content plugins on email text.
  • Improved error message handling for invalid email addresses and failed sending
  • QR codes are now rendered correctly in the email

Joomla User

  • Set email to HTML mode in juser plugin as default.

Article Plugin

  • Was not setting featured ok when saving records in admin.

Comments

  • Added date format to local comments

SMS

  • Add a message field to the plugin and all fields now can use placeholders

 Redirect

  • The system message is no longer displayed if the plugin's thanks message is empty.

Limit

  • Added an option to show/hide the remaining number of allowed submissions

Elements

  • Add subdirectory option to element's list view icons
  • Added 'regex' and 'not regex' as option for element JS FX.  Accepts any regular expression text valid between the // in standard JS test(//)

Plugins

  • Added spotify element (github only) - shows a Spotify playlist widget

  Checkbox

  • Eval populate option added - create your checkbox options via custom PHP code.

GoogleMap

  • Added "geocode on load" option

Field

  • Fixing issue with input masking of fields in repeat groups.

FileUpload

  • Add device capture for tablets / mobiles. This allows you to take a picture with your mobile/tablet and upload it in the form
  • The crop feature no longer places a border around the cropped image.
  • Changed the default video display to use the HTML5 video tag, falling back to the original real player plugin.

Birthday

  • Added the format option "day month" which will allow you to also filter by "day month" - i.e shows all users with a birthday on a give day, regarless of their year of birth

Date

  • Fix for timezone being incorrectly applied when submitting on the backend, if date element is set to store_as_local. 

Databasejoin

  • A "Filter Where" option has been add, allowing a WHERE clause to be added when building "Show All" filters.

Notes

  • Improved layout for Joomla3, plus some issues with the AJAX update. 

Picklist

  • Adding PHP eval option - create your picklist options via custom PHP code.

Rating

  • Adding "Can Rate" ACL to rating element.

Visualizations

Google Maps

  • A small but very useful fix, the width setting can now take either a px or a  % value. You should use a percentage value if you wish to make your map responsive.

Advanced

Our PHP and JavaScript events system has been expanded. Here' a quick summary of the new additions:

  • Added a couple of PHP hooks, for
    • onJSReady
    • onJSOpts - allows you to  tweak form's JS options, which are in $formModel->jsOpts.  An example of this could be dynamically setting a group's repeat maximum with $formModel->jsOpts->maxRepeat[x] = y;
    • onAfterDeleteRows - when a row is deleted
    • onAfterDeleteRowsForm - when a record is deleted from the form view
  • Added a new JS event, called 'fabrik.viz.googlemap.ajax.refresh' which is fired when an AJAX refresh of the map visualization occurs
  • New JavaScript events have been added to advanced search
    • fabrik.advancedSearch.ready
    • fabrik.advancedSearch.row.added
    • fabrik.advancedSearch.row.removed
    • fabrik.advancedSearch.reset.

You can download Fabrik 3.3 here.