AppGini 5.90 detailed changelog

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

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 (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.
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 (https://bigprof.com/appgini/download-language-files) ).
  • 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

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.
Client-side
  • 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 https://bigprof.com/appgini/download-pro
:idea: Calendar plugin: Organize your data into beautiful calendars.
:arrow: Mass Update plugin: Update multiple records at once and improve your workflow efficiency.
:arrow: Summary Reports plugin: Build powerful reports and charts for your AppGini apps.
:arrow: Search Page Maker: Compose user-friendly yet powerful search pages for your AppGini apps.

Post Reply