Skip to content

Releases: laravel-enso/enso

v4.6.0

26 Jan 14:49
02a958a
Compare
Choose a tag to compare

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 and Region

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", to composer.json
    • add "enso-ui/teams": "^2.0", to client/package.json
  • remove Broadcast::routes(); from app/Providers/BroadcastServiceProvider.php (like this)
  • update the Enso version to 4.6.0 in config/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

14 Dec 14:21
6f0e8f5
Compare
Choose a tag to compare

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 to shouldSend

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 of line()
  • 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 an expired scope which takes into account the configuration value for enso.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 to folder in savesToDisk 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 the file relation / model
  • renames visible scope to browsable, and forUser scope to for
  • removed the File model's path method
  • improved upload and attach flows
  • improved tests and adds attach file test
  • improved upgrade

helpers

  • refactor: renamed internal property name
  • changed static to self for morphSiblings array in the CascadesMorphMap trait
  • added the OptimalChunk service, extracted from tables

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 the enso: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 the enso: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 the Import 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:
    public function heading(): array 
    becomes
    public function heading(string $sheet): array
    public function query(): Builder
    becomes
    public function rows(string $sheet): array
    public function attributes(): array
    becomes
    ...
Read more

v4.4.0

13 Nov 16:17
63d2354
Compare
Choose a tag to compare

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; added datalabels 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 the ui package to the users 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 the ru.json file from the above commit into the local resources/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 in config/enso/config.php
  • as per every release, delete the old upgrades

v4.3.0

15 Oct 06:11
Compare
Choose a tag to compare

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 the autoload section
  • 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 in config/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 in RouteServiceProvider

v4.2.0

02 Oct 13:05
Compare
Choose a tag to compare

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 datepicker clear() 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 using due 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 the localities and postcodes tables
  • renamed township to township_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 from AppServiceProvider.
    Upgrades are now entirely handled by the laravel-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 to data_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 in HasFiles 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 to Structure
  • 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 the Stock model
  • small refactor
  • added a new StockUpdated event and a product emitStockUpdated 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 from OnDemand to SupplierStock
  • translated hardcoded text
  • added VueJS component for product prices
  • refactored code to fluent syntax in AuthServiceProvider
  • replace span with template in Price.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 using Rememberable
  • 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...
Read more

v4.1.0

31 Jul 08:36
641cf14
Compare
Choose a tag to compare

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 in AddressForm
  • added street to postcode
  • added isBilling & isShipping to AddressCard; updated Addresses
  • reordered fields in address form according to template
  • added form payload to the form-loaded event

bulma

  • exported form field group
  • fixed export

categories

  • added level maxNestingLevel property and level method in CategoryTree.vue
  • improved logic
  • fixed dragging and nesting
  • fixed max level validation error display

commercial (private)

  • updated FormContent due to supplier_number to supplier_order_reference refactor

companies

  • fixed company type in Edit.vue

data-import

  • added new Params, String, Date, CustomSelect and Boolean components
  • uses the new Params component in Index.vue
  • small clean up

datepicker

  • fixed disabled property in CoreDatepicker

dropdown

  • added show() method

emag (private)

  • updated due to emag_number to client_order_reference refactor

forms

  • added form-field-group field for has-addons or is-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() and hide() methods in EnsoSelect and VueSelect 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 & regions
  • updated timestamps
  • removed unused StateSeeder
  • improved seeders logic
  • added street to postcode
  • added is_billing and is_shipping
  • added casts
  • updated factory & migration
  • added is_billing and is_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 and toggleShipping
  • 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 and flatten methods
  • added flattenCurrentAndBelow
  • added test
  • renamed publishing tag from categories-factories to categories-factory

cli

  • added type for migration

commercial (private)

  • renamed supplier_number to supplier_order_reference
  • replaced index()->unique() with unique() 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 add is_billing and is_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; updated ExcelSeeder

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 and visibility method in Columns 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 update ControlPanelApiSeeder: 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>
  • 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 in config/enso/config.php

v4.0.1

15 Jul 14:33
bf85b6d
Compare
Choose a tag to compare

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 to 488

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 with setUser
  • sale now uses the Methods trait; fixed the Person 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 with setUser
  • fixed comment spacing

discounts (private)

  • fixed redirect on delete bug; fixed model import after refactor

financials (private)

  • added new InvoiceableEntity exception
  • updated number type form unsignedInteger to string 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 updated AppServiceProvider

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 with setUser
  • fixes mail driver

teams

  • fixed namespaces in AppServiceProvider and Teams

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 to Auth::setUser($user) due to sanctum addition
  • remove 'throttle:60,1' from App\Http\Kernel
  • replace tables.export.notifications email to mail
  • upgrade "animate.css": "^4.0.0" in package.json
  • update in enso.scss animate import to animate.compat.css instead of animate.css
  • update MAILGUN_ENDPOINT in your .env files to api.mailgun.net instead of api.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

09 Jul 07:01
Compare
Choose a tag to compare

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 and documents
  • removed App from namespace

addresses (new)

  • created new addresses package, subtracted from the accessories

bulma

  • added the new addresses, comments, discussions and documents 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 the accessories

commercial (private)

  • added the comments, documents packages as dependencies
  • removed App from namespace

companies

  • added the addresses package as dependency
  • removed comments, discussions and documents 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 the accessories
  • removed App from namespace

documents (new)

  • created new documents package subtracted from the accessories

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 new toastr

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 by v-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 to webview
  • added generate token to user and checks for access permission
  • added RevealPassword component in AuthForm
  • 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 the setPageTitle 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 of img in Operation 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, the address() 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 to api

