Blog

DaDaBIK 9.1 is out with a brand new row-level custom filter feature

Posted by Eugenio on 12 Sep 2018

Dear all,

DaDaBIK 9.0 Monterosso has been very well received, thanks for all the words of appreciation!

It's already time for a new version: v. 9.1 Monterosso is out today, you can buy your license here.

As usual, if you are in your free upgrade timeframe, you can request your free copy from the upgrade page. If you have a DaDaBIK ENTERPRISE/PLATINUM license and you are out of your free upgrade timeframe, you can also get DaDaBIK 9.1 by purchasing a maintenance license (€65 / €85).

Version 9.1 is mainly a maintenance release but there are also a few new features, in particular I want to introduce you one of them: row-level custom filters / permissions (available for DaDaBIK Enterprise/Platinum).

You are probably familiar with record ownership: in DaDaBIK you can, for example, set that a record can be read/deleted/modified only by the user (or group) who created it (the owner). This is very useful in many situations: for example in a sales management application, you want that each agent can only see the quotes they inserted. Sometimes, however, this is not enough.

Sometimes in fact you want the records to be filtered by some criteria which is not related to the ownership; take a helpdesk application, for example: let's say the help requests are inserted by some managers and each help request is then assigned by a manger to a member of the IT staff. You might need to filter the requests so that each member of the IT staff can only see the requests assigned to them.

With the new row-level custom filter, you can do that very easily by adding these few lines of code to your custom_functions.php file:
 


$custom_filters['requests'] = 'dadabik_custom_filter_requests';

function dadabik_custom_filter_requests()
{
global $current_user, $current_id_group, $quote;

if ($current_id_group == 3){ // apply the filter only for the IT staff group
    $filter = $quote."assigned_to_request".$quote." = '".$current_user."'";
}
else{
    $filter = "1=1";
}

return $filter;
}

With these few lines, we are saying that we define a custom filter for the table request and that the filter is generated by the custom function dadabik_custom_filter_requests(). Then we write such function, simply saying to add, if the current user is part of the IT staff group, an ADDITIONAL where clause, showing only the requests assigned to him/her (being assigned_to_request the field set by the IT manager).

Here are a few more use cases:



  • In a sales management application, agents can only see orders related to their geographic area

  • In the application for a Physiotherapy practice, each therapist can only view data records belonging to their patients

  • in a multi-schools application, each principal or manager can only view data for students belonging to their school



As you may guess, since you can create your own additional filter, this new feature is very flexible; you can create very simple filters such as :



$filter = $quote.'paid_invoice'.$quote.' = 0';


to show, for everybody, only the invoices where the field paid_invoice is 0 (in this case, the filter is basically an alternatie to a VIEW) or complex filters based on custom criteria / parameters, not necessarily related to the characteristics of the user logged.

I have uploaded a new video tutorial, belonging to the series "How to Create a Web Application with DaDaBIK", where I show more in details the use of the new row-level custom filter features

As usual, you can find the complete list of the fixed bugs and new features in the change log page. About the fixed bugs, in particular, please check the changelog entries related to custom functions and, if you have used the Dada sales app and you have changed something (even just added a new user/group), pay attention to the related change log entry for the security implications.

Enjoy! :)

Best,

Eugenio Tacchini
DaDaBIK founder

DaDaBIK 9 Monterosso is here

Posted by Eugenio on 5 Jul 2018

Dear all,
I am very glad to announce that DaDaBIK 9 Monterosso is finally available!

