Releases: laravel-enso/enso
v4.6.0
4.6.0
This release includes improvements, bug fixes, and new features.
Front-end
io
- used new websocket getter
money
- improved focus & blur handling, fixed input event payload
- added the ability to have null value
notifications
- used new websocket getter
select
- added debounce for
addTag
tables
- added support for numbers
- added formatted filtered / count
- moved pagination logic to the BE
- added support for selection controls
- fixed pagination when full records info is false
tasks
- added permissions to register
- used new websocket getter
ui
- announce a new release on every chunk load failed error
- added permissions to register ref enso-ui/tasks#6
- fixed auth routes for guests
- removed predefined websocket channels
users
- fixed avatar display when no tooltip is needed
Back-end
addresses
- added new
addresses.created_by
column; added upgrade - added PHPMD config
- added factories for
Township
,Locality
andRegion
avatars
- removed
HasAvatar
trait in favor of dynamic method & observer
cli
- fixed routes stub
- fixed UI route component imports
- added common default for the route for the menu config
companies
- added policy for edit page
core
- removed
HasAvatar
trait - removed the
laravel-enso/teams
dependency as the package can be added if required - binding
Faker\Generator
in production to Dummy laravel-enso/data-export#10 - added user profile policy
- fixed import in login controller
- added namespace to tests
data-export
- fixed notification path
- added sync excel attaching ability
- updated permission description in structure
data-import
- updated ExcelSeeder
- fixes serializing with postgres
documentation
- updated table docs: references to money vs number
- other table documentation small updates
files
- fixed file path upgrade for projects that don't use data-import
filters
- resolves comparison operators enum from App's container for improved flexibility; ref laravel-enso/filters#4
helpers
- added dummy
localisation
- updated out of stock
ro
translation
products
- updated test namespace
- updated url for pictures (route name remains the same)
roles
- rolls back ordering removal for the
sync
command
tables
- improved support for numbers; moved pagination on BE
- fixed test
- added 'selection' ability for global controls
- selection works only on selectable tables, and will send to the BE a selection payload with the selected rows
- buttons that work with selection will be rendered only when a selection is made
- fixed incorrect pages count, fixed incorrect middle pages
tasks
- added
taskable
contract & factory
private packages
webshop
- added about-us page
- added controller import
- added limited stock limit upgrade
- added favorites database persistent ref laravel-enso/webshop#33
- removed restricted/selective mfr load
emag
- fixed file save
- added authentication in job
- added fetch orders job
- added
FetchOrders
command to the service provider
Upgrade steps
To upgrade:
app/Http/Controllers/Auth
was removed from enso - if not customized locally, you may remove it as well- websocket getter changed, and there is a channel getter instead of specific channels getter now; if you are using websocket locally, you need to change the getter(like this)
- the
teams
package is no longer included with enso by default. If you require it, add it back:- add
"laravel-enso/teams": "^3.0",
tocomposer.json
- add
"enso-ui/teams": "^2.0",
toclient/package.json
- add
- remove
Broadcast::routes();
fromapp/Providers/BroadcastServiceProvider.php
(like this) - update the Enso version to
4.6.0
inconfig/enso/config.php
- run
composer update
in the project's root - run
yarn
,yarn upgrade && yarn
to ensure you have the latest versions and patches are applied. If necessary, update your patches php artisan enso:upgrade --before-migration
php artisan migrate
php artisan enso:upgrade
- as per every release, delete any local, deprecated upgrades
v4.5.0
4.5.0
The main reason for this release is the complete overhaul and refactor of the file management flow within Enso, including excel exports and imports. This also means potentially breaking changes, so please read through the entire changelog.
Front-end
auth
- added autocomplete suggestions on auth form
bulma
- added
Avatar.vue
to the list of bulma components
calendar
- added browser state persisted calendar filter
commercial
- added missing dependencies
data-import
- improved param handling
- improved param structure
- improved page layout
financials
- added missing dependencies
forms
- updated lodash import style
io
- improved progress layout, with more information available and the option to cancel the supported operations
- left room for custom operations
notifications
- fixed dependencies
- fixed duplicated navigation
select
- updated lodash import style
strings
- added
lcfirst
&ucfirst
helpers
tables
- implemented selectLabel for custom internal select filters
- updated lodash import style
- added a small padding between top controls
tasks
- added missing dependencies
- fixed duplicated navigation
- added avatars & updated the
allocated.options
route - updated
NavbarTasks.vue
registration order
typeahead
- updated lodash import style
ui
- the home screen for the
enter the application
button is in focus by default, so you can now access the application using the keyboard - fixed NavbarItem vue component name
- added missing
favico.js
dependency - attempts to fix
chunkLoadError
on new releases - added
newRelease
state prop in global state - resolved dependency cycle for router -> store
- added initial login redirect for guests
users
- now avoids navigation duplicated error when visiting the profile page
- adds an
index.js
file for easier components import - cleanup of dead styling
Back-end
action-logger
- improved response time by persisting the ActionLog after response
- fixed extra query by disabling guarded
activity-log
- fixed test name
- minor update to the
EnumServiceProvider
addresses
- added missing country relation in
Region
avatars
- added functionality to be able to add an externally hosted avatar
- improved generation flow and now the impersonator can change the user's avatar
- updated the package due to
files
refactor
calendar
- the birthdays calendar is now visible depending on user roles
- added publishable calendar configuration for the roles
- updated tests
- calendar reminders are now scheduled from the package service provider and don't need to be added anymore to the local service provider
- renamed
readyToNotify
scope toshouldSend
cache-chain (new)
- package allows for the definition of a chain of caching layers and the retrieval of elements from within the cache, by going through the cache layers in the defined order
comments
- small refactor
- dropped ordered scope in favor of latest
cli
- now uses
newLine()
instead ofline()
- fixed table template path
- now also creates routes file
core
- added login route for auth users' state
- removed the
Uploads
trait usage - removes
Impersonate
trait usage - added job_batches migration
countries
- added active state:
is_active
column, scope, upgrade
control-panel
- added active property for apps
data-export
- major refactor in concert with the
files
update - uses the OptimalChunk functionality & removed the config
chunk
option - improved the notifications
- added per sheet progress
- allows for the cancellation of an in-progress export
- updated the notification text & added the ability to customize the default notification
- the
enso:data-export:purge
command is being scheduled from within the package - the
DataExport
model has anexpired
scope which takes into account the configuration value forenso.exports.retainFor
data-import
- complete re-write of the package
- improved before & after hook handling (now they actually run correctly in all cases)
- now uses Laravel's Job batch support
- rejected rows/chunks are now stored in the database vs files written on disk
- updated tests
- updated where impacted by
files
updates - updated Model / table structure
- added per sheet progress
- allows for the cancellation of an in-progress import
departments
- fixed import
documents
- updated the package due to
files
refactor
emails
- updated package to work with the new
files
enums
- small code style refactor
excel
- improved service to handle inline/download;
- renamed
path
tofolder
insavesToDisk
contract temp
directory gets created if required & does not exist
files
- removed the
Uploads
trait and relation for user - added the
TEMPORARY_LINK_EXPIRATION
env variable - upgraded
FileServiceProvider
(breaking change) - updates the
Attachable
contract &HasFile
traits, which are now lighter. All the file operations will be made from now on using thefile
relation / model - renames
visible
scope tobrowsable
, andforUser
scope tofor
- removed the
File
model'spath
method - improved upload and attach flows
- improved tests and adds attach file test
- improved upgrade
helpers
- refactor: renamed internal property name
- changed
static
toself
for morphSiblings array in theCascadesMorphMap
trait - added the
OptimalChunk
service, extracted fromtables
how-to
- updated the package due to
files
refactor
impersonate
- improves logic
- made use of dynamic methods and removed the
Impersonates
trait
io
- improved code
- added support for better progress reporting
- registered
IoTypes
enum to app's state - improved
IOOperation
contract - removed
IOEvents
enum - removed
HasIOStatuses
enum - added missing person relationship load within the IOEvent class
menus
- reordered imports in test
products
- updated due to
files
upgrade
rememberable
- small cleanup
- removed layers
- now uses
cacheLifeTime
to limit the cached element lifespan
roles
- removed deprecated
order
attribute usage
searchable
- fixed code style
services
- fixed code style
tables
- updated the package due to
files
refactor - renamed path key to folder in
config.export
array - improved export blade
- added generic and enso specific export handling, including notifications
- moved
isEnso
getter in Config - added a
name
ability to Config - improved fetcher to memoize count
- added fetchMode for Data builder to avoid building actions for exports
- updated optimal chunk logic to return lower values
- made use of the new DataExport
- extracted optimal chunk in helpers
tasks
- added role check when choosing user to allocate to
- added config for roles
- added tests
track-who
- small refactor
upgrade
- updated unsuccessful upgrade error message
Upgrade steps
Although this release contains breaking changes, unless you've been getting deep into the framework, there are high chances these will not affect you.
A files upgrade is included and should run together with any other relevant upgrades, but before running it please read all the notes below.
To upgrade:
- run
composer update
- run
yarn
,yarn upgrade && yarn
to ensure you have the latest package versions and patches are applied. If necessary, update your patch files composer dump-autoload
php artisan enso:upgrade --beforeMigration
php artisan migrate
php artisan enso:upgrade
- as per every release, delete any local, old upgrades
- if using the
calendar
package, you should remove the scheduling of theenso:calendar:send-reminders
local command as it's being scheduled from within the package - if using the
data-export
package, you should remove the scheduling of theenso:data-export:purge
local command as it's being scheduled from within the package - for table exports, data-import & data-exports templates may have changed slightly, if using internationalized texts, you may need to update your translations
- phpunit configuration has become more strict so ensure you have the proper path defided for the following packages:
helpers
:
<directory suffix="Test.php">./vendor/laravel-enso/helpers/tests/unit</directory>
cnpvalidator
/cnp-validator
:
<directory suffix="Test.php">./vendor/laravel-enso/cnp-validator/tests/features</directory>
menu-manager
/menus
:
<directory suffix="Test.php">./vendor/laravel-enso/menus/tests/features</directory>
if running data imports programmatically
-
previously you had to create an
UploadedFile
instance, then pass it to theImport
service:$file = new UploadedFile(Storage::path($path), $filename, null, null, true); (new Import(self::Type, $file))->handle();
-
now, you should use the
DataImport->attach()
method and pass the storage relative path to the file and the filename:DataImport::factory()->make(['type' => self::Type])->attach($path, $filename);
if generating exports using the data-export
package
- the
ExportsExcel
contract has been updated to support generating multiple sheets:becomespublic function heading(): array
public function heading(string $sheet): array
becomespublic function query(): Builder
public function rows(string $sheet): array
becomespublic function attributes(): array
...
v4.4.0
4.4.0
The release further decouples ui packages and introduces automatic asset
discovery and registration, better files organization to help in the future with
adding a new CSS framework as well as various other improvements.
This also means breaking changes, so please read through the entire changelog.
Front-end
All packages which depend on the ui
package have had their dependency versions updated.
Also, the icons.js
files have been moved from the bulma
folder one level up, since icons are css framework agnostic.
The packages thus affected have been updated to their next respective major version.
auth (new)
- extracted assets (components, pages, routes, store) from the ui package
bookmarks (new)
- extracted assets (components) from the ui package
charts
- improved chart update
- fixed chart redraw on dataset changes
- improves yAxis callback handling
data-import
- fixed select params label
datepicker
- added new 'value-updated' event on component value change
- improved enso datepicker alt-format handling
filters
- updated eslint config
forms
- implemented field related methods that controls the field's meta.hidden attributes by showField and hideField
- reused these methods inside the showTab/hideTab methods, while avoiding forceUpdate after each meta.hidden change
- fields methods are independent of tabs/sections and target all form fields
- adds ability to handle nested fields withing the form template
- displays default field for a custom field if the slot is empty
io (new)
- extracted assets (components) from the ui package
localisation
- extracted assets (components) from the ui package
notifications (new)
- extracted assets (components, pages, routes) from the ui package
tasks (new)
- front-end for the new task management package
themes
- added flags background color
- made options having warning text more visible in vue-filter
tutorials
- extracted assets (components) from the ui package
tree-view
- small cleanup
user-groups (new)
- extracted assets (pages, routes) from the ui package
users (new)
- extracted assets (components, pages, routes) from the ui package
ui
- implemented automatic registration for package:
- routes
- icons
- custom registration logic
- store
- extracted various assets to existing or new packages as required
Back-end
activity-log
- fixed test name
avatars
- improved avatar generation during tests, to use a locally generated avatar vs doing
a gravatar fetch, which speeds up tests - fixed gravatar warning message
charts
- added
autoYMin()
helper - added support for gridlines
- switched
xAxisConfig
parameter order and made dataset optional; - added
disableAutoRadius()
in bubble; addeddatalabels
config setter - improved chart customization
- added method return types and typed parameters
cli
- the generated routes now use controller classes
departments
- removes leftover namespace
discussions
- refactored routes
- added xss sanitizer
enums
- added the option to have the key validated when getting a value (disabled by default)
- added the option to have localisation on/off per enum as opposed to all enums,
by adding a$localisation
variable with the desired value in your enum;
forms
- the Form service now uses the
when
trait so actions may be chained conditionally
io
- fixed the variable name within the
BroadcastServiceProvider
core
- data-import is no longer required and becomes optional
currencies
- fixed CurrencySeeder namespace
control-panel
- switched to using Laravel's Http instead of Guzzle
- refactored services & fixed invalid response edge case bug
helpers
- small refactor in
FactoryResolver
products
- added data-import missing dependency
select
- fixed bug for multiple select-filter where values were missing due to failed collection merging
tasks (new)
- task management package
tables
- refines export done notification
upgrade
- added pre-migration option for the upgrade command; upgrades that run pre-migration
are also visible in the status report - refactored the
MigratesStructure
contract - fixed missing
Priority
column in the status report
Upgrade steps
As this new release cleaned up the @enso-ui/ui
package and simplified icon and route
registration, a bit of cleanup is also required in the local project.
Also, a new php artisan enso:upgrade --before-migration
command is available that
is meant be used to run upgrade commands before the php artisan migrate
command,
which should help with complex upgrade scenarios.
To upgrade:
- within
client/.env
the following entry must be added:VUE_APP_PROFILE=bulma
The.env
file must also be available during the build stage,
so take that into account if using CI flows.
- the
@core
alias has been renamed to@ui
, so update all usages, including- local resources (pages, components)
- the
client/.eslintrc.js
file
- bump at least the following dependencies within
client\package.json
:"@enso-ui/activity-log": "^3.0
"@enso-ui/bulma": "^4.0",
"@enso-ui/calendar": "^3.0",
"@enso-ui/data-import": "^3.0",
"@enso-ui/how-to": "^3.0",
"@enso-ui/tasks": "^2.0",
"@enso-ui/tutorials": "^3.0",
"@enso-ui/ui": "^4.0",
"eslint-config-airbnb-base": "14.2.0",
Depending on your project requirement, the following dependencies might also need bumping:"@enso-ui/categories": "^2.0",
"@enso-ui/commercial": "^4.0",
"@enso-ui/discounts": "^3.0",
"@enso-ui/emag": "^4.0",
"@enso-ui/financials": "^3.0",
"@enso-ui/inventory": "^3.0",
"@enso-ui/measurement-units": "^3.0",
"@enso-ui/products": "^3.0",
"@enso-ui/services": "^3.0",
"@enso-ui/themes": "^2.0",
- remove any package icon imports from
client/src/js/app.js
, as they're no longer required - if using the dashboard page/component & menu, import the menu icon in
client/src/js/app.js
:import { library } from '@fortawesome/fontawesome-svg-core'; import { faTachometerAlt } from '@fortawesome/free-solid-svg-icons'; library.add(faTachometerAlt);
- unless using them in your local resources, you may remove package aliases from
client/vue.config.js
- the avatar (
Avatar.vue
) component has been moved from theui
package to theusers
package, if you're using it locally, update the imports. - within the
composer.json
scripts/post-update-cmd
section add the command:"php artisan enso:upgrade:status"
- the
data-import
package has been made optional, if you still require it, add it to:composer.json
:"laravel-enso/data-import": "^5.0",
package.json
:"@enso-ui/data-import": "^3.0",
- the
tasks
package has been made optional, if you added it & still require it, add it to:composer.json
:"laravel-enso/tasks": "^1.0",
package.json
:"@enso-ui/tasks": "^2.0",
- remove the following files as they're no longer required:
client/src/js/store.js
client/src/js/router.js
- look within this PR and update:
client/src/js/enso.js
client/src/js/localState.js
- run
composer update
- run
yarn
,yarn upgrade && yarn
to ensure you have the latest package versions and patches are applied. If necessary, update your patch files php artisan migrate
composer dump-autoload
php artisan enso:upgrade
- publish the updated localisation assets with
php artisan vendor:publish --tag=enso-localisation
and copy theru.json
file from the above commit into the localresources/lang/app
folder - in
Envoyer
and/or during your deployment process, add the new command:
php artisan enso:upgrade --before-migration
- update the Enso version to
4.4.0
inconfig/enso/config.php
- as per every release, delete the old upgrades
v4.3.0
4.3.0
This release aims to upgrade the Enso ecosystem to Laravel 8.
Front-end
select
- the api request payload was cleaned up and null values are no longer sent to the back-end
Back-end
Where necessary, packages have been updated to add Laravel 8 compatibility. Changes affect:
- factories
- seeders
- routes (now using imported controller classes instead of strings & namespaces)
- tests
- upgrades (older upgrades were deleted)
- dependencies versions
Where possible, we've kept packages backwards compatible.
logs
- fixes multiple log file types edge case bug
products
- removed default supplier limitation, where previously the default supplier had to have the lowest aquisition price
forms
- added support for the
searchMode
meta attribute, which can be used for select fields
Upgrade steps
First and foremost, be sure the to read the official Laravel 8 upgrade guide to understand all implications.
Since we liked the previous flow of publishing factories and customizing them, we've created a FactoryResolver
class that is used to emulate the old behavior. Basically, when using a factory to create a model, we first search in the local project factories folder and try to find a suitable factory class, otherwise we search for a factory in the factories folder in the laravel-enso package which contains the respective model.
The limitation for the factory naming convention is that if you have two models with the same name, with different namespaces, you'll need to customize the models' newFactory()
method and implement your own strategy.
Also, note that starting with this release we're no longer doing a yarn legacy build (only modern) so please take a look at package.json
& babel.config.js
and update if necessary.
To upgrade:
- within
composer.json
- update the versions for the following
require
packages
"fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0.1", "laravel-enso/core": "^6.0", "laravel/horizon": "^5.0", "laravel/telescope": "^4.0", "laravel/ui": "^3.0",
- update the versions for the following
require-dev
packages
"facade/ignition": "^2.3.6", "nunomaduro/collision": "^5.0", "phpunit/phpunit": "^9.3"
- add the following namespaces to the
autoload/psr-4
section:
"Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/"
- remove the
classmap
block and its contents from theautoload
section
- update the versions for the following
- update where necessary by following this merge request for a list of other updated files (local factories and seeders cleanup, config files and more).
- run
composer update
- run
yarn
,yarn upgrade && yarn
to ensure you have the latest package versions and patches are applied. If necessary, update your patch files php artisan migrate
composer dump-autoload
php artisan enso:upgrade
- update the Enso version to
4.3.0
inconfig/enso/config.php
Remember:
- you can delete any non customized local seeders and import them from their package
- update factories & seeders to
- use namespaces
- convert to classes
- rename the 'seeds' folder to 'seeders'
- update models with factories and add the new trait
HasFactory
- update tests to
- use the new factories
- refactor around the deprecated json methods
- update routes by importing controllers as per the new syntax
- after updating your routes by importing the controller classes, you need to remove the
protected $namespace = 'App\Http\Controllers';
line inRouteServiceProvider
v4.2.0
4.2.0
This release includes many improvements, bug fixes and a few new features.
Front-end
accessories
- removed unused dependency
data-import
- improved date params usage
- added the missing
vuex
dependency - added the functionality to cancel ongoing or stuck imports
date (new)
This package extracts a collection of date parsing and formatting helpers form enso-ui/ui.
datepicker
- fixed flatpickr timing error when setting the datepicker value to null
forms
- updated the
DateField
component to cascade the datepickerclear()
method - added encrypt type which enables the ability to hide the currently stored value for fields of this type
mixins
- added handling for Axios request cancellation in
errorHandler
packaging-units (new)
The package creates the structure and includes the functionality for working with product packaging units.
- facilitates defining packaging units for products
- designed for better product management
products
- added
enso-ui/packaging-units
as dependency
tables
- uses the new
enso-ui/date
- added the date-picker dependency
- added ability to conditionally render row actions
typeahead
- added search label property for the search button
- updated the
CoreTypeahead
search method to no longer mutate the query before emitting the search event - added focus
ui
- removed date helpers and added
enso-ui/date
dependency - translated hard-coded footer texts
PRIVATE REPOS:
commercial
- updated address select to include any params passed from the template
- updated sample products index page
- fixed translation keys
- updated index pages' filters
- added permission check for inventory quantity adjustment control
- fixed missing inject/import in
PositionsManager
- added permission check for inventory quantity adjustment control
- added missing inject/import
- fixes editing fulfilled orders when the computed value had the wrong value
emag
- updated sample products index page
- updated the reference
FormContent
component - updated the Order component
- reverted the Order component field label
- added new fetch picture button & functionality
financials
- switched interval filters from using
date
to usingdue date
inventory
- added the
ProductLocations
component - updated sample products index page
Back-end
addresses
- updated region abbreviation column to support up to three characters
- added new states to USA
- added abbreviation as query attribute to address options
- added json file for romanian townships
- refreshed json files structures and updated values
- added townships table
- removed
siruta
from localities - added
township_id
column to thelocalities
andpostcodes
tables - renamed
township
totownship_name
avatars
- no longer passes the user as method parameter when attaching a newly generated avatar
- integrated Gravatar
cli
- added type properties when generating structure migrations
- fixed error when defining models with namespace
cnp-validator
- Added Laravel 8 support
core
- fixed password resetting
- fixed logout for inactive user
- adds region upgrade
- adds DataImport Upgrade
- added xss-sanitizer
- removed the
Upgrade
command fromAppServiceProvider
.
Upgrades are now entirely handled by thelaravel-enso/upgrade
package - refactored namespace for existing upgrades to work with the new package
- purged old upgrade classes
data-import
- added
Authorizes
contract for restricting users' ability to perform specific imports - added
params
column todata_imports
table for storing request parameters - improved postgres support
- added the option to cancel an import (both ongoing and 'stuck')
enums
- fixes translation issue with applications where using a different default language (not english)
files
- updated
attach
method signature inHasFiles
trait - the user parameter defaults to null
forms
- added encrypt type which enables the ability to hide the currently stored value for fields of this type
helpers
- added
Searchable
trait exclusion when running tests - added
Encrypt
helper which aids in encrypting and decrypting values
localisation
- fixed json encoding
- removed leftover files
- added and updated many keys/translations
multitenancy
- refactored and upgraded for Enso v4
roles
- fixed default menu alias in query
- fixed role seeder
tables
- added default sort for all table queries
- added
notVisible
attribute for hiding specific columns by default - fixed export bug for nested columns when values don't exist
- fixed count when using group by
- fixed entries counting when exporting excel in non-Enso environments
- fixed when multiple filters exist for a field
- added new feature that supports conditional table row actions
therefore being able to further customize which actions apply to each row
upgrade
- implemented auto discovery of local and package upgrade classes when placed in app/Upgrades or src/Upgrades
- added the ability to set priorities for upgrades
- added new command:
enso:upgrade:status
which show the status of upgrades - added
MigratesPostDataMigration
interface toStructure
- added
Applicable
interface which should be used to define if an upgrade should run or not - added
ShouldRunManually
option - now uses an
Enum
for the upgrade status table header
PRIVATE REPOS:
commercial
- added invoice issued event
- updated the Sale & Sale return templates regarding the address select
- removes unused traits in
SaleInvoiceIssued
event - small refactor
- added missing client order ref in the Sale form template
- added
update
&delete
policies to all line types; improved line update time limit handling - added check when creating a sale payment to ensure the sale is not already linked to a payment
discounts
- small refactor in the
SaleDiscountFor
dynamic method
emag
- updated Sale form template regarding the address select
- removed customizations to the Sale form & table regarding
client_order_reference
as they're no longer required - updated the
EmagPayments
import - added new functionality to fetch a product picture for products with valid Emag offers
financials
- updated invoiceable entity info to use the billing address; client invoice now support dynamic relations
- added generic invoice imports to the package
- updated all package index tables to include record create/update timestamp & user information
- added a new
Online
payment type - implemented conditional action for client payment (receipt) printing
inventory
- added
available()
method on theStock
model - small refactor
- added a new
StockUpdated
event and a productemitStockUpdated
method
webshop
- improved internet explorer warning
- fixed company address deletion bug
- added toastr message when address cannot be deleted
- update orderConfirmation.blade.php
- added missing authorizations
- refactored translation method usage
- removed the address policy and its registration from the AuthServiceProvider
- improved form request validations
- added product
manufacturerName
dynamic method; updated templates - small changes & comments
- updates order payment_method keys to int; improved order validation => payment order
- extracted company & related scripts into partials from the cart form.blade.php blade
- updated stock computation
- cleaned up imports
- improved the settings form layout
- refactored
StockStatuses
constant fromOnDemand
toSupplierStock
- translated hardcoded text
- added VueJS component for product prices
- refactored code to fluent syntax in
AuthServiceProvider
- replace
span
withtemplate
inPrice.vue
- translated hard-coded texts; fixed a company update bug
- fixed error on product show page when a suggested product did not have a manufacturer set
- removed the js nullish coalescing operator as it is not 100% supported
- moves cookieConsent to
cookieConsent.blade.php
- added phone number as
required
to user registration - adds clear cart command
- fixes N+1 case for product
ManufacturerName
via usingRememberable
- removed the
authorizePayment
method - added featured brand & label for the webshop brands
- updates scss for brand / logo
- integrated new User Registration Confirmation notification
- extracted hardcoded shipping cost mentions and replaced with partial
- added Terms and Conditions to the order review page
- various small fixes
- improved redirects from the
Payment
&Pay
controllers to avoid infinite redirection edge cases - fixed the user password reset mechanism
- integrated the form field encryption where necessary
- added the new product webshop label feature
- added a new publish command, that publishes the compiled package assets
- small product card manufacturer logo render improvement
webshop-commercial
- moved email template notification table in the partials folder
- refactored the event listener to async and notification to sync
- updated 'pay later' orders storing process
- added missing providers
- added missing column to the migration file
- updated migration payment method column
- removed leftover provider inclusion
- fixed not translated / hard coded text in the blade templates
- updated model as per latest contract updates
- added shipping changes partial template
- updated contract implementations
- updated webshop dependency version
- corrected
PaymentIntent
callback due to flawed refactor - various other fixes and refactor
- added functionality to generate a Sale Payment when client makes a successful card payment...
v4.1.0
4.1.0
This release includes many improvements, bug fixes and also several new features.
Front-end
addresses
- added
postcode
address detection - added
locality_id
inAddressForm
- added
street
to postcode - added
isBilling
&isShipping
toAddressCard
; updatedAddresses
- reordered fields in address form according to template
- added
form
payload to theform-loaded
event
bulma
- exported form field group
- fixed export
categories
- added level
maxNestingLevel
property andlevel
method inCategoryTree.vue
- improved logic
- fixed dragging and nesting
- fixed max level validation error display
commercial (private)
- updated
FormContent
due tosupplier_number
tosupplier_order_reference
refactor
companies
- fixed company type in
Edit.vue
data-import
- added new
Params
,String
,Date
,CustomSelect
andBoolean
components - uses the new
Params
component inIndex.vue
- small clean up
datepicker
- fixed disabled property in
CoreDatepicker
dropdown
- added
show()
method
emag (private)
- updated due to
emag_number
toclient_order_reference
refactor
forms
- added
form-field-group
field forhas-addons
oris-grouped
scenarios
laravel-validation
- added
first()
method
people
- updated type in
Edit.vue
roles
- fixed route in
Edit.vue
select
- made dropdown available when no options but using taggable
- added
show()
andhide()
methods inEnsoSelect
andVueSelect
components
ui
- added
sessions
&token
management - updated
Edit.vue
- updated
Sessions.vue
back-end
We have updated README.md
and codacy badge
for several packages.
addresses
- added
show
route - renamed permission
- added
postcode
auto complete - added romania postcodes
- added directory for
cities
®ions
- updated timestamps
- removed unused
StateSeeder
- improved seeders logic
- added street to postcode
- added
is_billing
andis_shipping
- added casts
- updated factory & migration
- added
is_billing
andis_shipping
to options - updated
OneLiner.php
- improved address form
- improved
is_default
,is_shipping
,is_billing
handling - enabled the bool flags in the address form
- added tests for billing & shipping
- added missing routes
- updated
makeDefault
,makeBilling
andtoggleShipping
- made
makeBilling
method public
categories
- improved max nesting level validation message
- fixed recursive relations
- fixed order in
tree()
method - removed
hasChildren
scope - added
risky
in.stypeci.yml
- added new
depth()
method in model - removed
currentAndBelowIds
andflatten
methods - added
flattenCurrentAndBelow
- added test
- renamed publishing tag from
categories-factories
tocategories-factory
cli
- added type for migration
commercial (private)
- renamed
supplier_number
tosupplier_order_reference
- replaced
index()->unique()
withunique()
in migrations - removed timestamps from the history model
fillable
attribute; renamed table column - updated client stocks import with the new
params
template feature - updated the
Sale
model trait usage - updated
DailyUpdateStockValues
logic and rules
control-panel-api
- renamed routes
core
- updated
AddressPermissions
- added
import.show
permission - added
core-api
middleware group - added upgrade command to rename permissions
- added role filter in users
- added sessions (index & delete)
- added tokens (create & index & delete)
- added permission migration
- updated
UserTokenPermissions.php
- updated
UserSessionPermissions.php
- added postcode permission
- added postcode upgrade
- added street to postcode
- updated
Addresses
upgrade command to addis_billing
andis_shipping
columns - added force to postcode seeder
- added post migration in
Addresses
upgrade command
data-import
- fixed comment spacing
- added params validation
- added support for
params
in template - small refactor
- added
import.show
permission - small refactor and clean up
- added
seederPath
option in config; updatedExcelSeeder
documentation
- added extra instructions regarding Sanctum's
SANCTUM_STATEFUL_DOMAINS
env value - updated data-import docs
inventory (private)
- updated positions import to use the new data-import template
params
flow
localisation
- added language options controller
- simplified options controller
products
- added
risky
in.stypeci.yml
- updated
categories
dependency
roles
- fixed the scenario where roles without a default menu had the first parent menu
- skips an extra permission query
tables
- added default sort
- added
notVisible
column andvisibility
method inColumns
builder - updates
ColumnTest
- renamed sort classes
- added
defaultSort
for all queries.dtRowId
will be used if not customized by template - fixed default sort when there are columns with same name
upgrade
- added foreign key helper
Upgrade steps
To upgrade:
- run
composer update
- run
yarn
,yarn upgrade && yarn
to ensure you have the latest versions and patches are applied. If necessary, update your patch files - due to
control-panel-api
routes rename, we need to updateControlPanelApiSeeder
:php artisan vendor:publish --tag=control-panel-api-seeder --force
- you need to publish addresses seeders by running:
php artisan vendor:publish --tag=addresses-seeds --force
- publish also addresses factory:
php artisan vendor:publish --tag=addresses-factory --force
- if using
categories
package, you need to:- update in
composer.json
the categories dependency"laravel-enso/categories": "^2.0"
- publish factory by running:
php artisan vendor:publish --tag=categories-factory --force
- add the categories test suite to
phpunit.xml
:
<testsuite name="categories"> <directory suffix="Test.php">./vendor/laravel-enso/categories/tests</directory> </testsuite>
- update in
php artisan migrate
composer dump-autoload
php artisan enso:upgrade
- ensure that permissions are properly configured for each role and then save/refresh the roles configuration files
- update the Enso version to
4.1.0
inconfig/enso/config.php
v4.0.1
4.0.1
This is a patch release, therefore it includes several bug fixes and very small changes.
front-end
We have updated in all our packages the animated
dependency to 4.0.0
calendar
- fixed deleting event in a sequence
- fixed drag event in
EnsoCalendar
commercial (private)
- updated input clear
- added settings
financials (private)
- fixed VAT display, now shows numerical value
how-to
- updated
Index.vue
to add tag only when having access to store route
mixins
- updated error code from
555
to488
modal
- improved portal creation into instance root
back-end
We have updated DynamicsRelations
namespace to DynamicRelations
in order to be PSR4 compliant for all packages
and removed throttle
calendar
- drops create action from edit
commercial (private)
- removed
InvoiceableEntity
- refactored position adjustment request
- replaced
onceUsingId
withsetUser
- sale now uses the
Methods
trait; fixed thePerson
resource - added settings
- updated the settings form; updated virtual position id references; removed the package config file
control-panel-api
- improved logic in seeder
core
- fixed reset password
- added
PosterMorphKey
upgrade command
data-export
- fixed comment typo
data-import
- replaced
onceUsingId
withsetUser
- fixed comment spacing
discounts (private)
- fixed redirect on delete bug; fixed model import after refactor
financials (private)
- added new
InvoiceableEntity
exception - updated
number
type formunsignedInteger
tostring
for payments and invoices - fixed client table filters bug; updated auto number; fixed model load issue after refactor
forms
- fixed typo in comment
how-to
- added
CascadesMorphMap
trait for Poster and updatedAppServiceProvider
impersonate
- fixed typo in middleware
- fixed middleware and added
provider
method - fix authentication
inventory (private)
- removed show button from the form as route is necessary
- improved the position form
tables
- replace
onceUsingId
withsetUser
- fixes mail driver
teams
- fixed namespaces in
AppServiceProvider
andTeams
tutorials
- corrected folder name
Upgrade steps
To upgrade:
- run
composer update
- run
yarn
,yarn upgrade && yarn
to ensure you have the latest versions and patches are applied. If necessary, update your patch files php artisan enso:upgrade
- all
Auth:onceUsingId()
uses should be updated toAuth::setUser($user)
due to sanctum addition - remove
'throttle:60,1'
fromApp\Http\Kernel
- replace tables.export.notifications
email
tomail
- upgrade
"animate.css": "^4.0.0"
in package.json - update in
enso.scss
animate import toanimate.compat.css
instead ofanimate.css
- update
MAILGUN_ENDPOINT
in your.env
files toapi.mailgun.net
instead ofapi.eu.mailgun.net
- ensure that permissions are properly configured for each role and then save/refresh the roles configuration files
- update the Enso version to 4.0.1 in
config/enso/config.php
v4.0.0
4.0.0
With this release we added sanctum to our core, opening the way for mobile applications and better integrations with external apis. We have also refactored all of our backend packages. Among the changes we have brought to our backend code, we have managed to:
- remove
App
namespace from our backend packages. We started with our left foot regarding this when we split Enso into specialized packages and we carried the bad decision along the way. It was time to revert this - add typed properties to Structure Migrations
- gave up using
fillable
in our models in favour of$guarded = ['id']
- many other punctual improvements and bug fixes which further hone our ecosystem.
- remove how-to, activity-log, tutorials, comments, documents, discussions as core dependencies. Made cli as dev-dependency
- move helpers from classes to services
- update the docker image
Since we consider that Enso has matured enough, starting with 4.0.0 we are going to use semver. As a result, we have updated all package dependencies and incremented the major version where the case.
front-end
Most of the packages received a dependency list update.
For all packages, we've refactored the modal
uses according to its latest version by dropping the show
control property.
We've also refactored the new toastr
uses by injecting it where needed instead of using the globally available $toastr
property.
accessories
- split accessories to new packages:
addresses
,comments
,discussions
anddocuments
- removed
App
from namespace
addresses (new)
- created new
addresses
package, subtracted from theaccessories
bulma
- added the new
addresses
,comments
,discussions
anddocuments
packages as dependencies - removed
App
from namespace
calendar
- updated
vuecal
event creation
charts
- added
cancelToken
for subsequent requests
comments (new)
- created new
comments
package subtracted from theaccessories
commercial (private)
- added the
comments
,documents
packages as dependencies - removed
App
from namespace
companies
- added the
addresses
package as dependency - removed
comments
,discussions
anddocuments
from accessories - removed
App
from namespace
contracts (private)
- added the
documents
package as dependency - removed
App
from namespace
discussions (new)
- created new
discussions
package subtracted from theaccessories
- removed
App
from namespace
documents (new)
- created new
documents
package subtracted from theaccessories
dropdown
- exposed a bool selection flag in dropdown's render
erd
- updated readme
financials (private)
- added the
comments
,documents
packages as dependencies - removed
App
from namespace
forms
- tweaked reveal password
- extracted toastr from CoreForm
- shows reveal password only when specified
hr (private)
- split accessories to new packages
- removed
App
from namespace
inventory (private)
- split accessories to new packages
- removed
App
from namespace
mixins
- removed
i18n
and updated error handler to use the newtoastr
mobile-app (new)
- this is our first iteration of a ready to publish (IOS, Android) mobile app based on Expo.
modal
- improved the modal behaviour
- dropped the need for the
show
control prop. Now the modal will have to be controlled byv-if="something"
. This is breaking and need refactor in all uses - fixed a bug when the modal was open, and the router was used to switch the page, which let the modal hang forever and needed a page reload
- added a
transitionDuration
prop that allows using the transition also for the above case - overall refactor
people
- split accessories to new packages
- removed
App
from namespace
products
- split accessories to new packages
- removed
App
from namespace
projects
- split accessories to new packages
- removed
App
from namespace - added project status
tables
- added
dateFormat
for the new internal filters
toastr
- improved
toastr
use; now instead of defining it globally it can be imported / injected where is needed
typeahead
- improved the select logic; added in the select event the selected item, if any
- fixed edge case for query and min query length
ui
- changed
Authorization
from header to cookie - renamed
is-webview
towebview
- added generate token to user and checks for access permission
- added
RevealPassword
component inAuthForm
- fixed search bug,
ToastrPosition
- refactored mixins
- updated the use of toastr by importing and providing it for injection, in App
- improved store by making use of
vue-router-sync
-> this adds a breaking change for thesetPageTitle
store action that now requires only the new title as param
- removed how-to/activity-log/tutorials dependencies
- disabled impersonate in webview
- fixed style
- added pusher
- fixed navbar avatar, now we use
Avatar
component instead ofimg
inOperation
component
back-end
action-logger
- removed
ActionLogs
trait and replaced it with a dynamic relation to user
activity-log
- fixed helpers services namespace
- updated web middleware group to api for sanctum
addresses
- dropped the
defaultAddress()
method, instead, theaddress()
relation will always return the default address - added return type in
isLocalized
helper - added
isLocalized
helper - replaced web middleware group with api for sanctum
- updated codacy badge
avatars
- dropped direct relation
- updated web middleware group to api for sanctum
calendar
- removed default value
parentMenu
- changed
web
middleware toapi
categories
- improved config
- removed unused
AuthServiceProvider
- added
Abilities
trait in model and removesRelations
- renamed migrations
- updated web middleware group to api for sanctum
cli
- generate files & namespace according to v4
comments
- removed the old comments trait and adds dynamic relations to the core user
- updated web middleware group to api for sanctum
- fixed store controller
companies
- added abilities & routes notifications to company
- renamed
CompanyStatuses
withStatuses
- replaced web middleware group with api
- renamed
obs
tonotes
- added filters request to request validator and fixes store/update controllers
- fixed helpers services namespace
- removed accessories, leaves only addresses
control-panel
- updated controllers to use
Illuminate\Routing\Controller
instead ofApp\Http\Controllers\Controller
- fixed style
- added
FilterRequest
inValidateApplicationRequest
- updated
Application
update controller to excepttoken
field from request
control-panel-api
- changed token to sanctum
- fixed conflicting routes
- added seeder for generating monitoring user
- changed
web
middleware toapi
- moved database to root
control-panel-common
- updated
codacy
badge
core
- added
sanctum
, new tests and authorization key to cookie - renamed
is-webview
towebview
- added
EnsureFrontendRequestsAreStateful
for webview - added new
mapMorph
- refactored services into controller
- added api group & monitoring user
- added route & refactor control panel
- changed
web
middleware toapi
- updated relations
- removed
activity-log
,tutorials
,how-to
dependencies. - renamed
obs
tonotes
- added rename migration upgrade
countries
- changed
web
middleware toapi
currencies
- replaced web middleware group with api for sanctum
- renamed migration
data-export
- refactored ASP
data-import
- replaced web middleware group with api for sanctum
- fixed helpers services namespace
departments
- renamed migrations
discussions
- updated relation
- changed
web
middleware toapi
documents
- replaced web middleware group with api for sanctum
- updated codacy and style ci badges
dynamic-methods
- added an
Abilities
trait suited for models, containing relations, scopes & mutators
enums
- fixed stub
files
- changed
web
middleware toapi
- updated relation
- updated codacy badge
- fixed namespaces
- renamed
publicPath
tostoragePath
- updated & casted env pagination key; refactored upload service provider;
filters
- updated codacy badge
helpers
- added
FiltersRequest
trait - improved filters request to receive array or argument list
- improved
CascadeMorphMap
to always resolve the last model binding - improved
Searchable
to detect changes in algolia camelCase keys also - updated enso exception error code to 488
history-tracker
- updated codacy badge
how-to
- changed
web
middleware toapi
- replaced direct relation traits with dynamic relations
- updated relation
- updated codacy badge
- removed storage folder that is now managed by core
- renamed migrations
impersonate
- added sanctum
io
- fixed avatar in
IOEvent
- small refactor
- improved logic in
IOEvent
and updatedIOObserver
localisation
- changed
web
middleware toapi
logs
- replaced web middleware group with api for sanctum
- fixed helpers services namespace
measurement-units
- changed
web
middleware toapi
- renamed migrations
menus
- changed
web
middleware toapi
notifications
- changed
web
middleware toapi
- updated codacy badge
- updated codacy badge
people
- replaced web middleware group with api for sanctum
- updated codacy badge
- renamed obs to notes
permissions
- added abilities trait
- added comments and docume...
v3.9.5
3.9.5
front-end
accessories
- updated components to use the
User
resource format for avatar - added localization button for addresses
activity-log
- updated components to use the
User
resource format for avatar
calendar
- fixed
EventConfirmation
- upgraded to
vue-cal 3
- fixed style
categories
- updated for the new BE
- added
laravel-validation
as dependency
charts
- small refactor
commercial (private)
- added
laravel-validation
as dependency - updated import of
Errors
class inRowLine
to use the newlaravel-validation
package
contracts (private)
- updated
Card
component to use theUser
resource format for avatar - uses
Avatar
component instead of img inCard.vue
directives
- fixed
clickOutside
when the target isn't a child of container - for solving this issue, added a deep modifier to check
contains
with positions - updated
clickOutside
dropdown
- removed stop propagation as it uses the improved
v-clickOutside
- added
disable-controls
boolean prop - fixed
disableControls
reactivity
emails
- added
laravel-validation
as dependency
files
- updated components to use the user resource format for avatar
- added clipboard to
Url.vue
financials (private)
- added
laravel-validation
as dependency
forms
- added the ability to customize wysiwyg's toolbar
- extracted
Errors
in its own package - added a new
RevealPassword
component - uses
RevealPassword
inInputField
inventory (private)
- added
laravel-validation
as dependency
laravel-validation (new)
- new package that contains an
Errors
class that maps on the LaravelValidationException
messages
mixins
- parses number for type safety in
shortNumber
- removed unneeded dependency
permissions
- added
cssClass
for menus
projects (private)
- added
laravel-validation
as dependency
roles
- updated FE for the new BE
Permission
resource
tables
- merged custom and column internal filter and smalls fixes
- small refactor in label
- added in-place editing filter
- improved logic in
Filters
andLabels
components - fixed eslint
- small refactor
- fixed internal filters without custom
teams
- updated components to use the
User
resource format for avatar - uses
Avatar
component instead of img inAvatarList
textarea
- updated eslint
typeahead
- improved behaviour when no results are found
- added
min-query-length
property - added search event when pressing enter
- fixed axios cancel token
- provided query on item slot
- added optional search button
ui
- fixed theme and rtl
- updated
preferences.js
- updated
AuthForm
to display error messages instead of toastr - uses the new
RevealPassword
component inAuthForm
webshop (new) (private)
wysiwyg
- updated eslint
back-end
activity-log
- updated
Timeline
response to useUser
resource instead ofTrackWho
addresses
- updated validator: changes
is_default
to be required - removed unnecessary query
- removed form builder region label usage
- added rememberable in address
- fixed one liner
- added localisation functionality with google maps integration
- uses laravel Http instead of guzzle; refactor and cleanup
calendar
- added fixes such that:
- when an event in the middle of the sequence is deleted, then it should break the sequence first then delete events
- when series of events are updated in the middle of the sequence then it should not change the frequency
- when a sequence of events is deleted, then the cache will be invalid
- fixed frequency update, type equality in
ValidateEventRequest.php
and edge case when update date of an event in the middle of the sequence
categories
- improved recursive relations
- renamed
recursiveParents
relation torecursiveParent
- added
currentAndBelowIds
and relations trait - updated self relations to static
- added
parentTree
helper
commercial (private)
- updated client stock import
- cleanup in company service provider
contracts (private)
- updated
AdditionalAct
resource to useUser
resource instead ofTrackWho
core
- added products and localize upgrade
- updated
LoginController
to useValidationException
instead ofAuthentication
- fixed
ValidatePasswordRequest
andForgotPasswordController
countries
- added region label model helper
discussions
- updated resources to use
User
resource instead ofTrackWho
documentation
- updated documentation for categories and products
dynamic-methods
- added scope support
files
- updated
File
resource to useUser
resource instead ofTrackWho
- added new
publicPath
method in trait & contract
io
- updated
IO
resource to useUser
resource instead ofTrackWho
measurement-units
- renamed
UNITS
constant from seeder toUnits
permissions
- improved permissions types, added
Permission
resource
products
- added
html_description
, dynamic scopes to product and dynamic relations to category - removed unused
hasMappedProducts
and addsmanufacturedProducts
for companies
roles
- improved roles validation
- uses resource in permission tree
tables
- fixed export edge case
- updated
Enum.php
teams
- updated
Team
resource to useUser
resource instead ofTrackWho
Upgrade steps
To upgrade:
- run
composer update
in the project's root - run
yarn, yarn upgrade && yarn
to ensure you have the latest versions and patches are applied. If necessary, update your patches - update the Enso version to 3.9.5 in
config/enso/config.php
- the
Errors
class was extracted fromenso-ui/forms
to it's own packageenso-ui/laravel-validation
. If using it locally, make sure to update the imports. - ensure that the
php artisan enso:upgrade
command is run - there is a new
localize
addresses route added, please ensure that the roles/permissions are correctly configured for your projects and then save the roles configurations - update the
client/src/js/enso.js
file using the package version as reference - make sure to have
vuex-router-sync
dependency inpackage.json
3.9.4
front-end
accessories
- updated the user options route used for tagging
charts
- added a short number option to the
Chart.vue
component
commercial
- updated the bundled products index sample page
emag
- added a products index sample page
financials
- updated the index pages' filters to filter on
date
instead ofdue date
inventory
- updated the bundled products index sample page
- switched from using the
RoAddresses
component to using theAddresses
component - 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
core
package (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
Country
model 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
TransformMorphMap
trait
avatars
- removed the
ensureFolderExists
method call - updated the
Files
test folder references as the config keyenso.files.paths.testing
has been updated toenso.files.testingFolder
- the
Avatar
model now uses theCascadesMorphMap
trait morphMap
is now used for theAvatar
model
calendar
- renamed notification template and updated button color
categories
- added a
hasChildren
scope and anisParent
helper method on theCategory
model - updated request validator due to
MapsRequestKeys
refactor
core
- the
php artisan enso:storage:reset
also handles the creation of missing storage folders - the image resources previously present in the
@enso-ui/ui
package have been moved to the this package - renamed the resource publishing tag from
core-images
tocore-assets
- added a FilesIndex upgrade service that attempts to set and unique index
on thefiles
table 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
Addresses
migrator 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
: theCompany
model now uses theCascadesMorphMap
trait
comments
- added controller for customizing taggable users
- the
Comment
model now uses theCascadesMorphMap
trait
countries
- added the
Relations
trait on the model, so it can support dynamic relationships
data-export
- refactored to use
mapMorphs
: theDataExport
model now uses theCascadesMorphMap
trait
data-import
- updated the
files
test 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
files
test folder references - added the
$folder
variable to theDocument
model - the request validator now uses the
TransformMorphMap
trait - the
Document
model now uses theCascadesMorphMap
trait morphMap
is now used for theDocument
model
discussions
- the request validator now implements the
TransformsMorphMap
interface - refactored to use
mapMorphs
: theDiscussion
model now uses theCascadesMorphMap
trait
files
- refactored the paths config: now attachable models should have a
$folder
property or afolder()
method - updated the
Files
test folder references as the config keyenso.files.paths.testing
has been updated toenso.files.testingFolder
- added handling logic for tests within the
HasFile
folder()
method - refactored to use
mapMorphs
: theUpload
model now uses theCascadesMorphMap
trait
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$field
parameter 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
VatRates
enum from thefinancials
package - improves
MapsRequestKeys
trait - added
morphMapKey()
method to theCascadesMorphMap
trait which determines the model's morph map key - added the
TransformMorphMap
trait
how-to
- refactored to use
mapMorphs
: theVideo
model now uses theCascadesMorphMap
trait
localisation
- updated language resources
- fixed some bugs found when adding keys
- renamed
localisation-lang-files
tag intoenso-localisation
.
Under this tag we're publishing only Laravel's lang files - removed unused localisation files from the
app
directory - local translations are now saved to the local
app
directory 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
SanitizeAppKeys
class in order to remove from app localisations the keys found also in enso localisations - added some missing translations
menus
- add the
isParent
&isNotParent
scopes on the Menu model
people
- added internal table filter for filtering people with/without users
- refactored to use
mapMorphs
: addedCascadesMorphMap
on thePerson
model - optimizes the
company()
helper query - person now touches user on each edit
products
- added
name
andpart_number
to the options builder$queryAttributes
variable - the
Picture
model now implementsAuthorizesFileAccess
and 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
VatRates
enum and switched to using theVatRates
from theHelpers
package - 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
VatRates
import 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
forceInfo
istrue
- 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 update
in the project's root - run
yarn
,yarn upgrade && yarn
to 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
MapsRequestKeys
trait, 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
,Documentable
traits, we are now usingRelation::morphMap(...)
and short keys instea...