AppGini 5.90 detailed changelog

News regarding changes and new releases can be found here.
Post Reply
User avatar
Site Admin
Posts: 1301
Joined: 2012-09-27 14:46

AppGini 5.90 detailed changelog

Post by a.gneady » 2020-10-26 17:16

We've just released the long-awaited AppGini 5.90 today :D
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 ( 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 ( ... 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.
Minor new features
  • 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 ( ).
  • Add Open app icon (shortcut: SHIFT + F5) to open current AppGini app in browser (as last generated)
UI/UX enhancements
  • 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.
Bug fixes
  • 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.
Security fixes
  • 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.
Programmatic improvements

  • 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.
Other changes
  • 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.
Upgrading to AppGini 5.90 is free of charge for all users who bought a new or upgrade license on or after October 26, 2019. If your order is older, you can place an upgrade order for just $39.95.

You can access your free upgrade, or order a discounted upgrade license from
:idea: AppGini plugins to add more power to your apps:

Post Reply