Here (https://youtu.be/d4h3Dui46B8) you can watch a release video, containing an introduction to the new features.

You can buy your license here.

After “Lerici”, "Monterosso" is another wonderful small town on the Italian coast https://en.wikipedia.org/wiki/Monterosso_al_Mare, one of the five villages in “Cinque Terre”.

DaDaBIK 9 Enterprise, for just 7 days (until July 12th) WILL BE ON SALE AT €95 instead of €160. In bundle, you will find two ready-to-use applications: Dada Sales and Dada HelpDesk (see later for details).

As usual, if you are in your free upgrade timeframe, you can request your free copy from the upgrade page. If you have a DaDaBIK ENTERPRISE license and you are out of your free upgrade timeframe, you can also get DaDaBIK 9.0 by purchasing a maintenance license (€65). Even in this case, you can do everything from the upgrade page.

Our on-line demo page has been updated and two new demos are available (an Help desk application and a Contact form application).?

WHAT’S NEW IN DADABIK 9?

First, there are some important news about the installation process.

You can build a DaDaBIK app starting from an Excel file
It is now possible to build a DaDaBIK app starting from an Excel, CSV or ODS file: you just need to upload the file and DaDaBIK will create the relevant database tables and build an application over them!

Prepackaged apps
You can now create a DaDaBIK app package: it’s a folder containing a manifest.json file (that describes the app) and all the relevant files (custom functions, SQL scripts, custom images, .... ); any DaDaBIK owner can install your app just by copying the package into the new apps folder and choosing the app during the installation process.

Bundled prepackaged apps
DaDaBIK Enterprise/Platinum comes with two bundled prepackaged apps: Dada sales (a sales management application) and Dada HelpDesk (a HelpDesk application. It can be used within a company to manage, for example, the IT help requests). You can install them directly from the installation procedure. At the moment, they are only available for MySQL.

Apart from these changes in the installation process, for DaDaBIK 9 I tried to focus my efforts on the needs of power users, trying to build a proper Rapid Application Development platform.

I have noticed many times that power users at some point tend to work on the DaDaBIK code because they need features which are not (built-in) available or because they just want to add something to the layout. My idea was to make this process as easy and clean as possible, I wanted to allow developers to:

  1. adapt DaDaBIK to their (sometimes complicated) workflows
  2. Introduce their custom code without touching the DaDaBIK core code, therefore preventing problems during upgrades: are you familiar with the "I don't upgrade DaDaBIK because I made too many changes to the code" fear? :)

Here are, therefore, the other improvements you will find in DaDaBIK 9:

Custom buttons
You can now add personalized buttons to your application, specifying for each button a callback PHP or Javascript function to execute. Buttons can be placed in several positions (e.g. on each row of a results grid, on the top of an edit form or near to a form field) and can execute a Javascript function or a PHP function, even via AJAX.

Dashboards
It is now possible to embed a graphic report or a tabular report into a custom page; when logged in as an admin, you can get the embed code by clicking on "show embed code" at the bottom of a graphic report. By embedding one or more reports into a custom page you can easily create a dashboard.

Granular permissions for “CSV Export” and Custom pages

Easier layout customization with layout hooks
With layout hooks you can add custom HTML or PHP code in some parts of the layout without modifying the DaDaBIK core code and therefore making future upgrades easier. There are 13 layout points (including, for example: page header, page footer, edit form header, edit form footer, ...) where you can add layout hooks.

It is now possible to make part of your DaDaBIK application public and part login-protected
This can be useful in several cases, for example if you want to allow unauthenticated users to read a public dataset or if you want to open to the public a registration form or a contact form.

It is now possible, for each field, to specify a custom JavaScript function to execute when an event (e.g. onfocus, onblur, onclick, ...) occurs. For example, you can write a simple JavaScript function that capitalizes the content of a text field when the user leaves the input field (“onblur” event).

There are other new features (including record copy and multiple inserts) and a list of bug fixes (including a huge reduction of memory usage for most of the functionalities and the fix of a problem with select_single and select_single_radio, which could change the selected values unexpectedly). As usual, you can find the complete list in the changelog page.

IONCUBE ENCRYPTION

Please note that part of the DaDaBIK code is now encrypted with Ioncube. Maybe some of you won’t like this, but after having thought a lot about it, I think it is the only proper way for us to protect our intellectual property and to check if customers respect the terms of the license.

