Changelog

Every day we are working to improve our software products. Below you can see the (almost) complete history of MS SQL PHP Generator changes.
Records marked by a plus sign () denote improvements,
records marked by a minus sign () stand for bugfixes,
and records marked by an exclamation mark () show incompatible changes.

A possibility of adding pre-defined options for quick record selection has been implemented (for example, you can select
all countries from Europe or all completed projects in two mouse clicks). To specify such options, use the
OnGetSelectionFilters event.
Live example.

Version 17.10.0.3

Dec 27, 2017

Mass (AKA bulk) editing. A possibility of editing multiple records at a time has been implemented. Edit form mode (separate page or modal)
can be selected at the Abilities tab of the Page Properties dialog.

The "Is thumbnail" option is added for External Image grid columns. When this option is checked, images in the corresponding column are considered
as thumbnails for another column which name is specified as the value of the "Original image field name" property.
Live example.

On[Before|After]UpdateRecord events:
old values are now passed to event handlers (the $oldRowData array). This should help you to easy implement scenarios like
"I want to send a notification email when a certain value in the record is changed".

From now on a warning message is displayed if incorrect lookup settings can cause duplication of records.
The appropriate option that allows you to disable this inspection has been added to the Confirmations page of the application settings dialog.

All PHP Generator demos updated

Version 17.10.0.2

Dec 4, 2017

Application-level option "Save project with each deployment" has been added. When this option is checked, MS SQL PHP Generator automatically saves the project file
each time when the "Ready" button is clicked.

"Sort by column click" and "Sort by dialog" options have been added to the "Abilities" tab in the Page Properties and Project Options dialogs.
The tab itself has been divided into several groups for easy of use. The "Disable custom ordering" option has been removed from the Page Properties dialog
as it is no longer needed.

The "Sortable" option has been added for columns displayed in the List view. By default it is checked for all columns that can be used in the ORDER BY clause at the database level.

An animated waiting icon is now displayed on deleting a single record or multiple records.

Script connection frames now contain only controls whose values are really used in the PHP code.

Multiple Select editor: when items are loaded from the database, the search is now performed on displayed values (instead of stored ones).

Admin panel: there is no more user duplication on adding the second and subsequent users.

Master-detail views could be displayed incorrectly for pages containing leading zeros in primary keys (like 0045).

The "On-the-fy adding" feature now works as expected when it is applied to a combobox and a query is used as lookup data source.

When the "Ask for filter condition before display data" option is checked, the panel inviting the user to provide a
filter value is no more displayed for the master record in master/detail views.

The "Could not convert variant of type (Null) into type (OleStr)" message is no more displayed on clearing a default value.

Pressing the Cancel button displayed on the code generation did not stop the generation process.

Column Filter has been optimized.
Now its values are loaded from the database only when/if a user presses the filter button. Due to this improvement,
the initial page loading time is significantly reduced.

Support for Inactivity Timeout has been implemented.
The value of this option defines the maximum amount of time (in seconds) after that a user is automatically logged out
from the application if he/she does not perform any action during this period.

A new event editor has been implemented. Now you can edit all server-side (or client-side) event handlers in a single window that
should simplify such operations as copy / paste code between different event handlers.

New video: On-the-Fly Adding

Two examples of implementing a role-based permission model have been added. In the
first example permissions
are hard-coded within the event handler while in the
second one
they are retrieved from a database table.

How to redirect a user to a certain page? How to block the account of a fired employee? Answers for these and similar
questions can be found on a newly added page
that illustrates how it is possible to use the OnAfterLogin event.

Home page: links to video tutorials have been added (when applicable).

The demo has been rebuilt with the version 16.9.0.3. Don't forget to upgrade your
installation of PHP Generator if you want to run it on your webserver.

New video: Record Comparison

Dec 1, 2016

A new video tutorial is uploaded to our YouTube channel.
This video focuses on the Record Comparison feature.
Learn how to compare multiple records and find the difference between their values in a few mouse clicks.

NBA Demo: a drop-down menu has been added to the
Login button to help lazy users to test
the application under different accounts.

Version 16.9.0.2

Oct 12, 2016

It is now possible to select a pattern for the
Quick Search
tool (%term% or term%). The first pattern is more user-friendly while the second one works much faster (if the appropriate
index is defined in the database).

Version 15.12.0.2

Dec 28, 2015

The "Detailed description" property has been added to page settings. If specified, the Help button is displayed on the
right of grid's toolbar and the property value is shown in a modal window when the button is clicked.

"Condensed table" and "Bordered table" options have been added to the page settings.
These options are also available at the project level (in this case they are applied to all pages).

An ability of customizing php.ini settings in runtime has been implemented (Project settings | Shared options).

The "Select All" checkbox now supports the indeterminate state (if only some but not all records are selected).

A warning message is now displayed on detecting incorrect lookup settings.

Date formats like d/m/Y and m-d-Y are now recognized correctly by Filter Builder.

The "Highlight row at mouse hover" option now works correctly.

The last item in the sidebar menu containing a large amount of pages could be inaccessible.

The "External audio file" option becomes available in the View properties. This allows you to use the standard HTML5 audio player for your application.

The OnPreparePage page-level event has been added. This piece of code is a method of the Page class that is called at the end of the constructor.
It allows you to customize all members of the class, for example, add an additional filter to the dataset.

The OnBeforePageExecute event becomes available at the application level. This helps you to define a snapshot of PHP code that will be included into all the pages.

The SpinEdit control was replaced to one from HTML5.

The Step property has been added to the Range control.

Lookup filter condition is now applied to Filter Row and Filter Builder tools.

Date and datetime controls in Filter Row and Filter Builder now display values in the same format which is used in the corresponding Data Grid columns.

Instances of the SMDateTime class used in the data manipulation events now can be converted to strings automatically.

Now it is possible to reset quick filter by entering an empty string and pressing Enter.

Passwords are now stored and transferred encrypted everywhere.

The comparison operators like =, >=, <= are now displayed as symbols in the filter string in order to save some space ("game_date <= 2008-11-01" instead of "game_date is less than or equal to 2008-11-01").

The "user_password" column length was increased to 128 characters in order to support some complex encryption algorithms like SHA256.

A more informative message is now displayed when trying to open a non-existing project file (More | Recent projects).

The software now warns you if you forget to define key columns for a data source.

A warning message is displayed on possibly incorrect script connection settings at the first step of the wizard.

A more informative message is now displayed if the generated app cannot connect to the database.

The generated app now displays a warning message if the templates_c directory does not exist or is not writable.

Default ordering is now applied to inline details.

The Amelia and SuperHero color schemes are removed from the installation package.

The Reset Filter Row button could be displayed incorrectly if the Actions column contains a single button

Checkbox group control: unchecking all checkboxes did not clear the field value.

Date/time editor: the date value in the popup calendar could be displayed incorrectly in certain cases.

Tables and views created in the database after the first invoking of the "Add table or view" dialog could not be selected as data sources.

The project was not marked as modified when changing a page title or menu label directly in the Page List.

Non-English symbols could be displayed incorrectly in some popup windows.

The partition caption could be displayed incorrectly when it contains non-English characters.

Simple search is now considered the lookup columns.

List and Range partitions might work incorrectly on running the app under PHP 5.4.

The inline editing now works properly for columns containing spaces in their names.

A new minor version features displaying records of lookup data sources in the popup window, a possibility of providing separate styles for the printer-friendly version and export to PDF, a number of performance-related improvements and some other useful things.