Releases: Mistralys/application-framework
Releases · Mistralys/application-framework
Admin Screen event handling (Deprecation)
Included in this release:
- Admin Screens: Added events and listener methods for screen initialization and rendering.
- Admin Screens: Added possibility to replace a screen's content via events.
- Admin Screens: Added the possibility to disable the action handling via events.
- Testing: Added some test screens for the screen event handling.
Deprecations
Application_Admin_ScreenInterface
has been replaced byAdminScreenInterface
.
Developer changelog handling
Included in this release:
- Driver: Added missing implementation for the
areaExists()
. - Driver: Made the use of the
dev-changelog.md
file official. - Driver: Added the helper class
DevChangelog
to parse the developer changelog file. - Driver: The
version
file can now optionally be automatically generated.
Update guide
To make use of the new version file generation mechanism, use the following code
for the driver's getExtendedVersion()
method:
public function getExtendedVersion() : string
{
return AppFactory::createDevChangelog()->getCurrentVersion()->getTagVersion();
}
DataGrid fix
Included in this release:
- DataGrid: Fixed a PHP error when using a string value that corresponds to a PHP function (#72)
- DataGrid: Callback cell values are now filtered like all other values.
DataGrid Enhancements
Included in this release:
- Clientside: Modernized the renderable classes, converted to ES6.
- Clientside: Converted
ApplicationException
to ES6. - DataGrid: Modernized the JS class, converted to ES6.
- DataGrid: Added the grid configuration UI.
- DataGrid: Fixed the column settings storage not being applied.
- DataGrid: Columns can now be sorted and hidden on a per-user basis.
- DataGrid: Converted the main JS classes to ES6 classes.
- DataGrid: It is now possible to reset individual grid settings.
- DataGrid: Cell values can now use callables to generate the value on demand.
- Examples: Added a detailed DataGrid column controls example.
- Users: Added the
$prefix
parameter to theresetSettings()
method to limit the reset.
Deprecations
- JS:
Application_BaseRenderable
=>UI_Renderable_Base
- JS:
Application_RenderableHTML
=>UI_Renderable_HTML
Minor fixes
Included in this release:
- API: Fixed wrongly documented return value of
getParam()
. - Locales: Added some return type docs to avoid confusion with locale codes.
Auth redirect loop fix
Included in this release:
- Session: Fixed the infinite redirect loop in simulated session mode.
Message log screen fix
Included in this release:
- MessageLog: Fixed missing request variables in the message log grid and filters.
- MessageLog: Added the possibility to filter by user.
- MessageLog: Added log message generation for testing for developers.
- Users: Added
getUserInstance()
in the user collection record class.
Deprecations:
Application_Admin_Area_Mode_Messagelog
=>BaseMessageLogScreen
Disposable fix
Included in this release:
- Disposables: Fixed
dispose()
not checking if currently in the process of disposing. - Core: The
VERSION
file is now automatically generated and updated. - Core: Added the
mistralys/changelog-parser
Composer dependency.
Revisionable update (Breaking-S)
Included in this release:
- Revisionables: Added
getRevisionAuthorXXX()
methods for more consistent naming. - Revisionables: Added some missing methods in the revisionable interface.
- Revisionables: Storage now automatically disposes of keys that contain revision-dependent instances.
- Revisionables: Tweaked the abstract disposable method setup to handle common internal disposal.
- Revisionables: Added private key handling in the revision storage with
setPrivateKey()
. - Revisionables: Added disposed checks in all relevant public methods.
- Revisionables: Added
setStateXXX()
methods to set the state within a transaction. - Revisionables: Fixed the changelog queue not being cleared after a transaction.
- Disposables:
_dispose()
is now called after the child revisionables have been disposed. - Disposables:
getIdentification()
now handles the disposed state. - Disposables: Added the "disposing" state with
isDisposing()
. - Logging: The
APP_LOGGING
configuration is not used anymore. - Logging: Added
setLoggingEnabled()
to change this at runtime. - Logging: Added
setMemoryStorageEnabled()
to turn log message storage in memory on or off. - Logging: The memory storage option allows limiting memory usage in long-running tasks.
- Logging: Added
reset()
to reset to defaults. - UI: Added
isActive()
to regular buttons. - UI: Added static
buttonDropdown()
method to create dropdown buttons. - UI: Added selecting the active button to the button groups.
- UI: Added the interface
ButtonSizesInterface
and matching trait. - UI: Added the interface
ActivatableInterface
and matching trait. - UI: Disabled the Keep-Alive AJAX calls in the logout and request log screens.
- UI:
UI::tooltip()
now accepts an existingTooltipInfo
instance. - UI: Pretty booleans now support tooltips.
- UI: Added the interface
MissingRecordInterface
. - App Interface: Added button group references.
- Changelogs: Added the
onQueueCommitted()
event handling method. - RequestLog: Now ensuring that the session uses a different storage from the main app.
- Sessions: Trimmed the authentication process, fixed right presets not being applied (#67).
- Sessions: Removed simulating users, too error-prone and risky.
- Sessions: Added
Application::isUserReady()
asisSessionReady()
does not include authentication. - Users: Added new role preset handling via autoloader classes in the
{DriverName}/User/Role
folder. - Devel Mode: Fixed right presets not being applied.
- Devel Mode: Enabling devel mode can only be turned off when the selected preset has devel rights.
- Devel Mode: Storing the enabled flag in the session instead of a user setting.
- Devel Mode: Removed possibility to simulate users, as the main use case is simulating roles.
- Validatable: Added validation code support to the
Validatable
trait. - SystemMailer: Added classes to create and send system emails to admins (#69).
- SystemMailer: Setting the system email recipients is now required in the configuration.
- DeployCallback: Now sending an email on success or failure (#68)
- Dependencies: Updated AppUtils Core to v1.2.0.
Breaking changes
- The environment configuration must now implement
getSystemEmailRecipients()
. - Revisionables must rename their
_dispose()
method to_disposeRevisionable()
. - Revisionables must rename their
getChildDisposable()
method to_getChildDisposable()
. - Revision-dependent classes must now implement the
getIdentification()
method. - Existing overrides of the native session method
getPrefix()
must be renamed to_getPrefix()
, and set toprotected
. - The updated user role handling requires existing role arrays to be moved to separate classes.
- UI: Made the
getRecordMissingURL()
method public.
Other changes
- Disposables should not implement
getLogIdentifier()
anymore. - Disposables should replace
getIdentification()
with the protected_getIdentification()
method.
Deprecations
StandardStateSetup
: deprecated themakeXXX()
methods in favor of thesetupXXX()
methods.RevisionableStatelessInterface::getOwnerID()
=>getRevisionAuthorID()
RevisionableStatelessInterface::getOwnerName()
=>getRevisionAuthorName()
Application_Exception_DisposableDisposed
=>DisposableDisposedException
Lookup items improvements
Included in this release:
- Item Lookup: Added getter methods in the result class.
- Item Lookup: Driver lookup items now support namespaces.
- Item Lookup: Added a base class for DBHelper collection items.
- Item Lookup: Added a base class for Revisionable collection items.
- Revisionables: Added a missing NULL check when no current revision is found.
Deprecations
- Deprecated the
Application_LookupItems_Item
class.