Let me highlight some important aspects about this change:

  1. Not all the code is encrypted, the idea is to keep unencrypted the code that users typically want to modify (functions build_results_table, build_details, build_form, header, footer)
  2. Considering the improvements introduced with DaDaBIK 9, it’s very unlikely that you need to modify the core code: you probably can do everything using hooks, custom buttons, custom functions, custom languages and custom pages.
  3. Finally, for users who modified the DaDaBIK core code, I will be glad, if possible, to give some advice about how to migrate their changes to DaDaBIK 9.



To run a PHP application that uses ionCube secured files you need the free ionCube loader. Ioncube is now very popular and the loaders are now installed by default by many hosting services, so in many cases you don’t need to do anything; in some other cases, you have to install it and finally there are also some providers that could prevent the installation of PHP extensions such as ionCube loader (but they are a small minority).

Among the hosting providers that have the ionCube loaders already installed we suggest, as a cheap solution, A2HOSTING, which offers a good shared hosting service at about 4 euros / month, 100% compatible with DaDaBIK (we tested it).

Enjoy! :)


Best,

Eugenio Tacchini
DaDaBIK founder

DaDaBIK 8.3 is out: an important vulnerability fixed, the new PDF print feature is available

Posted by Eugenio on 11 Apr 2018

Dear all,
DaDaBIK 8.3 Lerici is out. DaBIK 8.2 was supposed to be the last 8.x release, however the discovery of an SQL injection vulnerability made me change the plan and I decided to release v. 8.3, which contains a long list of fixes and a couple of new features.

In particular, it contains a fix for an SQL injection vulnerability which allowed an attacker, in particular situations, to execute arbitrary SQL code on the databases they have permissions on. It is very important for you to read all the details in the changelog about this fix and about the others.

In the changelog you will also find the other bugs fixed and the new features.

In particular the new PDF Print feature, one of the features planned to be released with DaDaBIK 9, has been included in DaDaBIK 8.3 (Enterprise/Platinum only) since it was ready to be deployed.

You can use it both from the details page of a record and from the results grid page: in the first case it produces a PDF file containing the information available in the details page, in the second case it produces a PDF file containing N pages, one for each record included in the results grid page.

You can also create an optional custom template file that describes the layout of the PDF document: DaDaBIK allows the user to choose which template file to use, on the fly, during the export to PDF process. The syntax of the template is pure HTML, the conversion between the HTML template and the PDF document is executed using the TCPDF library. The export to PDF feature applied to a record results set, in combination with the use of custom templates, guarantees results similar to the ones you can get using a typical "Mail Merge" feature available in Word Processors.

You can see the PDF feature in action from the on-line demo; from the online demo n.1 (products table) and from the online demo n.2 (customers table), you can also see a custom PDF template in action. You can read all the details about this new feature in the online documentation (paragraph "How to create custom PDF reports / documents").

You will also notice a great improvement in how DaDaBIK handles form errors.

As usual, if you are in your free upgrade timeframe, you can request your free copy from the upgrade page.

If you have a DaDaBIK ENTERPRISE OR PLATINUM license and you are out of your free upgrade timeframe, you can also get DaDaBIK 8.3 by purchasing a maintenance license (€65/€85), which also provides you with an additional year of free upgrade. Even in this case, you can do everything from the upgrade page.



Best,

Eugenio Tacchini
DaDaBIK founder

DaDaBIK 8.2 Lerici is here, we have now the Ajax lookup drop-down menu

Posted by Eugenio on 19 Dec 2017

Hi all,
DaDaBIK 8.2 Lerici is out!

This is mainly a maintenance release (several bugs have been fixed) but there is also an important new feature: Ajax lookup drop-down menu.

Let me explain the whole story: in DaDaBIK 8.1 we introduced the parameter "User-friendly searchable", which made the search of an option inside a (select_single or select_multiple) drop-down menu very easy . However, if the table providing the options for your menu contained a lot of records, your users could experience problems: the browser needs to load all the options, which sometimes can result in browser freezing/hanging and delay issues.

