- ZnetDK
- Téléchargements
- Installation
- Premiers pas
- Aller plus loin
- Doc de référence
- Forum de discussion
- Prestations
- Me contacter
Stable versions: 3.6, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.9, 2.8, 2.7, 2.6, 2.5, 2.4, 2.3, 2.2, 2.1, 2.0, 1.9, 1.8, 1.7, 1.6, 1.5, 1.4, 1.3, 1.2, 1.1, 1.0
Patches: 1.11, 1.21, 1.22, 2.11
RC version: 1.0 RC
Beta versions: 0.98, 0.97, 0.96, 0.95, 0.94, 0.93, 0.92
ZnetDK 3.6, 2025-11-27
- CHANGE (all): new CFG_HTTPS_ONLY_ALLOWED PHP constant to force Application execution in HTTPS. - CHANGE (ZnetDK 4 Mobile only): for a better accessibility, the focus indicator is now more visible. - CHANGE (ZnetDK 4 Mobile only): the z4m.messages.add() method now returns the element of the shown message. - CHANGE (ZnetDK 4 Mobile only): for a better accessibility, after refreshing a datalist (z4m.list), the focus is now set to the edit anchor of the first row. After closing a modal dialog set via the z4m.list.setModal() method, the focus is set to the edit anchor initially clicked to open it. - CHANGE (ZnetDK 4 Mobile only): new z4m.list.setFocus() method to set the keyboard focus to the edit anchor of the specified datalist row. - CHANGE (ZnetDK 4 Mobile only): for a better accessibility, a "Skip to content" link is displayed when it is focused. - CHANGE (ZnetDK 4 Mobile only): for a better accessibility, the focus is set to the first focusable element in the view after its display if it is not the home view. - CHANGE (ZnetDK 4 Mobile only): new z4m.content.setFocus() method to set the keyboard focus to the first focusable element in the currently displayed view. - BUG FIXING (ZnetDK 4 Mobile only): in version 3.5, the 'forgot password?' link was no longer displayed on login page when CFG_FORGOT_PASSWORD_ENABLED was set to TRUE. - BUG FIXING (all): error HTTP 500 if ZNETDK_APP_URI or ZNETDK_ROOT_URI is used in the config.php of the application. - BUG FIXING (all): error 'UI token not sent in HTTP request' is no longer traced in the errors.log file when the method of the HTTP request is HEAD. - BUG FIXING (ZnetDK 4 Mobile only): when calling the z4m.form.showError() method, if the specified input name is hidden, the error message is now displayed in red at the top of the form instead of being displayed via the JavaScript setCustomValidity() method. - BUG FIXING (ZnetDK 4 Mobile only): the focus was not set to the first button within the User Panel modal when opened. - BUG FIXING (ZnetDK 4 Mobile only): text entered in the autocomplete field was incorrectly cleared when the Escape key was pressed to hide the suggestions list. - BUG FIXING (ZnetDK 4 Mobile only): the left and right outline borders of the side navigation menu items where not visible when focused. - BUG FIXING (ZnetDK 4 Mobile only): The side navigation menu logo outline height was less than the logo image height. - BUG FIXING (ZnetDK 4 Mobile only): the header remained hidden after calling the z4m.header.autoHideOnScroll(false) method. - BUG FIXING (ZnetDK 4 Mobile only): the datalist row anchors of the 'z4musers.php' and 'z4mprofiles.php' views did not have visible outline when they were focused via the keyboard tab key. - BUG FIXING (ZnetDK 4 Mobile only): the controller name 'users' specified in the 'z4musers.php' view is renamed 'Users' to allow action overload. - BUG FIXING (ZnetDK 4 Mobile only): the controller name 'profiles' specified in the 'z4mprofiles.php' view is renamed 'Profiles' to allow action overload. - BUG FIXING (ZnetDK 4 Mobile only): the background color for the .w3-hover-theme:hover selector is changed to #BDBDBD in the z4m-theme-light.css stylesheet for a better readability. - BUG FIXING (ZnetDK 4 Mobile only): the #000 and #FFF colors are replaced by #121212 and #f1f1f1 colors in the z4m-theme-dark.css stylesheet for a better contrast.
ZnetDK 3.5, 2025-06-30
- CHANGE (all): when user logs out, the session is now totally deleted. - CHANGE (ZnetDK 4 Mobile only): ARIA attributes added to the z4m.autocomplete input field widget. - CHANGE (ZnetDK 4 Mobile only): ARIA attributes added to the z4m.modal modal dialog widget. - CHANGE (ZnetDK 4 Mobile only): W3.CSS is updated to version 5.02. - CHANGE (all): new \DAO::addCondition() method to add a SQL condition to the SQL query. - CHANGE (all): 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 the DAO::setSortCriteria() method. - CHANGE (ZnetDK 4 Mobile only): App's logo displayed on the left of the banner title when the login form is displayed and when user is logged out. - CHANGE (ZnetDK 4 Mobile only): new z4m.autocomplete.isSuggestion() method to know if the current z4m.autocomplete input field's value has been selected from the list of suggestions or not. - CHANGE (ZnetDK 4 Mobile only): new z4m.autocomplete.lastSelectedItem property to get the label of the last selected suggestion. - CHANGE (ZnetDK 4 Mobile only): now when suggestions are displayed for a z4m.autocomplete input field, the Escape key closes the suggestion list. - CHANGE (ZnetDK 4 Mobile only): 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 the 'minStringLength' property. - CHANGE (ZnetDK 4 Mobile only): new optional argument 'onSuggestionsCallback' added to the 'z4m.autocomplete.make()' method to get the number of suggestions found for the last entered query string. - CHANGE (ZnetDK 4 Mobile only): an icon symbolizing a user is now displayed in the header of the login dialog box. - BUG FIXING (ZnetDK 4 Mobile only): after changing the password, the user's session was set to 'public' (see CFG_SESSION_DEFAULT_MODE constant) even if the user checked the 'Remember me?' option when logging in. - BUG FIXING (ZnetDK 4 Mobile only): confirmation and notification modal dialogs displayed via the z4m.messages.ask() and z4m.messages.notify() methods could be positioned in the background of the last shown modal dialog. - BUG FIXING (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): Modal dialog was not closed when pressing Esc key if multiple modal dialogs were open in the background. - BUG FIXING (all): bad English translation of the verb 'click' for constants LC_MSG_INF_PWD_RESET_PROCESSED, LC_MSG_INF_LOGOUT and LC_MSG_INF_CANCEL_LOGIN. - BUG FIXING (all): 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 (all): 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. The ZDKException "GEN-010" is now thrown instead when the getimagesize() PHP function does not return an array. - BUG FIXING (ZnetDK 4 Mobile only): the z4m.autocomplete component did not consider characters entered beyond the minimum number of characters required (minStringLength) to look for suggestions. - BUG FIXING (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): when cache was enabled for the z4m.autocomplete component (property maxNumberOfCachedItems > 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.
ZnetDK 3.4, 2025-01-30
- CHANGE (ZnetDK 4 Mobile only): when the z4m.message.ask() modal dialog is displayed, the focus is set by default to the "No" button. - CHANGE (ZnetDK 4 Mobile only): new 'z4m.list.displayRowCountInMenuTab' property 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 (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): when searching for users, a caption is now displayed below the "Searched keyword" label to indicate what user information is being searched for. - CHANGE (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): the z4m.form.showError() method accepts now an input name with its position specified as suffix separated by a colon (for example 'my_input:5') to show an error message for the nth input when exists multiple times in a form with the same name. - CHANGE (ZnetDK 4 Mobile only): now the CSS class 'zdk-required' can be applied to any HTML element to add an asterisk to an input label. - CHANGE (ZnetDK 4 Mobile only): 'My account' title added to the user panel modal and 'Search' title added to the search modal. - CHANGE (ZnetDK 4 Mobile only): new 'z4m-theme-light.css' stylesheet to display the application in a light color theme. New 'z4m-theme-dark.css' stylesheet to display the application in a dark color theme. - CHANGE (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): the color CSS class applied to the app's banner is changed to 'w3-theme-d2' instead of 'w3-theme'. - CHANGE (ZnetDK 4 Mobile only): the color CSS class applied to the header of the modal dialogs is changed to 'w3-theme-dark' instead of 'w3-theme-d5'. - CHANGE (all): 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 (ZnetDK 4 mobile only): new z4m.list.infiniteScroll property to disable the list infinite scroll. When this property is set to false, 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 (ZnetDK 4 Mobile only) : 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 (ZnetDK 4 Mobile only) : 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 (ZnetDK 4 Mobile only): when calling z4m.form.setReadOnly() method, property for inputs of type 'radio' and 'checkbox' was set to 'readonly' instead of 'disabled'. - BUG FIXING (ZnetDK 4 Mobile only): the z4m.autocomplete component could sometimes display the same suggestions twice. - BUG FIXING (all): in PHP 8.4, error "Constant E_STRICT is deprecated in ... ErrorHandler.php on line 155. - BUG FIXING (all): 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 (all): 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 (all): 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 (ZnetDK 4 Mobile only): on a large screen, horizontal menu items that overflowed to the right were hidden instead of being displayed below. - BUG FIXING (ZnetDK 4 Mobile only): search criteria and sort tags displayed when searching for users were incorrectly displayed under the list header. - BUG FIXING (ZnetDK 4 Mobile only): 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 (ZnetDK 4 Mobile only): the vertical menu close button was not properly right aligned. - BUG FIXING (ZnetDK 4 Mobile only): 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 the 'w3-theme' class. - BUG FIXING (ZnetDK 4 Mobile only): for a better WCAG legibility, the colors of the default ZnetDK 4 Mobile color theme are darken. - BUG FIXING (ZnetDK 4 Mobile only): for a better WCAG legibility, the color CSS class applied to the app's menu selected item is changed to 'w3-theme-l3' instead of 'w3-theme-l2'. - BUG FIXING (ZnetDK 4 Mobile only): for a better WCAG legibility, the color CSS class applied to the app's horizontal menu is changed to 'w3-theme-l4' instead of 'w3-theme-l3'. - BUG FIXING (ZnetDK 4 Mobile only): 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 (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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 (all): 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 (all): 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 (ZnetDK 4 mobile only): CSS z-index value is increased to 5 for the left side menu (previous z-index value was 4) and to 6 for the modal overlay (previous z-index value was 5 for the w3-modal CSS class). - BUG FIXING (ZnetDK 4 mobile only): the Security::action_login() controller's action could not be overloaded on Linux by the application or a module. - BUG FIXING (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): the color CSS class for the Add action button, initially set to 'w3-red', is changed to 'w3-theme-action'.
ZnetDK 3.3, 2024-08-19
- CHANGE (all): 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 and CFG_LOGIN_THROTTLING_ATTEMPTS_WINDOW_TIME. - CHANGE (all): for security purpose, on user login if their user account is disabled, the displayed error message is now LC_MSG_ERR_LOGIN instead of LC_MSG_ERR_LOGIN_DISABLED. - CHANGE (all): The CFG_NBR_FAILED_AUTHENT constant is now set to 0 by default (the user account is no longer disabled after 3 login failures). - CHANGE (all): when the CFG_NBR_FAILED_AUTHENT constant value is 0 or is not a positive integer, user accounts are never disabled after multiple failed login attempts. - CHANGE (all): 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 (all): 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 (all): 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 (all): the value specified for the CFG_PAGE_LAYOUT constant now can be set to a value different than 'classic', 'office', 'custom' and 'mobile'. For example, if CFG_PAGE_LAYOUT is set to 'my_page_layout' in the config.php of the App, the custom page layout 'INSTALL_DIR/applications/default/app/layout/my_page_layout.php' is used as page layout. In this case, the dependencies added to the page layout are only those set for CFG_APP_JS and CFG_APPLICATION_CSS constants and the JS and CSS dependencies of the installed modules. - CHANGE (all): the controller\Users::notify() and controller\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 (all): 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 (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): new z4m.form.showInfo() and z4m.form.hideInfo() to show and hide an information message in the form. - CHANGE (ZnetDK 4 mobile only): new hidePrevErrors argument added to the z4m.form.showError() method to hide previous error messages before displaying a new error message. - CHANGE (ZnetDK 4 mobile only): new z4m.ajax.toggleLoader() method to show or hide the AJAX Loader image on demand. - CHANGE (ZnetDK 4 mobile only): eye buttons added to the password input fields of the change password modal to reveal the entered password. - CHANGE (ZnetDK 4 mobile only): W3.CSS library upgraded to version 4.15. - CHANGE (all): new \User class to manage users programmatically. - BUG FIXING (all): message LC_MSG_INF_REQUEST_PWD_RESET_PROCESSED changed to be more explicit. - BUG FIXING (all): 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 (all): TCP/IP port was wrongly removed from the service web URL when calling the \General::callRemoteAction() method with POST method. - BUG FIXING (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): the App title was not right-aligned on small devices when authentication was enabled and the user was not logged in. - BUG FIXING (ZnetDK 4 mobile only): 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 and users-ui-events.php. - BUG FIXING (all): the user identifier (user_id) was not passed to the overloaded controller\Users::notify() method when it was called back by ZnetDK for customization purpose. - BUG FIXING (all): the \UserManager::storeUser() method did not return the user identifier (user_id). - BUG FIXING (ZnetDK 4 mobile only): Yes and No buttons were not properly aligned on the left in the confirmation modal dialog displayed when calling the z4m.messages.ask() method.
ZnetDK 3.2, 2024-04-05
- CHANGE (all): users now can authenticate to the application by using their
address email instead of their login name.
- CHANGE (ZnetDK 4 mobile only): when the Application GET URL include a 'login'
parameter and user is not authenticated (CFG_AUTHENTICATION_REQUIRED is TRUE),
the login name is initialized from this parameter and the input focus is set
to the password field.
- CHANGE (ZnetDK 4 mobile only): when CFG_VIEW_PAGE_RELOAD is set to TRUE, an
external link URL can be set for the $menuItemSEOlink argument when calling
the \MenuManager::addMenuItem() method within the 'menu.php' script.
- CHANGE (ZnetDK 4 mobile only): when CFG_VIEW_PAGE_RELOAD is set to TRUE, views
not tied to a level 1 or level 2 menu can be displayed in the application
via a hierarchical URL. For example, the view 'view2' can be displayed
invoking the https://myhost/myapp/view1seolink/view2seolink URL with the
following definition in the menu.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 (ZnetDK 4 mobile only): 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 (all): 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/' and 'mod/layout/' subfolder a PHP script named
'extra_hmtl.php' containing the extra HTML code.
- CHANGE (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): jQuery library updated to version 3.7.1.
- CHANGE (ZnetDK 4 mobile only): the color of the rows on hover is changed to
light grey instead of white in the user and profile management views
(z4musers.php and z4mprofiles.php).
- BUG FIXING (ZnetDK 4 mobile only): the z4m.content.getDisplayedViewId() method
returned a wrong view ID when the view name contained a dash character.
- BUG FIXING (all): 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 (ZnetDK 4 mobile only): 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 (all): error 'Uncaught ReferenceError: $ is not defined' displayed
in browser's console when CFG_VIEW_PRELOAD is set to TRUE and jQuery code
exists in the preloaded views. To prevent this error, the new parameter
CFG_LOAD_JS_DEPENDENCIES_FROM_HTML_HEAD can be set to TRUE to force the JS
dependencies loading from the HTML tag.
- BUG FIXING (ZnetDK 4 mobile only): snackbar messages were masked by elements
with a CSS 'z-index' higher than 1. The snackbar element is now set with a CSS
'z-index' value of 10 by default. This value can be increased in CSS by
selecting the snackbar through the 'z4m-snackbar' class name.
- BUG FIXING (all): the error message LC_MSG_WARN_LOGGED_OUT_MSG is not longer
displayed by the \UserSession::isAuthenticated() method if the request method
is GET. The LC_MSG_WARN_NO_AUTH error message is displayed instead.
- BUG FIXING (all): 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 (ZnetDK 4 mobile only): the page layout scripts 'office.php',
'custom.php' and 'classic.php', not useful for ZnetDK 4 Mobile, are no longer
included in the 'engine/core/layout/' subfolder of the delivery ZIP archive.
- BUG FIXING (ZnetDK 4 mobile only): the background color was not properly set
for the following user panel modal dialogs: z4minstall.php, z4muninstall.php
and z4mmyuserrights.php.
- BUG FIXING (ZnetDK 4 mobile only): 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 and z4mprofiles.php).
- BUG FIXING (ZnetDK only): from the user management view, when clicking the
New button, the modal dialog was automatically closed after its first display.
- BUG FIXING (all): a PHP fatal error was not properly displayed when happened
before the definition of the LC_MSG_CRI_ERR_SUMMARY and LC_MSG_CRI_ERR_DETAIL
PHP constants.
- BUG FIXING (all): 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 (all): 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
the engine/log/errors.log and made any response generated in JSON format
unreadable.
ZnetDK 3.1, 2023-12-21
- CHANGE (all): the SQL query execution time is now traced when the CFG_SQL_TRACE_ENABLED PHP constant is set to TRUE. - CHANGE (all): 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 the 'config.php' script of the application. The time elapsed in seconds for executing a controller action is given by the 'ZNETDK_TIME_ELAPSED_FOR_ACTION' PHP constant. - CHANGE (all): 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 (all): 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 (ZnetDK 4 mobile only): for better accessibility, new 'title' parameter added to the JavaScript z4m.action.addCustomButton() method to specify a title for the custom action button. - BUG FIXING (ZnetDK 4 mobile only): a JS data list was wrongly refreshed after a form submission if the 'success' property of the JSON response existed and was false (see z4m.list.setModal() method). - BUG FIXING (ZnetDK 4 mobile only): for better accessibility, 'title' and 'aria-label' HTML attributes are added to the action buttons. - BUG FIXING (ZnetDK 4 mobile only): after saving and removing a user profile, the confirmation message is now displayed as a snackbar message. - BUG FIXING (ZnetDK 4 mobile only): for better accessibility, form labels are now associated with their form fields. - BUG FIXING (ZnetDK 4 mobile only): items in the left vertical menu were not focusable when navigating with keyboard (accessibility issue). - BUG FIXING (all): HTML title attribute added to the application's logo link and HTML alt attribute set from the PHP LC_HEAD_TITLE constant. - BUG FIXING (ZnetDK 4 mobile only): for SEO purpose when the CFG_VIEW_PAGE_RELOAD parameter is set to TRUE, the 'href' attribute of the level 2 horizontal menu items is now set to the $menuItemSEOlink value specified in the menu.php script on \MenuManager::addMenuItem() method call. - BUG FIXING (ZnetDK only): when an application was configured with CFG_PAGE_LAYOUT set to 'custom', upon clicking a menu item, its associated view might not be displayed the first time and was ultimately only displayed upon clicking a second time. - BUG FIXING (ZnetDK only): when an application was configured with CFG_PAGE_LAYOUT set to 'classic' or 'custom', the icon on the title bar of the login dialog was displayed on the right instead of the left.
ZnetDK 3.0, 2023-09-10
- CHANGE (all): new \Convert::toISO88591() method to convert a string from UTF-8
to ISO-8859-1. This method requires 'mbstring', 'iconv' or 'intl' PHP
extension and can replace the PHP utf8_decode() function which is deprecated
in PHP version 8.2.
- CHANGE (all): new parameter CFG_DISPLAY_ERROR_DETAIL to hide technical error
details from the end user. This parameter is FALSE by default.
- CHANGE (all): new parameter CFG_SESSION_ONLY_ONE_PER_USER which limits the
number of sessions allowed per user login to one when set to TRUE (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 (ZnetDK 4 mobile only): the logout button is moved from the banner to
the user panel when the application is viewed on small and medium-sized
devices.
- CHANGE (all): token added to AJAX requests to prevent CSRF attacks. When
CFG_AUTHENT_REQUIRED parameter is FALSE, 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 (all): for security purpose, ZnetDK controller actions
controller\Users and controller\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 = FALSE) and the users or profiles view is not
declared within the 'menu.php' script of the application.
- CHANGE (all): 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 (all): 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 (ZnetDK 4 mobile only): the A2HS installation prompt is now only
shown on the first view displayed once the application is loaded.
- CHANGE (ZnetDK 4 mobile only): z4m.footer.adjustPosition() method is
deprecated because the footer is now positioned through CSS styles.
- CHANGE (ZnetDK 4 mobile only): new z4m.ajax.setCustomAjaxURL() method to set
a custom AJAX URL when the z4m.ajax.request() is called, especially from an
application that is not a ZnetDK 4 Mobile application (for example from a CMS
like WordPress).
- CHANGE (ZnetDK 4 mobile only): 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 (all): the '.htaccess' root file is now automatically generated if
missing and configured based on the ZnetDK installation directory relative to
the Apache web server's 'DocumentRoot' folder. The other '.htaccess' files,
usually located in the 'app/' and 'mod/' subdirectories, are no longer needed.
- BUG FIXING (all): 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 (ZnetDK 4 mobile only): "E_WARNING - filemtime(): stat failed for
... engine\core\Dependencies.php(210)" when the CFG_PAGE_LAYOUT is set to
a page layout other than 'mobile'.
- BUG FIXING (all): 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 (all): 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 (ZnetDK only): error "E_DEPRECATED - Using ${var} in strings is
deprecated, use {$var} instead - engine\tools\appwiz\app\uploadedfile.php(77)"
in PHP 8.2 when uploading the App logo from the App Wizard.
- BUG FIXING (ZnetDK only): error "E_DEPRECATED - Function utf8_encode() is
deprecated" in PHP 8.2 when executing the step 2 of the App Wizard.
- BUG FIXING (all): 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 (all): the HTTP 403 error code was not managed by the
\Response::doHttpError() ZnetDK method.
- BUG FIXING (all): the TCP/IP port other than 80 and 443 was missing in the
URL returned by the \General::getApplicationURI() method.
- BUG FIXING (ZnetDK 4 mobile only): the w3-theme-light CSS class was missing
for the Notification and Confirmation dialogs.
- BUG FIXING (all): The button labeled in English "Connect" on the login form
and "Connection" title on user edit form are replaced by "Login".
- BUG FIXING (ZnetDK 4 mobile only): extra bottom space added to the "forgotten
password?" link displayed on the login page.
- BUG FIXING (all) : error CTL-003 displayed when the CFG_VIEW_PAGE_RELOAD
parameter was set to TRUE.
- BUG FIXING (ZnetDK 4 mobile only): flash effect is removed when refreshing
rows of a Data list.
- BUG FIXING (ZnetDK 4 mobile only): the rows of the JS Data list were not
automatically loaded on z4m.list.make() method call if the application was
configured with the CFG_VIEW_PAGE_RELOAD PHP parameter set to TRUE.
- BUG FIXING (ZnetDK 4 mobile only): 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 (ZnetDK only): the user's profiles were not selected in the User
modal dialog when it was displayed for the first time since the application
loading.
- BUG FIXING (all): the General::callRemoteAction() method could not be called
because it was wrongly declared private.
- BUG FIXING (all): 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 (all): no exception was thrown by \General::reducePictureSize()
when imagecreatefrompng() or imagecreatefromjpeg() PHP functions failed.
Now a 'GEN-009' ZDKException is thrown.
- BUG FIXING (all): the user phone and user notes were not returned by the
\UserManager::getUsersHavingProfile() ZnetDK PHP method.
- BUG FIXING (all): 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 (all): 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.
ZnetDK 2.9, 2023-04-07
- CHANGE (ZnetDK 4 mobile only): new z4m global variable which is a shorten alias of the znetdkMobile global variable. - CHANGE (ZnetDK 4 mobile only): new 'beforehide' and 'afterhide' JS events triggered before and after closing a modal dialog. - CHANGE (ZnetDK only): new 'photoReductionPercent' and 'minPhotoSizeForReduction' options added to the 'zdkinputfile' and 'zdkmultiupload' ZnetDK widgets to reduce before upload the selected photo. These new options can be set in HTML by declaring the 'data-zdk-photoreductpercent' and 'data-zdk-minphotosizetoreduct' HTML attributes to the "file" input element. - CHANGE (ZnetDK only): new znetdk.reducePhotoSizePercent() and znetdk.reducePhotoSize() JavaScript methods to reduce the size of a photo in number of pixels or in percent. - CHANGE (ZnetDK 4 mobile only): the onAdd and onEdit callback functions specified when calling the znetdkMobile.list.setModal() method, can return false to prevent the modal dialog from being opened. So, the modal dialog is opened by the callback function at the appropriate time. - CHANGE (all): 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 (all): 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 (ZnetDK 4 mobile only): the znetdkMobile.form.getInputValue() method now returns an array containing the multiple selected values of the checkboxes having the same name in a form (i.e the HTML attribute name is defined with the same string value for several checkbox elements). - CHANGE (ZnetDK 4 mobile only): new znetdkMobile.action.removeCustomButton() method to remove a custom action button and unregister it from the views. - CHANGE (ZnetDK 4 mobile only): 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 the ZnetDK Data List object, the number of rows loaded and the data page number. - CHANGE (all): when hovering a user profile from the ZnetDK user form, its description is now displayed as a tooltip on desktop computer. - CHANGE (all): the \ProfileManager::getProfiles() method now returns the profile's description through the 'description' array key. - CHANGE (all): for optimization purpose, new \UserSession::hasFullMenuAccess() method to know if logged in user has a full menu access without requesting the database. - CHANGE (all): for optimization purpose, new \UserSession::getUserEmail() method to get logged in user email without requesting the database. - CHANGE (all): for optimization purpose, new \UserSession::getUserName() method to get logged in user name without requesting the database. - CHANGE (all): for optimization purpose, new \UserSession::getUserProfiles() and \UserSession::hasUserProfile() methods to get access to the authenticated user's profiles without requesting the database. - CHANGE (all): 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 (ZnetDK 4 Mobile only): 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 (all): 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 a null value as argument. - BUG FIXING (all): the \ProfileManager::storeProfile() method did not return the user profile's internal database identifier once stored. - BUG FIXING (all): the \Convert::toLocaleDate() method returned a long date instead of a short date with the intl extension loaded and the LC_LOCALE_DATE_FORMAT constant set to NULL. - BUG FIXING (all): with the LC_LOCALE_CURRENCY_SYMBOL set to NULL, 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 (all): with the LC_LOCALE_THOUSANDS_SEPARATOR set to NULL, the \api\Locale::getThousandsSeparator() method returned a space character which does not match the ASCII space character (value 20 in Hexadecimal). - BUG FIXING (all): according to the PHP server configuration, the \Request::getAcceptLanguage() could return a NULL value while the HTTP_ACCEPT_LANGUAGE server variable was properly defined. - BUG FIXING (all): \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 (all): \Convert::valuesToAnsi() and \Convert::toUTF8() methods are no longer based on the utf8_decode() and utf8_encode() PHP functions for they are deprecated in PHP 8.2. If no encoding/decoding function is installed (i.e. iconv function or mbstring and intl extensions), then an exception is thrown. - BUG FIXING (all): in PHP 8.2 version, a DEPRECATED error was generated by the \Validator::__construct() method when the VAL-003 exception was thrown because string variable interpolation is deprecated in this version. - BUG FIXING (all): 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 (ZnetDK 4 Mobile only): the 'ui-widget', 'ui-widget-content' and 'ui-corner-all' CSS classes were removed from the 'mobile' page layout as they were not used. - BUG FIXING (ZnetDK 4 Mobile only): the modal object was not initialized by the znetdkMobile.modal.open() method when the 'aftershow' event was triggered. - BUG FIXING (all): 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 (ZnetDK only): when displaying for the first time the ZnetDK user list, an unnecessary AJAX request was sent to the 'users' controller and 'profiles' action. - BUG FIXING (ZnetDK only): when calling the zdkdropdown.selectValue(), if the specified value did not match any option of the select element, an error was displayed in the browser's console (error message "value 'xx' does not exist in dropdown list named 'my_select_name'."). A JS error will be thrown in a future version. - BUG FIXING (ZnetDK only): when calling the zdkdropdown.selectValue(), if no option existed for the select element and the 'data-zdk-loadoncreate' attribute was not set to 'no', an error was displayed in the browser's console (error message "no option is defined for the dropdown list named 'my_select_name'."). A JS error will be thrown in a future version. - BUG FIXING (ZnetDK only): when calling the zdkdropdown.selectValue(), the last value of the dropdownlist was wrongly selected if the value did not match any option. Now, no option is selected and a JS error is thrown (the value does not exists). - BUG FIXING (ZnetDK only): when calling the zdklistbox.selectItemByValue() method with a value containing a single quote (for example "John's dog"), the following JS error was displayed: "Uncaught Error: Syntax error, unrecognized expression: [value='John's dog']". - BUG FIXING (all): when executing \General::encrypt() or \General::decrypt(), an exception is now thrown if the 'openssl' extension is not installed. - BUG FIXING (all): exceptions were not correctly catched by the ZnetDK \SimpleDAO::getSuggestions() method. - BUG FIXING (all): dash characters (i.e. ' - ') were filtered out of the view name when the view was called in AJAX, causing a CTL-001 ZnetDK error.
ZnetDK 2.8, 2022-12-12
- CHANGE (all): 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 (all): 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 (all): the phone and notes specified for a user are now displayed on the
user list.
- CHANGE (all): new \Response::setCustomContent() method to return custom
content (HTML, XML, text, ...) from a controller action in response of an http
request.
- CHANGE (all): 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 (all): 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 (all): \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 (all): \General::reducePictureSize() method no longer returns FALSE on
error. Instead, a ZDKException is thrown ('GEN-003' to 'GEN-006').
- CHANGE (all): new $tweakFactor parameter (set to 2 by default) added to the
\General::reducePictureSize() method.
- CHANGE (all): 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. The LC_MSG_ERR_MAINTENANCE constant can be
overloaded in the 'locale.php' script of the application to customize the
message.
- CHANGE (all): 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 the strftime() PHP function which is
deprecated in PHP version 8.1.
- CHANGE (all): 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 (all): \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 (all): controller\Users::notify() method removed as it was not useful.
- CHANGE (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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 the znetdkMobile.messages.add() method, or when
the "Install the App?" message is cleared.
- CHANGE (ZnetDK 4 mobile only): a column header is now displayed on top of the
user and profile lists when the screen is a large screen.
- BUG FIXING (all): the MainController::getControllerName() method now is able
to find a specific controller method amoung multiple modules overloading the
same controller.
- BUG FIXING (all): the 'maxlength' attribute of the 'profile_name' input field
was wrongly set to 100 instead of 50.
- BUG FIXING (all): the 'maxlength' attribute of the 'profile_description' input
field was wrongly set to 100 instead of 200.
- BUG FIXING (all): 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 (all): in PHP 8.1, error "E_DEPRECATED - Function strftime() is
deprecated - engine\core\convert.php(116)".
- BUG FIXING (all): in PHP 8.1, error "E_DEPRECATED - Constant
FILTER_SANITIZE_STRING is deprecated".
- BUG FIXING (all): 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 (all): in PHP 8.1, error "E_DEPRECATED - Implicit conversion from
float to int loses precision" when executing \General::reducePictureSize()
method.
- BUG FIXING (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): on HTTP error 403 or 404, the installation
panel "Install the App?" was shown unnecessarily.
- BUG FIXING (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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".
ZnetDK 2.7, 2022-08-18
- CHANGE (ZnetDK 4 mobile only): input fields are now surrounded by a red border
in case of form validation error.
- CHANGE (ZnetDK 4 mobile only): new jQuery events triggered before (beforeshow)
and after (aftershow) displaying a modal dialog. If the beforeshow event
handler returns false, the modal dialog is not displayed.
- CHANGE (ZnetDK 4 mobile only): server-side errors are now displayed using the
HTML5 JS Validation API (setCustomValidity method) when an input field value
is incorrect.
- CHANGE (ZnetDK only): the login name is memorized in the local storage if
user connects in 'private' access mode.
- CHANGE (ZnetDK only): 'fa-unlock-alt' icon added to login dialog title bar.
- CHANGE (ZnetDK 4 mobile only): the message displayed after the user changes
their password is now a "snackbar" type message rather than a message in a
blue panel.
- CHANGE (ZnetDK 4 mobile only): 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 (all): 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 (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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() and
znetdkMobile.install.showUninstallView().
- CHANGE (ZnetDK 4 mobile only): 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 to FALSE in the 'config.php' script of the application.
This message can also be displayed on demand by calling the
znetdkMobile.install.showInstallableMessage() method.
- CHANGE (ZnetDK 4 mobile only): new znetdkMobile.install.isAppInstallable() and
znetdkMobile.install.isAppInstalled() methods respectively to know if the
application is installable and if it is already installed.
- CHANGE (ZnetDK 4 mobile only): new 'viewName' and 'onViewLoaded' optional
parameters added to the znetdkMobile.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 (ZnetDK 4 mobile only): new znetdkMobile.serviceWorker.isRegistered
property that is set to true once the service worker registration has
succeeded.
- CHANGE (ZnetDK 4 mobile only): new znetdkMobile.browser.doPhoneCall() method
to dial the specified phone number on cell phone.
- CHANGE (ZnetDK 4 mobile only): 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 (all): special characters are now allowed by default when entering a
new password for app authentication (see CFG_CHECK_PWD_VALIDITY and
LC_MSG_ERR_PASSWORD_BADLENGTH PHP constants for customization purpose).
- CHANGE (ZnetDK only) : pagination added to user profile list.
- CHANGE (all): new $includeArchived parameter (set to TRUE by default) added
to the \UserManager::getUsersHavingProfile() method. When set to FALSE,
archived users are excluded from the returned users.
- CHANGE (ZnetDK only): for optimization purpose, AJAX requests are no
longer sent by a 'zdkautocomplete' widget when the previously entered keyword
does not match any suggestions.
- CHANGE (ZnetDK only): for performance purpose, suggestions returned by AJAX
requests when entering a keyword in a 'zdkautocomplete' widget can be cached
in memory to reduce network traffic. To enable caching, set a value greater
than zero (set to zero by default) to the 'maxNumberOfCachedItems' widget's
option or to the 'data-zdk-maxcacheditems' HTML input's attribute. To clear
the cache once a suggestion is selected, set the value 'selection' to the
'cacheLifetime' widget's option or to the 'data-zdk-cachelifetime' HTML
input's attribute ('page' is set by default, meaning that cache is kept until
user leaves the application).
- CHANGE (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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,
set znetdkMobile.autocomplete.maxNumberOfCachedItems to a value greater than
zero (set to zero by default). To clear the cache once a suggestion is
selected, change the value znetdkMobile.autocomplete.cacheLifetime to
'selection' ('page' is set by default, meaning that cache is kept until user
leaves the application).
- BUG FIXING (all): when calling the DAO::store() method with an empty row id
value (i.e. '') and the $emptyValuesToNull parameter is FALSE (default case),
then the SQL statement generated is no longer an UPDATE but an INSERT
instead.
- BUG FIXING (all): 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 (ZnetDK 4 mobile only): multiples clicks are prevented on anchor
and button elements of the application (disabling during 500 ms).
- BUG FIXING (ZnetDK 4 mobile only): messages displayed through the
znetdkMobile.messages.add() method were not hidden after the user logged out.
- BUG FIXING (all): 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 (all): 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 (ZnetDK 4 mobile only): user profiles were displayed twice when
the number of defined profiles exceeded 20 profiles.
- BUG FIXING (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): the login name was not displayed in the
login field after reloading of the application once session was expired.
- BUG FIXING (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): 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 the
znetdkMobile.ajax.loadView() method (issue in minification of 'mobile-min.js'
version 2.6).
ZnetDK 2.6, 2022-06-03
- CHANGE (all): 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 (all): new ZnetDK \General::reducePictureSize() method that resizes a JPEG or PNG picture by specifying a maximum width and height. - CHANGE (all): new CFG_APPLICATION_VERSION parameter to specify the current application's version (integer value, 1 by default). When this version is set into the 'config.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 (all): new \Convert::binaryToBase64Url() ZnetDK method to convert a binary file content to base64 URL. - CHANGE (all): new \Convert::base64UrlToBinary() ZnetDK method to convert a base64 URL to binary file content. - CHANGE (all): 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 (all): 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 (PHP filter_var() function is applied with FILTER_SANITIZE_STRING filter and FILTER_FLAG_NO_ENCODE_QUOTES option). Other allowed value is 'LOW' (PHP strip_tags() function is applied and the string '<=' is preserved if exists in the text to filter). - CHANGE (all): new \Request::setVariableFilteringLevel() to change the default value set through the CFG_REQUEST_VARIABLE_FILTERING_LEVEL parameter. Allowed parameters are 'LOW' and 'HIGH'. - CHANGE (all): Flash Of Unstyled Content (FOUC) is now prevented on application loading. - CHANGE (ZnetDK only): when calling the znetdk.showModalDialog() method, if the callback function specified for the "beforeShow" parameter returns false, then the modal dialog is not finally displayed. So the dialog is displayed under control of the calling JavaScript code. - CHANGE (ZnetDK only) : new znetdk.notifyUser() method to display a simple notification message in a dialog box. - CHANGE (ZnetDK only): new 'zdk-form-notrim' CSS class to apply to an input or textarea element declared within a ZnetDK form if its value must not be trimed on form submit and on zdkform widget 'getFormData' method call. This class can be for example applied to a textarea element if the newline characters of the beginning and the end of a text must be preserved. - CHANGE (ZnetDK only): jQuery upgrade from version 1.9.1 to version 1.12.4 (see CFG_JQUERY_JS PHP constant). - CHANGE (ZnetDK 4 mobile only): jQuery upgrade from version 3.5.1 to version 3.6.0 (see CFG_MOBILE_JQUERY_JS PHP constant). - CHANGE (ZnetDK 4 mobile only): 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 (ZnetDK 4 mobile only): the znetdkMobile.getInputValue() method now allows to retrieve as a JS array, the selected values for a SELECT HTML element set with the 'multiple' property. - BUG FIXING (ZnetDK only): in jQuery version 1.12.4, error "JQMIGRATE: Can't change the 'type' of an input or button in IE 6/7/8" displayed in the browser console by the jQuery migrate 4.1 developmement JS library when ZnetDK 'zdkinputdate' and 'zdkactionbar' widgets are instantiated. - BUG FIXING (ZnetDK only): in jQuery version 1.12.4, error "JQMIGRATE: Attribute selector with '#' must be quoted" displayed in the browser console by the jQuery migrate 4.1 developmement JS library when the application is configured with ZnetDK 'office' page layout. - BUG FIXING (ZnetDK 4 mobile only): jQuery syntax error calling znetdkMobile.getInputValue() method when the input name passed in parameter contains "bracket" symbols. - BUG FIXING (ZnetDK 4 mobile only): 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).
ZnetDK 2.5, 2021-09-29
- CHANGE: the ZnetDK user and profile dialogs are enlarged for future display
of the application with a font increased to 14 pixels.
- CHANGE: the ZnetDK connection dialog is enlarged to 380 pixels.
- CHANGE: new ZnetDK \General::callRemoteAction() PHP method usefull to invoke
a controller action exposed as web service by a remote ZnetDK application.
- CHANGE: new 'isHtml' column property added to the ZnetDK zdkdatatable widget
(derived from puidatatable) to parse HTML data of the specified columns.
- CHANGE: the lightest background color of the "z-mono-*" color themes used by
the 'classic' and 'office' page layouts is replaced by white (#FFF) for better
readability.
- CHANGE: concerning the 'classic', 'office' and 'custom' page layouts, the
tag is added to the tag.
- CHANGE: concerning the 'classic', 'office' and 'custom' page layouts, the
icons displayed on the right on the application banner to diplay help,
to logout and to change password are replaced by fontawesome icons.
Transition effect is added on hover on banner anchors.
- CHANGE: concerning the 'classic' and 'office' page layouts, the text font is
changed to 'nunito' for the following color themes: 'z-mono-icedcoffee',
'z-mono-taupe' and 'z-mono-lushmedow'.
- CHANGE: concerning the 'classic', 'office' and 'custom' page layouts, the
choosen access mode ('public' or 'private') on login is now memorized in the
browser local storage.
- CHANGE: when calling method znetdk.request(), any JavaScript error detected
while executing the custom callback method defined as option is now catched
and the 'zdkrequestcallbackjserror' event is triggered for managing the error
(for example to log JavaScript errors on the server-side).
- 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() ZnetDK method that returns the user ID
of the connected user. The user ID is automatically memorized in session by a
call to the new \UserSession::setUserId() method once user has been
successfully authenticated.
- CHANGE: new \UserManager::getUserInfosByEmail() ZnetDK method to retrieve
user's information from their email address.
- CHANGE: new 'zdk_user_pwd_resets' ZnetDK 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 \UserManager::getResetPasswordConfirmationUrl() ZnetDK method that
returns a dynamically generated URL of the application to confirm that a new
password is requested for an email address in case of forgotten password.
- CHANGE: new 'resetpwd.php' view displayed to confirm a password reset when the
URL returned by the \UserManager::getResetPasswordConfirmationUrl() method is
clicked.
- CHANGE: new \UserManager::resetPassword() ZnetDK method that generates a new
temporary password for the specified user email after password reset request
in case of forgotten password.
- CHANGE: new \controller\Users::getAutoGeneratedPassword() ZnetDK method that
generates a new password. This method can be overloaded by the application or
a module if necessary.
- 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 view 'forgotpassword.php' is shown to
request a new password from a user email address.
The ZnetDK 'forgotpassword.php' view can be customized by copying it to the
'view' folder of the application or a module.
- CHANGE: new ZnetDK controller\ForgotPassword class in charge of displaying
the 'forgotpassword.php' view when the 'Forgot password?' link is clicked (see
'action_show' method). In addition, the controller processes the
requests for getting a new password (see 'action_requestpassword' method) and
for resetting the user's password (see 'action_resetpassword' method).
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: ZnetDK modal dialog display is forced to the maximized state when the
'zdk-modal-maximizable' CSS class is set for the dialog and the dialog height
is higher than the viewport height.
- 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'.
- CHANGE: new CFG_NON_MOBILE_PWA_ENABLED parameter to enable PWA features
(favicons and service worker) on non-mobile apps. This parameter is dedicated
to applications configured with the CFG_PAGE_LAYOUT parameter set to
'standard', 'office' and 'custom'. It is ignored for applications with the
CFG_PAGE_LAYOUT parameter set to 'mobile'.
- 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 (for mobile only): '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 (for mobile only): focus wrongly applied to the show/hide password
button instead of the password entry field.
- BUG FIXING: E_NOTICE - Trying to access array offset on value of type null
in profilemanager.php(126) when the user profile view (profile.php) is
displayed in PHP 7.4.
- BUG FIXING: when calling method znetdk.request(), the ajax loading image
could remain displayed on Javascript error thrown while executing the
success callback method.
- BUG FIXING: Too long words in a message displayed via the znetdk.message()
method overflowed the message box.
- BUG FIXING (for mobile only): the callback function specified for the
znetdkMobile.messages.ask() method could be executed twice wrongly.
- BUG FIXING: FontAwesome icon added to title bar of ZnetDK modal dialog
'zdkmodal' via HTML attribute 'data-icon' was not left aligned.
- BUG FIXING (for mobile only): the Phone and Note labels of the 'z4musers.php'
view were not displayed in bold.
- BUG FIXING: the rows of zdkdatatable widget were not displayed in alternate
colors for the 'z-mono-serenity' and 'z-mono-bodacious' color themes.
- BUG FIXING (for mobile only): concerning the 'mobile' page layout, 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 finally not fixed in version 2.4).
ZnetDK 2.4, 2021-04-15
- 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 (see znetdkMobile.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.
ZnetDK 2.3, 2020-10-09
- 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: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'),
custom action button can be added to the page calling the new
znetdkMobile.action.addCustomButton() method.
- CHANGE: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'),
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() and znetdkMobile.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 the LC_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: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'), 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: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'),
the jQuery library is updated to version 3.5.1 (previous version was 3.4.1).
- CHANGE: values stored in the web browser local storage using the
znetdk.storeLocalSettings() and znetdkMobile.browser.storeLocalData() methods
are no longer overwritten by another ZnetDK application installed on the same
internet domain name.
- 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: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'),
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: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'),
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 &l<textarea> HTML element.
- BUG FIXING: the form's previous error message displayed could be wrongly
displayed again when submitting a form with a ZnetDK Dropdown widget set with
the 'required' HTML property while no dropdown item was selected.
- BUG FIXING: the 'beforesubmit' events of the ZnetDK form widget were wrongly
sent before the ZnetDK Dropdown, Date, Multiupload and InputHtml widgets being
validated.
- 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: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'),
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: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'),
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.
ZnetDK 2.2, 2020-05-25
- 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: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'), 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() and setFocusOnFirstInput() methods now set focus to html textarea and select elements in addition to input elements. - CHANGE: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile') when adding a new user, the expiration date is set to the today date by default and the user is enabled by default. - CHANGE: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'), users and profiles can be removed now through the new 'Remove' button. - CHANGE: for the mobile page layout only (CFG_PAGE_LAYOUT set to 'mobile'), 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 'selectItemByValue' method of the zdklistbox widget selected the last item of the list when the specified value was missing. Now, no item is selected if the specified value does not exist. - BUG FIXING: the selected value of a zdklistbox widget was not read and set by the ZnetDK form widget when the listbox was declared in HTML without the 'multiple' property (case of unique selection). - BUG FIXING: on the ZnetDK Demo 'try theme' page, the application theme can't be longer changed. In addition, the 'asphalt', 'flat-blue', 'flat-two' and 'greensea' themes can't be applied. - 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.
ZnetDK 2.11, 2019-10-30 (patch)
- BUG FIXING: error "Fatal error: Uncaught exception 'LogicException' with message 'Class General could not be loaded'..." on some hosting servers like the "Pages Perso Free". This error occurs when the setting of the 'include_path' PHP configuration option is not allowed through the 'set_include_path()' PHP function.
ZnetDK 2.1, 2019-10-07
- 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 and CFG_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: the input fields with 'search' type are now instantiated by the znetdk.initCommonWidgets() JavaScript method. - 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: the title bar of the ZnetDK modal dialog widget was sometimes masked when instantiated with the 'zdk-modal-maximizable' class or the 'data-zdk-autoheight' HTML attribute. - 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 the CFG_VIEW_PAGE_RELOAD parameter set to TRUE into the 'config.php' of the application). - BUG FIXING: the Font Awesome icon was positioned too high into the Dialog widget title bar. - 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.
ZnetDK 2.0, 2019-04-18
- CHANGE: the selected files displayed by the ZnetDK Multiupload widget when
calling the setUploadedFiles() method can be downloaded for display in a new
browser tab when the url for download is specified as 'url' property in
addition to the 'filename' property.
- CHANGE: 10 new mono-color widget themes (theme name prefixed by 'z-mono-').
- CHANGE: new 'refreshIconsColor' method added to the OfficeMenu Widget for
refreshing the color of the menu fontawesome icons when the widget theme is
changed on the fly.
- CHANGE: the PrimeUI icons of the Windows Manager Office Page Layout are
replaced by fontawesome icons.
- CHANGE: when the column resizing feature is enabled for the zdkdatatable
widget ('resizableColumns' widget option), the width of each column when it is
resized, is memorized by the web browser. So, the columns are automatically
resized according to the memorized width each time the user connects to the
application and display again the concerning datatable.
- CHANGE: new CFG_DOWNLOAD_AS_POST_REQUEST_ENABLED config.php parameter allowing
when it is set to TRUE, to download a file calling the standard ZnetDK
Response::setFileToDownload() method while the HTTP request is sent using the
POST method. By default, only the HTTP GET method is allowed to download a
file.
- CHANGE: new 'data-zdk-allvalues' HTML attribute added to the zdkform widget.
So the empty data are also sent as POST parameters to the PHP controller
action when the form is submited while the 'data-zdk-allvalues' HTML attribute
is set to 'true' for the form element.
- CHANGE: new CFG_AUTO_MINIFICATION_METHOD parameter for setting the method
to call when the module CSS and JS files are to be minified before adding
them as minified CSS and JS dependencies into the application HTML main page.
- CHANGE: new ZnetDK \General::isW3cDateValid() method for checking if a
W3C date in string format ('Y-m-d') is valid or not.
- CHANGE: new ZnetDK \General::encrypt() and \General::decrypt() methods for
encrypting and decrypting data.
- CHANGE: application or module controller actions now can be executed
asynchronously thanks to the new \AsyncExec::submitActionToLaunch() method.
To enable this feature, the asynchronous controller action name must be
returned as an array by the 'setAsynchronousActions()' protected method of
the application or module controller (derived from \AppController).
In addition, the new CFG_ASYNCEXEC_PHP_BINARY_PATH parameter is to customize
according to the Operating System where the web application is
deployed (see 'engine/core/config.php' inline comments for details). Finally,
the asynchronous process execution is traced into the 'engine/log/system.log'
file when the CFG_ASYNCEXEC_LOG_ENABLED parameter is set to TRUE.
- BUG FIXING: the dialog content height was not adjusted automatically according
to the wiewport height on ZnetDK dialogs with the 'autoHeight' option enabled.
- BUG FIXING: 'Allowed memory size of xxxx bytes exhausted...' error message
when downloading big files beacause the file buffering was enabled (the file
to download was fully loaded in the memory of the hosting system before being
output it in the HTTP response).
- BUG FIXING: on the ZnetDK Picklist widget, the wrong icon 'fa-angle-right' was
displayed instead of the 'fa-angle-left' icon for removing an item from the
right-hand list.
- BUG FIXING: message 'E_STRICT - Only variables should be passed by reference'
traced into the ZnetDK engine/log/errors.log file by the
Request::getRemoteAddress() method when reverse proxy is configured on the
hosting system.
ZnetDK 1.9, 2018-08-21
- CHANGE: new CFG_HTTP_BASIC_AUTHENTICATION_ENABLED parameter allowing to
authenticate a user by the HTTP basic authentication method when executing
a controller action as a web service (only by HTTP POST request).
Example of URL for executing the 'myctrlr::action_dostuff' controller action:
https://user:pwd@mydomain.com/?control=myctrl&action=dostuff.
The specified credentials must match an existing user otherwise a 401 HTTP
error is returned and an error message is added to the ZnetDK errors.log file.
For security purpose, the CFG_ACTIONS_ALLOWED_FOR_WEBSERVICE_USERS parameter
must be defined for limiting the controller action that a user can execute
when it is authenticated by the basic authentication method. For example:
define('CFG_ACTIONS_ALLOWED_FOR_WEBSERVICE_USERS',serialize(array(
'user1|controller1:doaction1', 'user2|controller2:doaction2')));
- CHANGE: refresh button added to the 'users' view for updating the datatable
content.
- CHANGE: new localized button labels LC_BTN_APPLY and LC_BTN_VALIDATE.
- CHANGE: new \General::compareAmounts($amount1, $amount2) for comparing two
amounts specified as string.
- CHANGE: when the user changes her or his password, the LC_MSG_INF_PWDCHANGED
message is set for the 'message' array key specified as parameter to the
overloaded 'loginResult' method called for tracing the user connections to
the application.
- CHANGE: the authentication 'Profiles' datatable is enhanced by the display of
tooltips on the 'Profile' and 'Description' columns and the capability of
resizing the column width.
- CHANGE: the authentication 'Users' view is enhanced with a new search field
for searching users by their name, login and assigned profile name.
In addition, the user datatable can be paginated to display only 10, 20 or 100
rows. Finally, the 'Profiles' column content is now multi-lines for a better
readability of the profiles assigned to a user when they are numerous.
- CHANGE: new 'resetSortLabel' option and 'data-zdk-resetsortlabel' HTML
attribute added to the 'zdkdatatable' widget for adding a button on the
datatable header when a sortable column is clicked. The button label is the
one specified for the new option or attribute. The LC_BTN_RESET_SORT PHP
constant can be used for labelizing this button. When clicking on this new
button, the datatable rows are sorted applying the default sort order applied
before having clicked on a datatable column.
- CHANGE: the user panel displayed when clicking on the login name from the
application banner is enlarged for best display of long user email addresses.
- CHANGE: new 'setReadOnly(readOnly)' method added to the ZnetDK Form widget for
enabling or disabling the user keyboard entry of the input elements located
within the data form.
- CHANGE: the icons' buttons displayed on the user confirmation dialog when
calling the znetdk.getUserConfirmation() javascript method, are replaced by
Fontawesome icons.
- CHANGE: the attribute 'autocomplete' is set to 'off' when instantiating a
ZnetDK InputDate widget for avoiding the display of some date suggestions by
the web browser over the jQuery UI Datepicker calendar.
- CHANGE: a fontawesome icon now can be set to the Dialog widget title bar (on
the left of the dialog title text) by setting the 'data-icon' attribute to the
the dialog div element.
- CHANGE: when the application is configured with the CFG_PAGE_LAYOUT parameter
set tot 'office', the fontawesome icon defined for the navigation menu item is
now also displayed on the dialog title bar of the corresponding view.
- CHANGE: the icon and menu item label displayed for the 'office' page layout
menu are enlarged (class 'fa-lg' set to the icon and 15px font size set to the
label).
- CHANGE: the red warning icon displayed when an error is displayed into a
ZnetDK form widget is replaced by a fontawesome icon.
- CHANGE: when the application is configured with the CFG_PAGE_LAYOUT parameter
set tot 'office', the height of the dialog containing the view is fixed to the
maximum height of the client area if any HTML element within the wiew has the
'zdk-view-maxheight' CSS class.
- CHANGE: new 'zdk-modal-maximizable' CSS class allowing to set a ZnetDK modal
dialog as maximizable. When the modal dialog is set maximizable, its maximized
state is memorized into the web browser local storage and its content is
scollable in case of overflow.
- CHANGE: new getRowData() public method added to the ZnetDK datatable widget
for retrieving the internal data of the specified datatable row element.
- CHANGE: styling classes are added to each cell of the header and body ZnetDK
datatable widget rows with the 'zdk-col-' prefix followed by the 'field' value
set for the columns definition. By this way, the column styling is simplified
for setting the alignment and the width.
- CHANGE: the dialog displayed when calling the znetdk.getUserConfirmation()
method is no longer closable otherwise than by clicking on the yes or no
button.
- CHANGE: new ZnetDK Fullscreen widget allowing to display in full screen a
web browser client area HTML element.
- CHANGE: the UserManager::getUsersHavingProfile() method now returns all the
user informations stored in database (initially just the user ID and username
were returned).
- CHANGE: new optional parameter '$sortCriteria' added to the
UserManager::getUsersHavingProfile() method for getting back the users sorted
according to the specified sort criteria.
- CHANGE: new 'data-zdk-autowidth' HTML attribute and 'autoWidth' option added
to the ZnetDK autocomplete widget for setting the suggestion panel width
according to its content width.
- CHANGE: now the \Request::getRemoteAddress() method returns the user IP
address reading first the 'HTTP_X_FORWARDED_FOR' server parameter for taking
in account the case of users connected through a proxy server. If the
'HTTP_X_FORWARDED_FOR' is not set, the 'REMOTE_ADDR' server parameter is used
instead.
- CHANGE: new ZnetDK Picklist widget based on the PrimeUI Picklist widget.
The picklist is automatically instantiated when declared within a ZnetDK form
with the 'zdk-picklist' CSS class. The 'data-zdk-action' HTML5 attribute set
for the picklist DIV element allows to load the source and target lists from
the remote PHP controller action.
- CHANGE: new 'getInputValues' method added to the ZnetDK form for retrieving
the value(s) of the specified input name.
- CHANGE: the DAO::$tableAlias property is now automatically applied to the
SQL DELETE statement generated by the DAO::remove method when the table alias
prefixes a column name in the DAO::$filterClause property while multiple rows
are to be removed (the $rowID parameter is set to NULL when calling the
DAO::remove method).
- BUG FIXING: the server name into the application URI returned by a call to the
General::getApplicationURI() method was empty on some hosting system.
- BUG FIXING: when a ZnetDK modal dialog was declared with the
'confirmationOnClose' option that contained more than one data form, the
confirmation message when exiting the dialog without saving was not displayed
while the data had been modified into the second or following data form.
- BUG FIXING: the edit dialog was displayed when double-clicking on a datatable
row while the edit button was not declared within the ZnetDK action bar.
- BUG FIXING: the URL rewriting mechanism enabled when the CFG_VIEW_PAGE_RELOAD
parameter is set to TRUE, did not work on some hosting system by reading the
REDIRECT_URL server variable. So, the HTTP request original URL is now
retrieved from the REQUEST_URI server variable that works generally for all
hosting systems.
ZnetDK 1.8, 2017-12-15
- CHANGE: new 'silent' parameter added to the 'uncheck' method of the PrimeUI Checkbox widget for disabling the 'change' events triggering when it is set to true. - CHANGE: new CFG_SQL_PORT parameter for setting the port number where the MySQL database server is listening. - CHANGE: new CFG_SEARCH_ENGINES_INDEXING_ENABLED parameter for preventing the indexing and listing of a ZnetDK application by the web search engines. - CHANGE: the DAO::$result property declaration is changed from 'private' to 'protected' for giving access to the derived classes. - CHANGE: the 'fieldValueTriggered' column property of the ZnetDK datatable widget is no longer mandatory. So, the 'icon' column property can be set alone for display purpose only. - CHANGE: the ZnetDK form widget displays now the multiple messages returned by the controller action called on submit. The multiples messages must be returned in the AJAX response within the 'multi-messages' property as an array of JavaScript objects mathing to 'znetdk.multiMessages()' method's parameters. - CHANGE: the ZnetDK standard button icons are replaced by the FontAwesome icons. - CHANGE: when calling the 'showCustomError' zdkform method with an empty message while an error message is displayed, the currently displayed error message is hidden. - CHANGE: new Font Awesome 'key' icon displayed on the change password button when clicking on the user login name from the application banner. - BUG FIXING: when a ZnetDK form widget contained a PrimeUI checkbox widget, the form state was wrongly set to 'modified' after the call of the form 'init' method. - BUG FIXING: the horizontal scroll bar is forced to hidden for textarea widget. - BUG FIXING: the 'modified' state of the ZnetDK form widget was not updated after radio button selection changes. - BUG FIXING: the panel of the Autocomplete widget could be displayed out of the screen view port. - BUG FIXING: the \Request::getRemoteAddress() method could return a NULL value on some hosting servers. - BUG FIXING: error message "cannot call methods on zdkmodal prior to initialization; attempted to call method 'show'" displayed when calling the znetdk.showModalDialog while only one HTML form element exists in the DOM after loading the view. - BUG FIXING: the PrimeUI notify widget used to display critical error messages can now display long messages without they being truncated. - BUG FIXING: the dialog widget was positioned out of the viewport in the case of a document overflow while it was declared with the 'autoheight' attribute. - BUG FIXING: after disabling and enabling the PrimeUI Dropdown widget, the selection of the next or previous element with the arrow keys did not work properly.
ZnetDK 1.7, 2017-05-20
- CHANGE: the 'crypt' PHP function is no longer called for hashing and verifying
the user passwords. It is replaced by a call to the 'password_hash' and the
'password_verify' functions for compatibility purpose with PHP 5.6 and higher.
The 'login_password' column size is enlarged to 255 characters in the
'zdk_users' SQL table when it is generated for a new application using the
Application Wizard.
- CHANGE: the fontawesome icons are updated to the version 4.7.
- CHANGE: new UserManager::getUserInfosById method allowing to select the user
informations from her or his database identifier.
- CHANGE: new UserManager::getUserInfosByName method allowing to retrieve user
informations from her or his name.
- CHANGE: the values set to the '\Response' object from a controller action can
now be retrieved thanks to the arrow operator (i.e '->').
For example:
$myResponse = new \Response();
$myResponse->myValue = 'Hello';
$myResponse->myOtherValue = $myResponse->myValue . ' world!';
- CHANGE: new 'setValues' method added to the ZnetDK form widget. This method
initializes the data form as done by the 'init' method but the form is not
reset. So existing data are preserved into the form.
- CHANGE: new 'General::writeSystemLog' method for tracking system events in the
system.log file. The log file is defined into the config.php script through
the new 'CFG_ZNETDK_SYSLOG' parameter.
- CHANGE: new "autoexecution" feature allowing to launch asynchronously
an application controller action at periodical intervals. To enable this
capability, a controller named 'autoexec' with a static method named 'main'
have to be declared within the application or within a module. In addition,
the CFG_AUTOEXEC_PHP_BINARY_PATH new parameter has to be customized according
to the Operating System where the web application is deployed. The
CFG_AUTOEXEC_FREQUENCY parameter allows you to fine tune the frequency for
triggering the 'autoexec' action. Finally, the CFG_AUTOEXEC_LOG_ENABLED allows
to track the 'autoexec' process when thrown by setting its value to TRUE.
- CHANGE: when the 'autoHeight' option is set to 'true' for the Dialog widget,
now the dialog adjusts its height automatically when the viewport is resized,
particularly when the orientation is changed on a tablet or mobile device.
- CHANGE: new 'data-zdkerrmsg-step' HTML5 attribute that can be added to an
input HTML element of type 'number' to cutomize the error message to display
when a 'stepMismatch' error is detected by the web browser on form data
validation.
- BUG FIXING: when a JavaScript object is passed to the 'znetdk.request' method
for the 'data' property, its string values are now encoded for replacing its
special characters (i.e. / ? : @ & = + $ #) with their encoded version
suitable for URI representation.
- BUG FIXING: when several inputs were declared into a ZnetDK form with the same
HTML attribute 'name', the input shown in error on form validation was allways
the first element of the form matching the 'name' attribute. Now, if for
example the third input with the same 'name' no validates, it is correctly
identified in error with a red frame around it.
ZnetDK 1.6, 2017-02-21
- CHANGE: new 'data-zdk-delay' HTML5 attribute added both to the ZnetDK
Actionbar and Autocomplete widgets to set the 'delay' option in milliseconds
before sending the AJAX request to the server to get suggestions.
- CHANGE: the 'setAllowedActions' method can be declared in a ZnetDK application
controller to restrict the execution of its actions according to the profile
definition of the connected user. Within the 'setAllowedActions' method, the
'AppController::setRequiredProfileForAction' parent method is called to set
the user profile required by the connected user to execute the specified
action. In addition, the 'AppController::setForbiddenProfileForAction' parent
method can be called to set the profile that the connected user must not have
to execute an action. Finally, the 'AppController::isActionAllowed' method can
be called for example from a ZnetDK view, to add or not add an HTML button
that matches a specific controller's action, according to the profile
restrictions set through the 'setAllowedActions' method.
- CHANGE: new 'dataloaded' event triggered by the ZnetDK Tree widget after its
data loading from the remote controller.
- CHANGE: the 'menu_id' column length of the 'zdk_profile_menus' table is
extended to 50 characters. The new version 1.3 of SQL script named
'znetdk-security-1.3.zip' can be downloaded from the official website page
located at 'www.znetdk.fr/telechargements'.
- CHANGE: new 'LC_HEAD_ICO_LOGO' constant for specifying the image file to
display as the 'favicon' of the application. If not set, the image indicated
for the 'LC_HEAD_IMG_LOGO' constant is displayed instead.
- CHANGE: new 'Convert::toDecimalForDB' method to convert a number in string
format to a formated number suitable for storage in the database.
- CHANGE: new 'UserManager::getUsersHavingProfile' method for retrieving the
users having the specified profile name in parameter.
- CHANGE: new 'UserManager::hasUserMenuItem' method for checking if a user has
access to the specified menu item.
- CHANGE: new '\Controller\Users::hasMenuItem' method for checking if the
connected user has access to the specified menu item.
- CHANGE: the 'Security::loginResult' method is called each time a user try to
connect to the application. This method can be defined in the application to
track in a log the users connections informations.
- CHANGE: new HTML5 'data-zdk-cols-resize' attribute added to the ZnetDK
Datatable widget. When set to 'true', the table columns are resizable.
- CHANGE: new HTML5 'data-zdk-multiselect' attribute added to the ZnetDK
Datatable widget. When set to 'true', multiple table rows can be selected.
- CHANGE: a jQuery UI or Font Awesome icon can be added to the ZnetDK Datatable
cells by setting the two new properties 'icon' and 'fieldValueTriggered'
in the column definition. When the icon is clicked, the 'iconclick' event
is triggered with the value matching the field entered for the
'fieldValueTriggered' property.
- CHANGE: new 'autoHeight' option added to the Dialog widget. When set to true,
the height of the dialog is adjusted to the browser window height. So, the
dialog can be used for mobile applications.
- CHANGE: new 'aftershow' event sent by the GenericMenu widget once the view is
displayed. In the event handler, the second parameter contains the displayed
view name.
- CHANGE: new 'setCriteria' method added to the ZnetDK Autocomplete widget to
set the criteria to send in AJAX to the PHP controller in order to limit the
suggestions to the specified criteria.
- CHANGE: new 'empty' method added to the ZnetDK datatable widget to remove
all the rows it contains.
- CHANGE: a third parameter named '$downloadedFilename' is added to the
'\Response::setFileToDownload' method for specifying the name of the downloaded
file. By default, the base name set for the $filepath parameter is used to name
the downloaded file.
- CHANGE: new 'DAO::isForUpdate()' méthod added for checking if the 'FOR UPDATE'
SQL CLAUSE is set for a DAO.
- CHANGE: tooltips and '...' ('ellipsis' in CSS) are now displayed on the user
datatable for the following columns: 'user_name', 'user_email' and
'user_profiles'.
- BUG FIXING: the focus was not automatically set on the 'textarea' widget when
it was declared within a ZnetDK Dialog widget. Now, if a 'textarea' is the
first visible and enabled input element into a dialog, the focus is set on it
automatically after display of the dialog. The focus can also be forced to
a textarea by adding the 'zdk-autofocus' CSS class to its HTML definition.
- BUG FIXING: when 'enable' and 'disable' methods are called for the ZnetDK
Dropdown widget, the HTML 'disabled' property is accordingly set for the
hidden HTML 'select' element. So, when the Dropdown widget is declared in a
ZnetDK dialog, it is no longer automatically focused if it has been previously
disabled.
- BUG FIXING: the message 'CORE - E_NOTICE - Undefined variable:
doesPasswordChanged' was added to the 'errors.log' file when updating a user
account without changing its password.
- BUG FIXING: the error message 'The profile 'profile name' already exists with
the same name!' was displayed when trying to rename a user profile.
- BUG FIXING: the '\Convert::W3CtoLocaleDate' method returned the current date
when an empty value was set as parameter. Now a NULL value is returned instead.
- BUG FIXING: when a radio button group is reset, the radio buttons within the
group are now systematically enabled if they were previously disabled by a
call to the 'disable' method of the 'puiradiobutton' widget. The 'disabled'
property is not supported for the radiobutton widget (the widget must be
explicitely disabled by JavaScript code.
ZnetDK 1.5, 2016-11-04
- CHANGE: new config.php SQL parameter named 'CFG_SQL_TABLE_REPLACE_PREFIXES'
for replacing default SQL table prefixes to new table prefixes (for example,
to change the 'zdk_' and 'myapp_' prefixes to the 'new_' prefix, set the value
serialize(array('zdk_'=>'new_', 'myapp_'=>'new_')) to the
'CFG_SQL_TABLE_REPLACE_PREFIXES' parameter). So now, multiple ZnetDK
applications can be hosted within a single MySQL database. The table prefixes
are automatically replaced by those mentioned in the new config.php parameter
while calling the 'DAO::store', 'DAO:remove', 'DAO:getResult', 'DAO:getById'
and 'DAO::getCount' methods.
- CHANGE: when a network error occures while executing an AJAX request, a
user friendly message is now displayed inviting the user to retry his last
action (see new LC_MSG_ERR_NETWORK language label).
- CHANGE: when an HTML input element with 'type' attribute equal to 'time'
is declared within a ZnetDK form, it is automatically instanciated as a
PrimeUI Inputtext.
- CHANGE: new 'rowremoved' event triggered by the ZnetDK action bar when a row
is successfully removed in the associated datatable.
- CHANGE: new 'resetdone' event triggered by the ZnetDK form when the form is
reset.
- CHANGE: new 'Multiupload' ZnetDK widget designed for selecting multiple files
to upload.
- CHANGE: new 'znetdk.getLocalSettings' and 'znetdk.storeLocalSettings'
JavaScript methods to read/write values from/into the web browser local
storage.
- CHANGE: when a submit button is pressed while it is located within a ZnetDK
form, its value is now sent to the remote controller action with the rest of
the form data. The button must be declared with the 'name' and 'value' HTML
attributes.
- CHANGE: The validation error message displayed in a ZnetDK form is now hidden
when the user changes the value of the input in error.
- CHANGE: the new 'ZDK_REDIRECT_APPL_UNKNOWN' parameter is added to the
'globalconfig.php' configuration script. The HTTP request is now temporarily
redirected to the URL set for this parameter when the 'default' application
does not exist or when the application passed through the 'appl' or 'tool' url
parameter does not exist.
- CHANGE: the widget theme now can be set dynamically by declaring in a ZnetDK
application or module, a custom static public method named
'Users::getUserTheme' in charge of returning the theme name to display.
- CHANGE: new '\Validator::setCheckingMissingValues' method for checking missing
value by the derived validation methods.
- CHANGE: new '\Validator::setValues' method for setting values from an array.
So, data other than the ones provided by an HTTP request can now be validated.
- CHANGE: the '\Validator::initOptionalVariables' method is no longer declared
as abstract and then, its declaration becomes optional in any derived class.
- CHANGE: new 'getMessageWithoutCode' method added to the 'ZDKException' class
to retrieve the exception message without the error code for a better user
friendly display.
- CHANGE: new 'setCurrentDate' method added to the Inputdate widget to
initialize its date field with the current date or the calculated date from
the current date (i.e "+15d", "+2m", "+1y").
- CHANGE: the session identifier of an application include now its relative uri.
So, multiple 'default' applications located on a same server machine can now
be accessed from the same web browser without conflict.
- CHANGE: new 'suspend' method added to the autocomplete widget to disable the
autocompletion mechanism.
- BUG FIXING: the default option value set through the 'data-zdk-value'
attribute, was not selected for the ZnetDK Dropdown after a form reset.
- BUG FIXING: the ZnetDK modal dialog is now automatically closed only if the
last submit button pressed has the 'zdk-close-dialog'.
- BUG FIXING: the '\Convert::toMoney' method returned zero when a null value
was passed in parameter. By now, a null value is returned instead.
- BUG FIXING: the default form validation message displayed for the InputHtml
widget when empty is now 'A value must be entered!' instead of 'A value must
be selected!'.
- BUG FIXING: the asterisk character was not displayed for the Inputhtml widget
label when the 'data-required' was set to 'true'.
- BUG FIXING: an HTTP GET 404 error was displayed in the web browser console
while downloading the 'ui-icons_FFFFFF_256x240.png' resource of the 'z-w10'
theme when enabled.
ZnetDK 1.4, 2016-08-17
- CHANGE: 6 new widget themes added to this version. See the following themes on www.demo.znetdk for demonstration: 'z-bluegrey', 'z-cyan', 'z-funny', 'z-hot-sneaks' (updated version of the 'hot-sneaks' original theme), 'z-teal' and 'z-w10'. - CHANGE: new 'InputHtml' ZnetDK widget that can be added to a ZnetDK Form to display and edit multiline text in HTML format. - CHANGE: ZnetDK modules can now be developed and installed in the 'engine/modules' directory to extend the core facilities. Some modules will be soon published on the www.znetdk.fr website. - CHANGE: new 'znetdk.multiMessages' JavaScript method that displays several UI messages through the PrimeUI Growl widget. - CHANGE: the number of rows to display in a Datatable widget is now memorized each time it is changed by the user from the ActionBar widget. This number is stored locally (HTML5 local storage feature) and is read when the user come back to the application and access to the view containing the Datatable and ActionBar widgets. - CHANGE: new warning icon displayed when the 'znetdk.getUserConfirmation()' method is called. - CHANGE: new 'zdk-nothumbnail' CSS class used by the InputFile widget to hide the image thumbnail when a file is selected (the image thumbnail is displayed by default). - CHANGE: new 'data-zdk-icon' HTML5 attribute added to the InputFile widget to specify the icon displayed for the file selection button. - CHANGE: new 'zdk-nosubmit' CSS class that can be applied to the InputFile widget in order to disable the file upload on a form submit event. So, the selected file is uploaded independently of the form submitting. - CHANGE: new 'zdk-autoupload' CSS class that is applied to the InputFile widget and that specifies that the file upload is to be triggered automatically when a file is selected. - CHANGE: the 'title' attribute text specified for the 'input' element of an InputFile widget is now set to the file selection button for display as tooltip. - CHANGE: new 'reset' event triggered by the Inputfile widget when the remove selection button is clicked on. - CHANGE: new 'setUploadedFile' method that can be called to initialize the Inputfile widget from a JavaScript object and so display the thumbnail and filename of the file previously uploaded. - CHANGE: new 'loadOnCreate' option and 'data-zdk-loadoncreate' attribute added to the ZnetDK Dropdown widget. When set to 'no', the widget's items are not loaded from a remote PHP controller action when the Dropdown is instantiated. Instead, the items are loaded for the first time when the 'refresh' or 'selectValue' method is called. - CHANGE: the '\Convert::W3CtoLocaleDate' PHP method accepts a W3C date followed by a time with a 'HH:MI:SS' format. The time is now kept once the date is converted. - CHANGE: the '\General::getCurrentW3CDate' method accepts the new parameter '$withTime'. When set to TRUE (FALSE by default), the current time is also returned by the method. - CHANGE : new '\General::getMimeType' PHP method that returns the MIME type of the specified file. - CHANGE: the 'DAO::store' PHP method accepts the new parameter '$emptyValuesToNull' that forces empty string values to null when they are saved in the SQL table. - CHANGE: the exception 'DAO-010' is thrown when the 'DAO::beginTransaction' method is called while a transaction is already active. - CHANGE: new 'DAO::setForUpdate' method allowing to select rows for update (locking of rows). - CHANGE: new methods 'beginTransaction', 'inTransaction', 'rollback' and 'commit' added to the PHP '\Database' class. - CHANGE: new event 'beforesubmit' sent by the ZnetDK form widget before submitting the data form to validation. This event is usefull for doing extra initialization into the form before validating its data and sending them to the remote controller. - CHANGE: new event 'disconnected' sent when the user is disconnected (click on the header 'Logout' link or the 'Cancel' button of the login dialog). - BUG FIXING: the label elements declared in a ZnetDK form with the 'zdk-textvalue' CSS class are now emptied when the data form is reset. - BUG FIXING: when an http error is thrown in response to a GET request while the CFG_VIEW_PAGE_RELOAD parameter is set to FALSE, the response is returned in HTML format. - BUG FIXING: the 'UserSession::getCustomValue' and 'UserSession::setCustomValue' methods do not longer encode quotes characters. - BUG FIXING: the 'zdkinputfile: unable to upload file!' JavaScript exception is no longer triggered when the selected file is empty. - BUG FIXING: the accented characters was not properly displayed when an error occured while downloading a file. - BUG FIXING: the 'UPL-001' exception message was misspelt. - BUG FIXING: the 'zdkform.getFormData()' method did not return the data of the empty and disabled input fields even if the 'getEmptyInputs' parameter was set to true.
ZnetDK 1.3, 2016-04-12
- CHANGE: new 'focusOnYes' option added to the 'znetdk.getUserConfirmation()' method. When this option is set to true, the focus is given to the 'Yes' button. If not set or set to false, the focus is given to the 'No' button. - CHANGE: the 'Action bar' and 'Datatable' widgets evolved: 1) If a 'Modal dialog' contains a 'Datatable' widget, it is displayed after clicking on the 'Add' or 'Edit' button, only once the datatable rows are loaded. 2) When double-clicking on a 'Datatable' row, its data are displayed in a modal dialog for edition, as if the user had clicked on the 'Edit' button. 3) The row selected in the 'Datatable' remains selected after a data refresh when the row is modified or when the user clicks on the 'Refresh' button. - CHANGE: the ZnetDK 'Datatable' widget can be declared with the 'tooltip' property set to true for the columns where cell content has to be displayed through a tooltip on mouse hover. - CHANGE: new parameter '$forPdfPrinting' added to the ZnetDK '\api\Locale::addCurrencySymbol()', '\api\Locale::getCurrencySymbol()' and '\Convert::toMoney()' methods. When specified to TRUE, the Euro currency symbol returned can be printed on a PDF document created through the FPDF API (the Euro character is replaced by the 'chr(128)' character). - CHANGE: new method '\Convert::toDecimal' allowing to convert a string decimal number as a typed float number for calculation purpose. - CHANGE: new 'znetdk.showModalDialog' JavaScript method allowing to load by an AJAX request and to display, a dialog declared in a ZnetDK view. - CHANGE: new labels 'LC_ACTION_ROWS_LABEL', 'LC_ACTION_SEARCH_KEYWORD_BTN_RUN', 'LC_ACTION_SEARCH_KEYWORD_BTN_CLEAR' and 'LC_MSG_WARN_SEARCH_NO_VALUE' were added to the core 'locale_en.php', 'locale_es.php' and 'locale_fr.php' scripts. These constants can be used to set the labels displayed for the ZnetDK 'ActionBar' widget. - CHANGE: the 'Dropdown' widget evolved: 1) the opacity applied to the widget when disabled was increased for a better visibility. 2) new event 'dataloaded' triggered by the widget when its items are loaded from a PHP controller action. 3) new 'getDataOfSelectedValue' method that allows to retrieve all data of the selected item, including custom extra data other than the usual 'label' and 'value' data, when the widget content is loaded from a PHP controller action. - CHANGE: new methods 'enable' and 'disable' added to the 'Autocomplete' widget. - CHANGE: new 'data-zdk-confirm' HTML attribute added to the 'Modal dialog' widget for displaying a closure confirmation message when the user close the dialog while the inner form data have been modified. Here is an example of declaration: data-zdk-confirm="Do you want to cancel your changes?:Yes:No". - CHANGE: new 'LC_MSG_ASK_CANCEL_CHANGES' localized confirmation message that can be set to the new 'data-zdk-confirm' HTML attribute of the 'Modal dialog' widget (see previous change description). - CHANGE: the 'dataloaded' event is now triggered for the 'Listbox' widget once its items are loaded from a PHP controller action. - CHANGE: the Javascript errors thrown while a view content is initialized, are now catched and an error message is displayed through the 'Notify' widget. - BUG FIXING: the 'Dropdown' widget was not properly displayed when disabled. - BUG FIXING: the 'enable' method of the 'Dropdown' widget is now executed only when the widget is disabled. So, the widget's events are no longer bound multiple times. - BUG FIXING: the 'enable' method of the 'Checkbox' widget is now only performed when it is disabled. So, the widget events are no longer bound multiple times. - BUG FIXING: the 'enable' and 'disable' methods of the 'Inputtext' widget are now only performed when the widget is disabled and enabled. So, the widget's events are no longer bound multiple times. In addition, the widget's events are now prefixed by the 'puiinputtext' namespace to avoid side effects when the widget is overloaded by another widget like the 'Inputdate' widget. - BUG FIXING: the email address displayed when clicking on the login name from the banner, was not properly displayed for too long email addresses.
ZnetDK 1.22, 2016-03-26 (patch)
- BUG FIXING: on some FastCGI virtualized hosting (for example on 1&1 hosting), the web resources of the application html page was not displayed, due to their incomplete relative path (the subdirectory path was missing after the domain name). See details of this issue on the ZnetDK forum.
ZnetDK 1.21, 2016-02-01 (patch)
- BUG FIXING: ZnetDK fell into an infinite loop when it was deployed on some internet hosting server with FastCgi enabled: The PHP 'filter_input' statement applied to the '$_SERVER['REQUEST_METHOD']' array returns 'false' instead of 'GET' or 'POST'. - BUG FIXING: carriage return and line feed characters were removed from the POST parameters when read through the '\Request' object.
ZnetDK 1.2, 2016-01-22
- CHANGE: new CSV export capability:
1) The field separator ("," or ";") is set in the LC_LOCALE_CSV_SEPARATOR
locale parameter.
2) the 'Response::setDataForCsv()' method is called from the application
controller to set the data to return as a CSV file.
- CHANGE: the DAO class evolves:
1) New 'DAO::$amountColumns' property that can be set from the
'DAO::initDaoProperties()' method to specify the columns that are to be
displayed as an amount. For each of them, a formated amount is returned by the
'DAO:getResult()' method in a new column named like the original column,
excepted that it is suffixed by the '_amount' string (for example
"mycol_amount" if the table column was originally named "mycol").
2) New 'DAO::setSelectedColumns()' method: when called before the
'DAO::getResult()' method, limits the values returned by the DAO to the only
specified columns in parameters.
3) The 'DAO::setSortCriteria()' method removes automatically the '_money',
'_amount' and '_locale' suffixes into the sort clause string passed in
parameter.
- CHANGE: new widget themes added to ZnetDK : 'asphalt' and 'greensea'.
- CHANGE: the 'zdkactionbar' widget evolved:
1) The datatable rows are now filtered when the "Enter" key is pressed while
the search field gets the focus.
2) A new 'search' event is triggered when a keyword is submitted to filter the
database rows and when the clear button of the search field is pressed. An
event handler can then fully overload the standard search process (the call to
the 'filterRows' method of the zdkdatatable) by returning the 'false' value.
3) When a keyword is submitted through the search field, the entered keyword
is automatically selected once the datatable rows is filtered.
4) When the clear button of the search field is pressed, the keyboard focus is
now automatically set to the search field.
- CHANGE: new 'Convert::valuesToAnsi()' method that can be called to convert a
UTF-8 string to an ISO-8859-1 string.
- CHANGE: new 'zdk-autofocus' CSS class that can be added to an HTML element
located into a 'puidialog' widget, in order to set the focus to this element
when the dialog is shown.
- CHANGE: the 'zdkdatatable' widget by now also displays the warning messages
returned by the application controller called to get the data rows. The
controller returns a warning message when the 'Response::setWarningMessage()'
method is invoked.
- CHANGE: the 'selectionchange' event is no longer triggered when the 'select'
method of the 'puiradiobutton' widget is called. So, this event is only
triggered when the radio button state is changed by a user action on the UI.
- CHANGE: new 'setFormModified' method added to the 'zdkform' widget and that
can be call to force the state of the form data to modified or not modified.
- BUG FIXING: the Fontawesome icons was not displayed on IE11 when a ZnetDK
application was deployed over the SSL protocol (the cache properties are now
unset into the header response for the downloaded font files).
- BUG FIXING: the header's dropdown used for language selection was enlarged to
display properly some larger language labels.
- BUG FIXING: the text of the question displayed when calling the
'znetdk.getUserConfirmation()' method was not properly aligned.
ZnetDK 1.11, 2015-12-19 (patch)
- CHANGE: the 'filterCriteria' option is now taken in account by the zdkdatatable widget when it is instanciated for the first time.
ZnetDK 1.1, 2015-12-08
- CHANGE: in the step 3 of the Application Wizard, the new option "No, the access to a database is not required" allows to bypass the database configuration when the application doesn't need to access to a database. - CHANGE: the Application Wizard creates now a new private directory named 'documents', that is dedicated to the storage of the electronic documents uploaded and downloaded by the users. The path of this new directory can be known thanks to the new 'CFG_DOCUMENTS_DIR' PHP parameter. - CHANGE: the conversion in JSON format of the response returned by a controller action is now forced, even if the response data is not properly encoded in UTF8. Nevertheless, if the conversion in JSON fails, an explicit HTTP error message is returned. - CHANGE: new 'Users::notify' method that can be overloaded by the application to send an email notification to the user when her or his account has been created or when her or his password has been changed from the users manager view. - CHANGE: the ZnetDK front controller accepts now HTTP requests sent with GET method when the specified controller action is named 'download'. By this way, files can be downloaded from a simple hyperlink added to a view or can be displayed inline in a view, through an HTML 'iframe'. - CHANGE: new 'Response::setFileToDownload()' method which allows to specify from the 'download' controller action, the file returned by the web server for download. - CHANGE: new 'Response::setPrinting()' method called from the 'download' controller action, for setting the FPDF printing returned by the web server. - CHANGE: new 'General::getURIforDownload()' method allowing to get the URL of a document to download. - CHANGE: the ZnetDK settings consistency controls are strengthened by displaying the HTTP error view with an error 500 when the 'CFG_VIEW_PAGE_RELOAD' parameter is set to TRUE while: 1) the 'CFG_AUTHENT_REQUIRED' parameter is also set to TRUE (not supported), 2) the 'CFG_VIEW_PRELOAD' parameter is also set to TRUE (not consistent), 3) the 'CFG_PAGE_LAYOUT' parameter is set to 'office' (not supported). In addition, an error is traced in the ZnetDK 'errors.log' file to specify the cause of the HTTP error. - CHANGE: the 'zdkdatatable' widget has evolved as specified below: 1) When the paginator is enabled, the 'first' and 'rows' POST parameters are now systematically sent to the controller's action, even when the datatable is displayed for the first time. So, it's no longer necessary to test within the controller's action, whether the POST pagination parameters are defined or not (the pagination settings are done only one time into the view, through the 'data-zdk-paginator' attribute). 2) New method named 'selectRowByValue' that can be called to select a row from its value. 3) The following attributes are now removed from DOM by the widget itself once it is initialized: 'data-zdk-columns', 'data-zdk-action', 'data-zdk-paginator' and 'title'. - CHANGE: the 'DAO' class has 3 new properties that can be initialized from the 'DAO:initDaoProperties()' abstract method: 1) New 'DAO::$dateColumns' property to fill in for specifying the SQL columns of type 'Date' to format depending on the display language currently selected. 2) New 'DAO::$tableAlias' property to fill in when an alias is used into the query for prefixing the main table of the DAO. This property is used by the 'DAO::getById()' method to prefix the column containing the identifier of the row to select. 3) New 'DAO::$groupByClause' property to fill in with the 'GROUP BY' clause of the SQL query. So, when the SQL query is executed applying custom filters, the 'GROUP BY' clause can be added after the SQL conditions of the query. - CHANGE: a warning icon is now displayed by the 'znetdk.getUserConfirmation()' confirmation dialog box. - CHANGE: the 'znetdk.showMenuView()' method accepts a new 'options' parameter that is sent to the called view by the new 'initview' event. - CHANGE: the derived version of the 'puidialog' widget has evolved as described below: 1) The 'close' event is sent when the title bar close button is clicked on. 2) The focus is set to radio buttons only when they are selected. 3) The focus is also set to 'select' HTML elements. 4) New method 'setTitle' allowing to set the dialog title dynamically. - CHANGE: the 'zdkmodal' dialog is now also closed automatically when the 'zdk-close-dialog' CSS class is set to buttons declared with the 'zdk-bt-yes' or 'zdk-bt-no' CSS class. - CHANGE: the 'zdkform' widget has evolved as described below: 1) Values can now be displayed into the data form as a simple read only text, through a DIV element declared with the class 'zdk-textvalue' and the 'data-name' attribute. So, when the 'init()' method of the 'zdkform' widget is called, the data matching the 'data-name' attribute is displayed into the DIV element. 2) Only the HTML buttons which are direct children of the HTML form are grouped at the bottom of the form into the buttons pane. By this way, buttons declared into the form and surrounded for example by a DIV element, are not selected to be grouped into the form buttons pane. 3) New 'isFormModified()' method that can be called to know whether the data of the form have been modified by the user. - CHANGE: a new private property named '\Response::$viewCaller' has been added to identify the controller at the origin of the call of the view. This property can then be read by the view to customize its display, for example when the same view is used both to add and modify a business entity. In addition, the '\Response::setView' gets a new parameter named '$viewCaller' to specify a customized value for the '\Response::$viewCaller' property. - CHANGE: new conversion methods added to the '\Convert' class: 1) toMoney(): convert a decimal number to a money using locale settings, 2) toLocaleDate(): convert a 'DateTime' object to a localized date, 3) toW3CDate(): convert a 'DateTime' object to a W3C date, 4) W3CtoLocaleDate(): convert a W3C date to a localized date. - CHANGE: new constants added to the 'locale_fr.php', 'locale_en.php' and 'locale_es.php' scripts for overloading the localization settings of the 'setlocale()' PHP function. These new constants are LC_LOCALE_ALL, LC_LOCALE_DECIMAL_SEPARATOR, LC_LOCALE_THOUSANDS_SEPARATOR, LC_LOCALE_NUMBER_OF_DECIMALS, LC_LOCALE_CURRENCY_SYMBOL, LC_LOCALE_CURRENCY_SYMBOL_PRECEDE, LC_LOCALE_CURRENCY_SYMBOL_SEPARATE and LC_LOCALE_DATE_FORMAT. - CHANGE: the FontAwesome icons are shipped with this version. The 'puimenu' and 'puibutton' widgets now can be set both with jQueryUI and FontAwesome icons. - BUG FIXING: after a call to the 'zdkform.reset()' method, the input focus could be set on hidden HTML input elements. - BUG FIXING: when the 'CFG_VIEW_PAGE_RELOAD' parameter was set to TRUE, the hyperlink set for the banner logo and the 'httperror.php' view did not include the 'appl' GET parameter, while executing an application other than the 'default' application. - BUG FIXING: when the PEAR framework was specified in the 'include_path' parameter of the 'php.ini' file, the error "Notice: Use of undefined constant CFG_ZNETDK_ERRLOG" was displayed, due to the existing PEAR '\Config.php' script in conflict with the one named identically in the ZnetDK core.
ZnetDK 1.0 (stable version), 2015-09-23
- CHANGE: The ZDK_TOOLS_DISABLED parameter definition was moved from the
'znetdk/.htaccess' file to the 'znetdk/applications/globalconfig.php' script,
because the definition of a custom environment variable into the .htaccess
file, through the 'Setenv' statement, is in most case not taken in
account by the Internet Access Providers. TO ENSURE COMPATIBILITY WITH LEGACY
APPLICATIONS developed in version 1.0 RC, set now the ZDK_TOOLS_DISABLED
parameter as a PHP constant to the value TRUE into the
'znetdk/applications/globalconfig.php' script if you want to disable the core
tools access in a production environment.
- CHANGE: the 'classic' and 'office' page layouts were optimized for the display
on tablet devices in portrait orientation (768 x 1024 pixels).
- CHANGE: the 'data-zdk-paginator' HTML5 attribute of the ZnetDK's 'Datatable'
widget now can be used to define the number of buttons displayed for selecting
a new page of rows (for example, data-zdk-paginator='50:10' will display 50
rows per page and 10 page selection buttons on the paginator to select another
page and display the matching rows).
- CHANGE: the widget 'AutoComplete' is now created with the 'autocomplete' HTML5
attribute forced to 'off' to avoid conflicts with the autocompletion mechanism
of the web browser.
- CHANGE: the background color of the message displayed with the 'Growl' PrimeUI
widget fits now the severity of the message ('info', 'warn' or 'error').
- CHANGE: in the Application Wizard step 2, the themes displayed in the
dropdown panel for selection are now sorted in ascending alphabetical order.
- BUG FIXING: on FireFox browser, the dropdown's selection panel was not
properly aligned to its container when displaying images (the panel width was
lower than the dropdown width).
- BUG FIXING: the main page of the application was loaded twice on FireFox (two
HTTP GET requests received by the web server) because the HTML meta tag
'charset' was not declared within the 1024 first characters of the page, due
to HTML comments too long (see the comment 44 of the page
https://bugzilla.mozilla.org/show_bug.cgi?id=236858 for details).
- BUG FIXING: the message 'CORE - E_NOTICE - Use of undefined constant question'
was traced into the 'errors.log' file when trying to remove a user profile
with associated data rows.
- BUG FIXING: the 'znetdk/applications/default/app/.htaccess' file was not
generated by the Application Wizard.
- BUG FIXING: the 'classic' page layout was not properly displayed when the
parameter CFG_VIEW_PAGE_RELOAD was set to TRUE.
- BUG FIXING: when the 'znetdk' widget theme was set, the hyperlinks displayed
on the banner were not visible. In addition, an HTTP error 404 was traced in
the Chrome web browser console for the 'ui-bg_flat_100_ff9400_4.png' image
when ZnetDK was installed on Linux system.
- BUG FIXING: the 'DropDown' widget was not highlighted in red when no value
was selected whereas it was set with the 'required' property (regression
introduced in version 1.0RC).
ZnetDK 1.0 RC (Release Candidate), 2015-09-03
- CHANGE: new application wizard for configuring and customizing the starter application (launched when typing 'http://myhostaddress/znetdk?tool=appwiz'). The default application located in the '/znetdk/applications/default' directory is no longer delivered with ZnetDK. - CHANGE: new 'ZDK_TOOLS_DISABLED' parameter in the root '.htaccess' file for disabling the application wizard when ZnetDK is deployed in production. - CHANGE: multi-applications feature; several applications can be now deployed within a unique ZnetDK engine, in the '/znetdk/applications' directory, in addition to the 'default' application. Every other application can be accessed thru the GET parameter 'appl' (i.e '127.0.0.1/znetdk/index.php?appl=myappli' where 'myappli' is the sub-directory name of the application within the '/znetdk/applications/' directory). - CHANGE: new widget 'zdkautocomplete' that is automatically instanciated when it is declared into a 'zdkform' and that can be directly connected to a ZnetDK controller action to retrieve the suggestions matching the keyword entered in the autocomplete field. - CHANGE: new option 'defaultSelectedValue' and its associated HTML5 property 'data-zdk-value' added to the 'zdkdropdown' widget for initializing a default value to select into the dropdown. - CHANGE: new '\UserSession::removeCustomValue()' method allowing to remove from the user session a custom value initially added thru the '\UserSession::setCustomValue()' method. - CHANGE: new file upload capabilities: 1) new JavaScript widget 'zdkinputfile' that can be declared out of or into a ZnetDK entry form. It is based on the 'input' HTML element when its 'type' attribute is set to 'file'. 2) new PHP methods 'isUploadedFile()', 'getUploadedFileInfos()' and 'moveImageFile()' added to the \Request core class for getting informations about the last uploaded file and for moving it into its definitive location on the web server. 3) the JavaScript 'znetdk.request' method can now upload a file to a controller action when the option 'fileToUpload' is specified. - CHANGE: several AJAX requests now can be queued when user session has expired and are automatically replayed when the user credentials are renewed. - CHANGE: the ZnetDK form includes the new features below: 1) when the 'novalidate=""' HTML5 property is set for a ZnetDK form, the data of the widgets 'zdkdropdown' and 'zdkinputdate' are no longer validated. 2) the text into an input field is automatically selected when it has the focus after an error has been detected. 3) leading and trailing spaces are removed from the values returned by the 'getFormData()' method. - CHANGE: new data filtering feature allowing to limit the display of business table rows to those matching one or several user profiles (useful for Business workflow development): 1) new method 'DAO::setStoredProfiles()' allowing to store one or more user profiles for the rows inserted or updated by the DAO. 2) new method 'DAO::setProfileCriteria()' allowing to filter the rows returned by a DAO object to those matching one or more user profiles. 3) warning message displayed when a profile is removed while business table rows are associated with. 4) new core security table 'zdk-profile-rows' storing the business table rows associated to a profile. - CHANGE: a user profile can't be longer created or modified if a profile with the same name already exists. - CHANGE: the ZnetDK action bar widget evolves: 1) The confirmation removal question can be customized for the selected row (new event 'whenremove' and new property 'getRemoveConfirm'. 2) The simple declaration of an action button into the action bar with the style class 'zdk-bt-refresh', allows the datatable widget to be refreshed when this button is pressed. - CHANGE: new CSS class 'zdk-bt-custom' allowing to instanciate automatically a 'puibutton' widget with custom icon, when declared for an HTML button within a ZnetDK form (widget 'zdkform'). The new HTML5 property 'data-zdk-icon' allows to specify the icon to display for the button. - CHANGE: new method Validator::setErrorVariable() allowing to set the variable name in error from the checking method, if the variable in error is not the one matching the checking method where the error is detected. - BUG FIXING: the 'checked' status of the radio buttons was wrongly reset for all the radio buttons instantiated for the application, even those not belonging to the radio button group for which the 'resetSelection' method was called. - BUG FIXING: after a call to the 'resetSelection' method, the radio button originally declared in HTML with the 'checked' property was not selected by default. It was the same when the 'disabled' property was set.
ZnetDK 0.98 (beta version), 2015-07-21
- CHANGE: new 'zdkdropdown' widget based on the PrimeUI puidropdown, fully integrated to the ZnetDK form and directly connectable to any action of an application controller (see online demo at www.demo.znetdk.fr). - CHANGE: the 'zdkradiobuttongroup' widget now simplifies the positioning of its radio buttons vertically and horizontally using the <br> HTML element to add a line break between two radio buttons (see online demo at www.demo.znetdk.fr). - CHANGE: the 'reset' method of the 'zdkform' widget takes in account the HTML properties 'checked' and 'selected' by applying the default selection to the the radio buttons, listboxes and dropdown widgets. - BUG FIXING: the displayed modal dialog is now removed when the user session has expired and the user clics on the 'Cancel' bouton from the connection dialog displayed for renewing his credentials. - BUG FIXING: about the 'zdkform' widget, the focus is now systematically set to the field in error when the user submits the form several times. - BUG FIXING: the 'zdkform' form is now properly initialized when its 'init' method is called whereas an error message is displayed into the form. - BUG FIXING: on Internet explorer 11, when the 'classic' layout is set for the application (parameter CFG_PAGE_LAYOUT), the datatable rows are now properly highlighted when the mouse pointer hovers them and the selected row are now visible (see known issues pointed out in version 0.97). - BUG FIXING: on Internet explorer 11, the radio buttons are now properly displayed (see known issues pointed out in version 0.97). - BUG FIXING: on Internet explorer 11, the 'inputtext' and 'textarea' widgets were not properly reset after the triggering of the 'reset' event and the 'required' HTML5 property was not taken in account after a new form HTML5 validation.
ZnetDK 0.97 (beta version), 2015-07-10
- CHANGE: new widget 'zdkradiobuttongroup' which simplifies the declaration and
the style definition of the radio buttons.
- CHANGE: the 'zdkform' widget evolves:
1) It allows now to define custom error messages when the form validation fails
thru the new HTML5 attributes 'data-zdkerrmsg-min', 'data-zdkerrmsg-max',
'data-zdkerrmsg-pattern' and 'data-zdkerrmsg-date'.
2) The 'reset' event sent to the form thru a button of type 'reset' is now
catched by the form to reset its content.
3) The date format is now directly validated by the form (input HTML element
of type 'date').
4) The 'listbox' and 'radio button' widgets are now easier to declare into the
form (no need to wrap them with the DIV 'zdk-form-entry', see online demo on
the ZnetDK website for detailed examples).
- CHANGE: the znetdk.initCommonWidgets() method instanciates the new
'zdkradiobuttongroup' widget when the CSS style zdk-radiobuttongroup is
declared for a DIV HTML element. In addition, the input HTML elements are also
instanciated when their type attribute is 'url' and 'number'.
- CHANGE: new 'checkDate' public method added to the zdkinputdate widget to check
the validity of the date typed in.
- CHANGE: new 'data-zdk-width' HTML5 attribute allowing to set directly in HTML
a fixed width for the 'zdkmodal' dialog widget.
- CHANGE: JavaScript dedicated views for initializing (ie 'myview-ui-init.php')
and managing events (ie 'myview-ui-events.php') can be defined now only one
time when the base view is localized (ie 'myview_en.php', 'myview_es.php',...).
- CHANGE: new widget theme 'flat-two' made with the jQuery UI themeroller.
- BUG FIXING: the ZnetDK logo was not properly displayed when the '/applications
/default' directory is absent. Consequently, the path of the heading logo
picture defined for the LC_HEAD_IMG_LOGO constant into the '/applications/
default/app/lang/locale_[lang].php' script, must start now from the
installation root directory of ZnetDK. TO ENSURE COMPATIBILITY WITH LEGACY
APPLICATIONS developed in a lower version than this version 0.97, the original
value must be prefixed by the constant ZNETDK_APP_URI. For example:
define('LC_HEAD_IMG_LOGO',ZNETDK_APP_URI . 'images/mylogo_en.png');
- BUG FIXING: the error message "Fatal error: Call to undefined method Locale::
setApplicationLanguage() in ...." was displayed when the PHP extension
'php_intl.dll' was enabled in the 'php.ini' file. the core class '\Locale' was
moved into the '/engine/core/api' directory to avoid conflict with the PHP
extension 'php_intl.dll' which also includes a class named '\Locale'.
- BUG FIXING: the E_NOTICE error 'undefined index: lang' is no longer raised and
traced in the ZnetDK /engine/log/errors.log file when the user accesses to the
application for the first time.
- BUG FIXING: a database table row was created twice when an addition form was
submitted to the web server while the user session expired, after the user has
typed in his credentials. By now, the session expiration is also checked by
the object of type \Request.
- BUG FIXING: the datatable paginator was not properly displayed (only one page
link was shown when several pages existed).
- KNOWN ISSUES: several issues are identified on this version for specific web
browsers and are described below.
a) Internet explorer 11 (version 11.0.9600.17843): when the 'classic' layout
is set for the application (parameter CFG_PAGE_LAYOUT), the datatable rows are
not highlighted when the mouse pointer hovers them and the selected row is not
visible. Further more, whatever the layout choosen for the application, the
button radios are not properly aligned.
b) Chrome (version 43.0.2357.132 m): when a form containing an HTML fielset is
submitted whereas a mandatory field is not filled in, an exception is triggered
in the browser console with the error message "An invalid form control with
name='' is not focusable.". See issue description in details on the website
https://code.google.com/p/chromium/issues/detail?id=498668 .
- TRANSLATIONS: the core Spanish translations configured into the script
'/engine/core/lang/locale_es.php' are now more accurate (thank you José).
- REFACTORING: the widgets 'znetdkform' and 'znetdktable' are renamed to
'zdkform' and to 'zdkdatatable'.
ZnetDK 0.96 (beta version), 2015-06-28
- New widgets zdklistbox that can be directly filled in with the data returned by a controller action. - Correction of the \DAO::getCount() method which always returned the value 0 (regression introduced in version 0.95). - Method DAO::setMultipleFilterCriterias removed. The method DAO::setFilterCriteria is the one to use to define both one criterion or several criteria. - The HTML 5 attributes 'data-errmess-required' and 'data-errmess-type' originally supported by zdkform are renamed 'data-zdkerrmsg-required' and 'data-zdkerrmsg-type'. - New 'zdk-row-id' style sheet class to be applied to the input field in the form which contains the row id currently edited. By now, the 'name' HTML attribute of the input field tagged with the class 'zdk-row-id', is read by the zdkactionbar widget to name identically the POST parameter sent to the controller action, when the user asks for removing a row in the datatable. - The profile tree nodes displayed in the profile management form are again fully expanded when adding a new profile (regression introduced in version 0.95). When editing an existing profile, only the selected tree nodes are expanded while the others remain collapsed.
ZnetDK 0.95 (beta version), 2015-06-22
- The core class '\Menu' was renamed '\MenuManager' to avoid confusion with the application class \app\Menu. TO ENSURE COMPATIBILITY WITH LEGACY APPLICATIONS developed in a lower version than this version 0.95, the call to the "\Menu::addMenuItem" method must be replaced by a call to the new "\MenuManager::addMenuItem" method in the "menu.php" PHP script of your original ZnetDK application. - New method '\DAO:setMultipleFilterCriterias' allowing to set several filter criterias to a custom DAO object. - New public method '\controller\users::hasProfile()' allowing to know if the connected user has access to the specified profile. - New methods 'setCustomValue()' and 'getCustomValue()' added to the \UserSession class to store and retrieve cutom variables from the user session. - Core controller actions can be now overloaded individually (it's no longer necessary to overload all the actions of a core controller). - New parameter CFG_CHECK_PWD_VALIDITY specifying the regular expression used to check that a new entered password is strong enough. - New parameter CFG_NBR_FAILED_AUTHENT: number of login attempts until the user's account be disabled. Fixed to 3 failed attempts by default. - The 'Connect' button is now disabled when the user fails to connect after several successive attempts (number configured in CFG_NBR_FAILED_AUTHENT). - New public PHP methods 'setWarningMessage' and 'setCriticalMessage' added to the ZnetDK class '\Response'. - The hierarchy of the navigation menu is extended to more than 2 levels for the layouts 'office' and 'custom'. - New widget 'zdktree' ready to connect to PHP controller actions. - Online help added for the user and profile management pages. - Enhancement of the user and profile manager views (number of rows displayed in the datatable header, columns resized, new ZnetDK error messages returned when a database error happens...). - Profile management: menu items selection with the tree widget improved in the profile edit form. By now, when a tree node is selected, its parents and children are automatically selected (new option 'autoSelectFamily' added to the widget 'zdktree'). - The "Example" view is now properly displayed for the "office" layout. - Upgrade to the version 1.1 of the PrimeUI widgets. - The meta tag "charset" is now directly inserted by the method Layout::renderMetaTags().
ZnetDK 0.94 (beta version), 2015-05-16
- The directory '/app' is moved to '/applications/default/public'. - The directory '/engine/app' is moved to '/applications/default/app'. - The directory '/resources/znetdk-0.93' is moved to '/engine/public'. - All errors of the application are now appended to the file 'errors.log' located to the directory '/engine/log'. - Critical errors are now displayed with the PrimeUI widget 'Notify'. - The controllers developed for the application must now extend the class 'AppController'. The method 'doAction()' is now directly coded in the mother class 'AppController'. The original interface 'iController' must no longer be implemented. - The CSS and JS files of ZnetDK are now loaded in a minified version. For debug purpose, the Javascript files are loaded in their extended version when the parameter CFG_DEV_JS_ENABLED is set to TRUE. - The constant WEBAPP_ROOT is no longer used and is replaced by ZNETDK_APP_URI which provides the relative path to the directory '/applications/default/public'. - New methods setSuccessMessage() and setFailedMessage() added to the class '\Response'. - The namespace of the core classes is now shorter (for example, the class 'Request' is accessed typing '\Request' instead of '\core\Request'). - The security tables accessed by the DAO of ZnetDK are now prefixed with 'zdk_' (for example, the table originally named 'users' became 'zdk_users'). Download for compatibility with this version, the latest script 'znetdk-security.sql' at www.znetdk/telechargements.
ZnetDK 0.93 (beta version), 2015-04-10
- The default theme set for the parameter CFG_THEME in the config.php of the starter application is changed to 'flat-blue' (originally set to 'south-street' in the previous version).
ZnetDK 0.92 (beta version), 2015-04-06
- First beta version available for download.
| ©réation 2014-2025 | Tous droits réservés | Mentions légales Licence ZnetDK | Projet PMC Logiciels |

Se déconnecter
Aide