categories

  • improved config
  • removed unused AuthServiceProvider
  • added Abilities trait in model and removes Relations
  • 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 with Statuses
  • replaced web middleware group with api
  • renamed obs to notes
  • 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 of App\Http\Controllers\Controller
  • fixed style
  • added FilterRequest in ValidateApplicationRequest
  • updated Application update controller to except token field from request

control-panel-api

  • changed token to sanctum
  • fixed conflicting routes
  • added seeder for generating monitoring user
  • changed web middleware to api
  • moved database to root

control-panel-common

  • updated codacy badge

core

  • added sanctum, new tests and authorization key to cookie
  • renamed is-webview to webview
  • added EnsureFrontendRequestsAreStateful for webview
  • added new mapMorph
  • refactored services into controller
  • added api group & monitoring user
  • added route & refactor control panel
  • changed web middleware to api
  • updated relations
  • removed activity-log, tutorials, how-to dependencies.
  • renamed obs to notes
  • added rename migration upgrade

countries

  • changed web middleware to api

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 to api

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 to api
  • updated relation
  • updated codacy badge
  • fixed namespaces
  • renamed publicPath to storagePath
  • 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 to api
  • 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 updated IOObserver

localisation

  • changed web middleware to api

logs

  • replaced web middleware group with api for sanctum
  • fixed helpers services namespace

measurement-units

  • changed web middleware to api
  • renamed migrations

menus

  • changed web middleware to api

notifications

  • changed web middleware to api
  • updated codacy badge

pdf

  • 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...
Read more

v3.9.5

26 Jun 09:19
22c91af
Compare
Choose a tag to compare

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 in RowLine to use the new laravel-validation package

contracts (private)

  • updated Card component to use the User resource format for avatar
  • uses Avatar component instead of img in Card.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 in InputField

inventory (private)

  • added laravel-validation as dependency

laravel-validation (new)

  • new package that contains an Errors class that maps on the Laravel ValidationException 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 and Labels 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 in AvatarList

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 in AuthForm

webshop (new) (private)

wysiwyg

  • updated eslint

back-end

activity-log

  • updated Timeline response to use User resource instead of TrackWho

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 to recursiveParent
  • 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 use User resource instead of TrackWho

core

  • added products and localize upgrade
  • updated LoginController to use ValidationException instead of Authentication
  • fixed ValidatePasswordRequest and ForgotPasswordController

countries

  • added region label model helper

discussions

  • updated resources to use User resource instead of TrackWho

documentation

  • updated documentation for categories and products

dynamic-methods

  • added scope support

files

  • updated File resource to use User resource instead of TrackWho
  • added new publicPath method in trait & contract

io

  • updated IO resource to use User resource instead of TrackWho

measurement-units

  • renamed UNITS constant from seeder to Units

permissions

  • improved permissions types, added Permission resource

products

  • added html_description, dynamic scopes to product and dynamic relations to category
  • removed unused hasMappedProducts and adds manufacturedProducts for companies

roles

  • improved roles validation
  • uses resource in permission tree

tables

  • fixed export edge case
  • updated Enum.php

teams

  • updated Team resource to use User resource instead of TrackWho

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 from enso-ui/forms to it's own package enso-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 in package.json

3.9.4

25 May 06:51
a5468f8
Compare
Choose a tag to compare

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 of due date

inventory

  • updated the bundled products index sample page
  • switched from using the RoAddresses component to using the Addresses 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 key enso.files.paths.testing
    has been updated to enso.files.testingFolder
  • the Avatar model now uses the CascadesMorphMap trait
  • morphMap is now used for the Avatar model

calendar

  • renamed notification template and updated button color

categories

  • added a hasChildren scope and an isParent helper method on the Category 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 to core-assets
  • added a FilesIndex upgrade service that attempts to set and unique index
    on the files 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: the Company model now uses the CascadesMorphMap trait

comments

  • added controller for customizing taggable users
  • the Comment model now uses the CascadesMorphMap trait

countries

  • added the Relations trait on the model, so it can support dynamic relationships

data-export

  • refactored to use mapMorphs: the DataExport model now uses the CascadesMorphMap 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 the Document model
  • the request validator now uses the TransformMorphMap trait
  • the Document model now uses the CascadesMorphMap trait
  • morphMap is now used for the Document model

discussions

  • the request validator now implements the TransformsMorphMap interface
  • refactored to use mapMorphs: the Discussion model now uses the CascadesMorphMap trait

files

  • refactored the paths config: now attachable models should have a $folder property or a folder() method
  • updated the Files test folder references as the config key enso.files.paths.testing
    has been updated to enso.files.testingFolder
  • added handling logic for tests within the HasFile folder() method
  • refactored to use mapMorphs: the Upload model now uses the CascadesMorphMap 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 the financials package
  • improves MapsRequestKeys trait
  • added morphMapKey() method to the CascadesMorphMap trait which determines the model's morph map key
  • added the TransformMorphMap trait

how-to

  • refactored to use mapMorphs: the Video model now uses the CascadesMorphMap trait

localisation

  • updated language resources
  • fixed some bugs found when adding keys
  • renamed localisation-lang-files tag into enso-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: added CascadesMorphMap on the Person model
  • optimizes the company() helper query
  • person now touches user on each edit

products

  • added name and part_number to the options builder $queryAttributes variable
  • the Picture model now implements AuthorizesFileAccess 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 the VatRates from the Helpers 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 is true
  • 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 using Relation::morphMap(...)
    and short keys instea...
Read more