A new parameter, "Use ajax to load options?" allows to load options dynamically, while the user is typing in the field; this completely remove the problem. You can see the effect in the online demo n.1, choose "products": one of the quick filter is "brand", we have intentionally added 10k records with fake brands but as you can see, there isn't any delay in the page loading. The brands are loaded only when you start typing in the brand quick search box.

In DaDaBIK 8.1 we implemented "User-friendly searchable" drop-down menu using the Chosen jQuery plugin, we have moved now to select2 (https://select2.org/), which works better from different point of views including the fact that now the "user-friendly searchable" parameter also has effect on mobile.

A few other new things:
- For PostgreSQL, it is now possible to choose the schema (before, tables needed to be in the public schema)
- The Chinese Language is now available
- It is now possible to choose, for each table/view, the default function (e.g. you can show the insert form instead of the results grid)

You can see the complete list of new features and bug fixes here https://dadabik.com/index.php?function=show_changelog.

As usual, if you are in your free upgrade timeframe, you can request your free copy from the upgrade page (https://dadabik.com/index.php?function=show_upgrade_new)

If you have a DaDaBIK ENTERPRISE OR PLATINUM license and you are out of your free upgrade timeframe, you can also get DaDaBIK 8.2 by purchasing a maintenance license (€65/€85), which also provides you with an additional year of free upgrade. Even in this case, you can do everything from the upgrade page (https://dadabik.com/index.php?function=show_upgrade_new).



Best,

Eugenio Tacchini
DaDaBIK founder

DaDaBIK 8.1 Lerici is available

Posted by Eugenio on 5 Sep 2017

Hi everybody,
I am glad to announce that DaDaBIK 8.1 is available.

This release contains several bug fixes (thanks for all your feedback!) and some new features.

The most important new features are:

Adoption of the Chosen jQuery plugin
DaDaBIK now optionally provides, for select_single and select_multiple_menu fields, a modern search box that allows to easily find a list element when the number of elements is huge. Furthermore, for select_multiple_menu, a new and more user friendly approach is used to display the selected values.
You can see this new feature in action from the on-line demo, Demo 1. Edit a product in the "products" table and see the "brand" and the "categories" fields.

Before delete hoooks
"Before delete" hooks are now supported.

Exclusion of some tables during installation
It is now possible to exclude from the installation some tables using the $tables_to_exclude and $prefixes_to_exclude parameters in config.php. The $prefixes_to_exclude parameter, in particular, is very useful to easily install and use two or more different DaDaBIK applications using a shared database (e.g. a read-only application that doesn't require authentication + a full-featured app accessible only by admin). The documentation has a new paragraph explaining in details how to share the same database between two or more DaDaBIK applications.

Permissions for autoincrement fields
It is now possible, setting the new $grant_permissions_autoincrement_after_table_installation parameter to 0 in config.php, to hide by default autoincrement fields from all the forms during a table installation or during the application installation.

The list of fixed bugs is long and includes, among the others:


  • the fix for a bug that could produce wrong search results where select_multiple_* fields were used
  • the fix to a bug related to db synchro: after an "add fields" operation, DaDaBIK lost some of the form configurator settings
  • the fix for a bug related to pagination: pagination links didn't work correctly when the results grid was part of a master-details view.


You can see all the details and the complete list of new features and bug fixes here.

As usual, if you are in your free upgrade timeframe, you can request your free copy from the upgrade page.

If you have a DaDaBIK ENTERPRISE OR PLATINUM license and you are out of your free upgrade timeframe, you can also get DaDaBIK 8.1 by purchasing a maintenance license (€65/€85), which also provides you with an additional year of free upgrade. Even in this case, you can do everything from the upgrade page.

Finally, I've just published a new video tutorial: it's the second episode of the series "How to create a Web application with DaDaBIK" and focuses on Calculated fields.

Enjoy! :)

Best,

Eugenio Tacchini
DaDaBIK founder

Page 8 of 27
1  2  3  4  5  6  7  8  9  10  >  >>  

Top