Install the App?
Changelog
History of the ZnetDK 4 Mobile versions
Version 3.5 released on June 30, 2025
- CHANGE: when user logs out, the session is now totally deleted.
- CHANGE: ARIA attributes added to the
z4m.autocomplete
input field widget. - CHANGE: ARIA attributes added to the
z4m.modal
modal dialog widget. - CHANGE:
W3.CSS
is updated to version 5.02. - CHANGE: new
\DAO::addCondition()
method to add a SQL condition to the SQL query. - CHANGE: when
DAO::remove()
method is called with a null row ID value, rows are now removed taking in account the sorting order previously set via theDAO::setSortCriteria()
method. - CHANGE: App's logo displayed on the left of the banner title when the login form is displayed and when user is logged out.
- CHANGE: new
z4m.autocomplete.isSuggestion()
method to know if the currentz4m.autocomplete
input field's value has been selected from the list of suggestions or not. - CHANGE: new
z4m.autocomplete.lastSelectedItem
property to get the label of the last selected suggestion. - CHANGE: now when suggestions are displayed for a
z4m.autocomplete
input field, the Escape key closes the suggestion list. - CHANGE: suggestions are now shown when a
z4m.autocomplete
input field gains focus if no suggestion has been yet selected and the number of entered characters is higher or equal to the minimum length set for theminStringLength
property. - CHANGE: new optional argument
onSuggestionsCallback
added to thez4m.autocomplete.make()
method to get the number of suggestions found for the last entered query string. - CHANGE: an icon symbolizing a user is now displayed in the header of the login dialog box.
- BUG FIXING: after changing the password, the user's
session was set to
public
(seeCFG_SESSION_DEFAULT_MODE
constant) even if the user checked the 'Remember me?' option when logging in. - BUG FIXING: confirmation and notification modal dialogs
displayed via the
z4m.messages.ask()
andz4m.messages.notify()
methods could be positioned in the background of the last shown modal dialog. - BUG FIXING: when the user session was destroyed while submitting a form, the error message was displayed directly in the form and not in a modal dialog to reload the application.
- BUG FIXING: Modal dialog was not closed when pressing Esc key if multiple modal dialogs were open in the background.
- BUG FIXING: bad English translation of the verb 'click' for constants
LC_MSG_INF_PWD_RESET_PROCESSED
,LC_MSG_INF_LOGOUT
andLC_MSG_INF_CANCEL_LOGIN
. - BUG FIXING: when calling
DAO::getResult()
method, the error message "E_WARNING - Undefined array key... - engine/core/DAO.php(105)" was shown if a date type column set for the$dateColumns
property was missing in the rows fetched in database. - BUG FIXING: error "E_WARNING - key_exists() expects parameter 2 to be
array, bool given - engine/core/General.php(555)" when calling the
General::isPictureTooBig()
ZnetDK method. TheZDKException
GEN-010
is now thrown instead when thegetimagesize()
PHP function does not return an array. - BUG FIXING: the
z4m.autocomplete
component did not consider characters entered beyond the minimum number of characters required (minStringLength
) to look for suggestions. - BUG FIXING: the
z4m.autocomplete
component no longer sends AJAX requests for retrieving suggestions if the query string has changed during the waiting delay (300 ms by default). - BUG FIXING: when cache was enabled for the
z4m.autocomplete
component (propertymaxNumberOfCachedItems > 0
), displayed suggestions could be duplicated. In addition, the suggestions could not be selected using keyboard and the suggestions remained displayed when leaving the autocomplete field.
Version 3.4 released on January 30, 2025
- CHANGE: when the
z4m.message.ask()
modal dialog is displayed, the focus is set by default to the "No" button. - CHANGE: new property
z4m.list.displayRowCountInMenuTab
to disable the display of a Data List total row count in the horizontal menu tab. This property is useful for example in case a data list is declared in a modal dialog. - CHANGE: when a critical error occurs while submitting a form, the error is now displayed directly in the form. In the previous version, the critical error was displayed in the view in an error panel and could be hidden by the modal dialog containing the form.
- CHANGE: when searching items in a Data list, a minimum of three letters must now be entered in the "Search keyword" field to get suggestions. This number of letters to get suggestions can be customized through the new
z4m.list.searchKeywordMinStringLengh
property. - CHANGE: when searching for users, a caption is now displayed below the "Searched keyword" label to indicate what user information is being searched for.
- CHANGE: a caption text can now be set via the
z4m.list.searchKeywordCaption
property to be displayed below the label of the "Searched keyword" field in the data list search window. - CHANGE: the
z4m.autocomplete.make()
method now also accepts an input element as jQuery object for the first argument. In previous version, only a selector of the input element was accepted. - CHANGE: when a JS error is detected while processing the response of a controller action, the stack property of the error, if set, is displayed in the browser console to get more information about the origin of the error. The JSON response is also traced in the browser console.
- CHANGE: the
z4m.form.showError()
method accepts now an input name with its position specified as suffix separated by a colon (for examplemy_input:5
) to show an error message for the nth input when exists multiple times in a form with the same name. - CHANGE: now the CSS class
zdk-required
can be applied to any HTML element to add an asterisk to an input label. - CHANGE: 'My account' title added to the user panel modal and 'Search' title added to the search modal.
- CHANGE: new
z4m-theme-light.css
stylesheet to display the application in a light color theme. Newz4m-theme-dark.css
stylesheet to display the application in a dark color theme. - CHANGE: the red color is no longer applied to the menu item bottom border when selected. Instead, the theme border color is used, both for the vertical side menu and the horizontal tab menu.
- CHANGE: new
CFG_MOBILE_W3CSS_THEME_COLOR_SCHEME
PHP constant to customize the W3CSS color classes applied to App UI. This constant can be useful to restore the color assignment applied up to version 3.3 of ZnetDK 4 Mobile. - CHANGE: the color CSS class applied to the app's banner is changed to
w3-theme-d2
instead ofw3-theme
. - CHANGE: the color CSS class applied to the header of the modal dialogs is changed to
w3-theme-dark
instead ofw3-theme-d5
. - CHANGE: JS libraries to be loaded by the web browser are now inserted into the body of the APP page before the extra HTML code injected via the
extra_hmtl.php
script (feature added in version 3.2). - CHANGE: new
z4m.list.infiniteScroll
property to disable the list infinite scroll. When this property is set tofalse
, after displaying the first 20 items, the next items are no longer displayed by scrolling the page, but only by clicking the "Show next results" button below the last item in the list. - BUG FIXING: when mutliple Data list existed for the same displayed view (for example when a second Data list were added to a modal dialog displayed above the view), only the last Data lists were refreshed when clicking the horizontal menu item of the concerned view. Now, only the first Data list is refreshed.
- BUG FIXING: when mutliple Data list existed for the same displayed view, the action buttons initially shown for the view could be hidden after instantiating the next Data lists.
- BUG FIXING: when calling
z4m.form.setReadOnly()
method, property for inputs of typeradio
andcheckbox
was set toreadonly
instead ofdisabled
. - BUG FIXING: the
z4m.autocomplete
component could sometimes display the same suggestions twice. - BUG FIXING: in PHP 8.4, error "Constant E_STRICT is deprecated in ... ErrorHandler.php on line 155.
- BUG FIXING: in PHP 8.4, error "E_DEPRECATED - fputcsv(): the $escape parameter must be provided as its default value will change - ... Response.php (470)".
- BUG FIXING: in PHP 8.4, error "E_DEPRECATED - ZDKException::__construct(): Implicitly marking parameter $previous as nullable is deprecated, the explicit nullable type must be used instead - ... ZDKException.php(42)".
- BUG FIXING: both table and column names are now surrounded by backticks in the
DAO
class to avoid errors when these names match a MySQL reserved words or contain forbidden characters. - BUG FIXING: on a large screen, horizontal menu items that overflowed to the right were hidden instead of being displayed below.
- BUG FIXING: search criteria and sort tags displayed when searching for users were incorrectly displayed under the list header.
- BUG FIXING: the length of the "No results found" message, displayed when no rows were found for user and profile lists, was shorter than the width of the list.
- BUG FIXING: the vertical menu close button was not properly right aligned.
- BUG FIXING: for a better WCAG legibility, the user
w3-theme-l2
W3CSS class applied to the 'Installation', 'Uninstallation' and 'My user rights' views is replaced by thew3-theme
class. - BUG FIXING: for a better WCAG legibility, the colors of the default ZnetDK 4 Mobile color theme are darken.
- BUG FIXING: for a better WCAG legibility, the color CSS class applied to the app's menu selected item is changed to
w3-theme-l3
instead ofw3-theme-l2
. - BUG FIXING: for a better WCAG legibility, the color CSS class applied to the app's horizontal menu is changed to
w3-theme-l4
instead ofw3-theme-l3
. - BUG FIXING: for a better WCAG legibility, the
w3-text-theme
CSS class is no longer applied to the list header of the user and profile lists and to the user and profile names. - BUG FIXING: for a better WCAG legibility, the default W3CSS theme set through the
CFG_MOBILE_W3CSS_THEME
PHP constant is no longer'resources/w3css/themes/w3-theme-blue.css'
. It is now replaced by the theme named'resources/w3css/themes/z4m-theme.css'
. - BUG FIXING: for a better WCAG legibility, the W3CSS green, blue, blue grey and red colors used to display messages (see
z4m.messages.add()
JS method) are darken. - BUG FIXING: if the network connection IP address changed, when refreshing the user list, the error "Operation not authorized" (HTTP error 403) was displayed instead of the login window to renew the user session (HTTP error 401).
- BUG FIXING: if two tabs were opened in the same web browser and the user logged out from one tab, the error "Operation not allowed" was displayed in the second tab when the same user logged out again.
- BUG FIXING: CSS
z-index
value is increased to 5 for the left side menu (previousz-index
value was 4) and to 6 for the modal overlay (previousz-index
value was 5 for thew3-modal
CSS class). - BUG FIXING: the
Security::action_login()
controller's action could not be overloaded on Linux by the application or a module. - BUG FIXING: only 20 rows were displayed in a list instantiated through the
z4m.list.make()
method on large screens configured with high resolution. Now a "Show next results" button is displayed to allow the user to view the next lines in the case where no scroll bar is displayed when the 20 first items are fully displayed in the viewport. - BUG FIXING: the color CSS class for the Add action button, initially set to
w3-red
, is changed tow3-theme-action
.
Version 3.3 released on August 19, 2024
- CHANGE: login throttling applied during 60 seconds after 5 login failures occurred in a 30 seconds time window for the same login name. This mechanism can be customized through the new following constants:
CFG_LOGIN_THROTTLING_ATTEMPTS_BEFORE_LOCKOUT
,CFG_LOGIN_THROTTLING_LOCKOUT_DELAY
andCFG_LOGIN_THROTTLING_ATTEMPTS_WINDOW_TIME
. - CHANGE: for security purpose, on user login if their user account is disabled, the displayed error message is now
LC_MSG_ERR_LOGIN
instead ofLC_MSG_ERR_LOGIN_DISABLED
. - CHANGE: The
CFG_NBR_FAILED_AUTHENT
constant is now set to0
by default (the user account is no longer disabled after 3 login failures). - CHANGE: when the
CFG_NBR_FAILED_AUTHENT
constant value is0
or is not a positive integer, user accounts are never disabled after multiple failed login attempts. - CHANGE: for security purpose, actions of the
\Security
controller can be only executed if the request method is POST and if a valid UI token is sent. - CHANGE: new argument
$extraHeaders
added to the ZnetDK\General::callRemoteAction()
method to add extra header lines to the HTTP request sent to the remote controller action. - CHANGE: new argument
$returnHeader
added to the ZnetDK\General::callRemoteAction()
method to include in the returned value, the HTTP header received from the remote controller action. - CHANGE: the
controller\Users::notify()
andcontroller\Security::loginResult()
hook methods are now executed for all existing methods found at application and module level. In previous versions, these hook methods were executed only once for the first method found, at application level first, next at module level if the hook method was missing at application level. - CHANGE: new
controller\Users::onRemove()
hook method called on user removal to delete custom user rows in database. This method can be implemented at application and module level. - CHANGE: as a new password is entered, dynamic display of compliance with the password entry rules (minimum length, upper and lower case letters, numbers, etc.).
- CHANGE: when the change password modal is displayed in case the user's password has expired, the user no longer needs to enter the old password. Now only the new password and its confirmation need to be entered by the user.
- CHANGE: a modal dialog opened with the
z4m.modal.open()
method can now be closed by the user by pressing the ESC key on the keyboard. - CHANGE: new
z4m.form.showInfo()
andz4m.form.hideInfo()
to show and hide an information message in the form. - CHANGE: new
hidePrevErrors
argument added to thez4m.form.showError()
method to hide previous error messages before displaying a new error message. - CHANGE: new
z4m.ajax.toggleLoader()
method to show or hide the AJAX Loader image on demand. - CHANGE: eye buttons added to the password input fields of the change password modal to reveal the entered password.
- CHANGE: W3.CSS library upgraded to version 4.15.
- CHANGE: new
\User
class to manage users programmatically. - BUG FIXING: message
LC_MSG_INF_REQUEST_PWD_RESET_PROCESSED
changed to be more explicit. - BUG FIXING: errors 'E_WARNING - Undefined array key "user"' and 'E_WARNING - Undefined array key "pass"' when calling the
\General::callRemoteAction()
method without user and password in the URL passed as argument. - BUG FIXING: TCP/IP port was wrongly removed from the service web URL when calling the
\General::callRemoteAction()
method with POST method. - BUG FIXING: on form submit, when an HTTP error 403 was returned by the PHP application controller action (see ZnetDK
\AppController::setAllowedActions()
method), the error message could be displayed behind the modal dialog containing the data form. Now, the error message is directly displayed in the form. - BUG FIXING: the App title was not right-aligned on small devices when authentication was enabled and the user was not logged in.
- BUG FIXING: the views below, not useful for ZnetDK 4 Mobile, are no longer included in the
engine/core/view/
subfolder of the ZnetDK 4 Mobile delivery ZIP archive:try_themes.php
,check_connection.php
,check_connection-ui-init.php
,check_widgets.php
,myuserrights.php
,profiles.php
,profiles-ui-init.php
,profiles-ui-events.php
,users.php
,users-ui-init.php
andusers-ui-events.php
. - BUG FIXING: the user identifier (
user_id
) was not passed to the overloadedcontroller\Users::notify()
method when it was called back by ZnetDK for customization purpose. - BUG FIXING: the
\UserManager::storeUser()
method did not return the user identifier (user_id
). - BUG FIXING: Yes and No buttons were not properly aligned on the left in the confirmation modal dialog displayed when calling the
z4m.messages.ask()
method.
Version 3.2 released on April 5, 2024
- CHANGE: users now can authenticate to the application by using their address email instead of their login name.
- CHANGE: when the Application GET URL include a
login
parameter and user is not authenticated (CFG_AUTHENTICATION_REQUIRED
isTRUE
), the login name is initialized from this parameter and the input focus is set to the password field. - CHANGE: when
CFG_VIEW_PAGE_RELOAD
is set toTRUE
, an external link URL can be set for the$menuItemSEOlink
argument when calling the\MenuManager::addMenuItem()
method within themenu.php
script. - CHANGE: when
CFG_VIEW_PAGE_RELOAD
is set toTRUE
, views not tied to a level 1 or level 2 menu can be displayed in the application via a hierarchical URL.
For example, the viewview2
can be displayed invoking the https://myhost/myapp/view1seolink/view2seolink URL with the following definition in themenu.php
of the application:\MenuManager::addMenuItem(NULL, '_views', 'Views', NULL);
\MenuManager::addMenuItem('_views', 'view1', 'View #1', NULL, 'view1seolink');
\MenuManager::addMenuItem('view1', 'view2', 'View #2', NULL, 'view2seolink');
- CHANGE: the
beforeunload
JS event listener is no longer added once the application is loaded to ask the user for confirmation to exit the application. It is now only added when data has been modified in an input form. - CHANGE: extra HTML code can be injected at the end of the page layout (before JS dependencies) by the application and by the modules by adding in the
app/layout/
ormod/layout/
subfolder a PHP script namedextra_hmtl.php
containing the extra HTML code. - CHANGE: the custom
Users:getUserTheme()
controller method of the application or a module is now called to set the ZnetDK 4 Mobile CSS theme for the logged in user. - CHANGE: jQuery library updated to version 3.7.1.
- CHANGE: the color of the rows on hover is changed to light grey instead of white in the user and profile management views (
z4musers.php
andz4mprofiles.php
). - BUG FIXING: the
z4m.content.getDisplayedViewId()
method returned a wrong view ID when the view name contained a dash character. - BUG FIXING: while processing a GET request, if the
MainController::renderView()
method failed due to a missing view, the PHP script was not interrupted and the output error message was followed by unexpected HTML code. - BUG FIXING: issue "Unload event listeners are deprecated and will be removed." displayed in Chrome's console. The JS
unload
event handler is no longer added to the application. - BUG FIXING: error "Uncaught ReferenceError: $ is not defined" displayed in browser's console when
CFG_VIEW_PRELOAD
is set toTRUE
and jQuery code exists in the preloaded views. To prevent this error, the new parameterCFG_LOAD_JS_DEPENDENCIES_FROM_HTML_HEAD
can be set toTRUE
to force the JS dependencies loading from the HTML<head>
tag. - BUG FIXING: snackbar messages were masked by elements with a CSS
z-index
higher than 1. The snackbar element is now set with a CSSz-index
value of 10 by default. This value can be increased in CSS by selecting the snackbar through thez4m-snackbar
class name. - BUG FIXING: the error message
LC_MSG_WARN_LOGGED_OUT_MSG
is not longer displayed by the\UserSession::isAuthenticated()
method if the request method is GET. TheLC_MSG_WARN_NO_AUTH
error message is displayed instead. - BUG FIXING: in the event of an error processing a GET request, the PHP output buffer is now cleared before returning an HTTP error in HTML format (see
\Response::doHttpError()
method). - BUG FIXING: the page layout scripts
office.php
,custom.php
andclassic.php
, not useful for ZnetDK 4 Mobile, are no longer included in theengine/core/layout/
subfolder of the delivery ZIP archive. - BUG FIXING: the background color was not properly set for the following user panel modal dialogs:
z4minstall.php
,z4muninstall.php
andz4mmyuserrights.php
. - BUG FIXING: the separator lines of the records in the list were longer than that of the title header in the user and profile management views (
z4musers.php
andz4mprofiles.php
). - BUG FIXING: a PHP fatal error was not properly displayed when happened before the definition of the
LC_MSG_CRI_ERR_SUMMARY
andLC_MSG_CRI_ERR_DETAIL
PHP constants. - BUG FIXING: message "You will be redirected to the login page." were displayed when a user tried to log in to the application while the database was down.
- BUG FIXING: when a PHP warning error existed in the output buffer before the first statement of the
index.php
script was executed, it was not traced in theengine/log/errors.log
and made any response generated in JSON format unreadable.
Version 3.1 released on December 22, 2023
- CHANGE: the SQL query execution time is now traced when the
CFG_SQL_TRACE_ENABLED
PHP constant is set toTRUE
. - CHANGE: a custom PHP script can be ran after a controller action is executed to track application activity or measure performance, by setting its path through the new
CFG_EXEC_PHP_SCRIPT_AFTER_ACTION_DONE
PHP constant in theconfig.php
script of the application. The time elapsed in seconds for executing a controller action is given by theZNETDK_TIME_ELAPSED_FOR_ACTION
PHP constant. - CHANGE: to optimize the first display of the application, JavaScript dependencies are now loaded at the end of the
body
block of the HTML document. - CHANGE: after granting or not granting a profile to a user, the latter no longer needs to log out and log in again for their new rights to apply. Indeed, reloading the application in the internet browser is now enough for the user's rights to apply.
- CHANGE: for better accessibility, new
title
parameter added to the JavaScriptz4m.action.addCustomButton()
method to specify a title for the custom action button. - BUG FIXING: a JS data list was wrongly refreshed after a form submission if the
success
property of the JSON response existed and wasfalse
(seez4m.list.setModal()
method). - BUG FIXING: for better accessibility,
title
andaria-label
HTML attributes are added to the action buttons. - BUG FIXING: after saving and removing a user profile, the confirmation message is now displayed as a snackbar message.
- BUG FIXING: for better accessibility, form labels are now associated with their form fields.
- BUG FIXING: items in the left vertical menu were not focusable when navigating with keyboard (accessibility issue).
- BUG FIXING: HTML title attribute added to the application's logo link and HTML
alt
attribute set from the PHPLC_HEAD_TITLE
constant. - BUG FIXING: for SEO purpose when the
CFG_VIEW_PAGE_RELOAD
parameter is set toTRUE
, thehref
attribute of the level 2 horizontal menu items is now set to the$menuItemSEOlink
value specified in themenu.php
script on\MenuManager::addMenuItem()
method call.
Version 3.0 released on September 10, 2023
- CHANGE: new
\Convert::toISO88591()
method to convert a string from UTF-8 to ISO-8859-1. This method requiresmbstring
,iconv
orintl
PHP extension and can replace the PHPutf8_decode()
function which is deprecated in PHP version 8.2. - CHANGE: new parameter
CFG_DISPLAY_ERROR_DETAIL
to hide technical error details from the end user. This parameter isFALSE
by default. - CHANGE: new parameter
CFG_SESSION_ONLY_ONE_PER_USER
which limits the number of sessions allowed per user login to one when set toTRUE
(default). Thus, a user is automatically disconnected from their first user session when they connect a second time to the application with the same login ID. - CHANGE: the logout button is moved from the banner to the user panel when the application is viewed on small and medium-sized devices.
- CHANGE: token added to AJAX requests to prevent CSRF attacks. When
CFG_AUTHENT_REQUIRED
parameter isFALSE
, new\UserSession::isUITokenValid()
method can be called to check if the token sent by the AJAX request matches the one stored in the user's session. - CHANGE: for security purpose, ZnetDK controller actions
controller\Users
andcontroller\Profiles
are no longer executable if the logged in user does not have permission (via user profiles) to access the users or profiles view. This restriction is also applied when no authentication is required (CFG_AUTHENT_REQUIRED
isFALSE
) and the users or profiles view is not declared within themenu.php
script of the application. - CHANGE: new
\AppController::setRequiredMenuItemForAction()
method to call within the\AppController::setAllowedActions()
method in order to restrict execution to controller's actions if the logged in user does not have permission (via user profiles) to access a given menu item. - CHANGE: the
\AppController::isActionAllowed()
method can be implemented within an Application controller to specify whether a given action is allowed or not according to custom conditions. - CHANGE: the A2HS installation prompt is now only shown on the first view displayed once the application is loaded.
- CHANGE:
z4m.footer.adjustPosition()
method is deprecated because the footer is now positioned through CSS styles. - CHANGE: new
z4m.ajax.setCustomAjaxURL()
method to set a custom AJAX URL when thez4m.ajax.request()
is called, especially from an application that is not a ZnetDK 4 Mobile application (for example from a CMS like WordPress). - CHANGE: the ZnetDK 4 Mobile JS library now can be loaded in a CMS like WordPress, even if the the jQuery library is initialized in
noConflict
mode (variable$
not declared). - CHANGE: the
.htaccess
root file is now automatically generated if missing and configured based on the ZnetDK installation directory relative to the Apache web server'sDocumentRoot
folder. The other.htaccess
files, usually located in theapp/
andmod/
subdirectories, are no longer needed. - BUG FIXING: an HTTP error 403 is now returned when executing a controller action which is explicitely forbidden through the definition of the
\AppController::setAllowedActions()
and\AppController::isActionAllowed()
methods within the custom application controller. - BUG FIXING: "E_WARNING - filemtime(): stat failed for ... engine\core\Dependencies.php(210)" when the
CFG_PAGE_LAYOUT
is set to a page layout other thanmobile
. - BUG FIXING: when the view 'httperror' was displayed on error HTTP 403, 404 or 500, the HTTP status code was always 200 instead of 403, 404 or 500.
- BUG FIXING: error "E_DEPRECATED - Function utf8_decode() is deprecated" in PHP 8.2 when downloading a document or a CSV file after calling the
\Response::setFileToDownload()
or\Response::setDataForCsv()
method. - BUG FIXING: when a critical PHP error occurred for an HTTP GET request, a blank HTML page was displayed instead of an explicit error message.
- BUG FIXING: the HTTP 403 error code was not managed by the
\Response::doHttpError()
ZnetDK method. - BUG FIXING: the TCP/IP port other than 80 and 443 was missing in the URL returned by the
\General::getApplicationURI()
method. - BUG FIXING: the
w3-theme-light
CSS class was missing for the Notification and Confirmation dialogs. - BUG FIXING: The button labeled in English
"Connect"
on the login form and"Connection"
title on user edit form are replaced by"Login"
. - BUG FIXING: extra bottom space added to the
"forgotten password?"
link displayed on the login page. - BUG FIXING: error CTL-003 displayed when the
CFG_VIEW_PAGE_RELOAD
parameter was set toTRUE
. - BUG FIXING: flash effect is removed when refreshing rows of a Data list.
- BUG FIXING: the rows of the JS Data list were not automatically loaded on
z4m.list.make()
method call if the application was configured with theCFG_VIEW_PAGE_RELOAD
PHP parameter set toTRUE
. - BUG FIXING: JS error message in Chrome browser console "The keyword 'searchfield-cancel-button' specified to an 'appearance' property is not standardized. It will be removed in the future.".
- BUG FIXING: the
\General::callRemoteAction()
method could not be called because it was wrongly declared private. - BUG FIXING: error "E_WARNING - key_exists() expects parameter 2 to be array, null given - \engine\core\Response.php(68)" reported when trying to read a
\Response
object property when no value has yet been set. - BUG FIXING: no exception was thrown by
\General::reducePictureSize()
whenimagecreatefrompng()
orimagecreatefromjpeg()
PHP functions failed. Now aGEN-009
ZDKException is thrown. - BUG FIXING: the user phone and user notes were not returned by the
\UserManager::getUsersHavingProfile()
ZnetDK PHP method. - BUG FIXING: error "CTL-003: the controller '' and the action '' does not exist!" returned when sending a POST request with controller and action specified as GET parameters.
- BUG FIXING: error E_WARNING - Undefined array key "HTTP_ACCEPT_LANGUAGE" \Request.php(311) when a controller action was called as a web service while the
Accept-Language
was not specified in the HTTP header.
Version 2.9 released on April 7, 2023
- CHANGE: new
z4m
global variable which is a shorten alias of theznetdkMobile
global variable. - CHANGE: new
beforehide
andafterhide
JS events triggered before and after closing a modal dialog. - CHANGE: the
onAdd
andonEdit
callback functions specified when calling theznetdkMobile.list.setModal()
method, can returnfalse
to prevent the modal dialog from being opened. So, the modal dialog is opened by the callback function at the appropriate time. - CHANGE: the
\Convert::toUTF8()
method accepts now an optional second parameter named$fromEncoding
to specify the character encoding of the string passed as first parameter. The default value for$fromEncoding
is'ISO-8859-1'
. - CHANGE: extra locales were added by default to the
LC_LOCALE_ALL
constant for the English, French and Spanish languages in order to increase the chance to target a locale installed on the webserver. - CHANGE: the
znetdkMobile.form.getInputValue()
method now returns anarray
containing the multiple selected values of the checkboxes having the same name in a form (i.e the HTML attributename
is defined with the same string value for several checkbox elements). - CHANGE: new
znetdkMobile.action.removeCustomButton()
method to remove a custom action button and unregister it from the views. - CHANGE: new
afterpageloaded
events triggered by the Data List<ul>
element each time a new page of rows is loaded.
The data sent with the event are in first position, the ZnetDK Data List object, in second position the number of rows loaded, in last position the data page number. - CHANGE: when hovering a user profile from the ZnetDK user form, its description is now displayed as a tooltip on desktop computer.
- CHANGE: the
\ProfileManager::getProfiles()
method now returns the profile's description through the 'description' array key. - CHANGE: for optimization purpose, new
\UserSession::hasFullMenuAccess()
method to know if logged in user has a full menu access without requesting the database. - CHANGE: for optimization purpose, new
\UserSession::getUserEmail()
method to get logged in user email without requesting the database. - CHANGE: for optimization purpose, new
\UserSession::getUserName()
method to get logged in user name without requesting the database. - CHANGE: for optimization purpose, new
\UserSession::getUserProfiles()
and\UserSession::hasUserProfile()
methods to get access to the authenticated user's profiles without requesting the database. - CHANGE: the
\Convert::toDecimalForDB()
method accepts mixed type (float
,int
,string
) for the$number
parameter. In previous version, an empty string was returned if the specified number was not a string. - BUG FIXING: a JS error "Invalid regular expression" was displayed when the searched string in an autocomplete field contained a character having a special meaning in a regular expression (for example an opening parenthesis).
- BUG FIXING: in PHP 8.1, error "E_DEPRECATED - str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated" when calling the
\General::getFilledMessage()
with anull
value as argument. - BUG FIXING: the
\ProfileManager::storeProfile()
method did not return the user profile's internal database identifier once stored. - BUG FIXING: the
\Convert::toLocaleDate()
method returned a long date instead of a short date with theintl
extension loaded and theLC_LOCALE_DATE_FORMAT
constant set toNULL
. - BUG FIXING: with the
LC_LOCALE_CURRENCY_SYMBOL
set toNULL
, the\api\Locale::getCurrencySymbol()
method returned an incorrect character when the currency symbol was not encoded in UTF-8. Now, if the currency symbol is not encoded in UTF-8, it is decoded from the Windows-1252 character set. - BUG FIXING: with the
LC_LOCALE_THOUSANDS_SEPARATOR
set toNULL
, the\api\Locale::getThousandsSeparator()
method returned a space character which does not match the ASCII space character (value 20 in Hexadecimal). - BUG FIXING: according to the PHP server configuration, the
\Request::getAcceptLanguage()
could return aNULL
value while theHTTP_ACCEPT_LANGUAGE
server variable was properly defined. - BUG FIXING: the
\Convert::valuesToAnsi()
method uses now the Windows-1252 encoding instead of the ISO-8859-1 encoding, in particular to correctly convert the euro character. - BUG FIXING: the
\Convert::valuesToAnsi()
and\Convert::toUTF8()
methods are no longer based on theutf8_decode()
andutf8_encode()
PHP functions for they are deprecated in PHP 8.2.
If no encoding/decoding function is installed (i.e.iconv
function ormbstring
andintl
extensions), then an exception is thrown.. - BUG FIXING: in PHP 8.2 version, a DEPRECATED error was generated by the
\Validator::__construct()
method when theVAL-003
exception was thrown because string variable interpolation is deprecated in this version. - BUG FIXING: the thousands separator comma (i.e. ',') was wrongly converted to a dot character (i.e. '.') when calling the
\Convert::toDecimalForDB()
method while the language of the application was configured with the comma character as thousands separator. - BUG FIXING: the
ui-widget
,ui-widget-content
andui-corner-all
CSS classes were removed from themobile
page layout as they were not used. - BUG FIXING: the modal object was not initialized by the
znetdkMobile.modal.open()
method when theaftershow
event was triggered. - BUG FIXING: when displaying the list of user profiles, as many SQL queries as user profiles displayed were executed in the database. Now, only one SQL query is executed.
- BUG FIXING: when executing
\General::encrypt()
or\General::decrypt()
, an exception is now thrown if theopenssl
extension is not installed. - BUG FIXING: exceptions were not correctly catched by the ZnetDK
\SimpleDAO::getSuggestions()
method. - BUG FIXING: dash characters (i.e ' - ') were filtered out of the view name when the view was called in AJAX, causing a
CTL-001
ZnetDK error.
Version 2.8 released on December 12, 2022
- CHANGE: class names now conform to the PSR-4 autoloading standard. This means that a PHP script named MyClass.php corresponding to the definition of MyClass is now loaded automatically. In the previous version of ZnetDK, the same PHP script had to be named myclass.php to be automatically loaded.
- CHANGE: new
\DAO::setAmountColumns()
,\DAO::setMoneyColumns()
and\DAO::setDateColumns()
to set up the SQL table columns to format according to locale settings when retrieving data rows via\SimpleDAO::getRows()
. - CHANGE: the phone and notes specified for a user are now displayed on the user list.
- CHANGE: new
\Response::setCustomContent()
method to return custom content (HTML, XML, text, ...) from a controller action in response of an http request. - CHANGE: calling a web service with http GET method is now accepted when the corresponding controller and action are authorized by setting the
CFG_ACTIONS_ALLOWED_FOR_WEBSERVICE_USERS
parameter. In previous version, only controller's actions named 'download' could be called with the http GET method. This possibility can be particularly useful when a controller action is to be executed from a webcron service. - CHANGE: new optional parameter '$sanitize' added to the
\UserSession::setCustomValue()
and\UserSession::getCustomValue()
methods. When this parameter is set to TRUE (FALSE by default), the custom value is sanitized before being stored in user session or returned from user session. - CHANGE:
\General::isPictureTooBig()
private method is converted to a public method to check if a photo is too big to be reduced in regards of the available memory in the PHP process. Initially only called by the\General::reducePictureSize()
method to avoid memory allocation error,\General::isPictureTooBig()
, now can be called with a custom $tweakFactor value (set by defaut to 1.65 in previous version of ZnetDK, this value has been increased to 2) before reducing a photo. - CHANGE:
\General::reducePictureSize()
method no longer returns FALSE on error. Instead, aZDKException
is thrown ('GEN-003' to 'GEN-006'). - CHANGE: new $tweakFactor parameter (set to 2 by default) added to the
\General::reducePictureSize()
method. - CHANGE: new
CFG_IS_IN_MAINTENANCE
parameter to close access to the application. A message is then displayed to inform users that the application is temporarily in maintenance. TheLC_MSG_ERR_MAINTENANCE
constant can be overloaded in the 'locale.php' script of the application to customize the message. - CHANGE: the date format set through the
LC_LOCALE_DATE_FORMAT
must now conform to that used by the DateTime::format() PHP method. The previous supported format was the one used by thestrftime()
PHP function which is deprecated in PHP version 8.1. - CHANGE: Http request data filtering can be globally disabled by setting 'NONE' to the
CFG_REQUEST_VARIABLE_FILTERING_LEVEL
parameter. In addition, the\Request::setVariableFilteringLevel()
method accepts the value 'NONE' as parameter to disable value filtering for a specific Http request only. - CHANGE:
\Request::setTrimedCharacters()
method now returns a boolean value. If the '$trimedCharacters' parameter is not NULL or is not a string then a FALSE value is returned. - CHANGE:
controller\Users::notify()
method removed as it was not useful. - CHANGE: new
znetdkMobile.list.loadedCallback
property to define a custom function to call after list's rows are fully loaded. This function has two parameters which contain the number of rows loaded and the data page number loaded. - CHANGE: new
znetdkMobile.list.afterInsertRowCallback
property to define a custom function to call after a row has been inserted in a list. This function has one parameter which contains the new inserted list item as a jQuery element. This callback function can be useful for example to set draggable the list item once added to the list. - CHANGE: new
topspacechange
event triggered when the space between the top of the view container and the top of the page change, for example when the secondary menu is shown on multiple lines, when a message is displayed through theznetdkMobile.messages.add()
method, or when the "Install the App?" message is cleared. - CHANGE: a column header is now displayed on top of the user and profile lists when the screen is a large screen.
- BUG FIXING: the
MainController::getControllerName()
method now is able to find a specific controller method amoung multiple modules overloading the same controller. - BUG FIXING: the 'maxlength' attribute of the 'profile_name' input field was wrongly set to 100 instead of 50.
- BUG FIXING: the 'maxlength' attribute of the 'profile_description' input field was wrongly set to 100 instead of 200.
- BUG FIXING: in PHP 8.1, integers and floats in result sets are by default returned using native PHP types instead of strings. To restore the behavior of earlier versions of PHP, the
PDO::ATTR_STRINGIFY_FETCHES
option is now forced to true. - BUG FIXING: in PHP 8.1, error "E_DEPRECATED - Function strftime() is deprecated - engine\core\convert.php(116)".
- BUG FIXING: in PHP 8.1, error "E_DEPRECATED - Constant FILTER_SANITIZE_STRING is deprecated".
- BUG FIXING: in PHP 8.1, error "E_DEPRECATED - php_function_name(): Passing null to parameter #X ($parametername) of type string is deprecated" where 'php_function_name' is an internal PHP function name, '#X' is the parameter position and '$parametername' is the concerned function parameter name.
- BUG FIXING: in PHP 8.1, error "E_DEPRECATED - Implicit conversion from float to int loses precision" when executing
\General::reducePictureSize()
method. - BUG FIXING: on HTTP error 403 or 404, the page reloading confirmation message ('beforeunload' JS event) was shown unnecessarily after clicking the link to return to the home page.
- BUG FIXING: on HTTP error 403 or 404, the installation panel "Install the App?" was shown unnecessarily.
- BUG FIXING: the confirmation message "A confirmation email has been sent to you." was not displayed after submitting the email address on new password request (clicking the "forgotten password?" link).
- BUG FIXING: the
znetdkMobile.form.getInputValue()
method returned false and the error message "The input type='undefined' is not supported!" was displayed in the browser's console when an input field was declared in a form without specifying the type attribute. Now, if the type attribute is not specified for an input field, it is considered to be of type "text".
Version 2.7 released on August 18, 2022
- CHANGE: input fields are now surrounded by a red border in case of form validation error.
- CHANGE: new jQuery events triggered before (
beforeshow
) and after (aftershow
) displaying a modal dialog. If thebeforeshow
event handler returnsfalse
, the modal dialog is not displayed. - CHANGE: server-side errors are now displayed using the HTML5 JS Validation API (
setCustomValidity
method) when an input field value is incorrect. - CHANGE: the message displayed after the user changes their password is now a "snackbar" type message rather than a message in a blue panel.
- CHANGE: the message displayed after editing a user's information or deleting a user is now a "snackbar" type message rather than a message in a blue panel.
- CHANGE: new "My user rights" button added to the user panel to display the user profiles assigned to the connected user and to indicate whether she or he has a full menu access or not.
- CHANGE: when 'Remember me' is checked on the login form, the user's login name is stored in the browser's local storage and is pre-populated on subsequent displays of the login form.
- CHANGE: new "Installation" and "Uninstallation" buttons added to the user panel in order to help users to install the Application on their devices and to uninstall it. The modal dialogs shown when clicking these new buttons can also be displayed by calling the two following methods:
znetdkMobile.install.showInstallView()
andznetdkMobile.install.showUninstallView()
. - CHANGE: new
CFG_MOBILE_INSTALL_MESSAGE_DISPLAY_AUTO
parameter to enable or disable automatic display of a message to install the application (Add 2 Home Screen). Set to TRUE by default, this value can be changed toFALSE
in theconfig.php
script of the application. This message can also be displayed on demand by calling theznetdkMobile.install.showInstallableMessage()
method. - CHANGE: new
znetdkMobile.install.isAppInstallable()
andznetdkMobile.install.isAppInstalled()
methods respectively to know if the application is installable and if it is already installed. - CHANGE: new
viewName
andonViewLoaded
optional parameters added to theznetdkMobile.modal.make()
method in order to load in Ajax the modal dialog from the specified ZnetDK view before instantiating it. If the modal dialog already exists in the DOM, it is not loaded again when the method is called next times. - CHANGE: new
znetdkMobile.serviceWorker.isRegistered
property that is set to true once the service worker registration has succeeded. - CHANGE: new
znetdkMobile.browser.doPhoneCall()
method to dial the specified phone number on cell phone. - CHANGE: new
znetdkMobile.browser.sendSMS()
method to open the screen for sending an SMS and pre-fill phone number and message from the specified values passed in parameters. - CHANGE: special characters are now allowed by default when entering a new password for app authentication (see
CFG_CHECK_PWD_VALIDITY
andLC_MSG_ERR_PASSWORD_BADLENGTH
PHP constants for customization purpose). - CHANGE: new
$includeArchived
parameter (set toTRUE
by default) added to the\UserManager::getUsersHavingProfile()
method. When set toFALSE
, archived users are excluded from the returned users. - CHANGE: new
znetdkMobile.list.beforeInsertRowCallback
property to define a custom function to call each time a row is inserted in a list. This function has one parameter which contains the data to display for the row. This data can be modified within the function before displaying the row. This callback function can be useful to format data before row insertion. - CHANGE: for optimization purpose, AJAX requests are no longer sent by a
znetdkMobile.autocomplete
input field when the previously entered keyword does not match any suggestions. - CHANGE: for performance purpose, suggestions returned by AJAX requests when entering a keyword in a
znetdkMobile.autocomplete
input field can be cached in memory to reduce network traffic. To enable caching, setznetdkMobile.autocomplete.maxNumberOfCachedItems
to a value greater than zero (set to zero by default). To clear the cache once a suggestion is selected, change the valueznetdkMobile.autocomplete.cacheLifetime
to'selection'
('page'
is set by default, meaning that cache is kept until user leaves the application). - BUG FIXING: when calling the
DAO::store()
method with an empty row id value (i.e. '') and the$emptyValuesToNull
parameter isFALSE
(default case), then the SQL statement generated is no longer anUPDATE
but anINSERT
instead. - BUG FIXING: for optimization purpose, the user profile list displayed for each user in the user list (menu Authorizations | Users) is no longer created by querying profiles in SQL for each user (now, only one SQL query is executed for all displayed users).
- BUG FIXING: multiples clicks are prevented on anchor and button elements of the application (disabling during 500 ms).
- BUG FIXING: messages displayed through the
znetdkMobile.messages.add()
method were not hidden after the user logged out. - BUG FIXING: the first parameter named
$loginName
is renamed to$userId
for the\UserManager::getUserProfiles()
method because the expected parameter value was the user internal identifier. - BUG FIXING: Javascript error displayed in web browser console on service worker registration when the App's URL is redirected: "The script resource is behind a redirect, which is disallowed.".
- BUG FIXING: user profiles were displayed twice when the number of defined profiles exceeded 20 profiles.
- BUG FIXING: when activating the "Users" tab from the "Profiles" tab, the user list was not reloaded when applying "Enabled", "Disabled" or "Archived" filter and the profile list was reloaded instead.
- BUG FIXING: ajax requests could be executed twice after the user's session expired if a JS error occurred while executing them from the queue.
- BUG FIXING: the login name was not displayed in the login field after reloading of the application once session was expired.
- BUG FIXING: JS error message "TypeError: Cannot read properties of undefined (reading 'replace')" was displayed when the rendering callback function passed to the
znetdkMobile.autocomplete.make()
method did not returned a string value. - BUG FIXING: JS error message displayed in web browser console about
znetdkMobile.log.e$()
function that is not defined when a JS error is detected after a view loading through theznetdkMobile.ajax.loadView()
method (issue in minification ofmobile-min.js
version 2.6).
Version 2.6 released on June 03, 2022
- CHANGE: downloaded documents (photos, pdf, etc.) are now stored in cache by the service worker if the
cache=true
GET parameter is added to the download url. - CHANGE: new ZnetDK
\General::reducePictureSize()
method that resizes a JPEG or PNG picture by specifying a maximum width and height. - CHANGE: new
CFG_APPLICATION_VERSION
parameter to specify the current application's version (integer value, 1 by default). When this version is set into theconfig.php
of the application, the client-side application is automatically reloaded on user's session expiration if the application version on the server-side is higher than the one currently loaded in the user's web browser. - CHANGE: new
\Convert::binaryToBase64Url()
ZnetDK method to convert a binary file content to base64 URL. - CHANGE: new
\Convert::base64UrlToBinary()
ZnetDK method to convert a base64 URL to binary file content. - CHANGE: new
\Request::setTrimedCharacters()
to specify the characters to trim when retrieving the sanitized value of a request parameter. By default, the trimed characters are " \n\r\t\v\x00". This method can be useful to preserve the newline characters of the beginning and the end of a text. - CHANGE: new
CFG_REQUEST_VARIABLE_FILTERING_LEVEL
parameter to specify the filtering level applied by default when reading HTTP request variables by calling the\Request()
getter method (i.e$request->my_var
). Value'HIGH'
is set by default (PHPfilter_var()
function is applied withFILTER_SANITIZE_STRING
filter andFILTER_FLAG_NO_ENCODE_QUOTES
option). Other allowed value is'LOW'
(PHPstrip_tags()
function is applied and the string '<=' is preserved if exists in the text to filter). - CHANGE: new
\Request::setVariableFilteringLevel()
to change the default value set through theCFG_REQUEST_VARIABLE_FILTERING_LEVEL
parameter. Allowed parameters are'LOW'
and'HIGH'
. - CHANGE: Flash Of Unstyled Content (FOUC) is now prevented on application loading.
- CHANGE: jQuery upgrade from version 3.5.1 to version 3.6.0 (see
CFG_MOBILE_JQUERY_JS PHP
constant). - CHANGE: the
znetdkMobile.setInputValue()
method now allows to check multiple checkboxes having the same name (generally ended with double brackets, for example"mycheckboxes[]"
). The values of the checkboxes to check are passed in parameter of the method as an array. - CHANGE: the
znetdkMobile.getInputValue()
method now allows to retrieve as a JS array, the selected values for aSELECT
HTML element set with themultiple
property. - BUG FIXING: jQuery syntax error calling
znetdkMobile.getInputValue()
method when the input name passed in parameter contains "bracket" symbols. - BUG FIXING: when more than 20 users were declared in the application, the list of users (view
'z4musers.php'
) was not properly paginated (same users were displayed several times).
Version 2.5 released on September 29, 2021
- CHANGE: new
\General::callRemoteAction()
method usefull to invoke a controller action exposed as web service by a remote ZnetDK application. - CHANGE: new
CFG_SQL_TRACE_ENABLED
parameter which traces in the system log all SQL statements executed through the ZnetDK\DAO
class. - CHANGE: new
\UserSession::getUserId()
method that returns the user ID of the connected user. - CHANGE: new
zdk_user_pwd_resets
SQL table for tracing reset password requests. The database schema can be upgraded for applications deployed in a previous version of ZnetDK by executing the following DDL statement:CREATE TABLE `zdk_user_pwd_resets` (
`email` VARCHAR(100) NOT NULL COMMENT 'Email address',
`request_date_time` DATETIME NOT NULL COMMENT 'Request date time',
`reset_key` VARCHAR(100) NOT NULL COMMENT 'Reset key',
UNIQUE `email` (`email`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci
COMMENT = 'Password reset';
For any new applications, just download the znetdk-security-1.6.zip archive from the ZnetDK download page to install the security SQL tables corresponding to this version. - CHANGE: new
CFG_FORGOT_PASSWORD_ENABLED
parameter to display a link labeled 'Forgot password?' on the login form. When clicked, the ZnetDK modal dialog corresponding to the viewforgotpassword.php
is shown to request a new password from a user email address. This view can be customized by copying it to theview/
folder of the application or a module. - CHANGE: new
controller\ForgotPassword
class in charge of displaying theforgotpassword.php
view when the 'Forgot password?' link is clicked. In addition, the controller processes the requests for getting a new password and for resetting the user's password.
This controller can be overloaded by the application or a module for customization purpose. - CHANGE: new
CFG_FORGOT_PASSWORD_REQUEST_TRACE_ENABLED
parameter to trace the
requests for a new password to the ZnetDK system log file. - CHANGE: new 'Archived' user's status and new 'Status' datatable filter to limit display to users matching a given status ('Enabled', 'Disabled' or 'Archived'). An archived user is not allowed to log in to the application and can't request a new password through the 'Forgot password?' link.
- CHANGE: the verification of the login name during authentication process is now case sensitive. This means that a user declared for example with the login name 'JohnDoe' can no longer log in if he enters 'JOHNdoe'.
- BUG FIXING: the filename defined for the
\Response::setFileToDownload()
method was not properly displayed by the web browser when it contained accents. - BUG FIXING (for mobile only): when the
znetdkMobile.setInputValue()
method was called for a checkbox element with a non-empty value different than the one set for the checkbox element, it was not unchecked. - BUG FIXING: 'Remember me' checkbox state change event handler was incorrectly declared each time the login form was displayed for the user's session renewal.
- BUG FIXING: focus wrongly applied to the show/hide password button instead of the password entry field.
- BUG FIXING: error ENOTICE - Trying to access array offset on value of type null in profilemanager.php(126) when the user profile view (
profile.php
) was displayed in PHP 7.4. - BUG FIXING: the callback function specified for the
znetdkMobile.messages.ask()
method could be executed twice wrongly. - BUG FIXING: the Phone and Note labels of the
z4musers.php
view were not displayed in bold. - BUG FIXING: when the page header was hidden after calling the
znetdkMobile.header.events.handleHideHeaderOnScroll()
method, no extra space
was longer added to the page's anchors through the inline#zdk-anchor-adjust
CSS style (bug finally not fixed in version 2.4).
Version 2.4 released on April 15, 2021
- CHANGE: the
\DAO::remove()
method now returns the number of rows removed. - CHANGE: Phone and Notes fields added to the user form. The database schema must also be upgraded for applications deployed in a previous version of ZnetDK by executing the following DML statement:
ALTER TABLE zdk_users
ADD user_phone VARCHAR(50) NULL COMMENT 'Phone number' AFTER user_email,
ADD notes VARCHAR(100) NULL COMMENT 'Notes' AFTER user_phone;
For any new applications, just download the znetdk-security-1.5.zip archive from the ZnetDK download page to install the security SQL tables corresponding to this version. - CHANGE: new
znetdkMobile.navigation.clearRowCountFromHorizontalMenuItem()
method to clear the counter displayed on the right of the menu item (seeznetdkMobile.navigation.addRowCountToHorizontalMenuItem()
method). - CHANGE: new
\DAO::doesTableExist()
method to check if the table specified as property of the DAO exists or not. - BUG FIXING: when the page header is hidden after calling the
znetdkMobile.header.events.handleHideHeaderOnScroll()
method, no extra space is longer added to the page's anchors through the inline#zdk-anchor-adjust
CSS style. - BUG FIXING: the suggestions were not automatically hidden after pressing the TAB key from a ZnetDK 4 Mobile autocomplete input field.
- BUG FIXING: error message PFL-012 when calling
\DAO::remove()
with a row ID passed as a parameter while the 'zdk_profile_rows' ZnetDK security SQL table is missing. - BUG FIXING: checkbox and radio inputs could be modified after calling the
znetdkMobile.form.setReadOnly()
method. - BUG FIXING: a JS error occured calling
znetdkMobile.form.setInputValue()
when the value specified for a radio button contained a space character. - BUG FIXING:
znetdkMobile.form.getInputValue()
called for a checkbox input wrongly returned the element's value while the checkbox was not checked. Now, an empty string is returned if the checkbox is not checked. - BUG FIXING: in the
mobile.php
page layout, the title attribute is added to the#zdk-side-nav-button
anchor for a better accessibility.
Version 2.3 released on October 9, 2020
- CHANGE: the regular expression set by default to the
CFG_CHECK_PWD_VALIDITY
parameter in order to check the strength of a new password is changed to impose the user to input a minimum of 8 characters with at least 1 uppercase letter, 1 lowercase letter and 1 number. - CHANGE: custom action button can be added to the page calling the new
znetdkMobile.action.addCustomButton()
method. - CHANGE: the page header can be hidden on scroll calling the new
znetdkMobile.header.events.handleHideHeaderOnScroll()
method. - CHANGE: new optional 'classSelector' parameter added to the
znetdkMobile.modal.getInnerForm()
method to select a specific form in case more than one form exists in the modal dialog. - CHANGE: new optional 'parentContainer' parameter added to the
znetdkMobile.messages.showSnackbar()
method to force display of a snackbar message into a specific container (for example a modal dialog). - CHANGE: new optional 'renderCallback' parameter added to the
znetdkMobile.autocomplete.make()
method to customize the display of the suggestions. - CHANGE: new
znetdkMobile.form.setDataModifiedState()
method to indicate whether form data are modified or not by a user input. This method is called by the znetdkMobile.form.reset() andznetdkMobile.form.events.handleAllInput()
methods. - CHANGE: new
znetdkMobile.form.isModified()
method to know if form data have been modified or not by a user input. - CHANGE: new 'checkDataFormsModified' parameter added to the
znetdkMobile.modal.close()
method to check whether the inner form data have been modified or not by a user input. If so, a confirmation is aked to user before closing the modal dialog. - CHANGE: when the 'question' parameter is set to null calling the
znetdkMobile.messages.ask()
method, then theLC_MSG_ASK_CANCEL_CHANGES
php constant message is displayed as default question. - CHANGE: the display width of the 'z4musers.php' and 'z4mprofiles.php' views is enlarged for best display on mobile devices.
- CHANGE: if an anchor with 'href' attribute starting with 'mailto:' or 'tel:' is clicked, then no unload confirmation message is longer prompted by the web browser.
- CHANGE: the 'engine/log/autoexec.sync' file created by ZnetDK to synchronize the execution in background of an 'autoexec' controller action is now automatically deleted and recreated if it is corrupted or if its execution time exceeds one hour.
- CHANGE: the jQuery library is updated to version 3.5.1 (previous version was 3.4.1).
- CHANGE: when calling
znetdkMobile.list.setCustomSortCriteria()
method with a property named '_default' as sort definition for the sortCriteria parameter, then no sort is applied when this sort field is choosen from the search modal dialog, including if reverse sort has been selected. - CHANGE: the local storage key used to memorize the custom sort criteria of a data list (see
znetdkMobile.list
) is now suffixed with the view ID. So the sort criteria are no longer applied when a data list, with the same element ID, exists in different "reloaded on display" views (with the 'zdk-viewreload' CSS class). - CHANGE: the onAdd parameter of the
znetdkMobile.list.setModal()
now accepts to be set to false in order to hide the 'Add' action button. - CHANGE: for the custom and mobile page layout only (
CFG_PAGE_LAYOUT
set to 'custom' or 'mobile'), the HTML title attribute is added to the menu item anchor of the navigation menu and is set to menu item label. - CHANGE: labels that are too long in the vertical navigation menu are cut off on the right and suffixed by 3 dots (i.e. '...').
- CHANGE: when calling
znetdkMobile.modal.getInnerForm()
method, if more than one form exist in the modal, the first one is now returned instead of a boolean false value. - CHANGE: new
znetdkMobile.list.searchedKeywordAsJson
property. When set to true, extra 'keyword_json' POST parameter is sent to the PHP controller's action on search by keyword, for loading a ZnetDK Mobile Data List (see 'data-zdk-load' HTML5 property). This 'keyword_json' parameter contains each searched keywords in JSON format including the extra properties of the selected keyword suggestions (see 'data-zdk-autocomplete' HTML5 property). - CHANGE: keyboard selection added to the suggestions displayed by a
znetdkMobile.autocomplete
input field. - BUG FIXING: error message "E_WARNING - file_exists(): open_basedir restriction in effect." when the README.TXT file existed into the 'engine/modules' subdirectory.
- BUG FIXING: error message "The input with name='input_name' is not supported!" was displayed into the browser console when calling the
znetdkMobile.form.getInputValue()
method passing as parameter an input name matching a <textarea> HTML element. - BUG FIXING: the
znetdkMobile.list.refresh()
method could be called multiple times on view display when the view was set to be reloaded on each of its displays ('zdk-viewreload' CSS class applied to a HTML element of the view). - BUG FIXING: after
znetdkMobile.navigation.addRowCountToHorizontalMenuItem()
method call, the horizontal menu items could be displayed on an extra line and so they could hide the view content. - BUG FIXING: after removing a filter tag applied to a
znetdkMobile.list
element, the space was not totally released at the top of the list. - BUG FIXING: after calling the
\Response::setFileToDownload()
method, the response header Content-Type was not set properly for downloaded pictures when its file extension was in upper case and when the '$downloadedFilename' parameter was not specified. - BUG FIXING: when saving a user profile, the parent menu items of the selected menu items were not stored. As a result, parent menu items were not displayed in the navigation verticial menu for users who were assigned the profile.
- BUG FIXING: select HTML element did not gain focus when calling
znetdkMobile.form.setFocus()
method.
Version 2.2 released on May 25, 2020
- CHANGE: extra logs added to the /engine/log/system.log file when the
CFG_AUTOEXEC_LOG_ENABLED
parameter is set to TRUE. Now, the command line executed as background process, the console output and the result code are also traced. - CHANGE: if a view contains a HTML element with the 'zdk-viewreload' CSS class, then the content of the view is reloaded each time the view is displayed.
- CHANGE: the
znetdkMobile.form
setFocus()
andsetFocusOnFirstInput()
methods now set focus to html textarea and select elements in addition to input elements. - CHANGE: when adding a new user, the expiration date is set to the today date by default and the user is enabled by default.
- CHANGE: users and profiles can be removed now through the new 'Remove' button.
- CHANGE: a Fontawesome warning icon is added to the form error messages. In addition, the form is scrolled to top to ensure the visibility of the form error message.
- BUG FIXING: in PHP version 7.2, E_WARNING errors were traced into the ./engine/log/errors.log when calling the
\Request::getUploadedFileInfos()
. The error message were as below: count(): Parameter must be an array or an object that implements Countable - ..\engine\core\request.php(351). - BUG FIXING: in PHP version 7.3, when the
CFG_AUTO_MINIFICATION_METHOD
parameter was set into the 'config.php' of the application, the error message Access to undeclared static property... in ..\dependencies.php on line 164 was displayed on main page loading. - BUG FIXING: E_WARNING errors were traced into the ./engine/log/errors.log on PHP 'include' by the ZnetDK 'response.php' script when the view to include called the ZnetDK
\ErrorHandler::restart()
method. - BUG FIXING: the 'textarea' and 'select' HTML fields were wrongly editable after calling the
znetdkMobile.form.setReadOnly()
method. - BUG FIXING: when displaying the user form of the 'mobile' page layout (see 'z4musers.php'), the list of profiles was loaded twice through AJAX request instead of once.
- BUG FIXING: the decimal separator of a float number stored in session through the
\UserSession::setCustomValue()
method, was missing next when retrieving the float number value calling the\UserSession::getCustomValue()
method. - BUG FIXING: JavaScript exception thrown when the value returned by the remote PHP controller for a checkbox or radio button input is empty, on calling the
znetdkMobile.form.load()
method. - BUG FIXING: the error message "The multiple input element with name='myinput' is not supported!" was displayed into the browser console when calling the
znetdkMobile.form.getInputValue()
method with a radio button input name as parameter while no radio button was selected. Now, the null value is returned instead and no error message is longer triggered.
Version 2.1 released on October 15, 2019
- CHANGE: the 'autocomplete' HTML attributes are set to 'username' and 'current-password' into the login form to allow the web browser to memorize the credentials.
- CHANGE: data-icon attribute added to the 'custom' layout menu hyperlink for display. The data-icon value is set from the icon value indicated into the 'menu.php' script by calling the
\MenuManager::addMenuItem()
method. - CHANGE: new page layout dedicated to mobile applications enabled when the
CFG_PAGE_LAYOUT
paramater is set to 'mobile' into the 'config.php' script of the application. For full documentation, go to the mobile.znetdf.fr website. - CHANGE: new 'action_detail' method added to the ZnetDK
\Profile
controller class to get detailed informations of a user profile through an AJAX call. - CHANGE: new 'action_detail' method added to the ZnetDK
\Users
controller class to get detailed informations of a user through an AJAX call. - CHANGE: new
\SimpleDAO
ZnetDK class for selecting and updating a table content in database without the need of declaring a custom DAO class. This new DAO object is perfect for executing simple operations on one SQL table. - CHANGE: additional CSS and JavaScript librairies can be added to a ZnetDK application through the
CFG_APPLICATION_CSS
andCFG_APP_JS
parameters set into the 'config.php' application script. These libraries can be CDN libraries hosted out of the machine hosting the ZnetDK application. To set multiple libraries, declare them using a PHP serialized array. - CHANGE: the filename of a CSS or JavaScript internal librairies is now suffixed by a timestamp value (i.e. '/mypath/mylib.js?v=12545656') calculated from its modification date and time. So, newly modified server-side libraries get reloaded if they are newer than those existing in the web browser cache.
- CHANGE: an offline page is displayed when calling in HTTP GET the resource http(s)://mydomain/offline. The offline page content can be customized by adding a 'offline.php' view into the 'applications/default/app/view' folder.
- CHANGE: new 'action_isconnected' method added to the ZnetDK
\Security
controller class to check through an AJAX call if the user's session has not expired. This controller action can be called for example, before downloading a document for which authentication is required. - CHANGE: in the root .htaccess file of ZnetDK, the 404 HTTP errors are now managed using the rewrite engine module if installed rather than using the ErrorDocument 404 directive.
- BUG FIXING: on some Linux Hosting systems, the following MySQL error message "Invalid datetime format: 1366 Incorrect integer value" was displayed when calling the ZnetDK
\DAO::store
method with boolean type values set to false for storage in a MySQL table column with an integer datatype. - BUG FIXING: an error 404 was displayed when calling a PHP view with the SEO url specified into 'menu.php' script through the
\MenuManager::addMenuItem()
method (case of theCFG_VIEW_PAGE_RELOAD
parameter set to TRUE into the 'config.php' of the application). - BUG FIXING: the 'type="text/javascript"' attribute of the HTML script tag is no longer specified to avoid the following W3C validator warning error: "The type attribute is unnecessary for JavaScript resources."
- BUG FIXING: the "CORE - E_WARNING - scandir(..engine/modules): failed to open dir" warning message is no longer displayed when the ZnetDK 'engine/modules' directory is missing.