Releases: laravel-enso/enso
v3.7.3
Laravel Enso's Changelog
3.7.3
This is the second to last release before upgrading Enso to PHP7.4.
front-end
bulma
- made available the new InputFilter & EnsoInputFilter components
- made available the new SimpleDateFilter & EnsoSimpleDateFilter components
calendar
- updated EnsoCalendar's resizing strategy
departments (new)
- a new package for managing departments
divider
- updated dependencies to address a security vulnerability
erd
- updated dependencies to address a security vulnerability
filters
- added two new filter components: InputFilter & SimpleDateFilter as well as their Enso counterparts: EnsoInputFilter & EnsoSimpleDateFilter
- fixed DateFilter's picker width
- date-filter refactor
how-to
- fixed the @enso-ui/uploader dependency restriction
measurement-units (new)
- a new package for managing measurement units
money
- updated dependencies to address a security vulnerability
people
- fixed the missing user buttons from person edit/create forms
projects (new)
- a new package for managing projects
tables
- you can now clear the search and change search mode while loading
themes
- updated deps to address mixin-deep security vulnerability
- updated the vue-filter css so that the components can be customized with is-* mod classes
uploader
- added the formatBytes.js helper
- fixed the file size reporting sometimes causing an undesired limitation
back-end
core
- added a
enso:storage:resetcommand which can be ran after php artisan migrate:fresh to clear the storage (but before seeding)
countries
- removed broken relationship
- added currencyCode in the model's resource
- this package is now a dependency of the new
laravel-enso/measurement-unitspackage
cli
- added the TableCache trait to the generated model
- fixed the request validator namespace
- updated the
resourcesfolder toclient/src/ - updated the tests
departments (new)
- a new package for managing a departments
forms
- adds the ability to customize routeParams on edit
- fixed several form template validation error messages
measurement-units
- a new package for managing measurement units
- this package is now a dependency of the
laravel-enso/productspackage
localisation
- added missing translation keys
ocr (new)
- new package that can perform optical character recognition for pdf files
- depends on the OCRmyPDF package - you should read its documentation for more information, requirements and limitations
products
- extracted measurement unit functionality to a distinct package and updated related code
- removed the
measurement_unitcolumn from Product and replaces it withmeasurement_unit_id - added the upgrade
php artisan enso:products:upgradeconsole command which will migrate your products table and seed either a defaultPiecemeasurement unit or can use an optional Enum to seed the measurement units specified by the enum - added some missing meta attributes within the table template
select
- fixed the typeahead trait causing issues when the request did non contain custom parameters
- refactored the search strategy resulting in more concise code
- fixed relation attribute search
- updated the display of the selected options, showing them at the bottom of the option list (previously they were at the top) making it easier to set new options when in multi-select mode
services
- refactored the paths and routes structure
- updated the factory and the tests
tables
- the exported file name is now translated
- fixed the searching logic when having nested columns (relations) on the main model
- refactored the search strategy resulting in more concise code
Upgrade steps
This is a non breaking upgrade:
- run
composer update - run
yarn upgrade && yarnin/client - update the version to 3.7.3 in
config/enso/config.php
If you are not using the products package, there is nothing else for you to do.
Otherwise, you should run the products package's upgrade command, considering the following:
- the measurement units functionality was extracted to the
measurement-unitspackage andproductsnow depends on it - measurement units were stored in the products table's
measurement_unitscolumn, and the values were taken from theMeasurementUnitsenum - that column is dropped and replaced with a
measurment_unit_idcolumn which points to themeasurement_unitstable
If you did not customize the enum and were using the defaults, then you can simply run
php artisan enso:products:upgrade and the command will handle the necessary changes.
If you had customized/extended the enum, then you should provide the enum as a parameter to the upgrade command, in which case it will be used to seed the new measurment units:
php artisan enso:products:upgrade --enum=App\\Enums\\MyEnum
v3.7.2
Laravel Enso's Changelog
3.7.2
The main purpose of this release was to switch from using tiptap to using tinyMCE for our what-you-see-is-what-you-get editor VueJS component.
Through its dependency chain, after running yarn upgrade tiptap was breaking the build.
As a bonus, tinyMCE should be better supported and the VueJS wrapper components for it are slimmer and cleaner.
front-end
wysiwyg
- drops tiptap in favour of tinyMCE (see more below)
forms
- updates the wyisiwyg field for the new tinyMCE powered wyisiwyg component
calendar
- reverts the resizing strategy
back-end
companies
- within the static
ownermethod the company model is resolved from the service container so that if you're extending & binding the package model to a local model, you will obtain the local instance
forms
- adds support for tinyMCE customization within the form configuration and the json templates
- fixes form params bug on create which caused the given parameter values to be ignored
localisation
- updated a couple of translation keys and values
Upgrade steps
This is a non breaking upgrade:
- run
composer update - run
yarn upgrade && yarnin/client - update the version to 3.7.2 in
config/enso/config.php - update the
config/enso/forms.phpconfiguration file and add the new key:
|--------------------------------------------------------------------------
| TinyMCE Api Key
|--------------------------------------------------------------------------
| If you're using the wysiwyg field you need to get a free api key from
| https://www.tiny.cloud/get-tiny/ first.
|
*/
'tinyMCEApiKey' => env('TINY_MCE_API_KEY', null),
If you were not using the wysiwyg component, there is nothing else for you to do.
If you are using it, you will need to create an account on https://www.tiny.cloud/ ,
get an API key and add your application domains.
After obtaining your API key, add it to your .env file:
TINY_MCE_API_KEY=my-api-key
v3.7.1
Laravel Enso's Changelog
3.7.1
front-end
calendar
- fixed request filter date format
filters
- fixes
fillmethod for filter state - limits width for picker inputs in date filter
tables
- improves global button actions handling
ui
- small changes to the AppUpdate messages; removed the version check when updating
- missing icon import fix
back-end
companies
- added
Company::owner()static helper method which returns the application owner company, based on the configured id (config('enso.config.ownerCompanyId')- more information below
core
- changed the AppUpdated notification tooltip message
- added
ownerCompanyIdkey inconfig.php - updated the
config.phpconfiguration, so that the values that make sense are read from the.envfile if they provided - cleanup of some deprecated image files
currencies
- fixes exchange fetcher service
forms
- fixed setting the route params for create
- added support for
pivotParams&customParamsmeta properties for select
helpers
- fixed
filledgetter onObjwhen value is an instance ofCollection
localisation
- updated/added a few translation keys and values
menus
- marked the computed icon not exportable in table thus fixing a table export issue
roles
- fixes role table to show users without default menu
- fixes config writer for users without role
deprecated
examples
- the package is being deprecated and will no longer be maintained
- for new projects, the relevant functionality (sample data for the dashboard charts) has been moved locally within Enso
Upgrade steps
This is a non breaking upgrade:
- run
composer update - run
yarn upgrade && yarnin/client
Company::owner()
The newly added method addresses the need to identify the Application's client or owner. Internally, we've handled this in various ways and, with this small update, we mean to provide an unified, consistent approach.
Since it makes sense that the Company model from the Companies package may be extended either in other packages or locally, the method's resulted class is resolved from the container.
Thus, if required, you can bind your desired/local implementation to the LaravelEnso\Companies\app\Models\Company class in the service provider.
You may set the application owner's company id within the main Enso configuration file (enso.config.ownerCompanyId).
v3.7.0
Laravel Enso's Changelog
3.7.0
The major purpose of this release is three fold:
- the switch to VueCli 4 which allows using the latest official VueJS tooling and should be more future-proof
- the date handling flow was simplified: we now expect that the front-end will send the date in the database's date format (usually
Y-m-dorY-m-d H:i:s) and on the back-end, all dates should be cast to Carbon\Carbon. - the back-end packages were updated to require PHP 7.3+
front-end
accessories
- default value for Documents.vue's disableUpload was fixed causing users to not be able to upload files
calendar
- added Event recurrency support
- small fixes and under the hood refactor
- import of VueCal language packs for the Enso supported languages which fixed translation issue
companies
- fixed small bug when assigning a person to the company, which caused the person to not be listed as assigned
confirmation
- fixed small styling issue with the control's position
currencies
- added filters on the index page
- for the currency display, symbols are used insteand of icons
datepicker
- default date format was updated from
'd-m-Y'to'Y-m-d' alt-format&alt-inputparameter usage was fixed
filters
- DateFilter now has a
directionparameter & control: you can now choose to filter from past & future presets - DateFilter also has a new
forwardboolean parameter which makes the component to start by default with the
future presets - under the hood date format handling has been improved
forms
- fixed the
alt-input&alt-formathandling for the date field - instead of a single
actionsslot, the form now has a twoactions-left&actions-rightslots. This is a breaking change - see the upgrade steps
products
- various small css fixes
select
- making another request when the last request is still in progress will trigger the existing request's cancellation
- fixed bug when using the select in Object mode
- improved serverSide checking strategy
- the CoreSelect's
valueparameter is now required
tables
- fixed issue with unneeded scrollbars appearing under some circumstances
- small cleanup
themes
- theme files were renamed due to switching to VueCli and using the style loader webpack plugin
- Bulma version was bumped to ^0.8.0
- button sizes are customized to appear smaller than the new Bulma default (and slightly smaller than the old default)
ui
- the media resources that belonged to the UI (such as notification image SVGs, some logos) were moved to the ui package and are copied on build
- a new component is available in the navbar and being used to notify the currently
logged in users whenever a new application update has been deployed - small changes made due to VueCli upgrade (routes, styles, themes)
- other small fixes
back-end
activity-log
- updated date parsing due to filters changes
avatar
- added support for gif files
calendar
- recurring events are now supported
- various bugs were fixed
- updated the tests
companies
- updated message when setting/updating an assigned person/mandatary
countries (new)
- functionality derives from 'addresses` which now is now better encapsulated
core
- some of the resources used during the VueCli build process have been moved to this package, namely:
- stubs for the index page
- images used in the emails
- a new command (
php artisan enso:announce-app-update)and logic has been implemented that can be used to notify currently logged in users that a new application version has been deplyed - the older, deprecated upgrade commands where purged
- improved local state handling (breaking change)
- aded upgrade commands for calendar, countries & tutorials
- the themes' configuration was updated
currencies
- created a Converter service which can convert from one currency to another, at a given date
- refactores fixer currency API
- fixed exchange rate validation and more
- fixed config API link
- updated date parsing due to datepicker changes
- added seeders for 17 currencies
- added
exchange_ratesdate index - various under the hood improvements
- updated the tests
enums
- updated PHP dependency to 7.3+
excel
- updated PHP dependency to 7.3+
files
- updated date parsing as required for latest filters usage
- fixed invalidMimeType exception message
forms
- updated date parsing for latest datepicker usage
- updated the config: the previous
dateFormatparameter is now namedaltDateFormat(breaking change) - fixed route generation in Builder
- updated the tests
helpers
- the
DateAttributestrait was removed as a consequence of the new date handling flow (breaking change)
people
- updated date parsing as required for latest filters usage
permissions
- added menu related check when deleting permission
rememberable
- fixed caching bug when choosing to cache 'forever'
tables
- updated date filtering strategy which resulted in much simpler and robust code
- fixed default sort issue
- fixed rawTotal computation issue for empty tables
- fixed bug when exporting nested columns
tutorials
- the
showroute was renamed toload - fixed small form bug
versions
- updated PHP dependency to 7.3+
Upgrade steps
Before getting into the actual upgrade steps, an overview of the changes is useful.
When switching from Laravel Mix to VueCli a few things happen:
- the front-end resources location will change from
resources/jstoclient/src/js - the front-end dependecies location will change from
node_modulestoclient/node_modules - the
package.jsonconfiguration file location will change from project root toclient - the front-end patches location will change from
patchestoclient/patches - when installing dependencies using Yarn, building or serving the front-end, you will need to
cdinto the client folder first. - instead of using Laravel Mix's
webpack.mix.jsfile to configure the build, we will be using VueCli'svue.config.js - we can still use Valet to serve the back-end but we must use
yarn serveto serve the front-end for
hot module replacement
VueCli upgrade related steps
-
copy the
clientfolder from the Enso repo into your project root -
add any (package) aliases you had previously added to the
webpack.mix.jsfile into:- the
settings.import-resolve.alias.mapsection of theclient/.eslintrc.jsfile - the
configureWebpack.resolve.aliassection of theclient/vue.config.jsfile
- the
-
update/replace your project root
.eslintrc.jswith the contents fromclient/.eslintrc.jsand correct the aliases paths -
if you had customized the
.babelrcfile, move those customizations to theclient/.babelrcfile, and remove the root file -
move your patches from
patchestoclient/patches -
move any local dependencies you had added to the
package.jsonto theclient/package.jsonfile -
move any additions from the
resources/js/app.jsfile to theclient/src/js/app.js -
move any additions from the
resources/js/localState.jsfile to theclient/src/js/localState.js -
move any additions from the
resources/js/router.jsfile to theclient/src/js/router.js -
move your local components, pages, routes & store from
resources/jstoclient/src/js -
once you have moved your js files, you may delete the
resources/jsfolder -
if you have any local image resources in
resources/imagesyou can create aclient/src/imagesfolder and move them there. Afterwards, you should add a new CopyPlugin instance to theconfigureWebpack.pluginssection withinvue.config.jsso that the images are copied on build (and overwrite, if needed, the default Enso assets).You may then delete the
resources/imagesfolder (the image files provided with Enso, such as the ones in theemailsandcornershave been extracted to their respective packages) -
move any addtions from within the
resources/sassfiles to theclient/src/sassfiles -
once you've moved everything, the
resourcesfolder should look like on the Enso repo here -
remove the
webpack.mix.jsfile -
update
.gitignoreusing Enso's as example and double checkclient/.gitignore -
within
composer.jsonupdate:laravel-enso/coreto4.6.*laravel-enso/calendarto1.4.*(if using the calendar package)
-
run
composer updatein the project root to update the back-end packages -
cd into the
clientfolder and runyarnto install the front-end packages -
make a copy of the
client/.env.examplefile, name it.env, then edit it an set the url you're currently using with Valet, for your project -
update the themes' configuration (
config/enso/themes) to:
return [
'light' => 'light',
'dark' => 'dark',
'light-rtl' => 'light-rtl',
'dark-rtl' => 'dark-rtl',
];Enso upgrade related steps:
- search for any
DateAttributesusages, remove the import and any date setters you might have added - when refactoring date attributes, you may use this commit as an example
- search and replace the
LaravelEnso\Addresses\app\Models\Country;namespace withLaravelEnso\Countries\app\Models\Country; - where using the
actionsslot within forms, replace theactionsslot withactions-leftand/oractions-rightslots as required - the local state implementation class should be bound in the service container to the
LaravelEnso\Core\app\Services\LocalState - publish the updated
AddressFactory.php:
php artisan vendor:publish --tag=addresses-factory --force
...
v3.6.1
Laravel Enso's Changelog
3.6.1
front-end
activity log
- keepAlive was removed form the index page
calendar
- as the package is no longer included in the UI package, if you want to continue using it, it should be manually installed
- previously, the calendar was more of a stub package with little functionality, now it has been rewritten and updated, with features such as:
- creating and managing local calendars
emails
- is a new package that can be used to compose emails for bulk sending (within the application)
files
- keepAlive was removed form the index page
filters
- fixed a bug in for the interval filters' computed value
products
- small cleanup
switch
- fixed readonly & disabled state
tables
- the 'Totals' footer is now collapsible, similar to the other columns
typeahead
- css styling was updated thus fixing some scrollbar issues and sub components sizing
ui
- various small changes
back-end
activity log
- small refactor
- the Events list now has better, user friendly labels
addresses
- the
Countrymodel now uses Rememberable (caching) - the Addresses factory should be force published as it has been updated - this now fixes
the tests which appeared to randomly fail
avatars
- the uploaded avatar now has the
created_byattribute properly set
cli
- fixed page tiles for create, edit, show routes
companies
- the
Activestatus is now selected by default in the form when creating a new company
control panel
- date handling was refactored
control panel api
- refactored the statistics building flow
core
- the
Calendarpackage was removed as an implicit dependency - if required add it manually using composer - fixed the User seeder
- generates now the broadcast private channel name dynamically, suited for cases where the user is under a custom namespace
currencies (new)
- is a package that can be used to manage currencies and exchange rates
- various small changes and improvements
- improved request validation
- added Fixer Currency API integration so the current exchange rates can be automatically retrieved for your defined currencies
cli
- page titles for edit, create, show where fixed
- various small changes and improvements
data export
- the authenticated user is now passed in the
ExcelExportservice so that thecreated_byflag can be accurately set for the generated files - the computation for the sheet limit has been fixed
data import
- fixes setting the
created_byattribute for the rejected file
emails (new)
- various small changes
files
- the
Filemodel'sbetweenscope now includes the limits of the given interval whereas in the past they where excluded - the
Filesservice'sattachmethod should also receive a$usermodel so we can properly set
thecreated_byattribute on the model FilePolicy'sownsFilemethod visibility what changed from private to protected so it can be overwritten
if required
forms
- updated tests to use the configured user model
helpers
- updated the
InCentstrait to handlePivotmodels - fixed the event name in the
ActiveStatetrait (typo) - enhanced the date parsing strategy for the
DateAttributestrait in that if the date cannot be parsed
using the available format(s),Carbon::parsewill be used as fallback
notifications
- generates now the broadcast private channel name dynamically, suited for cases where the user is under a custom namespace
products
- the product-supplier relationship has been enhanced with the use of Pivot model class for the pivot
- the supplier prices are now saved 'in cents' through the use of the
InCentstrait
rememberable
- the package has been rewritten for better code performance, readability & maintainability
- in addition to the existing Cache mechanism, a new Volatile transparent layer is used by default, which uses an in-memory cache (which is available during the request).
select
- a new
TypeaheadBuildertrait has been added to the package, which acts like a shim between the typeahead front-end and the Options backend so we can have select-like ease of use when using typeaheads
tables
- various small changes, bug fixes and improvements
- a
DynamicTemplatecontract & mechanisms are now available that address a possible security issue when caching templates and having different templates and data for different users - enhanced interval filter handling
- updated tests to use the configured user model
- the exported file now has the
created_byattribute properly set
teams
- removed deprecated loggable properties from the model
Upgrade steps
composer updateyarn upgrade && yarn- the Addresses factory should be force published (pay attention if you've customized it):
php artisan vendor:publish --tag=addresses-factory --force - update your User seeder or force publish the Core seeders (pay attention if you've customized them):
php artisan vendor:publish --tag=core-seeders --force - update the Enso version within your config file to reflect the 3.6.1 version
- if you want to install the calendar package:
composer require laravel-enso/calendar:1.3.x, then addyarn add @enso-ui/calendar@1.2.x- read docs
php artisan enso:upgradephp artisan migrate
For the next release we aim to move to Vue Cli from using Laravel mix.
v3.6.0
Laravel Enso's Changelog
3.6.0
front-end
accessories
- adds a
canAccessa check in documents to avoid an error - fixes the uploader import in documents
activity-log
- major refactor for the new BE version, backward incompatible.
charts
- adds
Chartto exports
datepicker
- adds support for
altInput&altFormat
filters
- updates
date-filterinterval logic. Previously, "today" generated an interval between today@00:00:00 (AM) and tomorrow@00:00:00 (AM). Now the interval is between today@00:00:00 and today@23:59:59. The same principle applies for the other intervals. - all the filters had the
titleproperty renamed toname(was causing unwanted native tooltip)
select
- adds
axiosrequest cancelling on concurrent requests - fixes a bug on handling the value when operating in
objectsmode - improves serverSide check strategy
- fixes bug where an error was thrown when using w/o server side
tables
- refactored for the new v3.0.0 BE
switch
- fixes disable and readonly states
back-end
activity-log
- rebuilt from scratch
- registration of events is made in `LoggerServiceProvider'
- all registerd / logged events use Laravel native Model events and Observers
- allows any number of custom events to be registered with models by extending the existing structures
- now the messages are properly translated
- for multi part events messages can be strings or arrays, (helps localisation)
- added a default
UpdatedActiveStateevent - documentation will be updated soon
- adds tests
addresses
- fixes test that was sometimes causing problems
- adds a
label()helper to theAddressmodel - provides address
labelcustomization by config
companies
- adds unique index for
fiscal_codeandreg_com_nr - consolidates the two request validators for
Companyin oneValidateCompanyRequest - upgrades the table for v3.0.0
- when creating a company the active status is preselected
- fax and bank were removed from the index table
core
- consolidates the two request validators for
UserGroupin oneValidateUserGroupReques - upgrades the table for v3.0.0
- adds the new
dateTimeFormatin config and in theAppStatebuilder - adds the
Activatablecontract on theUsermodel
data-import
- adds an
Authenticatescontract that can be used by importer classes when the user that performs the import needs to be authenticated - fixes a bug occuring when generating the rejected file, which caused some validation errors to not be reported
excel (new)
- provides an
ExportsExcelcontract and theExcelExportservice that makes excel exports an easy task - package was added to the base Enso project
- package was added to the base Enso project
forms
- adds meta support for select's
objectsproperty - fixes a bug when manually set values were transformed by the builder for the selects operating in 'object' mode
- improves
needsValidation()logic
helpers
- adds the
Activatablecontract - changes the
ActiveStatetrait by renaming:- getter
isDisabled()=>isInactive() - helper
disable()=>deactivate() - scope
disabled()=>inactive()
- getter
- fixes an edge case bug on
InCents
files
- fixes
FilePolicy
localisation
- consolidates the two request validators for
Languagein oneValidateLanguageRequest - upgrades the table for v3.0.0
- adds the
Activatablecontract onLanguagemodel
menus
- consolidates the two request validators for
Menuin oneValidateMenuRequest - upgrades the table for v3.0.0
people
- consolidates the two request validators for
Personin oneValidatePersonRequest - upgrades the table for v3.0.0
permissions
- consolidates the two request validators for
Permissionin oneValidatePermissionRequest - upgrades the table for v3.0.0
roles
- consolidates the two request validators for
Rolein oneValidateRoleRequest - upgrades the table for v3.0.0
tables
- the package was completely refactored
- the table builder class now has to implement a
Tablecontract instead of extending a service class - adds a serie of contracts besides
Table:AuthenticatesOnExport=> should be used for tables where the logged user is needed for restricting visible rows or any other purpose. The exporter will make sure that the user who requested the export will be authenticated before any queries are performedCustomFilter=> should be used for tables when custom filter logic is needed viaparams. Will make sure that the correct count is displayed when custom filters are appliedRawTotal=> should be used with tables where the total cannot be computed simply by adding up column values (e.g. `sum(price * quantity))Filter=> can be used to register local filtersComputesColumns=> can be used to register local computors
- improves exceptions
- adds template caching, configurable by global config or per table. Comes with a
php artisan enso:tables:clearcommand that should be used on production when opting for cacheing templates - renamed
cachetocountCache. Can now be set globally in the config. The builder will notifiy the dev if certain models are missing theTableCachetrait - makes the
buttonsattribute mandatory in templates - date interval filters object must now contain the
dateFormatprop representing the FE format of the date. If the dateFormat prop is null, theconfig('enso.config.dateFormat')will be used dbDateFormatwas removed- improves the strategy for autodetecting the
modelproperty. The camel case of the model class short name is now used - determines the table's
nameproperty (if not provided in the template) by pluralising themodelproperty (see above) - the notification channels should be present in config `['email', 'broadcast', 'database']
- all tests were refined
tutorials
- consolidates the two request validators for tutorial in one
ValidateTutorialRequest - upgrades the table for v3.0.0
- adds
TableCacheon theTutorialmodel
Upgrade Steps
-
update
composer.jsondependencies to:- "laravel-enso/cli": "3.3.*"
- "laravel-enso/core": "4.5.*"
- "laravel-enso/pdf": "1.0.*"
- "laravel-enso/excel": "1.0.*"
-
add in
composer.json=>autoload-dev.psr-4section:- "LaravelEnso\Cli\tests\": "vendor/laravel-enso/cli/tests/"
- "LaravelEnso\Tables\Tests\": "vendor/laravel-enso/tables/tests/"
-
update
package.jsondependencies to:- "@enso-ui/accessories": "2.1.x"
- "@enso-ui/bulma": "2.1.x"
- "@enso-ui/directives": "1.0.x"
- "@enso-ui/mixins": "1.0.x"
- "@enso-ui/tables": "1.2.x"
- "@enso-ui/themes": "1.0.x"
- "@enso-ui/transitions": "1.0.x"
- "@enso-ui/ui": "2.1.x"
-
remove from
package.json- "@enso-ui/filters": "^1.1.1"
- "@enso-ui/forms": "~1.2.0"
- "@enso-ui/select": "~1.1.1"
-
run `composer update && yarn && yarn upgrade && yarn"
-
run
php artisan enso:upgrade -
add in phpunit.xml the test suite for activity-log
<testsuite name="activity-log">
<directory suffix="Test.php">./vendor/laravel-enso/activity-log/tests/units</directory>
</testsuite>- add in
config/enso/config.phpthedateTimeFormatkey
activity-log
- truncate the
activity_logstable. Or if required, you can manually migrate the old data to the new format - publish the
LoggerServiceProviderand configure it using the provider from this repo as an example:php artisan vendor:publish --tag=activity-log-provider
addresses
- add the to the addresses config file the
labelkey
data-import
- add the new
Authenticatescontract to all imports that need the authenticated user
filters
-
replace the
titleprop withnamefor all the usage instances of the following filters:BooleanFilter,CoreSelectFilter,EnsoFilter,EnsoDateFilter,DateFilter,DateIntervalFilter,EnsoSelectFilter,IntervalFilter,SelectFilterVueFilter.
To do this you can search the whole resources folder for
title=". Make sure you only replace the prop for filters and not other components -
make sure that the change in
date-filter(described above at the front-end > filters section) does not impact your local use cases -
whenever using date-filters with tables, remove
dbDateFormatand make suredateFormatis present in the interval object, so the back-end knows it's a date interval.dateFormatshould reflect the ui date format. If left null, the backend will considerconfig('enso.config.dateFormat').
helpers
- make sure that you replace
isDisabled()&disable()helpers usage withisInactive()&deactivate()anddisabled()scope withinactive()
request validators
- most of the
ValidateModelStore/ValidateModelUpdaterequest validators were consolidated into oneValidateModelRequest(see the changelog). Check all local classes that are extending Enso request validators and make sure they extend the right class.
tables
- remove the usage of the
Datatabletrait as it no longer exists. You may search foruse LaravelEnso\Tables\app\Traits\Datatable;and remove any traces; - refactor all the table builders to implement the new
Tablecontract and expose the requiredquery()andtemplatePath()methods. You can follow as example the refactor of the permissions table - the
protected $templatePathproperty has becomeprotected const TemplatePath; - if you have extended any of the...
v3.5.0
Changes
front-end
We've created individual packages for resources that map on their back-end siblings for:
- calendar
- files
- data-import
- activity-log
- people
- companies
- teams
- roles
- permissions
- menus
- localisation
- tutorials
- how-to
This allows much easier customisation...
switch
- fixes not clickable bug on IOS
tables
- cleansup vResponsive
- fixes file download on default download button
back-end
cli
- fixes menu creation w/o model bug
- updates table template stub
- updates form builder stub to use
staticvsself - updates stubs for the new aliases in enso-ui 2.x
companies
- makes
statusrequired in form validator - fixes person form in edit mode, the user field is now readonly
core
- adds an upgrade for the new data-import
data-import
- refactors, cleans & increases accuracy for the progress tracking strategy
forms
- exposes
sectionVisibility&tabVisiblityhelpers by making them public - fixes
unknownMetaAttributes()validation error reporting
helpers
- fixes inCents when having null cent attributes
- adds
CarsadesMorphMaptrait. You can use this in combination with Laravel'sRelation::morphMap()and have a single alias for all children classes. The convention is to use the singular camel case name of the model's table
rememberable
- refactored
selfvsstaticin model retrieving
tables
- fixes
centsflag appeared as true when no cent columns defined bug
Upgrade Steps
- update in
package.jsonthe following- "@enso-ui/accessories": "~2.0.0",
- "@enso-ui/bulma": "~2.0.0",
- "@enso-ui/directives": "~1.0.1",
- "@enso-ui/filters": "^1.1.1",
- "@enso-ui/mixins": "~1.0.0",
- "@enso-ui/select": "~1.1.1",
- "@enso-ui/themes": "~1.0.0",
- "@enso-ui/transitions": "~1.0.1",
- "@enso-ui/ui": "~2.0.0",
- replace in
webpack.mix.js
'@core-routes': `${__dirname}/node_modules/@enso-ui/ui/src/bulma/routes`,
'@core-pages': `${__dirname}/node_modules/@enso-ui/ui/src/bulma/pages`,
'@core-middleware': `${__dirname}/node_modules/@enso-ui/ui/src/middleware`,
'@core-modules': `${__dirname}/node_modules/@enso-ui/ui/src/modules`,with
'@core': `${__dirname}/node_modules/@enso-ui/ui/src`,- search and replace:
@core-modules=>@core/modules@core-pages=>@core/bulma/pages@core-middleware=>@core/middleware@core-modules=>@core/modules
- update in
router.js:- add
import routes from '@core/bulma/routes'; - remove
const routes = routeImporter(require.context('@core-routes', false, /.*\.js$/));
- add
- run
yarn upgrade - update your front-end patches if the case requires
- run
yarn(to apply the patches) - run
composer update - run
php artisan enso:upgrade
Enjoy!
v3.4.0
Changes
front-end
accessories
- adds permission checks for various document operations
filters
- cascades enso select event handlers in select filter
- adds v-model to date filter, with value required
- adds a
titleprop to date-filter - fixes tooltip in date-filter
- adds watcher for
valueprop in date-filter - fixes horizontal padding in vue-filter
forms
- allows passing
paramsin select fields - avoids scrollIntoView erorrs (eg when using hidden fields)
select
- adds watcher for
source - no longer fetches on click when the component is readonly / disabled
- locks selection when params / pivot-params / custom-params are changed until the new list of options is fetched
- removes
disable-filteringprop - disables front end filtering when using server-side
tables
- improves vResponsive directive
- refactors dtRowId
- adds a
FilterStatehelper component - renames bulma
Controlscomponent names - minor visual refactor
typeahead
- adds automatic route translation in enso-typeahead
- cascades clear
ui
- the
routehelper is no longer defined as global and must now be injected in every component - fixes menu label padding
- improves tag group template in search, adds horizontal scrolling
- fixes checkbox alignment in checkbox manager
- fixes params in dataimport index template
back-end
addresses
- removed superfluous validation
- removes address observer
- add laravel-enso/enums
- improves form extending, removes formTemplate from config
- adds lat and long fields in form, with custom validation rules
- renames DefaultAddress controller to SetDefault
- improves scopeFor to work with morphMap
- removes deprecated Addresses trait
- refactors exceptions
avatars
- removes redundant method call in default avatar
- upgrades laravolt/avatars to 3.0
calendars
- adds laravel-enso/enums
- adds enums service provider for registering calendars
charts
- small refactor
cli
- adds a package option. Now you can generate whole structure boilerplates directly in your
vendor/my-vendor/my-packagefolder - adds session saving. You can now configure a structure, exit (or encounter an error :P) then come back and continue from where you left
- adds unit tests
- adds laravel-enso/enums
comments
- removed superfluous validation
- small refactor
companies
- implements dependency injection in controllers
- adds rememberable, avoids deletion conflicts and relations traits to the company model
- adds laravel-enso/enums
- improves form for easier customization
- adds
fiscal_code,reg_com_nrandstatusfields in table migration - adds
CompanyStatusesenum - adds a
EnumServiceProvider - removes
companies.phpconfig file - removes default restrictions in Options controller
- adds fiscal_code to $queryAttributes in Options
- refactors exceptions
core
- adds laravel-enso/enums
- adds
EnumServiceProvider - fixes email unique validation in user form validation
- removes duplicate trait use in UserGroup
- adds rememberable on UserGroup
- adds rememberable, avoids deletion conflicts and relations traits to User
- improves user and group form for easier customization
- removes versionings as a requirement
- updates
Upgradecommand for 3.4.0
data-export
- adds a chunk option in config for setting the default value
- updates policies: view, share, destroy
- upgrades box/spout to 3.0
- implements the new AuthorizesFileAccess
data-import
- small refactor
- updates contracts (beforehook, importable, afterhook) to receive the authenticated user as well
- adds laravel-enso/enums
- implements AuthorizesFileAccess contract
- updates policies: view, share, destroy
- upgrades box/spout to 3.0
- refactors exceptions
discussions
- small refactor
documents
- removed superfluous validation
- updates policies: view, share, destroy
- implements AuthorizesFileAccess
dynamic-methods (new)
- a set of traits that allow adding methods / relations / mutators / accessors in models from a local service provider
enums (new)
- Enso Enum was moved from laravel-enso/helpers in itw own package
- has an EnumServiceProvider that allows registering enums that are sent by the app state builder to the front-end. The provider can be extended in any package or locally
files
- greatly improves the authorizan strategy
- adds AuthorizesFileAccess contract
- adds an UploadPolicy for view, share and destroy
- refactors exceptions
forms
- removes deprecated
allow-filteringoption from meta - adds
paramsto meta for select fields - allows use of nested attributes
- refactors exceptions
helpers
- adds an optional precision for all methods in Decimals
- adds floor and ceil to Decimals
- fixes an edge case bug in Obj's filled method
- adds DatabaseSeederProgress and SeederProgress traits that allow displaying a progress bar in the seed process
- updates InCents to do floor on converting in cents
- removes Enum (now lies in its own package)
how-to
- small general refactor
- refactors exceptions
image-transformer
- refactors exceptions
io
- adds laravel-enso/enums
localisation
- refactors the
localisationkey tolanguage - renamed form & table (builders & templates)
- improves form for easier customization
- refactors exceptions
logs
- refactors exceptions
menus
- small refactor
- improves form for easier customization
notifications
- removes unused vars in notification
people
- improves form for easier customization
- adds AvoidsDeletionConflicts, Relations, Rememberable on Person
- adds laravel-enso/enums
- adds EnumServiceProvider
- adds bank and bank_account to the table's migration
- adds uid to $queryAttributes in Option
- removes people.php config file
permissions
- small refactor
- improves form for easier customization
rememberable
- cacheGet($id) now return null if the model does not exist in the database
roles
- adds rememberable on Role
- adds laravel-enso/enums
- improves form for easier customization
- refactors exceptions
searchable
- casts labels sent to the front-end as strings
- refactors Finder.php
- improves the logic in Search.php
select
- refactors the option builder
tables
- small refactor & cleanup of redundant logic
- refactores filters
- dtRowId is now configurable and defaults to "id"
- the box/spout dependency was upgraded to the v3 version
- adds/uses
laravel-enso/enums - now uses the Laravel 6 Arr class instead of the global helpers
- adds
modelprop in template for customizing the model - refactors exceptions
track-who
- improves resources logic
- refactors auth helper into facade
- fixes updatedByTest
teams
- team now uses rememberable
tutorials
- small refactor
- improvements to form customization
- adds/uses
laravel-enso/enums
versions (new)
- alternative package to versioning where the version is kept on the model vs using a separate table
versioning
- improves flow, optimizes queries, fixes N+1 problem
- addresses scenario where N+1 queries were being made by using $with
- renames versioning table to precede all other model migrations
Upgrade steps
Local project
- update in composer.json:
- require
- "laravel-enso/control-panel-api": "2.3.*", // optional, if you are using it
- "laravel-enso/core": "4.4.*",
- "laravel-enso/enums" "1.1.*",
- require-dev
- "codedungeon/phpunit-result-printer": "^0.26.0",
- "facade/ignition": "^1.4",
- "nunomaduro/collision": "^3.0",
- "phpunit/phpunit": "^8.0"
- require
- update in package.json
- "@enso-ui/accessories": "~1.1.0",
- "@enso-ui/bulma": "~1.2.0",
- "@enso-ui/forms": "~1.2.0",
- "@enso-ui/select": "~1.1.0",
- "@enso-ui/tables": "~1.1.0",
- "@enso-ui/ui": "~1.5.0",
- rename
structuremanagertest suite tocliin phpunit.xml - remove from the local
Usermodel theAddresses&Documentstraits - update the
CompanyFactorywith the one from the github repo (of course, retain any local additions if necessary) - update
enso/exports.php,enso/tables.php,laravolt/avatar.phpconfig files with the ones from the github repo - delete the
enso/people.php&enso/companies.phpdeprecated configs - make sure to refactor any customisation to the people / companies forms or tables using dependency injection / binding in your
AppServiceProvider. The old customization mechanisms which were using configs have been removed. - search and replace
LaravelEnso\Helpers\app\Classes\Enum=>LaravelEnso\Enums\app\Services\Enum - either refactor all table builders and remove the
dtRowIdalias for the id, or update your local table templates and add"dtRowId": "dtRowId" - make sure you inject
routein all the VueJS components where the helper is used. Search for "route()" in your resources folder and refactor - refactor any customizations to documents, uploads, imports, exports to make use of the
AuthorizesFileAccesscontract - update all importers and classes implementing the
BeforeHook,ImportableandAfterHookcontracts, as thebefore,runandaftermethod signatures have changed and a and$userparameter was added - add a
valueparameter to alldate-filtersorenso-date-filterscomponent use - if you are currently using the Versioning package, manually add it as a dependency in your composer.json under
require, as it was removed as a dependency from Core - run
php artisan enso:upgrade
Optional: - now you can register/add Enums directly from your packages, to the application state, b...
v3.3.6
Changes
front-end
datepicker
- adds support for readonly (acted as disabled before)
directives
- adds
v-long-clickdirective; should provide the duration when used (v-long-click:2000)
forms
- disables
dirtymonitoring whendisable-stateis used - adds
selfto the ready event; now the whole form component can be used as an object from the outside
select
- improves fetching / debouncing strategy
- adds a
selectionevent that returns option objects - fixes non string labels highlighing / matching
- fixed issue with matching when using non-lower case query string
tables
- shrinks default row text to
0.9em - adds support for cents
- adds support for
searchModes,searchMode
ui
- adds vuecal2 support; the calendar menu is still WiP
- fixes
numberFormatfilter to always display the specified digits - adds support for
font-awesome-layers-textcomponent; can be accesed under the global<falt/> - fixes a bug in bookmarks when trying to focus the bookmark before the page was mounted
- fixes default logo
uploader
- adds
open-file-browserevent
back-end
addresses
- adds tests
calendar
- adds reminders; still WiP
companies
- updates the form and table classes to allow easier extenting via service container
cli
- fixes stub for table builder
documents
- return a document resource from
Store.phpcontroller
forms
- adds tests
- adds support for
disable-filteringselect option
helpers
- adds
DateAttributestrait - adds
InCentstrait
history-tracker
- rewrites logic that handles tracked attributes
localisation
- fixes routes for
localisation:mergecommand
people
- updates the form and table classes to allow easier extenting via service container
ro-addresses
- adds an option resource
roles
- updates
warningtowarninenso:roles:synccommand
tables
- adds
searchMode/searchModesto allow full use of table indexing on huge tables - adds support for cents
- adds tests
- fixes search with multiple arguments on relations
- fixes max / min filters
versioning
- improves logic
- fixes error repoting
- fixes various edge case bugs
Upgrade steps
composer updatephp artisan enso:upgradeyarn upgrade && yarn
Enjoy!
v3.3.5
front-end
accessories
- adds an
iconsboolean prop to theAccessories.vuecomponent - improves
Document.vuefor long names - adds a
compactboolean prop forComments.vue - adds
disable-stateonEnsoForminAddressForm
card
- improves (reduces) card control spacing
datepicker
- adds Ukranian language support
filters
- fixes
IntervalFilter(now works withv-model=interval) &DateIntervalFilter
forms
- cascades
fetch(),setOriginal(),hideTab(),showTab()from the core component - adds a
ref="field"on the used form field component inFormField.vue - fixes vuex state handling => keeps a copy of the form data
- automatically hides tabs with empty sections
mixins
- adds a
files.jsmixin
select
- emits an
updateevent when a change is made from inside the component - fixes
fetch()cascading from the core component - allows multi argument search with highlighting matched
tables
- fixes custom totals
- adds support for nested attributes
ui
- fixes
.(dot) date separator handling - adds a
setPageTitleaction in store.js that handles page title & bookmark renaming - adds
hideFooter/showFootermutations inlayout.jsstore module - extracts
AvatarList.vuecomponent fromTeam.vue - fixes settings bar padding that was causing the appearance of a horizontal scroll in some cases
uploader
- adds a compact option
back-end
addresses, comments, discussions, documents
- fixes avatar loading for
TrackWhoresource - adds a
MorphOnerelation besides theMorphsMany - adds `UpdatesOnTouch
data-export
- adds missing imports in
ExcelExportservice
data-import
- changes sheet normalisation from camel case to snake case
- ignores empty rows on import
examples
- fixes
DateIntervalfilter use
files
- fixes avatar loading for
TrackWhoresource
helpers
- adds translation in
EnsoException - adds
AvoidsDeletionConflictsmodel trait => reportsConflictHttpExceptionwhen a model cannot be deleted due to DB restrictions - adds
MapsRequestKeysrequest validator => adds amapped()method to the request validator that maps the keys to snake case - adds
UpdatesOnTouchmodel that ensure that parent models trigger theupdatedevent when using theprotected $touchesproperty. Does that by rewritingModel'stouchOwners()method. - adds
Decimalsclass that exposes a set of static helpers for decimals operations / comparisons using bcmath
forms
- adds
hideSection($fieldName)/showSection($fieldName)&hideTab($tabName)/showTab($tabName)helpers for the form object
io
- fixes avatar loading for TrackWho
people
- adds missing
position&is_mainpivot information oncompany()&companies()relations
ro-addresses
- adds county
Optionscontroller & route
roles
- refactors the
Synccommand
select
- allows multi argument searching
- adds a
comparisonOperatoroption inselect.phpconfig - adds tests
tables
- refactors excel export to work with authenticated user (needed in some scopes)
- fixes interval filters (both date & non date)
- implements dependency injection for resolving the table class
- adds
searchableability for relations / nested attributes - adds
centsoption in meta that divides totals to 100, if the case
teams
- fixes n+1 query problem when loading resources in index controller
track-who
- refactors resource to enfore correct pre-loading of relations
ui
- fixes enums translations
versioning
- adds a
lockFor($version)method - refactors the trait
Upgrade
composer update && yarn upgrade && yarn