Here is the detailed changelog. As always, your feedback is crucial to our continued improvement. Thanks for all the suggestions and recommendations you keep sending to us.
Major new features
- Add new CSV import tool (https://bigprof.com/appgini/screencasts/csv-import-5.90) that allows non-admin users to import CSV files (if their group settings permit so) into tables they have insert/edit access to.
- Implement Next/Prev navigation in DV.
- New usability feature: Implement keyboard shortcut keys (https://bigprof.com/appgini/help/workin ... rtcut-keys) in users area (Ctrl + F1 or Shift + F1 to display available shorcuts). Shortcuts can be reconfigured by editing the file shortcuts.js or, preferably, redefining the AppGini.shortcutKeyMap object in hooks/footer-extras.php.
- Passing noQuickSearchFocus=1 when linking to a table view prevents auto-focusing of quick search button. This is useful when you embed a table view in another page and don't want the browser to "jump" down to the embedded page.
- If app title already includes UPPERCASE characters in AppGini, leave case as-is.
- Add %TABLENAME% and %PKFIELD% placeholders in calculated field query.
- Add support for Powerpoint file types for file upload fields.
- Super admin can always mass-delete, filter, save filters, sort, print, print DV, save as CSV regardless of table options set in AppGini (these still apply to other users, but no longer to super admin).
- Remove language-admin.php and merge its contents into language.php for a unified translation file (if you are using a non-English language file, please update it from our language download page (https://bigprof.com/appgini/download-language-files) ).
- Add Open app icon (shortcut: SHIFT + F5) to open current AppGini app in browser (as last generated)
- admin/pagepageEditMember.php: When editing an existing member, make username initially read-only, with a button to enable editing, and hide password fields until Update password button clicked.
- Add hint in CSV upload page on how to validate CSV file.
- Center the + button in homepage table links.
- Polished styling for file upload fields to match image upload ones.
- Check that PHP version is 5.6+ in all pages, as well as mysqli and mbstring extensions.
- Add accept attribute to upload fields to filter the browse dialog to show only allowed file types.
- Children records UI enhancements: disable previous nav button on first page, and next nav button on last page. Hide both if there is only one page. Disabled both during loading when either clicked.
- Loading placeholder while loading initial child tabs container.
- Highlight file overwriting stats in overwrite window if there are skipped files.
- Highlight records in TV if the record selector checkbox has focus.
- Select email/web links on uncollapsing in DV.
- admin/pageUploadCSV.php: add hint that this page will be removed in future releases, pointing to new import-csv.php page.
- Fix display of DV edit link for web/email links that are configured as icons.
- Remove update.gif and Exit.gif (replaced with glyphicons), and a new handshake image file in signup page.
- Improvements to signup thank you page.
- After closing a child modal, scroll to children tab. After closing parent modal, scroll to lookup field.
- Fix bug that caused plugin info stored directly to db node to be lost on saving AXP files.
- Prevent filemtime error in thumbnail.php.
- Bug fix in membership_profile.php to prevent a PHP notice.
- Better multilingual/unicode support in calculated fields SQL.
- Fix record not found redirection bug when updating editable PK of a record.
- Fix nicedit and sizing loading issues.
- Fix bugs with focus and empty value detection in some field types.
- Fix non-required multi choice drop-down contains blank entry at the end.
- Fix detail view bug in mobile-resized pages where action buttons have a large unnecessary top margin.
- Fix escaping of default value in definition of textual fields.
- Fix a bug in updateDB.php caused by double quotes in default field values.
- Add --no-tablespaces to mysqldump command in database backup page to prevent error due to a new breaking change introduced recently in MySQL.
- Fix loading order of language files in admin area.
- Fix invalid return value from app_datetime() for null/0 dates.
- Prevent a stored XSS vulnerability in admin area.
- Prevent CSRF vulnerability in various admin pages.
- Prevent XSS vulnerability in pageViewMembers.php.
- Fix CSRF token bug in pageTransferOwnership.php.
- Prevent possible brute force guess of admin username.
- Prevent reflected XSS attack via FirstRecord parameter.
- Fix user enumeration attack for forgotten password page (this is a minor security issue that allows a malicious attacker to guess list of users through a brute force attack).
- Refactor initSession(), and limit cookie path to app uri rather than to entire domain to prevent session collisions when multiple AppGini apps are installed to same domain.
Server-side
- Ability to configure an error message to display to users when returning false from before_insert and before_update hooks.
- Move Request class to a separate class file under resources/lib folder.
- Code refactoring/formatting in various generated files for readability and maintainability.
- Support for new magic file hooks/__bootstrap.php, to be included, if found, before any other files in users' area.
- Pass old record values to tablename_before_update and tablename_after_update hooks as an associative array passed through $args['old_data'].
- New PHP function getRecord($table, $id) to return the record having a PK of $id from $table as an associative array, falsy value on error/not found.
- set_record_owner(): Set $user (3rd param) as optional. If omitted/false, update dateUpdated only for existing records. Useful when needing to preserve record owner and just update last modification date.
- New PHP function lookupQuery() for retrieving DV query of a lookup field.
- New PHP function pkGivenLookupText() for use when importing lookup fields from CSV files.
- New PHP function guessMySQLDateTime() for use when importing date/datetime fields from CSV files.
- New PHP function userCanImport() that returns true if user (or his group) can import CSV files (through the permission set in the group page in the admin area).
- Update calculated fields before calling after_insert/after_update hooks.
- Include language files from lib.php to avoid having to specify them in each file. This means that in custom files, you no longer need to include language files, just lib.php.
- Upgrade to jQuery 3.5, with auto-detection of latest version.
- Add comments and CSS classes to indicate the fields in DV and DVP templates for easier JS manipulation.
- Add AppGini.once() js function for execute given code once when a given condition becomes true.
- Add AppGini.scrollTo() js function.
- Add AppGini.scrollToDOMElement() js function to scroll to a DOM object.
- Add AppGini.Validation js class.
- AppGini.currentTableName() emits a console warning rather than error when current page is not a table page.
- Add AppGini.Translate js object for better client-side handling of translation.
- Refactor client-side field validation.
- Add new CSS class .loop-rotate for infinite 360 rotation of an element.
- JS modal_window() function: Add noAnimation boolean option (defaults to false) to prevent animated fade in/out effects of modal.
- Trigger a new window event child-modal-closed after a child modal is closed in the child tabs below DV. Usage:
Code: Select all
$j(window).on('child-modal-closed', function(e, data) { console.log(data.childTable, data.childId, data.parentTable, data.parentId); })
- Add data-tablename attribute that stores current table name to tables in TV and child tables of DV.
- Add data-table attribute to .detail_view and .table_view sections to easily retrieve the table name programatically in JS in both TV and DV.
- Update readme.txt to indicate the current min PHP version (PHP 5.6).
- Populate creationTimestamp and editingTimestamp auto-value fields with Unix timestamp if the field data type is numeric/textual. Populate with datetime otherwise.
- admin/pageEditGroup.php: don't allow renaming admin or anonymous groups, various code refactoring and formatting changes.
- More consistent order of includes in setup mode, users area, and admin area.
You can access your free upgrade, or order a discounted upgrade license from https://bigprof.com/appgini/download-pro