AppGini change log
AppGini 24.17, Aug 08, 2024
UI/UX enhancements
- Increased recent projects displayed in File menu up to 15.
- Updated help link in 'How do you want to begin' dialog to the new getting started page.
- Updated links in help menu.
- When generating an app, all errors are now displayed together in the status window rather than only the first one found. This helps save the time and frustration of having to fix the reported error, then retry generating to see if more errors exist.
- Applying caption change correctly on renaming a pasted table/field.
- Auto-suggesting a table icon based on table name (if it has an exact match with an available icon name).
- Applying updated table icon instantly after renaming a table.
- When renaming tables/fields, captions are updated accordingly if they haven't been manually set by user.
- When defining a new lookup field, the parent table now displays the corresponding child tab by default, without having to manually configure it.
- Generating
file-uploader.php
regardless of whether app URL is set. This avoids user confusion. - Calculated fields in the detail view are now automatically updated after updating child records, without having to refresh the page.
- Stripping unnecessary params in URLs when reporting query errors that occur in the interactive SQL page. This simplifies error reporting by removing some noise from the query logs page.
- Added titles to the homepage search box components for better accessibility.
Bug fixes
- Displaying an error during app generation when a calculated field query is not a
SELECT
query. - Added support for
CURRENT_TIMESTAMP()
(with parenthesis) when comparing field definitions inpageRebuildFields.php
. - Fixed
appgini_query_log.datetime
field definition to prevent error reported inpageRebuildFields.php
. - Fixed bug where child tab title was not updated on renaming child table.
Security fixes
- Prevented a reflected XSS vulnerability in
browser_window_id
parameter. - Using
Content-Security-Policy
header rather thanX-Frame-Options
(which is deprecated) for click-jacking protection.
Server-side programmatic improvements
- Add
stripParams()
function to selectively strip params from a given URL/URI.
AppGini 24.16, Jul 09, 2024
- This is a hotfix release to fix a bug in
setup.php
that was discovered in the previous release. If you are using AppGini 24.15, please upgrade to this version to fix this issue.
AppGini 24.15, Jul 04, 2024
New features
Users can now specify the number of records per page and persist their choice per table.
- To override the default records per page options, set
AppGini.config.recordsPerPageOptions
as an array of integers inhooks/header-extras.php
orhooks/footer-extras.php
.
- To override the default records per page options, set
UI/UX enhancements
Added Open in browser button to the right of App URL box to easily launch the app with one click.
Removed meaningless record count line when no matches found in table view:
Fixed homepage buttons height in some themes.
Fixed overflow issue with datetime picker in multiple column layout.
Added info icon for each table in the rebuild fields page to show
CREATE TABLE
SQL:Improved UI of rebuild fields page for better readability.
Fixed YouTube video dimensions not following configured ones.
Quick search is now preserved after leaving the filters page and the print preview page.
Bug fixes
- Fixed appearance of radio lookups when user has no edit access.
- Fixed bug where datetime and time pickers where not displayed for users with no insert access.
- Fixed bug in rebuild fieds page when comparing fields where the default is set to
CURRENT_TIMESTAMP
. - Fixed
NaN
error in numeric fields when browser language is Arabic. - Fixed very wide form elements overlapping other elements in multi-column layout.
- Fixed bug in opening divs in embedded TV.
Server-side programmatic improvements
parseTemplate()
: Stripping empty and comment lines when parsing TV templates for a cleaner output code.- Refactored DML
_form()
functions to perform all authorizations before other logic. - Added code in
updateDB.php
to set up internalappgini_*
tables. - Added
createTableIfNotExists($tableName, $returnSchemaOnly = false)
to create specified table name if not already present in the database. Passtrue
as a second parameter to just return theCREATE TABLE
SQL code without executing it. - Refactored
CSVImport
class to usecreateTableIfNotExists()
andaddIndex()
. - Refactored
updateDB.php
to usecreateTableIfNotExists()
. - Refactored
update_membership
functions to usecreateTableIfNotExists()
. - Added second optional flag to
getTableList()
andget_table_fields()
to return internal tables.
Client-side programmatic improvements
- To override the default records per page options, set
AppGini.config.recordsPerPageOptions
as an array of integers inhooks/header-extras.php
orhooks/footer-extras.php
. - Improved pages load time and performance by moving js language code (
AppGini.Translate
) to a separatelang.js.php
file. - Moved js code of
$pagesMenu
toAppGini.preparePagesMenu()
incommon.js
. - Added
AppGini.renderTVRecordsPerPageSelector()
to render the Records per page dropdown (can be overwridden to disable this feature if needed). - Added
AppGini.currentViewIs()
to confirm current view.
Other changes
- Included internal tables in the rebuild fields page.
- Updated context help for 'records per page'.
AppGini 24.14, Jun 04, 2024
New features
Option to copy group permissions from another group when creating a new group or editing an existing one in the admin area.
Added support for specifying a time offset as the default value for datetime and timestamp fields.
UI/UX enhancements
Add user-configurable option to switch the DV (and DVP) layout between single, two and three column layout. Can be remembered separately for each table.
2-columns layout is applicable only for screens wider than 1200px. 3-columns layout is applicable only for screens wider than 1700px.
Enable embedded table view and show next/previous navigation buttons in the detail view when in embedded mode
Open child records in a modal rather than a new browser tab when clicking the child records count from the table view of the parent
Add
Ctrl
hint to tooltip of Generate, Move up and Move down toolbar icons.Disable/enable 'overwrite all' and 'skip all' buttons in files list dialog based on status of selected files. This works as a quick visual indicator to the user that all the files are already checked or unchecked.
Enhanced 'How would you like to begin your work' dialog, and added a link to download example projects.
Bug fixes
Hide 'Print preview detail view' batch command from 'More' menu if detail view is disabled.
Bug fix: hide 'Preview' button for parent records in child detail view if parent detail view is disabled.
Fixed bug in table view print preview where clicking a thumbnail causes a modal with infinite loading and a 'undefined' error.
Fixed
ESC
button behavior in upload status dialog to close dialog rather than open help.
Server-side programmatic improvements
- You can display the navigation menus in the homepage by adding this code to the
hooks/__bootstrap.php
file inside a PHP block:define('HOMEPAGE_NAVMENUS', true);
- Used
DIRECTORY_SEPARATOR
instead of/
ingetUploadDir()
- Moved
getUploadDir()
source docs toadmin/incFunctions.php
- Added
isDetailViewEnabled($tn)
function to return a boolean indicating if the detail view of given table name is enabled. - Fixed/updated links in generated hooks source code documentation.
- Added
Request::datetime()
method to handle submitted datetime values. - Added
parseMySQLDateTime()
PHP function to validate datetime values, and handle time offsets.
Client-side programmatic improvements
- Added
AppGini.renderDVLayoutToolbar()
function to render the detail view layout toolbar (can be overridden for custom rendering). - Added
AppGini.applySingleColumnLayout()
,AppGini.applyDoubleColumnLayout()
andAppGini.applyTripleColumnLayout()
functions to apply the corresponding layout to the detail view. - Added
AppGini.storedLayout()
function to get/set the stored layout for a given table and view.
Other changes
- Updated data type guidelines to be more informative and include date and time offsets.
AppGini 24.13, May 05, 2024
New features
Implement live search in homepage to quickly find a table or table group.
UI/UX enhancements
Press
Ctrl
while clicking the 'Move up' icon to move table/field to the top when sorting tables/field in AppGini.Press
Ctrl
while clicking the 'Move down' icon to move table/field to the bottom when sorting tables/field in AppGini.Refactor 'Move up' and 'Move down' for faster sorting without redrawing the treeview, and with preserving expanded tables.
Fix truncated text in Google map options dialog in high DPI screens.
Bug fixes
- Fix issue with formatting numbers when locale is German (de-DE).
- Fix quick search not highlighting matches in non-default table view templates.
- When renaming a field with a magic/smart name, fix some schema properties not getting applied to the
ALTER TABLE
statement.
Client-side programmatic improvements
- Homepage search can be disabled by adding
AppGini.disableHomePageSearch = true;
in a script block inhooks/footer-extras.php
. - To search both titles and descriptions in the homepage search box, add
AppGini.homePageSearchDescriptions = true;
in a script block inhooks/footer-extras.php
Other changes
- Add database client info to server status page for more comprehensive reporting/debugging.
- Show app date and time (both configured time zone and GMT) in server status page
AppGini 24.12, Apr 05, 2024
New features
- Detect image orientation when creating thumbnails of uploaded images captured from mobile cameras (requires EXIF extension of PHP to be enabled).
UI/UX enhancements
- Add toolbar icon for quick toggling of tool bar icons size.
- Improve activation form in AppGini Pro edition (better error handling and user guidance).
- Fix width of full-size images in table view.
- Add a CSS class
modal-top-spacer
to top spacer div in embedded windows.
Bug fixes
- Check that
allow_url_fopen
is enabled in plugin installer page. - Fix locale formatting of pagination and sum in table view.
- Clearer error messages on failure of db connection or db name misconfig.
- Set the value of auto-fill lookup fields that are hidden in the detail view form correctly.
- Add error check when generating the app to make sure calculated fields have non-empty queries.
Security fixes
- If a lookup field is hidden in the detail view form, force its stored value rather than submitted value when updating a record, avoiding client-side manipulation of the hidden field value.
Server-side programmatic improvements
- Add
RSS
class for creating and consuming simple RSS feeds (this will be used in future releases in place of the Twitter feed). - Add
Thumbnail
class for consolidating thumbnail creation and orientation fixing functions. - Replace calls to
createThumbnail()
withThumbnail::create()
- Fix doxygen documentation of
prepare_sql_set()
AppGini 24.11, Mar 09, 2024
New features
Add option to display table view SQL query code for admin user (to enable this, check the option 'Allow admin access to table view SQL' under the 'Security settings' section of the app properties in AppGini).
UI/UX enhancements
- Fix TV pagination layout for mobile screens
- Fix
.bg-primary
and various other color issues in all themes - Close app generation log window when clicking 'Upload' or 'Run locally'
Bug fixes
- Fix default values in lookup drop-downs not getting pre-selected if they contain non-Latin characters.
- Fix default values in option lists not getting pre-selected if they contain non-Latin characters.
- Fix empty options not being sorted correctly in drop-downs that contain both Latin and non-Latin items.
- Fix handling of
ut=1
param inajax_combo.php
causing empty lookups (this also fixes a bug in search pages created by the Search Page Maker plugin). - Handle error occurring with empty option lists.
Client-side programmatic improvements
- Add
AppGini.copyToClipboard(text)
to copy provided text to the clipboard (must be triggered by a user action rather than autonomously) - Add
AppGini.htmlEntitiesToText(htmlStr)
to convert a string of html entities (e.g.'الاتحاد'
) to unicode text ('الاتحاد'
in this example).
AppGini 24.10, Jan 23, 2024
New features
- Added support for LDAP login and signup, with the ability to automatically add new LDAP users to a preset users group.
- Implemented record owner functionality when adding and updating child records (ensuring that the owner of the child records is the same as the owner of the parent record).
- Added a page for batch fixing of record owners for existing records (Admin area > Utilities menu > Fix record owner).
UI/UX enhancements
- If a record has just been added/updated, the update button is now locked by default when 'Save as copy' is enabled to prevent unintended record changes.
Bug fixes
- Fixed the handling of empty result sets in various scenarios.
- Fixed an issue where filters with a value of
0
were not being applied. - Fixed an issue where child info columns were listed in the table view template even if disabled when generating from an old project file.
- Fixed a bug in the plugin installer tool that prevented the installation of the Search Page Maker plugin.
- Updating
membership_userrecords.pkValue
when a non-auto-increment primary key field is updated. - The files list of the generated files window is now cleared before regenerating the app to prevent duplicate listings.
Server-side programmatic improvements
- Added
getRecordOwner($tn, $pkValue)
to retrieve the owner's username for a given record. - Added
tableRecordOwner($tn)
to retrieve the lookup field name that determines the record owner (or null for the default case where the current user is the owner of the inserted record).
Other changes
- The link to import CSV in the admin area now points to the user's area CSV import tool (the admin area CSV import tool is deprecated and will be removed in future releases).
- Removed the AppGini version from comments at the beginning of generated files to minimize file changes reported in diff tools when updating the app to a different AppGini version.
AppGini 23.17, Dec 16, 2023
New features
Add new tool to automate installing plugins (Admin area > Plugins menu > Install a plugin)
UI/UX enhancements
- Unify plugins icon height in plugins menu
- Better alignment of date and lookup fields in detail view
- If a PK field is editable, mark it as required in detail view
- hide empty image upload toolbox in read-only mode
- Fix layout of tech docs window in high DPI screens
- Fix layout of preferences window in high DPI screens
- Fix layout of file upload window in high DPI screens
- Fix image upload window layout in high DPI screens
- Fix theme preview link
- Fix theme preview window layout in high DPI screens
- Fix icon selector window layout for high DPI screens
Bug fixes
- Fix bug in creation statement of
membership_cache
table. - Include hidden/read-only lookup fields in
INSERT
query if used as filterer, adding it to$data
array before passing tobefore_insert
hook.
Server-side programmatic improvements
- Add
httpRequest()
function to launch HTTP requests, with headers and cookies support. - Add
updateField()
function to create or update specified field only if necessary - Add
addIndex()
function to create or update specified index only if necessary - Add support for
WindowMessages
class to allow displaying messages to users on the next page load from within hooks.
Performance enhancements
- Don't recreate membership fields/indexes unless they don't exist or have changed. Ignore otherwise to prevent slow queries.
AppGini 23.16, Oct 17, 2023
UI/UX enhancements
- Apply user's locale to moment on page load.
- Fix demo message hit area on high dpi screens.
- Fix query helper dialog height issues on some screen resolutions.
- Base default icon size on screen DPI instead of assuming a specific size.
- Fix cropped variables list in calculated fields pane in high DPI screens.
- Better eye icon (Settings > Upload key).
- Remove twitter icon and add change log link in help menu.
- Add large table view icons (for high DPI screens).
- Add empty cells corresponding to child info columns in the sum row under table view.
- Fix upload progress bug when reaching 100%.
- Remove changes scan progress % which is inaccurate and unpredictable, show 'please wait' instead, and show hourglass.
- Adjust toolbar icon sizes to 32 (small) and 64 (large).
Bug fixes
- Fix retrieval and caching of YouTube and google map fields when app encoding is 4-byte UTF8.
- Graceful handling of errors in custom lookup queries.
- Don't cache numbers in
makeSafe()
to avoid cases like '3.5' being equivalent to '3' in array indexes. - Preserve decimals for floats styles using
locale-float
CSS class. - Fix YouTube thumbnail dimensions in some scenarios.
- Fix non-Latin child info column titles.
- Fix issue in
save_config()
. - Create server dirs recursively in
file-uploader.php
. - Correctly detect
https
connections when running behind a proxy (fixing redirection issues when trying to access admin area, children count errors, and issues during copying of child records). - Hide empty child info column when generating app from projects saved prior to 23.15.
Client-side programmatic improvements
- Update
moment.js
to latest release.
AppGini 23.15, Sep 14, 2023
New features
Show child info columns in the table view, displaying the count of child records, and allowing users to add new child records directly from the parent table view.
You can enable this feature from the Parent/Children settings dialog. More details. Video tutorial.
UI/UX enhancements
- Prevent right-aligned fields in non-default TV layouts from being too wide.
- Make selected records in TVDV bold to distinguish them better.
- Update calculated fields if children count is updated in TV, TVP.
- Make parent/children settings dialog resizable and Preserve its width in app config.
- Remove the listbox of child links from table properties as this option has been moved to the parent/children settings dialog.
- Hide non-applicable record ownership filters in the filters page.
- Force min height for html editor.
- Add support for high DPI screens in AppGini.
- Admin view groups page: Hide 'Prev' link in first page, and 'Next' link in last page.
Bug fixes
- Fix 'back' link behavior in error messages displayed in modal windows to close the modal rather than do nothing.
file-uploader.php
: Better detection of secure connection when using trusted proxies.
Security fixes
- Upgrade
PHPMailer
to latest release (v6.8.1).
Server-side programmatic changes
- Add
getLookupFields()
to retrieve full configuration of lookup fields (refactored fromparent-children.php
to be available programmatically to other modules). - Add
getChildTables()
to retrieve child tables of a given parent table. - Fix 'back' link in
error_message()
to close modal window rather than do nothing if the message is displayed inside a modal. - Add
Request::array()
to preperly retrieve data sent as an array in requests. - Fix return data type docstring of
loadView()
. - Add
json_response()
to send a standardized success/error response. parent-children.php
: code refactoring + handleget-count
operation to retrieve children count of multiple parent records.- Add
ctype_alnum()
implementation (which is needed byPHPMailer
) if not present in current PHP installation. - Auto-load
PHPMailer
.
Client-side programmatic changes
- Prepend
child-
to column class name for child info columns in table view. - Add
AppGini.config
object, which currently includes the following keys and their corresponding values:imgFolder
,url
anduri
. - Replace
AppGini.imgFolder
withAppGini.config.imgFolder
. - Add
AppGini.Translate.apply()
method, which translates page content. It works by looking for container elements that have the attributedata-translate
and replaces their content with the translated string corresponding to the key is specified in the attribute. AppGini.Translate.apply()
also looks for elements with attributedata-title
and sets theirtitle
attribute to the translated string corresponding to the key is specified in the attribute.- Open links that have
modal-link
class in a modal window. Window title is set to thetitle
attribute or, if not present, the link text. - Add
AppGini.updateChildrenCount()
to periodically update child records count in TV, TVP (passfalse
as parameter to update once without scheduling more updates). - Add
childrenCountChanged
event to thedocument
object. Triggered whenever child records count changes.
AppGini 23.14, Aug 21, 2023
New features
- Add 'Update calculated fields' page to admin area to allow batch updates easily through GUI
- Reduce file size, improve performance and consistency of large database backups
UI/UX enhancements
- 'Send mail' page: show recipient count, hide too many recipients if recipients count less than 100
- UI/UX enhancements in groups and members list pages
- Fix RTL layout issues in some pages
Bug fixes
- Fix undefined
is_xhr()
error in db backup page - Fix errors in displaying some translated strings
Security fixes
- Force image captcha in setup page to prevent accidental/malicious bot submissions
- Hide db password when logging mysqldump command
Server-side programmatic improvements
- Add
Captcha
class, with support for image captchas and Google Recaptcha (see documentation and examples inresources/lib/Captcha.php
) - Support for autoloading namespaced classes in linux
AppGini 23.13, Jun 25, 2023
New features
- For image upload fields, allow mobile users to capture photo via camera (watch short video demo).
- Add support for drag and drop file uploading.
- Preview images before uploading (watch short video demo).
- Allow
SHOW
queries in interactive SQL page.
UI/UX enhancements
- Link to admin settings page for changing password of super admin.
- Smarter caching of js and css files (auto reload on file changes without having to hard refresh).
- Enhanced UI for image/file upload field in DV.
- [Privacy] Add 'do not track' (DNT) to twitter widget in admin area.
Bug fixes
- Fix bug in
tablename_csv()
hook function not receivingmemberInfo
array. - Fix PHP warnings in
DataList
class. - Prevent freezing while scanning for file changes before uploading app.
- Fix returned json from
getUsers.php
causing error in users list. - Fix returned json from
ajax_combo.php
causing error in default lookup values.
Client-side programmatic improvements
- Add
AppGini.createCSSClass()
js function to create a CSS class with the provided name and properties, based on selected properties from one or more existing CSS classes. - Add
rtl-mirror
CSS class to an element to horizontally flip it in rtl (e.g. arrow glyphs, ... etc).
Other changes
- Minor performance enhancement in
setupMembership()
. - Various code quality improvements.
AppGini 23.12, Jun 03, 2023
UI/UX enhancements
- Add-ons menu: Add DataTalk and discount links, fix SPM link.
Bug fixes
- Include browser headers in file upload requests to prevent bot blocking by server firewalls.
- Add type checks in
save_config()
. - Fix file uploader to allow connections from secure proxies (e.g. cloudflare, k8s ingress, containers behind nginx proxy, .. etc).
- Return separate error messages from file uploader for invalid upload key and insecure connection.
- More upload log details.
- Make all loops in app uploader non-blocking to avoid freezing on slower PCs.
Security fixes
- Security fix: Enforce access prevention to
.sql
backup files in.htaccess
.
AppGini 23.11, Mar 25, 2023
- Much faster detection of file changes when uploading an app to your server.
- More detailed upload logging for better troubleshooting of upload errors.
AppGini 23.10, Mar 22, 2023
New features
- Application uploader to automatically upload generated apps to your server.
- Add more action buttons to project properties pane (view files and upload).
UI/UX enhancements
- Change wording of 'Preview/run app' to 'Run app locally' for clarity and since we can now also offer run app from server
- Rename some buttons in generated files log window for clarity.
- Support for displaying username beside the profile icon in the top navbar. To enable it, add this to hooks/header-extras.php:
<style>.profile-menu-text { display: inline; }</style> - In generator status window, remove the warning about applying changes when no field/table changes are present
Bug and security fixes
- Prevent potential SQL injection vulnerability in admin/pageViewMembers.php
- Don't allow values like \ in $appURI in config; replace with / (this mainly happens on wampp)
- Users from a group that can edit group/owner records can't edit their own records if the PK field is set as zero-fill.
- Don't overwrite config files inside add-ons folder when installing a new version of AppGini to preserve customized settings.
AppGini 22.14, Jun 14, 2022
New features
- Add ability to edit HTML source in rich editor.
- Add support for custom MySQL port number in setup and db config, with fallback to port number set in
php.ini
.
UI/UX enhancements
- Add a link to query error log in pageRebuildFields.php to help debug failed fixing of a field.
- When reporting an SQL error to admin, add clickable link to pageRebuildFields.php.
- Add button to manually recheck database connection in setup.php.
- Improved appearance of 'submit' button in rich editor dialogs.
- Prevent flicker of tv-tools buttons on page load.
Bug fixes
- Attempt to create table with a single dummy field (
_dummy_deletable_field
) if table creation fails. This makes it possible to fix the table in pageRebuildFields.php. - Fix: records that have invalid field values can't be deleted.
- Fix a unique index length issue that prevents creating the
membership_userrecords
table under some MySQL configurations. - Fix: handle NULL comparisons correctly in
prepare_sql_set()
in bothINSERT
andUPDATE
cases.
Server-side programmatic improvements
- Add
child_records_config()
hook for modifying child records config, https://bigprof.com/appgini/help/advanced-topics/hooks/global-hooks#child_records_config - Add support for array values in
prepare_sql_set()
to buildIN (values)
WHERE conditions.
Client-side programmatic improvements
- Add
AppGini.addToProfileMenu()
to allow adding new links and dividers to the user's profile menu. Links are currently appended to the end of the menu, but in future releases, specifying a position might be supported. - Remove special support for old IE browsers
AppGini 22.13, Apr 22, 2022
New features
- Better context help, with updated and clear screenshots to make it easier than ever to use every feature of AppGini.
- Support for emojis and other 4-byte unicode symbols by implementing
utf8mb4
database encoding, with a conversion tool in 'Rebuild fields' page. More technical details at https://mathiasbynens.be/notes/mysql-utf8mb4 - Set default encoding for new projects to '4-Byte UTF-8'.
- Better theme previews: when previewing a theme in the theme window, the live online northwind demo is opened, with the selected theme applied.
- Support for webp images in image upload fields (webp thumbnails can be created only on PHP 7.1+).
UI/UX enhancements
Compact 'sign out', profile link, and keyboard icon into a single profile menu.
Improved UX for Youtube and Google Maps options window.
Smarter app generate nudge when schema changes (won't nudge if project not yet generated).
If DV has a visible alert, don't scroll to focused element to avoid user missing the notification.
More meaningful color hints in generated files window.
Set redirect after insert to be empty by default. And if so, use default redirection after inserting records.
After inserting a new record, if user has view permission, and no custom redirect url is set, select inserted record.
In case of insertion error, show error inside page template.
If not in embedded mode, and user has insert only but no view/update/delete, remove 'back' button.
Show notification alerts above other form elements rather than hidden behind them.
UI: show specific table icon rather than a generic one in child table links on top of DV.
Move field data type guidelines to help section, removing them from field props pane.
Vertically align TV title and quick search box.
Adjust date drop-down styling to match the app theme.
Bug fixes
db.php
: better connection error handling.- Fix images aren't removed from records if the option to preserve uploads is checked.
- Allow editing of date fields if user has insert but no edit permission AND save as copy is enabled.
- If user has insert but no edit permission and no 'Save as copy', lookup fields should not be editable in DV of existing record.
- Fix display bugs under localization settings on Windows 11.
- Append AppGini version when loading AppGini js and css files to make sure changes to them in new versions of AppGini are applied without users having to hard-refresh pages.
- Skip
setupMembership()
for guest users (empty session) and when executingajax-update-calculated-fields.php
to avoid unnecessary db load. - Bug fix: Prevent multiple
sandbox
attributes from being added toiframe
when pasted into nicedit.
Programmatic improvements
Server-side
- Add
Authentication::isGuest()
to indicate whether current user is guest - Add
SHOW VARIABLES
output to database status dump in 'Server status' page.
Client-side
- Add new CSS classes,
.flip-horizontal
and.flip-vertical
that can be added to.glyphicon
to variate icons.
Other changes
- Updates to readme.txt (displayed during the pro setup).
Security fixes
- Don't include inserted record ID in redirection URL if user has no view permission an no custom redirection URL configured
AppGini 22.12, Feb 24, 2022
- New features
- New project option under security settings: All members of 'Admins' group can access the admin area.
- Query logs page: show hint that logs older than x days are automatically cleaned up, with a button to clean up slow queries, and another for error queries.
- UI/UX enhancements
- Check uniqueness of editable primary key fields and show error accordingly, preventing submission of DV.
- Show 'loading' icon on 'save changes' and 'save new' buttons in DV during blocking checks.
- Apply locale formatting to column sums.
- Update last record and record count when deleting records in TV using mass delete.
- Easier to read file extensions list in upload field config window.
- Use flex layout to fix the layout of lookup drop-downs.
- Apply flex layout to date pickers to have the same alignment as lookup drop-downs.
- Unicode support for table group button in table properties pane.
- Extend validity of CSRF token to avoid need to frequently refresh SPA pages.
- Bug fixes
- Prevent loss of default value for fields hidden in DV on update.
- Fix links to uploaded files not working inside modals.
- Fix thumbnails failing to load images when opened inside a modal window.
- Fix: Auto value editingDate displays a wrong date for records that haven't been edited yet rather than being empty.
- Fix loader taking too long in read-only DV.
- Fix: Empty date field is displayed as zeros in DVP and read-only DV rather than just blank.
- Programmatic improvements
- Server-side
- Add new PHP constant, APP_VERSION in definitions.php that contains the AppGini version for the current app.
- Add Request::oneOf() to limit a request variable to specified values or a default if one of them or not set.
- Client-side
- Automatic locale formatting for numbers wrapped inside elements having locale-int or locale-float CSS classes (can be disabled by setting the JS property AppGini.noLocaleFormatting = true).
- Server-side
- Other changes
- Clarify how column width is applied in context help
AppGini 22.11, Jan 25, 2022
New features
Add translation tool (Admin area > Utilties menu > Translation tool) to make it easier to translate the interface of AppGini apps without manually editing language files.
UI/UX enhancements
Prevent clipping of permission dropdowns in group editor page in admin area
If a project has not been generated yet, don't prompt to remove field from db when deleting a field.
Remove
Add hidden visibility style to
#EnterAction
button to prevent displaying it in several scenarios.Show child records count in a badge in tab title, both in detail view and print preview
Add anonymous icon to the 'continue browsing as guest' link
Change the height of sizer div below navbar to accommodate navbar height
Bug fixes/misc.
- Typo correction in language files: 'occured' => 'occurred'
- JS API >
agModal()/modal_window()
: accept new parametershow
to define a callback to execute after showing the modal (equivalent tobs.modal.shown
) - Accept multiple email links in child tabs
- Document
noAnimation
option in the comment formodal_window()
incommon.js
- Refactor
checkMemberID.php
to avoid sending the entire html when the call is an ajax request.
AppGini 22.10, Jan 09, 2022
- New versioning scheme for AppGini to allow a faster release cycle.
-
New utility in Admin area: Interactive SQL queries tool (accessible from the Utilties menu).
This is a great way to run quick queries to retrieve info from the database. You can bookmark the
queries to run them later. Here is a quick demo:
To enable interactive SQL queries utility, check the option "Allow admin access to interactive SQL tool" under "Security settings" in your AppGini project:
- Bug fix: when overwriting an already-existing generated file, delete original file to ensure correct file name case.
- Bug fix: corruption of special characters in table groups when deleting a group.
- UX: refocus left treeview pane after table/field rename error.
- Bug fix: redirect after insert doesn't update renamed table name in some cases.
- Fix csrf token issue preventing deletion of parent records after user confirmation.
- Fix bug with handing of old dates in date fields.
AppGini 5.98, Nov 1, 2021
UI/UX enhancements
- On closing a parent modal opened from child DV, reload auto-fill lookups linked to that parent.
- On creating a new table via
updateDB.php
, automatically make it fully accessible to admins group. - Polished AppGini icons.
- Special project browser icon for checkbox, upload, text/html, and calculated fields.
- Admin area > query logs page: show count of slow and error queries on the navigation titles, and turn into tabs for more intuitive UI.
- Update Google API key warning to reflect recent move of config into admin area > admin settings.
- Add 'Reset' button in media tab to make it easy to reset the link behavior of a field.
- Format slow/error query before logging (trim, no indenting)
- Fix issue with updating calculated fields in TV pages that have a huge number of records.
- Show table icon name on mouse hover in the table icons window.
- Improved UI in homepage buttons that allow insertion.
Bug fixes
- View/Rebuild fields page: Create any missing tables before attempting to create missing fields.
- Escape back slashes in option lists to prevent incorrect storage.
- Contents of option lists trimmed before populating drop-downs to prevent false 'no matches found'.
- In TVDV, if user has view but no insert permission, prevent false 'access denied' warning.
- Fix admin username validation in
setup.php
not working correctly. - Flush cached config after updating.
- Update record ownership on renaming admin and guest users in admin settings page.
- Ignore rather than log duplicate key errors during configuring admin and guest users/groups
- Avoid unnecessary error logging of alter membership* tables queries.
- UI fix for hidden submit button preventing showing it under some custom scenarios.
- Avoid incorrectly escaping double quotes in default values.
sendmail()
: disableSMTPAutoTLS
if no encryption is set in mail settings.- Disable SMTP auth if no smtp user/pass provided
- Fix issue when searching for '0'.
Security fixes
- When deleting a user from the admin area, also delete their special permissions and sessions to avoid takeover by a user having same name later.
- Delete records only if either a csrf or jwt token is provided.
- Protect
pageBackupRestore.php
against CSRF. - Protect
pageChangeMemberStatus.php
against CSRF. - Protect maintenance mode against CSRF.
- Fix low severity stored xss in signup page and various others.
- Fix stored xss issue in nicedit (sandboxing iframes).
- Prevent directory browsing of various resource folders.
- Revert
isEmail()
function to use regex rather than PHPfilter_var
which is vulnerable to xss. - Fix stored xss in profile page.
- Fix low severity stored xss in
admin/pageViewMembers.php
- Fix stored XSS vulnerability in nicedit.
- Fix low severity stored XSS in group name.
- Fix high severity stored XSS in pages that fetch a lookup value in some scenarios.
- Fix XSS in admin > view groups and in user profile page.
- Fixed stored XSS issue in
tablename_autofill.php
. - Fix low severity stored XSS vulnerability in
admin/pageViewMembers.php
. - Fix low severity stored XSS vulnerability in
membership_profile.php
. - Fix reflected XSS vulnerability in
membership_passwordReset.php
. - Fix low severity stored XSS in
admin/pageViewGroups.php
. - Fix CSRF vulnerability in
admin/pageDeleteGroup.php
,admin/pageDeleteMember.php
andadmin/pageDeleteRecord.php
.
Programmatic improvements/changes
Server-side
- Support for configuring max and min years allowed in date fields via hooks: In
hooks/tablename.php
orhooks/__global.php
, add this in the global scope (outside any function definitions):// Change tablename and fieldname to actual table and field names define('tablename.fieldname.MinYear', 2010); define('tablename.fieldname.MaxYear', 2030); // Dynamic dates also works: define('tablename.fieldname.MinYear', date('Y') - 1); // = last year define('tablename.fieldname.MaxYear', date('Y') + 2); // = 2 years ahead
- Implement
json=1
param inajax_combo.php
to force json output regardless of lookup type, useful to handle radio lookups correctly in SPM and mass update plugins. ajax_combo.php
: Accept optionalut=1
param to return unique values, useful for SPM search page.- New functions in
admin/incFunctions.php
:array_trim()
,request_outside_admin_folder()
,breakpoint()
. - New constant
DEBUG_MODE
. - Refactoring: Implement
resources/lib/Authentication.php
which defines anAuthentication
class to package all auth related code in a single class. - Move global app constants to a centralized
definitions.php
file, available to all 3 modes of app (users, admin area, setup). - Timezone is now a constant defined in
definitions.php
rather than a hard-coded value. hooks/__bootstrap.php
is loaded in all 3 modes of app rather than just users.- Add
validMySQLDate()
to validate a MySQL-formatted date. - Fix inconsistent behavior of
parseMySQLDate()
. getUploadDir()
: make argument optional, defaulting to''
.admin/incFunctions.php
: include field caption and description in schema data returned byget_table_fields()
Client-side
- Add
AppGini.version
to retrieve AppGini version in JS.
Other changes
checkAppRequirements()
: Require PHP 7.0 or above. Require iconv functions.- Many code refactorings to better architecture and allow future improvements.
AppGini 5.97, Jun 13, 2021
- Fix
SameSite
value of remember_me cookie for future compatibility with browsers. - Re-order admin utilities menu for better organization.
- Add
pageQueryLogs.php
to view log of slow and error queries for debugging (Admin area > Utilties menu > Query logs) - Add 'nothing' table icon (useful when you want no icons for a table)
- Refactor
tablename_view
to delegate code for applying membership permissions toDataList
. - Add
DataList::applyPermissionsToQuery()
andDataList::fieldIsDateTime()
. - Refactor various parts of
DataList
. - Fix filtering query error for non-admin users that don't have full view permissions.
- Add
logSlowQuery()
andlogErrorQuery()
functions to help diagnose problematic queries executed bysql()
. - Refactor
sql()
function by separatingdieErrorPage()
andopenDBConnection()
. - Add new options to the
$o
array passed tosql()
to suppress logging if set totrue
:'noSlowQueryLog'
and'noErrorQueryLog'
. - Add CSS classes
.signed-in-as
and.username
to the 'Signed in as ..' text and the username link in the navigation bar for easier scripting. - Fix issue where TVDV page with 0 records in TV has missing date pickup components.
- Render read-only checkboxes in DVP in all cases.
makeSafe()
: return an empty string for 0-length inputs without further checks.
AppGini 5.96, May 17, 2021
- UX fix: don't automatically sign out a user when they access a table they have no access to.
- Show 'table access denied' error if user is accessing a DV record they don't have access to, rather than a blank page.
- Fix issue with empty lookup values for lookup fields of short char/varchar datatype.
- CSS rule to hide empty email links.
- Show "Don't rename uploaded files" and "Delete files from server when removed from record" options in image options window.
checkMemberID.php
: change the way availability is reported to prevent minifying services that strip comments from ruining the result.- Render read-only (rather than editable) check-boxes in DVP.
- Enable auto-increasing rich editor height for long content.
- Add more randomness to generated file names by randomly seeding
microtime()
to hinder brute force filename guesses. - Sanitize
filterer_*
against reflected XSS in 'Add new' form. - Misc syntax fixes.
AppGini 5.95, Mar 29, 2021
UI/UX enhancements
- Remove empty images from DVP
- Align sum cells the same as their corresponding data cells.
- Fix tooltip appearance in
admin/pageRebuildFields
- Fix and improve UX for inserting joins in query helper window
- Better handling of DV loader (no compile time vars, show only if there is a non-native focus field, don't show in TVDV unless a record is selected, hide once focus field is ready instead of waiting unnecessarily for > 1 sec.)
- Focus form field in TVDV if a record is selected.
- don't focus DV on load if in same page as TV.
- Improve appearance of file overwrite window.
- Show insert button for lookups in embedded mode.
- Fix nicEdit (rich HTML area) height
Bug fixes
- Ignore
not null
forauto_increment
fields when comparing inadmin/pageRebuildFields.php
- Correctly escape default values containing slashes.
- Fix PHP8 error on filtering lookup fields.
- Fix issue with autofocusing radio lookup fields.
- Fix
nl2br
issue in textareas. - Preserve background highlight color applied by nicedit.
- Fix sorting bug in
admin/pageViewRecords.php
- Fix Filters + $options->QueryWhere = causes SQL syntax error
- Fix
localStorage
clearing issue that leads to disabling enabled shortcut keys
Security fixes
- Filter data when exporting to CSV to prevent CSV injection in Excel.
- Sanitize group description in groups list page
Programmatic improvements/changes
Server-side
- The
$mail
param ofsendmail()
can optionally includetag
key to pass any desired value tosendmail_handler()
hook. Example:
Providedsendmail([ 'to' => '..', 'subject' => '...', 'tag' => 'abc' ])`
tag
would be accessible insendmail_handler()
hook as$pm->tag
. - Add support for CC and BCC. Also, allow multiple recipients in TO field. Usage:
sendmail([ 'subject' => 'Test subject', 'message' => 'Email message', 'to' => [ /* [email, name] */ ['[email protected]', 'Recipient1'], ['[email protected]', 'Recipient2'] ], 'cc' => [ ['[email protected]', 'CC1'], ['[email protected]', 'CC2'] ], 'bcc' => [ ['[email protected]', 'BCC1'], ['[email protected]', 'BCC2'] ] ]);
- Add
assocArrFilter($arr, $func)
PHP function -- filters provided array using provided callback function. The callback receives 2 params ($key
,$value
) and should return a boolean. - Add
bgStyleToClass()
PHP function for convertingbackground-color
style attribute applied by nicedit into a class to prevent potential XSS injection. safe_html()
appliesbgStyleToClass()
before xss cleanup.
Client-side
- Add
.sum
CSS class to sum row and each sum cell in TV. - Add new param
doActionOnTimeout
toAppGini.once()
js function. If set totrue
, execute action on timeout. - Add
AppGini.applyNiceditBgColors()
js function for applying background highlight color to elements havingnicedit-bg
CSS class. - Add optional
timeout
config param toAppGini.once()
to abort checking condition after specified msec. - Add
AppGini.unixTimestamp()
js function to retrieve current unix timestamp in sec, msec. - Include
.container-fluid
incommon.js
styling whenever a rule's selector is.container
- Include
.container-fluid
indynamic.css
styling whenever a rule's selector is.container
AppGini 5.94, Jan 21, 2021
- Fix 'no direct access allowed' in CSV import page.
AppGini 5.93, Jan 20, 2021
New features
- Add new table property Default focus field to allow control over which field (if any) has focus by default when the detail view form is loaded (Previous behavior was to always auto-focus the first editable field).
- Implement instant search in admin settings page to quickly find a setting by label.
- Move the setting of the file upload path to the admin settings page, making it more convenient to change.
UI/UX enhancements
- Add button for clearing date fields in detail view.
- Usability and layout fixes to
admin/pageSettings.php
- Add some space between plugin icon and name in plugins menu
admin/pageTransferOwnership.php
: prevent moving super admin user to non-admin group, or any user to anonymous group- Move server-side code from
common.js.php
toheader.php
, and rename ascommon.js
for better performance through native server/browser caching. - Remove misleading help mouse pointer from title bars of table props section.
- trim option list separators from start and end of options list to prevent unintended empty options.
- Add
autocomplete="new-password"
for new password fields in app pages to prevent browser auto-completion (this prevents pre-filling passwords, but not password suggestions). - Add checks during setup for PHP extensions: xml and mbstring, and a more descriptive error message if
images
folder is misconfigured. - Fix bottom margin of field description in detail view.
- Adjust glyphicon size for download links using new CSS class
.glyphicon-lg
- Adjust icon links alignment/margins in detail view for a more consistent UI.
- Rename
dynamic.css.php
todynamic.css
for speedier processing and better loading performance. - Center alert text in
admin/pageEditMember.php
. - Don't show link to
pageRebuildThumbnails.php
in admin Utilties menu if app has no thumbnail fields. admin/pageSettings.php
can initiate a search through the URL GET parametersearch-settings
to allow direct linking to a specific setting from other admin pages.- Proper autofocus for date fields.
- Fix layout of web link input field in detail view.
- You can now navigate between the project browser, the search box and the properties pane in AppGini using either F6 or F4 shortcut keys.
- Project inspector (F12) now displays field and table names on the main field/table nodes for easier/quicker access.
- UX enhancements when user clicks the label for date, link, YouTube and google map fields.
- If user specifies that a link field displays the contents of another field, they must specify the other field.
- More descriptive message for field changes warning when closing AppGini without regenerating app.
- Show warning message when trying to import a table from a CSV file while no project is open.
admin/pageViewRecords.php
: support for{none}
member, indicating ownership records having no member.
Bug fixes
- Fix technical documentation preview issue.
- Fix modal height bug on iOS.
- Fix bug in YouTube thumbnail URL.
- bug fix in refactored
datalist.php
. - Fix bug in combo class.
- Quick search: fix highlight behavior when no matches are found.
- Fix js bug in
admin/pageViewMembers.php
that prevents confirmation dialog when deleting a user. - Admin homepage: indicate and correctly handle ownership records with empty username.
- Fix bug in Save changes button locking behavior during ajax requests.
- Fix YouTube videos error due to YouTube API change.
- Properly close
<form>
and grid in filters page. - Avoid invalid HTML in file upload fields.
- If field is configured as a lookup and image simultaneously, remove image config and prioritize lookup config to consist with UI and fix generated code js error.
- Fix PDF files not displaying in modals.
- Handle error when homepage panel height is set to invalid value.
- Fix: separator between parent caption fields appears twice in lookups if parent caption field is itself a lookup field.
Security fixes
- Update
CI_Input
to prevent recently revealed XSS vulnerabilities, CVE-2021-21260. - Move the setting of Google Maps API key to the admin settings page (storing it in
config.php
) to prevent hard-coding the API key into generated code, making it safer to distribute your app to third parties. - Prevent potential minor reflected XSS vulnerability in
CSVImportUI.php
.
Programmatic improvements
Server-side
- Use
getLoggedAdmin()
whenever checking for admin access rather thangetMemberInfo()['admin']
to ensure the admin check is centralized. - typo fix in
admin/pageUploadCSV.php
. - Fix for the case where
ctype*
functions are not included with PHP. - Fix some PHP8 compatibility issues.
- Use PHP's built-in
filter_var()
to validate emails inisEmail()
instead of hard-to-maintain regex. - Code refactoring in
admin/pageRebuildThumbnails.php
and ensuring usage of configured image upload path rather than a hard-coded one. - Use
<%%BASE_UPLOAD_PATH%%>
placeholder in templates instead of<%%TRANSLATION(ImageFolder)%%>
. - Refactor
DataList::templateTranslate()
method toparseTemplate()
function inadmin/incFunctions.php
.
Client-side
- Add new CSS spacer classes:
tspacer-*
(top spacer),bspacer-*
(bottom spacer),lspacer-*
(left spacer, RTL safe),rspacer-*
(right spacer, RTL safe), where*
is one ofxs
,sm
,md
orlg
. - Replace
AppGini.focusFirstFormElement()
js function with the more versatileAppGini.focusFormElement(tn, fn)
. - Add optional 2nd parameter
shift
toAppGini.scrollToDOMElement()
to specify a shift value, useful to make scrolled-to DOM element more visible near the mid of the screen rather than on top. - Use
AppGini.imgFolder
in js instead ofAppGini.Translate._map['ImageFolder']
. - Add
id
attribute to read-only YouTube, google map and web/email link fields.
Other changes
- Remove Google Maps API setting from AppGini preferences window (since it's configurable from admin settings page now).
- Update
http
links tohttps
counterparts.
AppGini 5.92, Nov 10, 2020
- Fix bug where applying quick search + filters caused an error.
- Fix error message when default value of a field contains single quotes
- Append DV next/previous buttons to the first .btn-toolbar only to avoid duplicates if the page contains multiple .btn-toolbar elements.
- Disable special handling of Ctrl + right/left arrow when inside a non-empty input/textarea
-
AppGini.inputHasFocus()
: detect focus in inputs and contenteditable elements. - Add vertical spacer between child link buttons on top of DV for better UI with many buttons that wrap.
- Fix bug occuring with users having insert and no view permission.
- If user has insert-only access (and no view) to a table, redirect to DV form after insertion rather than to a blank page.
- Fix bug with validation and focusing of required rich text fields
- UX enhancement in import-csv.php: if user manually clicks #start-upload, hide timer
AppGini 5.91, Nov 1, 2020
- Usability enhancement: In detail view pages where both 'Save changes' and 'Save as copy' are enabled, add a lock button to 'Save changes' that allows user to disable 'Save changes' button to avoid clicking it by mistake when they actually mean 'Save as copy'.
- Performance improvement: combine all calculated field ajax calls of TV and child tables into a single call rather than one call per record.
- Display a link to keyboard shortcuts reference page in the keyboard reference modal.
- Fix DV layout bug for fields that have the option 'Column width' checked (introduced after adding .tablename-fieldname CSS class to DV inputs).
- Fix guest navigation and signup issue.
- Fix bug in
admin/pageEditMember.php
that prevents saving changes. - Fix bug where
__global.php
hook functions were not executed properly. - Fix disappearing
.warning
class issue in TV rows when added programatically. -
pageBackupRestore.php
: Show mysqldump command on error (redacting db password) - CSV preview page: prevent new lines in field separator and wrapper.
AppGini 5.90, Oct 26, 2020
- 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 detail view.
- New usability feature: Implement keyboard shortcut keys in users area (Ctrl + F1 or Shift + F1 to display available shorcuts).
- 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 intolanguage.php
for a unified translation file. - Add Open app icon (shortcut:
SHIFT
+F5
) to open current AppGini app in browser (as last generated). - If app title already includes UPPERCASE characters in AppGini, leave case as-is.
- 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. - Various UI/UX enhancements.
- Various bug and security fixes.
- Detailed changelog here.
AppGini 5.84, Jul 14, 2020
- Fixed bug in 5.83 where assigning record owner from users area caused an error.
AppGini 5.83, Jul 13, 2020
- Important security fixes.
AppGini 5.82, Feb 23, 2020
- Added Preview button to app generation log window to open generated app in web browser (works by configuring localhost settings in AppGini Preferences window).
- Added support for formatting numbers like 1.234,56 in 'Data Format' tab.
- Added command-line utility for updating calculated fields,
php cli-update-calculated-fields.php
to enable automation (via crontab, .. etc). - Enhanced server status page UI to allow zooming in sections of the page.
- When TV has no records, hide unnecessary elements (
#Print
,#CSV
,#tv-tools
,thead
). - Added new CSS classes to child label tabs for better JS manipulation:
.child-tab-label
,.child-table-{tablename}
,.lookup-field-{fieldname}
. - Updated AppGini logo.
- Fixed regression where .form-inline styling is breaking customizations described in AppGini customization course.
- Added
.admin-area
CSS class to container div in admin area pages. - Added
.users-area
CSS class to container div in users area pages. - Moved js initialization code to top of
common.js.php
file. - UI enhancement: Focus the first filter in filters page.
- Calculated fields window: CTRL + TAB to insert tab, ENTER for a new line rather than closing window.
- Correctly show files as appearance/code files during file generation.
- moved calculated fields config to
calculated_fields()
function inadmin/incFunctions.php
for better reuse. - Renamed generate icon to 'Generate AppGini app' for consistence.
- Override default
home.php
ifhooks/home-custom.php
exists, allowing creation of advanced custom dashboards. - Fixed regression bug with deep auto-fill lookup fields.
- Fixed issue with displaying special characters in tech docs.
AppGini 5.81, Oct 15, 2019
- Fixed issue where copying child records didn't work correctly on some server configurations.
- Added new config.php parameter,
host
, for use when copying child records. - Fixed behavior of Same as project file button in Specify Output Folder window (switching to the same folder where the project file is stored).
- PHP API: added
backtick_keys_once($arr)
to apply backticks around given array keys. - Fixed issue with inserting data to fields named like mysql keywords.
- Prevented stripping of last comma in array lists to make source code diffs more precise.
- Fixed a bug where some projects failed to load in AppGini.
- Bug fix in
admin/incFunctions.php#insert()
andupdate()
. - Fixed a bug in populating calculated fields in detail view.
- Added link to mass update plugin in add-ons menu.
- AppGini command line: Added support for
--log {path-to-log-file}
parameter for saving app generation log to provided file name. - Fixed: Focus correctly on first element in form if it's a rich text or select2 drop-down.
- Added selected/skipped files counter in files list window when generating apps.
- Displaying output folder path in files list window.
- Fixed: Preserve size of generation log window if resized by user.
- Files list window is resizable.
- Calculated fields: Child table: Refresh button updates calculations.
- Calculated fields: Fixed issue where calculated fields returning HTML displayed source code in table view.
AppGini 5.80, Oct 6, 2019
- Calculated fields.
- Automatically copy child records when copying parent.
- Enhanced UI of group permissions page for faster editing.
- Enhanced UI for ‘Specify output folder’ window.
- Enhanced file upload UI with minimum frustration!
- Smart enhancements to auto-complete drop-downs.
- Developer/admin technical documentation.
- API changes.
- Bug fix in Edit record ownership page.
- Preserve table view settings when going back from TV using the top left (table name) link, just like when clicking Cancel/Back button.
- Fixed: Changes to rich text (nicedit) are not detected by the Save changes button.
- When saving CSV files, set the name to include date and time to make it easier to version CSVs if users are downloading them frequently.
- Fixed: Prevent triggering of auto-loading for PHPMailer and Notification classes.
- Added a UI hint for lookup fields that have custom queries.
- Fixed a potential run time error when resetting a custom query to default one for a lookup field.
- Fixed: Configured data format for field should take priority over default date/time formatting in both table view and detail view.
- Fixed a bug that lead to failure generating some files when some special UTF8 characters are used in table/field captions.
- For a detailed explanation of all the new features, please refer to this blog post.
AppGini 5.76, July 6, 2019
- Hotfix release. Fixed redirection bugs for AppGini apps installed directly to document root folder.
AppGini 5.75, Mar 20, 2019
- When adding a new parent record from the DV of a child record, auto-select it in drop-down
- Ability to search icons by name in the table icons window
- Pressing F4 in AppGini, you can switch between the left tree-view, the search box, and the right pane.
- MySQL2AppGini import utility updated to use mysqli and is available through online download link
- Better handling of nav menu height when it's too long
- Added new JS function in
common.js.php
for retrieving Text of a lookup field given ID,AppGini.lookupText()
- Naming new projects
new_app
rather thannew_db
to infer this is the app name not the db name. - Extended RemeberMe renewal window to 20 minutes.
- auto-focus on group name box in
pageEditGroup.php
- Ignoring 'Read-only' option for 'Auto-fill' lookup fields.
- Silencing SQL errors in
sqlValue()
and adding an optional pass-by-ref argument to retrieve errors. - Added CSS classes to elements of
pageEditGroup.php
in order to allow mass-control later - Fixed a bug with populating auto-fill lookups under certain conditions
- Fixed bug where print DV option was visible in 'More' menu when DV printing is disabled
- Fixed rebuild fields behavior when renaming PK fields
- Added a hint for admin SQL errors to rebuild fields
- Fixed bug in cascading drop-downs where View/Add buttons disappeared after parent selection.
- Fixing display issue with Sandstone compact theme.
- Fixed index size issue when creating membership_userrecords table with a UTF8 encoding
- bug fix in
application_url()
AppGini 5.74, Feb 7, 2019
- Fixed a redirection bug on servers where DOCUMENT_ROOT is an alias.
- Updated help links in AppGini menu, and added new 'Add-ons' menu.
AppGini 5.73, Feb 5, 2019
- Added 'Generate Application' option when right-clicking a project file in Windows Explorer to generate the app without opening AppGini first.
- Added support for new command line parameter --output to specify output folder from a shell or a batch file (AppGini Pro only).
- Hardened remember-me cookies to use dynamic tokens and prevent session theft.
- Fixed CVE-2018-18587 -- hardened stored password hashes to comply with best practices for storing user credentials.
- Improved performance of records count in homepage.
- Auto-complete now works in all drop-downs if they contain 5 items or more.
- Admin area: added a 'Server status' page, useful for diagnosing server/database issues.
- For full changelog, please see the release announcement on our community forum.
AppGini 5.72, June 11, 2018
- Fixed: Radio lookups: 'view parent' link not working.
- Fixed: In-page validation for required radio button lookups/option lists.
- Fixed: Save flag not triggered when moving field up.
- Added hide all and toggle buttons to column toggle menu.
- Fixed count() warning on PHP 7.2.x
- Fixed vertical spacing of date combos.
- Added link to YouTube channel on the toolbar.
- Fixed datetimepicker European date formats.
- Fixed bug in sql() function causing Notification::placeholder() not to be declared on silent errors.
- Unified utf8 conversion functions to use to_utf8() and from_utf8()
- Fixed utf8-related bugs in select2 drop-downs and auto-fill lookups
- Fixed image caching issues in thumbnail.php
AppGini 5.71, May 24, 2018
- Implementing datetime picker for datetime fields
- Unicode-friendly copy/paste of tables and fields
- Shortening columns cookie name to avoid 'bad request' errors,
- Improved responsiveness of 'Edit theme' dialog to prevent freezing
- Fixed: Record permissions are not honored in children view in some cases
- Fixed: image upload fields don't display the image if no renaming and file name contains a hyphen.
- Fixed image lookup DV issues
- Set column hide/show cookies to expire after 30 days rather than on closing the browser.
- Fixed a bug with image uploads in tables containing 2 or more image upload fields.
- Fixed an issue with backups on servers having no MySQL password.
- Fixed bug with show/hide columns dialog in vertical TV layout
- Cleanup of some obsolete image files no longer used.
- UX enhancements.
- Allow long TLDs in email field of the activation window
- Removed 'DB name' label from project page to avoid confusion
- Fixing issue with initial values of auto value time fields.
- Fixing issue with default value for time fields in 12hr mode.
- Fixed issue with displaying empty time values in DV
- inserting null in time fields if left empty when inserting a new record.
- Changed the data type info icon to text, and also the lookup auto data type icon.
- Updated the data type choice link to use the https version.
- Added uninstaller icon (in Windows Add or Remove Programs dialog)
- Prevent adding .alert-link to button links.
- Fixed an activation bug validating emails with long TLDs.
- Fixed bugs with sorting of lookup fields in child tables.
- Fixed a bug where addslashes was incorrectly applied to cached auto-fill lookups, causing escaped quotes
- Added html_attr_tags_ok() function and applied to cached auto fill data.
- Added thumbnail caching to thumbnail.php (except for super admin user for administrative purposes)
- Fixed issue with defining datalist_image_uploads_exist constant in datalist.php
- Fixed issue with templates/tablename-ajax-cache.php where auto-fill lookups having parent images were not displayed correctly
- Loading moment.js and bootstrap-datetimepicker in header.php
- When saving filters, remove the FilterAnd for undefined filters from the filter URL
AppGini 5.70, Jan 23, 2018
- Added database backup/restore page in the admin area (accessible under the Utilities menu).
- Option to display the record count of each table in the homepage (to enable, select the table in AppGini and check the option Show record count in homepage).
- Added 'Show/hide columns' button above table view.
- Better handling of wide tables in mobile view by allowing users to easily scroll horizontally, one column at a time.
- Added 'Fix all' button to 'Rebuild fields' page.
- Added more table icons to choose from.
- More than 60 enhancements, security and bug fixes.
AppGini 5.62, May 8, 2017
- Implemented PHPMailer as the mail function for apps, with SMTP support configurable in admin settings.
- Included hooks/__global.php in admin area.
- Added new hook in __global.php, sendmail_handler() for intercepting mail sending operations.
- Fixed PHP 7.1 compatibility issue.
- Fixed preg_replace calls with /e modifier.
- Added validation checks to make sure undefined data formats are properly handled.
- Fixed XSS vulnerability in quick search responsibly reported by Netsparker.
- Added hooks/README.html.
- Fixed error with line breaks in emails sent from the admin area.
- Bug fix with sorting of formatted lookup fields.
- Bug fix for array_map warning when a record is selected in a table with a non-numeric PK.
AppGini 5.61, April 17, 2017
- Improved detail view loading performance by preloading lookup values.
- Bug fixed: Redirects don't work correctly if a non-standard port is used.
- Configurable detail view template in DataList so that it can be set in hooks.
- Fixed sorting behavior of lookup fields containing numeric data in table view.
- Fixed a bug with anonymous users unable to directly access tables that they are allowed to view.
- Fixed bug with error reporting behavior of unique fields.
AppGini 5.60, Dec 25, 2016
- New table view templates and layout options.
- Added admin tools menu in detail view to make it easier for the admin to view/edit ownership info..
- New CSV import interface (allows advanced field mappings and a much smoother live preview experience)..
- 'Add new' button in detail view to allow adding records directly after insertion/update.
- Bootstrapped admin area (enhanced look and responsive mobile-friendly behavior).
- Option to close child modal after saving the record.
- Applied persistence functions to print-preview (AppGini apps now remember user's choice of expanding/collapsing child records in print-preview).
- UI improvements in pageViewMembers.php: highlighting super admin + disabling selection and actions for guest user.
- Added buttons for selecting another member/group in admin/pageMail.php.
- Added button for adding a new member to the members list page.
- Added helpful action buttons to pageEditGroup.php.
- Added a button for adding a new group in the list of groups page.
- More than 40 UI enhancements and bug fixes.
AppGini 5.51, Jun 28, 2016
- Added support for maintenance mode (where site is accessible only to admin).
- Better handling of unique value errors through Ajax-based validation.
- Ensuring PHP 7 compatibility.
- Keep "Action Button Scrolling" enabled by default for long forms.
- Bug and security fixes plus usability enhancements.
AppGini 5.50, Dec 15, 2015
- Added ability to organize tables into separate groups to make it easier for users to access applications with a large number of tables.
- Added optional printing of child records in the detail view.
- Added option to keep action buttons visible when scrolling down the detail view form.
- Added a per-table option to enable/disable 'Add new records' from homepage.
- Added new option for lookup fields to control the behavior of the link to parent record in detail view.
- Added language-admin.php to make it easier to translate the admin interface.
- Many bug fixes and usability enhancements.
AppGini 5.42, Aug 4, 2015
- Various bug fixes.
AppGini 5.41, Jun 16, 2015
- Ability to add records directly from the home page
- Various improvements for RTL (right to left) languages
- Hiding 'Sign up' link if no groups are set up to allow user registration.
- Various bug fixes and usability enhancements.
AppGini 5.40, May 19, 2015
- Support for displaying google maps in your application, just by providing a google map url.
- Support for displaying youtube videos in your application, just by providing a youtube url.
- 17 bootstrap themes to choose from, each with a large and a compact version. All 17 themes work in both left-to-right and right-to-left languages .
- New parent records can be added easily without leaving the child record form.
- Easier bookmarking of filtered tables.
- Better UI in filters page.
- Convenient highlighting of form errors before submitting.
- Enhanced appearance of download links.
- Enhanced application security.
- Improved compatibility with IE.
- A huge list of UI enhancements and bug fixes.
AppGini 5.31, Jan 12, 2015
- This is a stabilization release where many bugs have been fixed and many UI and performance enhancements introduced.
AppGini 5.30, June 2, 2014
- Time fields now display a time picker in the detail view.
- Time fields now support 12hr and 24hr time formats.
- Added "Rebuild fields" utility to the admin area to detect and easily fix database schema errors.
- Users can now select one or more records in the table view and perform batch actions on them.
- Added support for batch deleting of multiple records in the table view for users with delete permissions.
- Admin user can now change the owner of multiple records easily from the table view.
- Added batch_actions hook to create custom batch actions for records.
- Various bug fixes and usability enhancements.
AppGini 5.23, Feb 4, 2014
- Auto-fill lookups that have parent captions set as image fields can now display their parent images.
- Fixed long URL wrapping in table view (See the forum post).
- Fixed display issues with long fields in table view.
- Fixed issues with clearing lookup drop-downs.
- Fixed bugs with modal window in child tabs.
- In case of setup errors while creating tables, automatic redirection to finish page is disabled and errors are displayed.
- No zooming of empty image fields.
- Other minor cosmetic changes.
AppGini 5.22, Nov 30, 2013
- Fixed a bug with sorting of fields that occurred in some cases.
- Fixed a bug with custom queries for lookup fields not working correctly.
AppGini 5.21, Nov 10, 2013
- Added a compact (small fonts, less spaces) Bootstrap theme to the project themes.
- Ability to specify column alignment (left, right, center) in table view.
- Layout improvements in admin area.
- Various bug fixes in lookup drop-downs, user permissions, and several others.
AppGini 5.20, Oct 28, 2013
- AppGini applications are now mobile-friendly and responsive.
- Added 13 new themes, including a dedicated RTL theme for right-to-left languages.
- The new themes are all based on Twitter Bootstrap 3, so you can easily add more themes as thousands are available online.
- New searchable drop-downs for lookup fields and option list fields.
- Multiple-choice option lists are much easier to use now.
- Major usability and UI improvements.
- Various bug fixes.
AppGini 5.12, Aug 13, 2013
- Removed unnecessary redirections for non-logged users.
- Fixed a bug with characters above ASCII 128 not displaying correctly when using Unicode encoding.
- Fixed a bug with sorting resetting filters if detail view is in the same page as table view.
- Bug fix where lookup menus didn't display in detail view if user had insert permission but no update permission.
- Fixed a stack overflow error when generating an application with complicated hierarchical lookup fields.
- Fixed a bug with header redirection not working in some special cases.
AppGini 5.10, Jun 10, 2013
- Enhanced and simplified setup page for generated applications.
- Enhanced and simplified password reset process.
- One-step application generation by pressing Ctrl key while clicking the "Generate" icon.
- Added support for
--generate
command line option to generate AppGini applications without dealing with the GUI. This way, you can use batch files and integration tools to automate creating your application. - Enhanced copying/pasting of tables and fields to work across multiple instances of AppGini.
- Applied pagination alignment to the top buttons to avoid horizontal scrolling to see those buttons on wide tables.
- Added an option to remove "Powered by AppGini" footer (Pro version only).
- Implemented displaying grand parent lookup values (lookups that point to caption fields that are in turn lookups now display the exact content of the parent lookups).
- "Go to page" drop down in the table view now displays a partial list of pages for better performance with huge tables.
- Lookups are now loaded using ajax to enhance performance for huge lookup lists.
- Optimized the ownership assignment process (in the admin area) to take much less time when dealing with huge tables.
- Added a link to download language files beside the encoding drop-down in AppGini.
- Various bug fixes and usability enhancements.
AppGini 5.00, Dec 23, 2012
- Support for parent/children views to access all children of a record from one page.
- Easier and faster design of your database: Ability to copy and paste fields and tables within a project and between 2 projects.
- Better application interface: Enhanced sign-in and and sign-up forms.
- Selection of table icons from an icons gallery.
- Choice between 2 homepage themes (classic and metro).
- More database search power: users can now search for records owned by them or their group.
- Control of the alignment of the pagination section below the table view (full-width, left- or right-aligned).
- Major UI enhancements in both AppGini and the generated applications.
- If user applies a filter to one or more fields, an indicator icon is displayed in the field title.
- Many bug fixes, usability enhancements, and elimination of most cross-browser inconsistencies.
- See the AppGini 5.0 release announcement here.
AppGini 4.81, Aug 8, 2012
- Bug fix for the MySQL database import utility.
- Bug fix in some of the generated files to work with PHP installations that don't support short_open_tag
AppGini 4.80, Aug 6, 2012
- Multi-level cascading drop-downs (for example, selecting a model from the car models drop down filters the car make drop down).
- New metro-style home page.
- Redesigned login page (please make sure to apply a theme to your old projects to take advantage of the new design).
- Member profile page (where users can view and edit their profile, change their password, and view their permissions).
- Easier page navigation in all views.
- Sorting of tables in AppGini.
- Filters pages redesigned.
- Easier code generation procedure (new folders are automatically created, smarter output folder guesses).
- New member notification email contains all member info.
- Various usability enhancements and bug fixes.
AppGini 4.70, Jan 27, 2012
- Added support for time zones.
- Added "maxlength" parameter to form inputs to limit input size based on max field length.
- Easier quick search by just clicking <Enter> rather than having to click the search button.
- Added option to highlight a field/table in AppGini to easily refer to it later.
- Updated Prototype and Scriptaculous javascript libraries to the latest release.
- Various usability enhancements and bug fixes.
AppGini 4.61, Oct 30, 2010
- This is a maintenance release that includes various bug fixes.
AppGini 4.60, Oct 1, 2010
- Better themes management: A new theme editor in AppGini makes it much easier to modify the application appearance. Also, we added some new better looking themes.
- Usability enhancements:
- Users can now resize text areas by merely dragging their bottom border.
- Added an automatic description for upload fields showing the allowed upload size and accepted file types.
- Long drop-down combos are now automatically replaced by auto-complete text fields to make it easier for users to search them by simply typing part of an item.
- Easier and more powerful customizations:
- You can now customize the query for lookup fields to control the contents of the drop down.
- A new hook file to add customized javascript code to control the behavior of forms. Please refer to the hooks documentation for more details.
- You can now easily customize the filters page for each table, group, and even for each user. Please refer to the hooks documentation for more details.
- Performance enhancements: drop down fields that contain a large number of items caused pages to slow down. This has now been fixed by automatically using auto-complete text fields if the number of items exceeds a certain limit.
- Better support for non-Latin characters, and for right-to-left page layouts.
- Added phone, 12-hour time, and Canadian postal code formatting to the available data formats.
- Various bug fixes, security, and usability enhancements.
AppGini 4.53, May 7, 2010
- This is a maintenance release that includes various bug fixes.
AppGini 4.52, Apr 12, 2010
- This is a maintenance release that includes various bug fixes.
AppGini 4.51, Mar 8, 2010
- More printing options: Added option to partially select records for printing them as a list (table view) or as details (detail view).
- Added multiple selection option fields (users can select more than one value from a list box).
- Create your database fields faster than ever before: When you create a new field and set its name to image, photo, comments, notes, date or id, AppGini smartly guesses the field properties so you don't have to waste time on this.
- Increased performance and responsiveness of AppGini, various bug fixes and usability enhancements.
AppGini 4.50, Feb 5, 2010
- Support for automatic creation of thumbnails for uploaded images.
- Option to zoom thumbnails when clicked using lightbox2.
- Added a javascript date picker for date fields for easy selection of dates.
- Easier management of large projects: you can now type a part of the name of any field or table in AppGini to search for it quickly.
- Enhanced security of data: You can now set lookup fields to inherit permissions of parent tables so that users can only see the data they have access to.
- More convenient user login experience: Added Remember me option during login to avoid typing the username and password on every visit.
- More flexibility and power to you: Added hook functions for easier customization of the generated application for adding new functionality. Check the easy-to-follow examples in the online help.
- Usability enhancements and bug fixes.
AppGini 4.40, June 23, 2009
- Support for rich HTML text area fields.
- Implemented a printer-friendly detail view option.
- Added option to display lookup field data as radio buttons (in addition to the drop-down menu option).
- Added support for automatic values (values inserted automatically into read-only fields when inserting or updating records).
- Enhanced the CSV data import feature.
- Added table description property.
- Added the option to open the last project from the start screen of AppGini for faster access.
- For easier member signup, if only one group is available for sign up, it's now set as default in the registration form.
- Various usability enhancements.
AppGini 4.30, Mar 3, 2009
- Better support for international encodings and right-to-left languages.
- The File menu now contains a list of the recently opened projects for quick access to your work.
- AppGini can now add a table to your project using a CSV file.
- The Data Format tab enables you to specify a special formatting for the selected field.
- You can add description to each field in your project. This can be used as a help hint for your application users.
- In the admin area of the generated applications, you can now populate any table with data imported from a CSV file.
- Added support for enforcing a pre-selected parent value for a read-only lookup field.
- Several usability enhancements, and better accessibility support.
AppGini 4.20, Sep 2, 2008
- Added configurable option to notify admin by email when a new member signs up.
- Implemented auto selection of appropriate value from lookup drop-down when child table is accessed from parent table.
- Added option to display sum of column for numeric fields.
- Support for updates and inserts using GET requests (to simplify integrating AppGini code with third-party scripts).
- Several usability enhancements.
- Reported bugs fixed.
AppGini 4.10, July 7, 2008
- Members can now change or reset their passwords.
- Auto-fill fields (fields that are automatically populated with data from another table -- see a video demo here).
- Admin user can now sign in from the members area or the admin area, and an admin group is now automatically created that has full access to all tables.
- Ability to define custom "quick lists" to be used for "option list" fields.
- Support for friendly date formats in filters.
- Changes to database structure after file generation are now applied automatically without having to run the setup script.
- When performing a quick search, search terms are highlighted in the search results.
- Various usability enhancements in both AppGini and generated applications.
- Reported bugs fixed.
AppGini 4.00, March 17, 2008
- Implemented membership sign-in system with group-based table permissions.
- New re-organized and enhanced user interface.
- MySQL2AppGini is now packaged as part of AppGini rather than a separate tool.
- Table and field captions now support international character sets.
- When using filters, "like" and "not like" now automatically translate to "contains" and "contains not" if no wildcards (% or _) are used.
- Default data type for new fields changed to varchar(50) rather than integer.
- Saving data to CSV files is now enabled in the freeware version.
- Added full support for SSL connections.
- Added option to sort generated tables list alphabetically.
- Reported bugs fixed.
AppGini 3.40, August 18, 2007
- Easier lookup fields, with the ability to combine 2 parent fields in one drop down.
- Support for foreign keys that point to the same table.
- Ability to specify output pages encoding.
- Ability to search for "empty" and "not empty" fields in filters.
- Enhanced project styles, with a new 3D look.
- Fixed a bug where empty lookup field values caused records to be hidden.
- Fixed a bug where clicking "Cancel" or "Deselect" in a separate detail view page caused resetting of filters.
- Other reported bugs fixed.
AppGini 3.30, February 14, 2007
- Ability to specify a default sorting field and direction for each table.
- Support for check-boxes.
- Date of today can be easily entered to date fields with one click.
- Files in the overwrite window during code generation now sorted by file name for easier handling.
- Alternating row colors in table view.
- Fixed a bug where quick search with no results causes page numbering errors, plus other bug fixes.
AppGini 3.20, January 7, 2007
- Ability to specify which files to overwrite and which to skip by checkboxes in a single window before code generation.
- Option to easily access related children records from parent tables.
- Support for web and email links.
- Option to hide detail view till a field is selected, and to hide table view when detail view is selected.
- Enhanced and more organized field properties page
- Reported bugs fixed
AppGini 3.10, April 10, 2006
- Ability to automatically apply field data type changes to your database
- Ability to add new fields to your tables automatically and without any data loss
- Better compatibility with PHP5 without changing php.ini settings
- Ability to create radio buttons and list boxes
- Enhanced and more organized field properties page
- Ability to control whether fields are displayed as textarea or text boxes
- Added a link to index page in the table navigation dropdown
- Reported bugs fixed
AppGini 3.01, July 2, 2005
- New XML-based file format (*.AXP) for easier editing and advanced control of code generation
- Support for file uploads, and control on accepted file types.
- Added an option to display links to uploaded files so that users can download them.
- Next/Previous links in table view, and ability to navigate to any page.
- Tamplate-based table view and detail view for easy customization of appearance.
- Eastern Asian versions of Windows now fully supported.
- Added the option to display the first n characters of a long field in the table view.
- Easier method of ordering fields in AppGini.
- Hyphens in database names now acceptable.
- Each row in the table view is highlighted when the mouse passes over it for better readability.
- Foreign and primary keys are more recognizable in AppGini now as they have different icons.
- Added a tool to automatically convert old project file format (*.AGP) to the new XML format (*.AXP).
- Added an option to delete uploaded files from server if the record is deleted.
- Added an option to not change the name of the uploaded files.
- Reported bugs fixed.
No change log is available currently for versions of AppGini earlier than 3.01.