3.9.4
front-end
accessories
- updated the user options route used for tagging
charts
- added a short number option to the
Chart.vuecomponent
commercial
- updated the bundled products index sample page
emag
- added a products index sample page
financials
- updated the index pages' filters to filter on
dateinstead ofdue date
inventory
- updated the bundled products index sample page
- switched from using the
RoAddressescomponent to using theAddressescomponent - updated the Addresses related components: cleanup and refactor due to new structure & fields
modal
- test if we are ready to release the new refactored modal
products
- added a product picture column for the index table
- made the product image clickable, which opens the image in a new tab
quick-view
- updated the default size (width)
roles
- fixed the configure and save buttons in role edit form
search-mode
- added Algolia support
tables
- fixes custom boolean internal table filters
ui
- fixed duplicate requests being made on language change
- removed deprecated media resources, which have been moved to the back-end
corepackage (and need to be published) - added custom modal for offering the choice of deleting a user simultaneously with its person
back-end
addresses
- the addresses package was completely refactored. It now supports regions and localities,
and some functionality was integrated from the ro-addresses package which will be deprecated. The update includes:- the addition of the region & locality model, relationships, routes, etc
- the
Countrymodel now has relationships with the above models - the update of the table and structure migrations
- the addition of an address select route/controller/resource
- the removal redundant country relationship load on the select options flow
- the update & enhancement of the address form and template
- the update of the address factory & seeders
- the addition of an unique index to regions
- the inclusion of a Region seeder for Romanian counties and US states
- the inclusion of a Locality seeder for Romanian localities
- the AddressFetch validator now uses the
TransformMorphMaptrait
avatars
- removed the
ensureFolderExistsmethod call - updated the
Filestest folder references as the config keyenso.files.paths.testing
has been updated toenso.files.testingFolder - the
Avatarmodel now uses theCascadesMorphMaptrait morphMapis now used for theAvatarmodel
calendar
- renamed notification template and updated button color
categories
- added a
hasChildrenscope and anisParenthelper method on theCategorymodel - updated request validator due to
MapsRequestKeysrefactor
core
- the
php artisan enso:storage:resetalso handles the creation of missing storage folders - the image resources previously present in the
@enso-ui/uipackage have been moved to the this package - renamed the resource publishing tag from
core-imagestocore-assets - added a FilesIndex upgrade service that attempts to set and unique index
on thefilestable to avoid any duplicates. If there are duplicated records present,
the upgrade will list the duplicates and skip adding the index - added upgrades for
Addresses,Documents,Files,Discussions,Comments, morphMap, which replaces class names with their corresponding short morph map keys - fixed user notifications which sometimes were not found
- added the ability to delete the attached person when deleting a user
- refreshed the email theme
- added an
Addressesmigrator due to the addresses' package refactor - removed the avatar label in the users table
- removed avatar label in users table
companies
- refactored to use
mapMorphs: theCompanymodel now uses theCascadesMorphMaptrait
comments
- added controller for customizing taggable users
- the
Commentmodel now uses theCascadesMorphMaptrait
countries
- added the
Relationstrait on the model, so it can support dynamic relationships
data-export
- refactored to use
mapMorphs: theDataExportmodel now uses theCascadesMorphMaptrait
data-import
- updated the
filestest folder references - refactored to use
mapMorphs - fixed rejected import deletion bug causing rejected files to not be deleted
- fixed rejected import file name bug causing the file to have the extension added twice
- added a cleanup upgrade for left-over rejected models & files in core
documents
- updated the
filestest folder references - added the
$foldervariable to theDocumentmodel - the request validator now uses the
TransformMorphMaptrait - the
Documentmodel now uses theCascadesMorphMaptrait morphMapis now used for theDocumentmodel
discussions
- the request validator now implements the
TransformsMorphMapinterface - refactored to use
mapMorphs: theDiscussionmodel now uses theCascadesMorphMaptrait
files
- refactored the paths config: now attachable models should have a
$folderproperty or afolder()method - updated the
Filestest folder references as the config keyenso.files.paths.testing
has been updated toenso.files.testingFolder - added handling logic for tests within the
HasFilefolder()method - refactored to use
mapMorphs: theUploadmodel now uses theCascadesMorphMaptrait
filters
- adds Algolia support in search mode
forms
- when building the form, the enums are now resolved from the service container
- fixed the toggling of tab visibility
- makes section's columns size customizable when building a form via the
columns(string $field, int $value)method,
where the$fieldparameter is used to identify the section to be modified
helpers
- added a searchable trait for Scout that makes sure that reindexing is performed only when indexed attributes are changed,
avoiding unnecessary Algolia operations - added the Sleep service class that can be used to sleep during code execution
!! - moved the
VatRatesenum from thefinancialspackage - improves
MapsRequestKeystrait - added
morphMapKey()method to theCascadesMorphMaptrait which determines the model's morph map key - added the
TransformMorphMaptrait
how-to
- refactored to use
mapMorphs: theVideomodel now uses theCascadesMorphMaptrait
localisation
- updated language resources
- fixed some bugs found when adding keys
- renamed
localisation-lang-filestag intoenso-localisation.
Under this tag we're publishing only Laravel's lang files - removed unused localisation files from the
appdirectory - local translations are now saved to the local
appdirectory when adding or updating - core translations are now saved to the enso localisation package directory when adding or updating
- local app localisation resource files are now merged with the enso package's localisation resource files
- added
SanitizeAppKeysclass in order to remove from app localisations the keys found also in enso localisations - added some missing translations
menus
- add the
isParent&isNotParentscopes on the Menu model
people
- added internal table filter for filtering people with/without users
- refactored to use
mapMorphs: addedCascadesMorphMapon thePersonmodel - optimizes the
company()helper query - person now touches user on each edit
products
- added
nameandpart_numberto the options builder$queryAttributesvariable - the
Picturemodel now implementsAuthorizesFileAccessand access is allowed by default - added validation to disallow the selection of a parent category in the product form
- added product pictures to the products table
- updated publish tag & paths from
'products-resources', 'enso-resources'to'products-assets', 'enso-assets' - updated the default image
- removed package's
VatRatesenum and switched to using theVatRatesfrom theHelperspackage - updates package product factory re: measurement units, causing the creation of a new measurement unit
if one was not provided to the factory - shortened the picture label in table template
- the picture now touches the product
ro-addresses (deprecated)
- the package is now deprecated, will not be maintained and should no longer be used
select
- added Algolia support, which is disabled by default
services
- updated
VatRatesimport post enum refactor - fixed service factory re: measurement units bug, causing the creation of a new measurement unit when one was
not provided - the vat percent is now a selectable value within the form
- fixed description field width (full column)
tables
- on big tables, totals are shown only when
forceInfoistrue - fixes raw total edge case when using bindings in the query select statement
- added Algolia support, which is disabled by default
- fixed internal bug in custom filters without server side options
upgrade
- small refactor & fixes; updated structure migration reported message
Upgrade steps
To upgrade:
- run
composer updatein the project's root - run
yarn,yarn upgrade && yarnto ensure you have the latest versions and patches are applied. If necessary, update your patches - update the Enso version to 3.9.4 in
config/enso/config.php - if using the
MapsRequestKeystrait, within the respective request validators, update the controllers to use$request->validated()instead of$request->mapped() - for all the enso models that use the
Addressable,Commentable,Discussable,Documentabletraits, we are now usingRelation::morphMap(...)
and short keys instead of default namespaces as this solves issues with relationships breaking when extending models which usemorphrelationships.
For consistency, you should do the same to your local models (you may look at the Company model & companies AppServiceProvider classes as example) - the
filestest folder config key has been updated fromenso.files.paths.testingtoenso.files.testingFolder. If you are customizing the value, make sure to update the config file structure. Also make sure to update the local file after the one in the files package. - if using the
productspackage, note that the validator'svalidateUnicitymethod has been renamed tovalidateUniqueness- update your local validator if required - for this release, we've switched from using predis to using phpredis. Ensure that:
- the phpredis extension is installed on your (live) machines
- the
redis.clientconfiguration option is set tophpredisin yourconfig/database.php - if present in your env, the
REDIS_CLIENTkey value isphpredis - remove the
predispackage from yourcomposer.json
- we've consolidated some assets (picture) locations and simplified the build process. You should:
- run the
php artisan vendor:publish --tag=core-assetscommand - cleanup the multiple
CopyPlugininstances and keep just the command that copies assets from../resources/imagestoimages. Use enso'svue.config.jsfile as an example
- run the
- the
VatRatesenum was removed from thefinancials&productspackages and put in thehelperspackage. If using it locally, update the namespace toLaravelEnso\Helpers\App\Enums\VatRates - the localisation package and flow has been enhanced. To update for the new flow do the following:
- remove the
ensoresource directory from local language resources. From now on, when merging translations the core translations will be taken directly from the package resources - run
php artisan vendor:publish --force --tag=enso-localisation - remove from your local
composer.jsonfile"php artisan vendor:publish --tag=localisation-lang-files"from under thepost-update-cmdsection
- remove the
- since the email theme assets were updated, if you want to use the refreshed theme, you should publish the assets with
php artisan vendor:publish --force --tag=enso-email - the addresses package has been refactored and updated. You should:
- publish the package seeders with
php artisan vendor:publish --force --tag=addresses-seeds - publish the
AddressFactory.phpfile withphp artisan vendor:publish --force --tag=addresses-factory - if present, delete the local
RoAddressfactory from the factories folder - if using the
addressespackage WITHOUT thero-addressesextension, make sure that thephp artisan enso:upgradecommand is run AFTERphp artisan migrate - if using the
addressespackage WITH thero-addressesextension, make sure that thephp artisan enso:upgradecommand is run BEFOREphp artisan migrate - update the local/published
addressesconfig file using the package version as reference - since there are some new addresses routes added, please ensure that the roles/permissions are correctly configured for your projects and then save the roles configurations
- publish the package seeders with
- run
php artisan enso:upgradeconsidering the mentions above (in the addresses section)