3.1.4

Search Plugin

New Feature : Search Plugin

Introduction of the search plugin for Joomla.
At install, the plugin will automatically be installed in the 'search' plugin folder and will be enabled automatically.
You can now use the Joomla search module to find your component datas.

Implementation

In the component config, simply define "Include Search Plugin" to "Yes"
Search Plugin Config Component
Only the tables with a front-end search filter will be considered as "searchable".

Improved ORM

  • Search: default logic : ‘OR'
  • Select: Use '.' for tableless based namespace
  • SQL concat() function

Improved model

  • LIST : getRoute() for getting item URL
  • Debug state for dumping the query : 'debug.query'

Fixes

  • Logout problem in sandbox fixed

3.1.3 - Router slug

New Feature : Router slug

Your component is now able to re-use the alias (From the alias Wizard) for creating beautiful URLs.
It works also for Foreign Key filters.
The following examples are available in the sample component (Hello My World)

Slug

Here an example with slug :
index.php/component/hellomyworld/city/city/9-canberra

or :
index.php/component/hellomyworld/city/city/canberra

Filters

Example with continent filter:
index.php/component/hellomyworld/cities/cities/europe

Example with country filter (in second position):
index.php/component/hellomyworld/cities/cities/-/france

Example with continent + country filter:
index.php/component/hellomyworld/cities/cities/europe/france

Configuration

To custom the router, simply refers to the bottom of the router.php file, in the XxxxRouteConfig()
The first index is always the view name.
Then, every sub entry represent the order of the segments.

array(

// CITY (ITEM)

    // First segment : VIEW name
    'city' => array(

        // Second segment : LAYOUT name
        array(
            'type' => 'layout'
        ),

        // Third segment : SLUG
        array(
            'type' => 'slug',
            'aliasKey' => 'alias'   // The router must know the alias field to search on
        )
    ),

// CITIES (LIST)

    // First segment : VIEW name
    'cities' => array(

        // Second segment : LAYOUT name
        array(
            'type' => 'layout'
        ),

        // Third segment : FILTER (continent)
        array(
            'type' => 'filter',
            'name' => 'country_continent',  // Filter name
            'model' => 'continent',         // Must know the name of the model to search on
            'aliasKey' => 'alias'           // If the related model has a slug, you can define this alias key (it will automatically instance a slug)
        ),

        // Fourth segment : FILTER (country)
        array(
            'type' => 'filter',             
            'name' => 'country',            // Filter name
            'model' => 'country',           // Must know the name of the model to search on
            'aliasKey' => 'alias'           // If the related model has a slug, you can define this alias key (it will automatically instance a slug)
        ),

        // Fifth segment : FILTER (travellers)
        array(
            'type' => 'filter',             
            'name' => 'travellers',         // Filter name
            // 'model' => 'traveller'       // Model is not required if there is no slug
        )
    ),

// TRAVELER

    // First segment : VIEW name
    'traveller' => array(

        // Second segment : LAYOUT name
        array(
            'type' => 'layout'
        ),

        // Third segment : Primary key (cid)
        array(
            'type' => 'var',    // In this case, the primary key is NOT handled by slug (no alias wizard for this table)
            'name' => 'cid'     // Will simply put an integer value in the segment
        )
    ),
);

This configuration is shared between parseRoute() and buildRoute()
You can try to change the order of the segments to see how your component manage easily the route.

3.1.2 - Integrity Restrict Delete

Integrity Restrict New Feature : Restrict delete of an item when this item is referred by another item.

For using it, simply open the properties of a FK field, and then choose 'Restrict' in the 'FK Integrity' option.

In the following example, if you try to delete China (country), the system will refuse and tell you the related cities:
Integrity Restrict

3.1.1

Sample component Hello My World

New feature : Sample component

We propose you a sample component directly in the builder.
In the projects list, Simply click on the [+] button > Sample > Hello My World
The dataset is also included in this new created project.
You can create on top, delete, customize as you want.

Fixes

  • ORM : Inverted order of groupOrder
  • ORM : Fixed filter directive for null values
  • ORM : Fixed the ID directive for item (for headless calls)
  • Project Cloner : Fixed some dataloss (link layout in grid, xref in list filter (Pivot))

3.1 - ORM System

New feature : ORM System

The ORM system acts such as a data provider, directly at the SQL level.
You don't need anymore to write SQL queries manually.

'ORM' stand for Object-Relational Mapping.
It basically means that your component is able to link tables together automatically.

For purists... I know, this is not yet a complete ORM system, but it has the foundations to introduce such new way for loading datas. And more in future!

Documentation

3.0.10

New Feature : Multiple FK Filter

This feature permit to enter multiplie values in a simple Foreign Key Filter.Multi FK Filter

How to use it :
1. Instance a "List" filter
2. Drag a FK node (or sub node)


This filter can accept unlimited level of Foreign Key.




New Helper : Form Helper
Include the functions which will slowly replace JDom
Some fields has been rewrited (model, relation) to fit better Joomla native fields.

Get Started