-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCHANGELOG.TXT
2367 lines (2329 loc) · 149 KB
/
CHANGELOG.TXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
ZnetDK 3.4.0, 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.0, 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.0, 2024-03-21
------------------------
- 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 <head> 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.0, 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.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.0, 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.0, 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.0, 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.0, 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
<meta name="viewport"> tag is added to the <head> 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.