Laravel Vue SPA, Bulma themed. For demo login use `[email protected]` & `password` -

Overview

Laravel Enso

StyleCI Backers on Open Collective Sponsors on Open Collective Github Issues Build Status GitHub language count GitHub GitHub tag (latest by date) GitHub Release Date GitHub commits since latest release

Hit the ground running when building your new Laravel SPA project with boilerplate and extra functionality out of the box!

 

Watch the demo

click on the photo to view a short demo in compatible browsers

Important

If you are using this project please consult the changelog on every update.

Official Documentation

The documentation is available here split into backend and frontend. Note that most sections have short demo clips.

Take It For A Spin

You may try out a live demo installation by visiting laravel-enso.com and logging in with [email protected] and password.

Installation Steps

  1. Download the project with git clone https://github.com/laravel-enso/enso.git --depth 1

  2. Within the project folder run composer install

  3. Create a database for your site (see the Laravel database documentation), copy or rename the .env.example file to .env, edit the database configuration information, and run php artisan key:generate

  4. In order to serve the back-end API, take a look at the Local Development Server section of the Laravel installation documentation and consider using Valet for a better experience

  5. Run php artisan migrate --seed

  6. Open the client folder, copy the .env.example file, save it as .env and set the URL for the back-end API (which you've configured at step 4)

  7. Run yarn && yarn build

  8. Launch the site and log into the project with user: [email protected], password: password

  9. For live reload / hot module replacement functionality run yarn serve

  10. (optional) Setup the configuration files as needed, in config/enso/*.php

Enjoy!

Support services (new)

While developing Enso, we constantly received private inquiries from devs and teams asking us about paid support. Some of these requests even lead to fruitful collaborations, so we finally decided to launch such an option.

If you're looking for premium support when building applications with Enso we can help you with that. Our support packages start at 480 Eur / month with 8 hours included. With premium support you will get:

  • a private repo on our self hosted gitlab instance where you can host your project
  • priority in addressing your issues
  • help with understanding the Enso environment
  • getting you to be proficient when developing on Enso
  • mentoring
  • code reviews
  • general advice & support on Laravel & Vue
  • assistance on Enso version upgrades
  • up to 4 hours / month of remote desktop sessions and call conferences with your team
  • direct communication via Slack during our office hours

The support services are provided by a team of 4 members.

Thanks

Built with with ❤️ , crafted on Laravel 5.6.x, Bulma 0.6.x, Vuejs 2.5.x and:

Vue Router, Vuex, Axios, Font awesome 5, Animate.css, Bulma-Extensions, Driver.js, Chart.js, Flatpickr,

Special thanks to Taylor Otwell, Jeffrey Way, Evan You and Jeremy Thomas.

Contributions

are welcome. Pull requests are great, but issues are good too.

Sponsor (new)

This project is backed by Earthlink

Contributors

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

License

This package is released under the MIT license.

Comments
  • White screen

    White screen

    Hello!

    I have cloned this project and followed install steps but I only have a white screen. Debugbar dont throw any info.

    How I can proceed to solve it?

    My repository is here: https://github.com/jjmontalban/Enso

    Any advice will be well received

    Best regards!

    opened by jjmontalban 25
  • Add replace note about date-fns & rewording for v3.0.0 changelog

    Add replace note about date-fns & rewording for v3.0.0 changelog

    Add replace note about date-fns move (used for custom components & in "transition" state for resources/js/components/enso

    note: marking as draft pull until fully upgraded, to group all further missing changes/notes here. (almost through everything though, so I don't expect anything more significant missing from the changelog/upgrade steps)

    opened by jlsjonas 18
  • Meta information missing after update to 2.3.x

    Meta information missing after update to 2.3.x

    Hi, I'm facing problems with meta information after updating to 2.3.x version. In particular, meta.appName is blank and I'm getting authentication errors related to CSRF token (this is the message gotten after a successful authentication: "can't assign to property "csrfToken in enso.js line 323").

    From where can I set meta tags? Thanks

    opened by cosimolemma 17
  • Icon in custom renderer

    Icon in custom renderer

    I have a table where I use a renderer for a column. The renderer is defined as:

    customRender(row, column) {
    	            switch (column.name) {
    		            case 'document_url':
    		                return row[column.name] ? `<a href="${row[column.name]}" target="_blank" class="button is-small is-table-button is-primary"><span class="icon is-small"><fa icon="cloud-upload-alt"></fa></span>`
    		                    : ``;
    		            default:
    		                toastr.warning(`render for column ${column.name} is not defined.`);
    		                return this.__(row[column.name]);
    	            }
    	        }
    

    At the moment the icon is not displayed correctly (and in dom its still <fa icon="cloud-upload-alt"></fa> instead of svg tag.

    If I use the icon anywhere else on the same page it works (means it is imported correctly)

    opened by mauthi 15
  • Finally got it working but I am unable to login

    Finally got it working but I am unable to login

    I am attempting to login using the [email protected] and password credentials. I seeded my tables and I see the entry on the users table for [email protected].

    Nothing happens after I hit Login.

    My URL for testing Enzo SPA is: http://admin.digihometour.com/login

    documentation 
    opened by gabrielfigueroa 14
  • yarn - error

    yarn - error

    Output: ERROR Failed to apply patch for package bulma-rtl

    This happened because the patch file patches\bulma-rtl+0.7.1.patch could not be parsed.

    If you just upgraded patch-package, you can try running:

    cd patches\bulma-rtl+0.7.1.patc
    patch -p1 -i h
    npx patch-package bulma-rtl
    cd ../..
    

    Otherwise, try manually creating the patch file again.

    If the problem persists, please submit a bug report:

    https://github.com/ds300/patch-package/issues/new?title=Patch+file+parse+error&body=%3CPlease+attach+the+patch+file+in+question%3E
    

    error Command failed with exit code 1. child_process.js:650 throw err; ^

    Error: Command failed: yarn run postinstall

    ERROR Failed to apply patch for package bulma-rtl

    This happened because the patch file patches\bulma-rtl+0.7.1.patch could not be parsed.

    If you just upgraded patch-package, you can try running:

    cd patches\bulma-rtl+0.7.1.patc
    patch -p1 -i h
    npx patch-package bulma-rtl
    cd ../..
    

    Otherwise, try manually creating the patch file again.

    If the problem persists, please submit a bug report:

    https://github.com/ds300/patch-package/issues/new?title=Patch+file+parse+error&body=%3CPlease+attach+the+patch+file+in+question%3E
    

    error Command failed with exit code 1.

    at checkExecSyncError (child_process.js:607:13)
    at execSync (child_process.js:647:13)
    at Object.<anonymous> (D:\paradox\Programming\OpenServer\domains\enso\CLIENT\node_modules\postinstall-postinstall\run.js:15:5)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    
    opened by arankar 13
  •  feature request : Tailwindcss theme

    feature request : Tailwindcss theme

    This is a feature request.

    Prerequisites

    • [X] Are you running the latest version?
    • [X] Are you reporting to the correct repository? (enso is made of many specialized packages: https://github.com/laravel-enso)
    • [X] Did you check the documentation?
    • [X] Did you perform a cursory search?

    Description

    tailwindcss theme output

    a clone of the current bulma theme using tailwind

    this theme is using TailwindCss V1.0.0-beta4, so it will be ready for the final verstion with this configurations, only to keep the look

    this is only a mockup using Vue and tailwindcss to divide it for each enso component, so it will be easy to add it.

    const defaultTheme = require("tailwindcss/defaultTheme");
    
    module.exports = {
      theme: {
        // Some useful comment
        extend: {
          colors: {
            white: {
              default: "#ffffff",
              smoke: "#f5f5f5"
            },
            gray: {
              ...defaultTheme.colors.gray,
              290: "#4a4a4a",
              480: "#7a7a7a",
              860: "#dbdbdb"
            },
            blue: {
              ...defaultTheme.colors.blue,
              450: "#3273dc"
            },
            green: {
              ...defaultTheme.colors.green,
              450: "#23d160"
            }
          },
          fontFamily: {
            enso: ["Montserrat", "sans-serif"]
          },
          height: {
            13: "3.25rem"
          },
          inset: {
            13: "3.25rem"
          },
          boxShadow: {
            bnavbar: "0 1px 1px rgba(10, 10, 10, 0.35)",
            bbookmarks: "0 1px 1px rgba(10, 10, 10, 0.2)",
            bsidebar: "0 2px 3px rgba(10, 10, 10, 0.35)"
          }
        }
      },
    };
    
    

    if there is an other idea for a different theme, i can change it. if its ok, i can start merging it with enso and make a PR.

    ps: there is no :bug: https://github.com/laravel-enso/Enso/issues/125#issue-348854265

    opened by YacoubBelaoura 13
  • Themes

    Themes

    This is a question.

    Prerequisites

    • [x] Are you running the latest version?
    • [x] Are you reporting to the correct repository? (enso is made of many specialized packages: https://github.com/laravel-enso)
    • [x] Did you check the documentation?
    • [x] Did you perform a cursory search?

    Description

    I use an own custom theme. In general everything works like expected but I have 2 questions:

    1. How is the default theme for login choosen? I deleted/commented every occurence of light/dark theme in code but still the light theme and not my default is choosen (after deleting cache and everything). If I log in and out my custom theme is choosen for login screen. I also set the theme in index.blade.php
    2. What's the source for theme selector (...mapState('layout', ['themes']),). The light/dark selector is shown in my app (what means that more than one theme is available)
    question 
    opened by mauthi 13
  • Faulty vendor:publish command

    Faulty vendor:publish command

    This is a bug.

    Prerequisites

    • [x] Are you running the latest version?
    • [x] Are you reporting to the correct repository? (enso is made of many specialized packages: https://github.com/laravel-enso)
    • [x] Did you check the documentation?
    • [x] Did you perform a cursory search?

    Description

    image

    Steps to Reproduce

    1. Upgrade to 11.12[.2]
    2. Follow CHANGELOG.md upgrade steps (maybe related to #152? couldn't find anything to change as we didn't extend applicable packages yet; except for core usage of them)
    3. Log in, note a blank menu & above errors

    Expected behavior

    App to work

    Actual behavior

    Enso-part of app mostly non-functional (blank menu, notification menu broken, ...)

    opened by jlsjonas 13
  • Errors after fontawsome icon update

    Errors after fontawsome icon update

    I did the icon update as described but as you can see in screenshots not all icons are working. Some are for my new menu items this is ok, I have to change them manually but some are from the default items like tachometer in dashboard.

    screenshot 2018-01-24 18 47 20 screenshot 2018-01-24 18 47 15

    Did I forgot something? Additionally the spaces between the cards are also missing. This can be a problem in combination with the missing icons?

    opened by mauthi 13
  • Can't get yarn serve running

    Can't get yarn serve running

    This is a bug.

    Prerequisites

    • [x] Are you running the latest version?
    • [x] Are you reporting to the correct repository? (enso is made of many specialized packages: https://github.com/laravel-enso)
    • [x] Did you check the documentation?
    • [x] Did you perform a cursory search?

    Description

    I use the following config:

    • I run laravel enso in docker
    • I mapped port 8001 to 8080 in docker
    • I access laravel enso with http://localhost:8001/login
    • In my .env File in client folder I defined API_URL=http://localhost:8001/

    Expected behavior

    Browser should show login screen after calling http://localhost:8001/login

    Actual behavior

    I get the following error for: http://localhost:8001/api/meta Proxy error: Could not proxy request /api/meta from localhost:8001 to http://localhost:8080/ (ECONNRESET).

    opened by mauthi 12
  • Bump tinymce from 5.10.3 to 5.10.7 in /client

    Bump tinymce from 5.10.3 to 5.10.7 in /client

    Bumps tinymce from 5.10.3 to 5.10.7.

    Changelog

    Sourced from tinymce's changelog.

    5.10.7 - 2022-12-06

    Fixed

    • HTML in messages for the WindowManager.alert and WindowManager.confirm APIs were not properly sanitized. #TINY-3548

    5.10.6 - 2022-10-19

    Fixed

    • The name and id attributes of some elements were incorrectly removed during serialization #TINY-8773
    • Notifications would not properly reposition when toggling fullscreen mode #TINY-8701
    • Toggling fullscreen mode with the fullscreen plugin now also fires the ResizeEditor event #TINY-8701
    • The URL detection used for autolink and smart paste didn't work if a path segment contained valid characters such as ! and : #TINY-8069

    5.10.5 - 2022-05-25

    Fixed

    • Base64 data URIs were not extracted correctly during parsing when proceeded by data: text #TINY-8646
    • Empty lines that were formatted in a ranged selection using the format_empty_lines option were not kept in the serialized content #TINY-8639
    • The s element was missing from the default schema text inline elements #TINY-8639
    • Some text inline elements specified via the schema were not removed when empty by default #TINY-8639

    5.10.4 - 2022-04-27

    Fixed

    • Inline toolbars flickered when switching between editors #TINY-8594
    • Multiple inline toolbars were shown if focused too quickly #TINY-8503
    Commits
    • a4c4e46 TINY-9402: Prepare for TinyMCE 5.10.7 release (take 3) (#8331)
    • 0fea476 TINY-9402: Prepare for TinyMCE 5.10.7 release (#8328)
    • 8bb2d26 Merge pull request from GHSA-gg8r-xjwq-4w92
    • 78fa310 TINY-8885: Update changelog for 5.10.6 release (#8198)
    • 5421ec9 TINY-9219: Fix broken tests on Firefox (#8158)
    • 70f8c28 TINY-8979: Backport URL link detection fix (#8127)
    • 4e102c0 TINY-8978: Backport fix for notifications in fullscreen (#8121)
    • a0ae700 TINY-8773: Prevent stripping of "name" and "id" attributes on iframe and img ...
    • 29e04bb TINY-8622: Updated changelog for 5.10.5 release (#7848)
    • f3ab303 TINY-8639: Retain formatted blank lines when format_empty_lines is true (ba...
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by tinymce, a new releaser for tinymce since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /client

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /client

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Logout does not do anything if session is expired.

    Logout does not do anything if session is expired.

    This is a bug.

    Prerequisites

    • [x] Are you running the latest version?
    • [x] Are you reporting to the correct repository? (enso is made of many specialized packages: https://github.com/laravel-enso)
    • [x] Did you check the documentation?
    • [x] Did you perform a cursory search?

    Description

    • Login to https://www.laravel-enso.com/
    • Clear your cookies.
    • Logout.

    Expected result: redirect to login page. Actual result: nothing happens.

    Note: If you click on another menu, it will redirect to login.

    opened by robbykrlos 0
  • Bump terser from 4.8.0 to 4.8.1 in /client

    Bump terser from 4.8.0 to 4.8.1 in /client

    Bumps terser from 4.8.0 to 4.8.1.

    Changelog

    Sourced from terser's changelog.

    v4.8.1 (backport)

    • Security fix for RegExps that should not be evaluated (regexp DDOS)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • composer.json loose version match - PHP 8.1 forced upgrade.

    composer.json loose version match - PHP 8.1 forced upgrade.

    This is a bug.

    Hi,

    You have set a while ago a composer.json dependency for

            "symfony/http-client": "^6.0",
            "symfony/mailgun-mailer": "^6.0"
    

    Which at that time was matching with version 6.0.X which was required PHP >=8.0.

    Both http-client and mailgun-mailer have released 6.1.X which bumped PHP requirements to >=8.1

    Now, upgrading (late) to Laravel-enso 5.0.0 will force (due to these 2 dependencies) an upgrade to 8.1, or force user investigate which dependencies are asking for the upgrade, and try lowering the versions to a compatible version.

    In our case we went for

            "symfony/http-client": "6.0.*",
            "symfony/mailgun-mailer": "6.0.*"
    
    opened by robbykrlos 2
  • FontAwesome 6.1.1 - upgrade.

    FontAwesome 6.1.1 - upgrade.

    This is a feature request.

    Prerequisites

    • [x] Are you running the latest version?
    • [x] Are you reporting to the correct repository? (enso is made of many specialized packages: https://github.com/laravel-enso)
    • [x] Did you check the documentation?
    • [x] Did you perform a cursory search?

    Description

    Any plans on upgrading to FA6? I've updated to 6 locally, but Enso still has dependencies in some modules with 5.13...

    Thanks!

    opened by robbykrlos 2
Releases(5.0.0)
  • 5.0.0(Mar 11, 2022)

    5.0.0

    This breaking release brings the new Enso file system and upgrades all packages to Laravel 9.

    The old filesystem was pretty basic and has been upgraded to something more robust by replacing the usage of polymorphic relationships with regular foreign keys (models that were using the HasFile trait now have a file relationship through a file_id column) with more features (such as favorite files) as well leaving room for future functionality.

    We've taken advantage of the breaking version state, included other small changes from our backlog and made a slight change to the mechanism for locally extending package forms and tables.

    Due to these changes, most packages have had a refactor and dependency list upgrade.

    Front-end

    clipboard

    • updated clipboard size

    confirmation

    • removed unneded v-bind from dropdown

    directives

    • improved clickOutside.js

    documents

    • removed Document.vue component, now we use File.vue instead

    files

    • major refactor in order to work with the new file system back-end changes
    • several fixes & enhancements
    • added edit ability for file name

    how-to

    • fixed uploader

    mixins

    • improved ensoFile.js, now it's constructor receives a File resource instead of a filename

    notifications

    • fixed transition group

    tables

    • cascades reset method
    • implemented number formatting for nested columns

    themes

    • fixed confirmation; removes duplicated & deprecated classes

    ui

    • added avatarKey in store
    • made content relative in default layout
    • improved websockets

    uploader

    • cascades slot in enso-uploader
    • small refactor

    users

    • fixed uploader
    • fixed v-click-outside related bug on profile control
    • improved Avatar.vue
    • added Url component

    back-end

    All packages have been updated with regards to:

    • aligning Form builder, Table builder & Form request validation classes naming conventions, by dropping superfluous prefixes.

    • when extending forms, rather than overriding the protected constant TemplatePath (which has now become private), we've added a protected method templatePath() that is used in the forms' constructor. When extending any form builders, you should override this method if you want to use another form template.

    • when extending tables, note that the protected constant TemplatePath has now become private, and we've updated the public method templatePath(). When extending any table builders, you should override this method if you want to use another table template.

    • due to the major files refactor, all packages that use files have been updated. FileServiceProvider file has been deleted and also removed form composer files.

    • the new file system impact has also led to the need of changing the initial order of migrations. For this change it already exists an upgrade, but you should take a note that a lot of package migrations have been renamed.

    • all migrations have been upgraded in order to return an anonymous class by the new Laravel 9 style. This way we can avoid class name collision.

    • an important note is that the old DataImport and DataExport models have been renamed to Import and Export, respectively.

    action-logger

    • updated migration style

    addresses

    • fixed seeders path
    • updated migration classes

    api

    • no longer sends empty request body
    • fixed api calls
    • added query parameters interface

    avatars

    • refactor for the new file system
    • updated migrations

    calendar

    • updated migrations

    cli

    • fixed synthax error in Exceptions/WriterProvider.php
    • fixed template path generation for forms and tables

    comments

    • updated migrations

    companies

    • fixed seeders path
    • updated migrations

    control-panel-api

    • fixed seeders path
    • updated migrations

    core

    • fixed seeders path
    • updated Preference rememberable keys
    • fixed password validation when resetting password and email is missing

    countries

    • updated eea for United Kingdom
    • fixed seeders path
    • updated migrations

    data-export

    • refactor for the new file system
    • updated migrations
    • renamed DataExport model to Export

    data-import

    • switched order for authenticate / authorize
    • refactor for the new file system
    • updated migrations
    • renamed DataImport model to Import
    • the excel seeder has been updated, please see upgrade steps regarding this change

    documents

    • refactor for the new file system
    • updated migrations

    files

    The file system has been significantly improved and has received a lot of new features, such as:

    • switched polymorphic relations to one to one
    • updated migrations
    • a much more user friendly interface
    • added edit ability for file name
    • temporary link generation for 5 minutes, 1 hour or 24 hours
    • improved inline preview
    • allows the transformation of private files into public files and vice versa

    filters

    • fixed "doesntContain" search mode

    google

    • updated migrations

    helpers

    • small refactor

    how-to

    • refactor for the new file system
    • updated migrations

    impersonate

    • updated migration;

    localisation

    • added the Full Name key and RO translation
    • fixed seeders path
    • updated migrations
    • the localisation files have been moved from resources/lang directory to lang directory

    menus

    • updated migrations

    notifications

    • updated migrations
    • updated pusher dependency

    pdf

    • updated laravel snappy
    • added output() to Pdf
    • added return types

    people

    • updated migrations

    permissions

    • updated migrations

    roles

    • updated migrations

    tables

    • added the possibility to conditionally return a table builder using the tableClass($request) method in addition to the $tableClass property, used in the table related controllers (init, data, excel)
    • fixed resource collection computor
    • refactor for the new file system
    • implemented number and date formating for nested columns from loaded relationships

    tasks

    • updated migrations

    tutorials

    • updated migrations

    user-groups

    • fixed seeders path

    users

    • fixed seeders path
    • changed user defaultPreferences visibility to protected
    • updated migrations
    • updated user preferences to use cache

    Private Packages

    webshop-commercial

    • updated migration
    • refactor for the new file system

    webshop

    • rebuilt assets
    • updated registration form label for name to Full Name
    • added default for sorting in order to address bot caching of deprecated URLs
    • fixed seeders path
    • updated migrations
    • removed services as dependency
    • refactor for the new file system

    emag

    • added missing branch from the UpdateStock listener; small job rename
    • offer now uses dynamic methods
    • added conditional trim
    • added new Offer::valid scope
    • added logic to delete awbs after download
    • fixed Job location;
    • updated migrations

    hr

    • fixed seeders path
    • updated migrations

    projects

    • fixed seeders path
    • updated migrations

    contracts

    • updated migrations

    commercial

    • updated the UpdateStockValues due to supllier pivot refactor
    • shipping address is optional on store orders
    • added fix for missing address
    • made supplier query more specific
    • added requests
    • fixed issue due to product_supplier pivot id
    • updated migrations
    • refactor for the new file system

    financials

    • updated migrations
    • refactor for the new file system

    inventory

    • bundlePacking cleanup
    • added withAvailable scope on Product
    • updated migrations

    discounts

    • updated migrations

    wiki

    • updated migrations
    • refactor for the new file system

    frisbo

    • fixed seeders path
    • updated migrations

    stripe

    • updated migration

    eav

    • adds publish method AppServiceProvider
    • simplified eav validation
    • removed unused model
    • added default for validator, when eav params payload is missing
    • updated migrations

    sale-channels

    • updated migrations

    product-eav

    • fixed eav syncing
    • simplified logic; removed attribute id from values pivot
    • added missing model
    • fixed table PK
    • added default for eav sync / Update
    • fixed the getEav dynamic; transformed the $product->attributes() dynamic relationship into a method
    • updated migration
    • fixes import

    Upgrade steps

    First and foremost, be sure the to read the official Laravel 9 upgrade guide to understand all implications.

    • before starting to upgrade your project, please read with attention the following step:

    Due to the major files package refactor, all the Enso package classes using files will be updated accordingly.

    • publish the updated files config with php artisan vendor:publish --tag=files-config --force

    • add your local models using files under the upgrade key. The syntax is: old attachable_type name => Model::class.

    • if having several models stored under the same folder, then that folder name should be added under the nonStandardFolders key, so that the files could be migrated according to the new convention. The new convention is that the folder will be named as the model, written camelCase.

    • if you also want to rename your folder, you'll need to specify the name change under renameFolders key, as 'old name' => 'new name'.

    • for all models using files, update your migrations by adding file_id foreign key.

    $table->unsignedBigInteger('file_id')->nullable();
    $table->foreign('file_id')->references('id')->on('files')
        ->onUpdate('restrict')->onDelete('restrict');
    
    • if using the ensoFile.js mixin locally, when instantiating the class, you should pass a file resource object instead of a filename string

    • if you're sending email notifications with mailgun and inline attaching pdf files created with the LaravelEnso\Pdf\Services\Pdf service, you need to use ->output() method:

      ...
      ->attachData($invoice->output(), $this->filename());
      ...
      
    • if locally customizing Enso package form builders and providing another template file, while not customizing the constructor, you should

      • change the protected const TemplatePath = ... visibility to private
      • override the parent's templatePath() method:
      protected function templatePath(): string
      {
          return self::TemplatePath;
      }
      
    • if locally customizing Enso package table builders and providing another template file, you should

      • change the protected const TemplatePath = ... visibility to private
      • override the parent's templatePath() method:
    public function templatePath(): string
        {
            return self::TemplatePath;
        }
    
    • if locally extending any table builder classes, check your imports as names may have changed. Make sure to also check within your app service providers

    • if locally extending any request validation classes, check your imports as names may have changed. Make sure to check within your app service providers

    • note that the DataImport and DataExport models have been renamed to Import and Export. You should updated your imports accordingly.

    • upgrade all package dependencies to their latest version

    • if using mailgun, make sure to require symfony/mailgun-mailer and symfony/http-client by using composer require symfony/mailgun-mailer symfony/http-client

    • update your config files, .gitignore, Middleware classes, Providers, Exceptions/Handler.php and Http/Kernel.php by following this merge request as an example https://github.com/laravel-enso/enso/pull/417/files

    • refactor your local excel seeders by implementing the following methods

        protected function type(): string // If the $type property is overwritten
        {
            return $this->type;
        }
    
        protected function filename(): string
        {
            return $this->filename;
        }
    
    
    • if you need to customize the select options sort method, you can do so by publishing the select config using php artisan vendor:publish --tag=select-config --force and updating the sortByOptions key as needed.

    • update your DatabaseSeeder by adding LaravelEnso\Files\Database\Seeders\TypeSeeder before UserSeeder

    • if using phpinsights, note that there was a bug https://github.com/nunomaduro/phpinsights/issues/565. The bug was fixed, but not tagged, so you need to update your dependency to "nunomaduro/phpinsights": "dev-master",

    • note that all all migrations have been upgraded in order to return an anonymous class by the new Laravel 9 style.

    • update the Enso version to 5.0.0 in config/enso/config.php

    • run composer update in the project's root

    • run yarn, yarn upgrade && yarn in /client 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

    • php artisan enso:upgrade --manual

    • make sure permissions are properly configured for each role and then save/refresh the roles configuration files

    • as per every release, delete any local, deprecated upgrades

    Source code(tar.gz)
    Source code(zip)
  • 4.9.1(Jan 31, 2022)

    4.9.1

    This minor release aims to update front-end packages to use the latest bulma syntax. It also includes many improvements and bug fixes.

    Front-end

    auth

    • fixed password confirmation bug

    data-import

    • added support for template params options in addition to source

    directives

    • simplified, improved performance & code readability of v-click-outside

    io

    • updated navbar-item use

    notifications

    • updated navbar-item use

    roles

    • improved configure.vue info

    tables

    • fixed bug affecting preferences saving caused by the vue3 ugrade

    tasks

    • updated navbar-item use

    themes

    • several deprecated helper classes such as has-margin-small, has-padding-small and their derivates have been removed
    • [v-cloak] & *:focus styling is included within the package
    • since v-tooltip is globally available, its css is loaded within the themes package

    ui

    • fixed dynamic navbar component registration rendering
    • improved navbar-item; added show, hide and touch events

    users

    • fixed navbar avatar on safari

    back-end

    core

    8ee62af updated meta: removed csrf token

    countries

    b4bc27f updates eea for United Kingdom

    data-import

    • added template params options support

    permissions

    • added short name in permission resource

    users

    • fixed user preferences reset
    • changed the User storePreferences method visibility to public

    Private packages

    webshop

    • removed deprecated css classes
    • updated searchable array to use the visibleOnWebshop dynamic

    emag

    • added check for response error

    commercial

    • added validation on external fulfilment
    • fixed typo

    wiki

    • removed deprecated css classes

    Upgrade steps

    • if you're still using the deprecated css which have now been removed, you should update:

      • has-vertically-centered-content to is-flex is-align-items-center

      • has-margin-auto to ma

      • has-margin-xxx, has-padding-xxx and their derivates (top, left, etc) to their corresponding bulma counterparts (m-1, m-2, ml-1, etc). See docs.

        For example:

        • has-margin-large -> m-3
        • has-margin-top-large -> mt-3
        • has-margin-right-small -> mr-1
        • has-margin-bottom-medium -> mb-2
        • has-margin-top-small -> mt-1
        • has-padding-left-large -> pl-3
        • has-padding-large -> p-3
        • has-padding-medium -> p-2
        • has-margin-top-medium -> mt-2
    • remove [v-cloak], *:focus & @import 'v-tooltip/dist/v-tooltip'; from client/src/sass/enso.scss

    • update the Enso version to 4.9.1 in config/enso/config.php

    • run composer update in the project's root

    • run yarn, yarn upgrade && yarn in /client 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

    Source code(tar.gz)
    Source code(zip)
  • 4.9.0(Jan 11, 2022)

    4.9.0

    This release upgrades the UI to Vue 3 and also includes under the hood refactor for a few core components. We've tried to maintain overall component compatibility and done our best to document the breaking changes.

    Depending on how complex the UI for your project is, the upgrade may take anywhere from a 1.5h to many days, so please take your time to go through the Enso changelog, especially the upgrade steps AND also the Vue3 upgrade guide linked below.

    Front-end

    All packages have had their dependencies and dev dependencies updated and pruned. Many packages have had linter recommended fixes.

    filters

    • the DateIntervalFilter & EnsoDateIntervalFilter components have been retired

    laravel-validation

    • added an all() method, that returns all errors

    pull-to-refresh (new)

    This a new Enso package, forked from lakb248/vue-pull-refresh and updated to work with Vue3.

    select

    • fixed element deselection when the select was used in 'object' mode

    Private packages

    inventory

    • aligned products index page style & updated table filters/state

    commercial

    • updated the invoice issuing routes
    • improved items display

    emag

    • fixed auto pricing controls
    • fixed auto pricing conditions
    • updated emag dependent filters to auto clear when deactivating emag
    • fixed can-access usage; improved Emag.vue
    • added new product filters for emag offers; added new visual indicator for "genius"

    products

    • small fix for products index styling

    webshop

    • form cleanup

    Back-end

    categories

    • fixed ordering bug

    core

    • updated state Meta: removed csrf token

    localisation

    • removed the expanded sidebar key (cleanup)

    tables

    • fixed excel export on all scenarios
    • fixed authenticates on export
    • fixed style
    • updated to allow sortable for nested columns (should be used carefully);
    • extracted Computor from Data
    • improved excel export -> fetcher needs to be redesigned
    • improved excel preparing

    tutorials

    • updated form to use the new permissions.options route

    Private packages

    commercial

    • updated addresses logic for the sale form
    • fixed status filter
    • improved stock values computation
    • removed created/updated_by fields from being exportable
    • bugfix: only perform invoice cancellation if invoice exits
    • implemented the possibility to enable per sale channel opt-in/out for sale notifications
    • fixed acquisition price in stock values Computor
    • removes unneeded relation loads; fixed style

    commercial

    • removed the back button for the modal form

    eav

    • fixed group & attribute reordering bug
    • small Attribute factory fix

    emag

    • fixed missing return
    • refined stock management
    • improved code to keep the local offer in sync with the emag remote offer on each upload
    • improve order flow for edge cases when API is down

    frisbo

    • added order update webhook endpoint, append product lot to product name and order notes
    • small refactor
    • added logging for api callbacks
    • expiration date flow enhancements

    Vue Migration Build

    In order to migrate a project, we will use the Vue3 Migration Build as an intermediary step, upgrade the code to make it Vue3 compatible, then finally switch to the regular Vue3 build.

    Please read the official documentation linked above, so you have a better understanding of the process.

    In order to use the migration build, it needs to be imported and configured:

    • in client\package.json: "@vue/compat": "^3.2.20",
    • in vue.config.js, within the chainWebpack config:
          config.resolve.alias.set('vue', '@vue/compat');
          config.module
              .rule('vue')
              .use('vue-loader')
              .tap(options => ({
                  ...options,
                  compilerOptions: {
                      compatConfig: {
                          MODE: 2,
                          COMPILER_V_BIND_OBJECT_ORDER: false,
                          COMPILER_IS_ON_ELEMENT: false,
                      },
                  },
              }));
      
    • in client\src\js\enso.js:
      Vue.configureCompat({
          RENDER_FUNCTION: false,
          INSTANCE_LISTENERS: false,
          COMPONENT_V_MODEL: false,
          ATTR_FALSE_VALUE: false,
          INSTANCE_ATTRS_CLASS_STYLE: false,
          TRANSITION_GROUP_ROOT: false,
      });
      

    The package & snippets are already present in the Enso release, but they will be commented out, so in order to enable the migration build, open the relevant files and uncomment the blocks above.

    Note that the compiler migration build flags belong to the vue.config.js file and require the restart of HMR (if using it) while all other flags belong to the client\src\js\enso.js file.

    Vue Dev Tools

    For Vue3, a new browser devtools plugin is needed and can be installed along side the Vue2 plugin.

    Upgrade Steps

    In addition to upgrading the Enso UI to make it Vue3 compatible, we've also made some other changes to a few Enso components some of which may impact your local code.

    • update the following files with the latest versions

      • .babel.config.js
      • .eslintrc.js
      • vue.config.js
      • client\src\js\enso.js
      • client\package.json
      • client\src\sass\enso.scss
    • enable the migration mode, as noted above

    • run yarn && yarn upgrade and start HMR

    • you should be able to login into the application and will probably have some (lots of) errors and warnings

    • the deprecated legacyBuild flow for building the application state has been removed entirely store.js

    • we have aimed to remove global components and instead import them for each use case

      • the fa component is no longer global and needs to be imported locally, where used
        import { FontAwesomeIcon as Fa } from '@fortawesome/vue-fontawesome';
        ...
        components: { ..., Fa, ... },
        
      • the global http axios alias is no longer available, instead it should be injected as required: Update:
        myMethod() {
            axios.post(...);
        }
        

        to

        inject: ['http']
        ...
        myMethod() {
            this.http.post(...);
        }
        
    • if using any @hook:... hooks, replace all usages with @vnode-... docs

    • in all of your renderless components you can set the inheritAttrs: false, attribute to eliminate warnings about inherited attributes

    • $listeners has been removed / merged into $attrs. See docs

      You need to remove v-on="$listeners" usages. Note that in such cases, you will probably need to cascade events, either directly or via v-bind="$attrs" if applicable.

    • $scopedSlots property is removed and all slots are exposed via $slots as functions. See docs.

      You should replace this.$scopedSlots.xxx with this.$slots.xxx in your render functions

    • update the slot syntax, by replacing v-slot:xxx with #xxx

    • if you are still using the deprecated named / scoped slot syntax, update it to the latest syntax first (which is already supported in 2.6) For example, replace

      <template slot-scope="{ count }">
      

      to

      <template #default="{ count }">
      
    • the beforeDestroy hook has been renamed to beforeUnmount - you should replace all usages project wide. See docs

    • when using $el within components, ensure that there is a single root within the element (e.g. <div>)

    • when emitting events in components (e.g. $emit('click')), it is recommended to declare/list the emitted events:

      emits: ['click'],
      
    • for components, the value property has become modelValue and the input event has been replaced with update:modelValue. See docs

      When listening on 'value' changes on components, you need to replace @input="xxx" with @update:model-value="xxx". In Vue3 you can also have multiple v-model bindings on the same component. See docs

    • in all of your renderless components you can set the inheritAttrs: false, attribute to eliminate warnings about inherited attributes

    • note that in Vue3 you can no longer programmatically destroy components as the $destroy() method has been removed. See docs

    • HTML bound attributes such as :disabled will be rendered as disabled="false" for false values, and if you need to not have them rendered, the bound attribute value needs to be evaluated to null or undefinded. See docs

    • if using watch on arrays, you need to add deep: true otherwise the callback may not be triggered. See docs

    • you no longer need to use $set & $delete to manage object attributes in order to keep responsiveness, you can use regular JS syntax. See docs.

    • if asynchronously loading components, the syntax has changed. See docs.

    • transitions have suffered a few changes. See docs

    • the render function API has changed. See docs

    • if using DateFilter or EnsoDateFilter please note:

      • the default property has been removed
      • the disabledOptions property has been renamed to excluded
      • the default property has been removed
      • value/v-model has become filter
      • using v-model for filter & interval is now required

      For example, replace

      • v-model="params.dateInterval" with v-model:filter="params.dateInterval"
      • :interval="intervals.products.date" with v-model:interval="intervals.products.date"

      where the attributes look like this

      params: {
          dateInterval: 'thisMonth',
      },
      intervals: {
          products: {
              date: {
                  max: null,
                  min: null,
              },
          },
      },
      
    • if emitting/listening to global events, you should import and refactor to using the eventBus instead. See docs.

      import eventBus from '@enso-ui/ui/scrc/core/services/eventBus';
      ...
      eventBus.$emit('my-event');
      eventBus.$on('my-event', this.myHandler);
      
    • the <modal> component no longer needs a portal attribute/property, and you should delete all its usages

    • the AutosizeTextarea component has been updated and no longer needs to wrap around a textarea. Update:

      <autosize-textarea>
          <textarea v-model="..."/>
      </autosize-textarea>
      

      to

      <autosize-textarea v-model="...">
      
    • filters are no longer supported, refactor as needed (you may use methods instead). For example, update:

      {{ value | numberFormat(2) }}
      

      to

      {{ numberFormat(value, 2) }}
      
    • if you're using the automatic component registration, the syntax has changed from

      Vue.component('navbar-notification', Notification);
      App.registerNavbarItem('navbar-notification', 300, 'core.notifications.count');
      

      to

      App.registerNavbarItem('navbar-notification', Notification, 300, 'core.notifications.count');
      
    • the v-tooltip library has been updated: Import has been updated from

      import { VPopover } from 'v-tooltip';
      

      to

      import { Dropdown } from 'v-tooltip';
      

      Component has been updated:

      <v-popover trigger="hover"
      

      to

      <dropdown :triggers="['hover']"
      

      The slot name has been updated:

      <template v-slot:popover>
      

      to

      <template #popper>
      
    • we've switched to the standard (non compatibility) syntax for the animate animations. You should prefix animate related classes with animate__. For example, update:

      <enso-form class="box animated fadeIn">
      

      to

      <enso-form class="box animate__animated animate__fadeIn">
      

      Alternatively, refactor using transition components.

    • the @enso-ui/bulma package has been deprecated and will no longer be maintained. You should refactor your components and import components from their respective packages.

    Moving forward from Migration Build

    Once you've migrated your local pages/components and packages, you may switch from the migration build to the regular Vue3 build.

    • remove the customization from vue.config.js i.e. the code related to @vue/compat
      config.resolve.alias.set('vue', '@vue/compat');
      config.module
          .rule('vue')
          .use('vue-loader')
          .tap(options => ({
              ...options,
              compilerOptions: {
                  compatConfig: {
                      MODE: 2,
                      COMPILER_V_BIND_OBJECT_ORDER: false,
                      COMPILER_IS_ON_ELEMENT: false,
                  },
              },
          }));
      
    • remove the compatibility customization to client\src\js\enso.js
      Vue.configureCompat({
          RENDER_FUNCTION: false,
          INSTANCE_LISTENERS: false,
          COMPONENT_V_MODEL: false,
          ATTR_FALSE_VALUE: false,
          INSTANCE_ATTRS_CLASS_STYLE: false,
          TRANSITION_GROUP_ROOT: false,
      });
      
    • remove the "@vue/compat": "^3.2.20", dependency from client/package.json
    • run yarn, rebuild etc.

    Known issues

    • in development, you will have warnings about Unexpected mutation of ... prop vue/no-mutating-props which can be ignored for now
    • the vuejs/vuex-router-sync has an unresolved issue that, at the time of writing, requires a patch package to fix
    • the Chrome devtools plugin is at v6.0.0-beta.21 (pre-release) and may throw a lot of errors such as Timed out getting app record for app which should not affect application functionality
    Source code(tar.gz)
    Source code(zip)
  • 4.8.2(Nov 26, 2021)

    4.8.2

    This aims to be the last minor release before upgrading to Vue 3 and includes many improvements, bug fixes and also several new features.

    Front-end

    addresses

    • implemented google package

    algolia (new)

    • implemented settings package for Algolia

    bulma

    • added toggle filters
    • added users as dependency

    charts

    • updated Chart.vue
    • updated dependencies
    • fixed chart instance usage
    • brings back default options
    • added shortNumber filter

    data-import

    • improved UX for disabled exports

    emails

    • updated syntax and eslint config

    enums

    • updated dependencies and .eslintrc.js

    files

    • small refactor in index
    • removed redundant chart option

    filters

    • added toggle filters
    • added dirty to filter-state
    • improved dirty watcher in filter state

    forms

    • added the ability to reload based on a be flag
    • exposed undo()

    google

    • fixed missing icon import

    meili-search (new)

    • implemented settings package for MeiliSearch

    mixins

    • fixed edge case with re-rendering login form after logging in

    mobile-app

    • added .eslintrc.js
    • updated .gitignore and dependencies

    range-slider (new)

    • Vue Range Slider based on noUiSlider

    route-mapper

    • updated dependencies
    • updated .eslintrc.js
    • refactored the mapper class; fixed bug related to optional params; improved logic/flow

    scroll-to-top

    • fixed bottom margin

    search-mode

    • renamed algolia to searchProvider

    select

    • fixed multiple select value mutations when using state options

    sentry

    • updated dependencies and .eslintrc.js

    strings

    • fixed slug generation issue to handle cases when regEx matching had no actual matches

    tables

    • improved key in table header
    • reflected filtered state
    • added missing mr-1 in controls
    • added danger on filter flag
    • added support for dropdown actions
    • added debounce for filters

    themes

    • added has-margin-auto
    • removed bulma-checkradio
    • updated bulma-extensions dependency
    • imported minimized css from bulma-extensions

    typesense (new)

    • typesense integration for laravel-enso

    ui

    • added integrations.js
    • improved app update notification
    • updated AppUpdate.vue
    • fixed app update v-if
    • made app update dropdown always visible
    • improved internal AppUpdate flow; fixed issue with showing the modal
    • updated bulma-extensions dependency

    users

    • fixed user profile level margin

    back-end

    activity-log

    • updated for php 8
    • updated .styleci.yml

    addresses

    • deprecated google config key, uses settings from google package
    • improved validation for case when postcode exists in the DB, but for a different country
    • improved postcode validation
    • added GBR addresses
    • added Geocoding service; updated Coordinates to use the new service

    algolia (new)

    • implemented settings package for Algolia

    api

    • implemented custom headers
    • added a throttle helper
    • added toJson method to the api resource
    • improved adding headers to the request
    • added request duration logging
    • updated api logger
    • decreased duration column size
    • removed nullable from duration
    • added public apiEnabled: bool on Action
    • improved exception message
    • updated method visibility

    avatars

    • made the avatars generators configurable

    categories

    • added options endpoint
    • removed unneeded attribute
    • added categories import
    • added sync queue for the categories import; if needed, template can be locally customized

    charts

    • refactored to chartjs 3
    • fixes default tooltip config
    • implemented backend shortNumbers
    • fixed horizontal chart

    cnp-validator

    • updated CnpValidator.php
    • required php 8
    • updated strlen usage to mb_strlen

    companies

    • fixed company fiscal code in factory
    • added queue sync for the companies import; if needed, template can be locally customized
    • updated import, added new attributes
    • added fiscal code to rememberable keys

    control-panel-api

    • fixed stat class

    core

    • added structure for integrations
    • improved app update event
    • added a Login trait to work with the latest changes in laravel-ui
    • fixed login test for the new guard config attribute in sanctum.php

    countries

    • updated eea for United Kingdom

    data-import

    • fixed the Template's notifies method

    documentation

    • added route mapper docs stub & mention about transpiling

    filters

    • renamed algolia to searchProvider; improves searchProvider results

    google (new)

    • implemented settings package for Google

    helpers

    • updated searchable trait
    • added production check
    • configured styleci for php8
    • updated Searchable trait due to new Algolia package
    • updated price computor constructor and vatPercent use
    • fixed searchable for extended / binded models
    • added support for meilisearch in searchable
    • removed deprecated searchable trait
    • fixed Obj casts: set method now performs json encode
    • fixed Cash label
    • updated codesize/phpmd config rules for constant naming
    • removed Sleep
    • added new min max utility methods to Decimals

    localisation

    • updated texts, added new keys & translations
    • added missing cleanup for the language update test
    • added missing php dependency
    • made seeder reusable in local projects

    logs

    • improved logs collection to handle archives
    • fixed tests

    meili-search (new)

    • implemented settings package for MeiliSearch

    phpunit-pretty-print

    • updated strlen usage to Str::length

    select

    • opened up flexibility on Options Service instantiation from OptionsBuilder

    tables

    • added support for dropdown actions
    • resolved resources from service container
    • updated template

    tasks

    • fixed export error

    typesense (new)

    • new typesense integration for Laravel Enso

    unit-conversion (new)

    • new unit converter utility classes for Laravel Enso.

    upgrade

    • added getLength in Column
    • added exists() helper for table
    • updated upgrade status to address change in Symphony console table
    • ignored upgrades from namespaces that are not within autoload

    Private packages

    webshop-commercial

    • added webshop searchable array
    • maked default ranking 0 in search provider data
    • replaced the product dynamic method WebshopSearchableArray with a simple service
    • updated flow for webshopDiscount; now we no longer fall through to general supplier discount but use webshop company if no specific cliend discount exits
    • used float casts for searchable attributes
    • updated webshop order implementation
    • fixed class path and deprecated Online

    webshop

    • moved search provider product index to webshop from algolia
    • hides price and discount when no stock available
    • removed webshop-shadow role
    • added isActive to the BaseFilters@facets array (excluded facets)
    • moved searchable attributes to webshop from webshop commercial
    • updated contract & account order actions
    • updated BaseFilters.php
    • added availability filters
    • updated discount observer
    • hides empty filters
    • added price filter
    • added priceFiltered() getter
    • added services for search providers
    • removed PaymentMethods enum;
    • added payment config
    • added default sorting to newest
    • builded the new price filter
    • implemented most popular sort
    • various fixes, improvements and refactors

    emag

    • refactored add invoice -> upload invoice
    • refactored product index use
    • removed ValidateStoreRequest request, MissingOffer notification, deprecated parents() setter call, measurment units implementation, checker scopes & methods, recheck & cleanup flows and notSyncedYet scenarios branch
    • offer download throws exception on error; categories sync service deletes any old emag categories
    • updated order flow: now stopping before generating awb if not fully reserved
    • emag categories now have parent id
    • implemented awb schedule
    • added vat id to the offer update resource and conversionable unit Enums
    • updated CreateCategoryEmagCategoryPivotTable and CreateEmagOffersTable migration
    • now an offer is made inactive when we do not have stock
    • removed deprecated NullableCategoryId upgrade
    • added emagDiscount() dynamic for services, new headers to all emag requests and check for sync / when not empty
    • log now also sends email notification; added checker jobs failure handling
    • made the buy button rank array key optional
    • set number of offers & best offer sale price as nullable
    • renamed last_checked_at to checked_at
    • added check for the presence of the emag settings table for further scheduling
    • refactors fetchPicture(s) to downloadPictures
    • added new emag status
    • added upgrade to drop offers discount_percent
    • removed auto_pricing from the Offer table resource and urls from the settings form and migration
    • removed download after each operation; updated offer fill, using DI resource, new genius column
    • added upgrade for removal of old settings url columns
    • added commands for activation/deactivation of the emag api
    • various fixes and improvements

    commercial

    • enabled cancel
    • removed sort by created_by/updated_by
    • removed By columns from being searchable
    • added limit for product labels
    • updated products template
    • refactored grn to goodsReceivedNote
    • added bulkStockRemoval
    • added limit and ordering for bulk stock removal;
    • updated sale cancellation policy to exclude invoiced sales
    • added locks
    • updated limit to cover all cases
    • allowed sale fulfill, on default channel & internal warehouses when missing address
    • renamed externallyFullfilled
    • added quick fix for sales payment form
    • added awb schedule validation and internal code to typeahead controller
    • added serializeDate to models and cast to settings
    • reverted schema check
    • made settings warehouse_id nullable to avoid seed / provider / schedule issues
    • updated awb generation schedule to 06:00
    • various fixes, refactors and improvements

    financials

    • date is now required for client payments
    • fixed payment due date logic; updated tests
    • fixed case when no serial is given
    • refactored code
    • due date fixes
    • added date serialization customization for all relevant models
    • updated client invoice form

    inventory

    • removed manual upgrade from the INsLot upgrade
    • fixed reservations count for Reservations.vue update
    • added inventoryIn locks as required to avoid over-reserving
    • extracted to services
    • added is_bundle check
    • removed App make from the Inventory interface
    • fixed update available emitting

    discounts

    • refactor for import
    • added reset
    • improved client product discount importer
    • fixed missing param

    frisbo

    • converted eav grams to kg when publishing product
    • updated resource to use the new unit conversion package; added validation
    • updated product bundle resource to correctly use bundled quantity

    eav

    • added a public searchableKey method on the attribute
    • improved eav filterable searchable key
    • small Attribute factory fix

    product-eav

    • replaced the EavSearchableArray dynamic product method with a simple service class
    • updated searchable array
    • improved facets
    • added search provider integration
    • fixed import

    Upgrade steps

    • update the Enso version to 4.8.2 in config/enso/config.php
    • run composer update in the project's root
    • remove the bulma-extensions patch
    • run yarn, yarn upgrade && yarn in /client to ensure you have the latest versions and patches are applied. If necessary, update your patches
    • after yarn upgrade, update vue.config.js by adding @enso-ui/route-mapper package under transpileDependencies key
    • php artisan enso:upgrade --before-migration
    • php artisan migrate
    • php artisan enso:upgrade
    • as per every release, delete any local, deprecated upgrades
    • update all models having forms with date fields, by adding the following method:
    protected function serializeDate(DateTimeInterface $date)
        {
            return $date->format('Y-m-d H:i:s');
        }
    

    Make sure you have set the $dates property.

    Source code(tar.gz)
    Source code(zip)
  • 4.8.1(Aug 2, 2021)

    4.8.1

    Front-end

    For most of our frontend packages we've added router error handling.

    addresses

    • fixed case when address does not have locality/city

    charts

    • updated Chart.vue

    companies

    • refactored slot-scope to v-scope

    control-panel

    • improved layout
    • fixed index and stat value format

    datepicker

    • fixes edge case when attempting to change value during picker reset

    forms

    • clears errors before autosave

    mixins

    • added 413 error code handling

    modal

    • fixes modal and modal template

    notifications

    • fixed Notification component registration for cases where we might revoke the default notification permission

    products

    • fixed small bug due to being unable to create slug when name is null
    • reverted check for null, and moved it to the slug method

    sentry

    • added ingored errors (for ChunkLoadError)
    • added UnhandledRejection to ignored

    strings

    • added string validation
    • casted args to string
    • refactored strings
    • updated methods to also handle null parameters, in which case they return an empty string

    tables

    • fixed number formatter when fullRecordInfo is false
    • added ongoing request cancel in before destroy to avoid various timing errors; fixed and refactored NumberFormatter
    • renamed method in number formatter

    typeahead

    • added force-selection

    ui

    • adds sentry context
    • removed duplicated filters
    • fixed navbar item registration
    • fixed text in dark theme on error pages
    • added maintenance mode page
    • fixed router error handler; improved middleware

    users

    • fixed user profile layout

    back-end

    action-logger

    • refactors action logger middleware
    • updates .styleci.yml
    • removes redundant argument

    addresses

    • fixed code style

    avatars

    • improved gravatar; renamed observer to User

    companies

    • added company fiscal code request validation

    control-panel

    • drops org url
    • adds sentry org to config
    • improves config, adds env vars
    • fixes return types; refactors switch to matches
    • updates id signature & implements id provider
    • adds is_active in table builder for apps

    control-panel-api

    • improves middleware registration
    • extracts api middleware group in the api package
    • improves database sensor
    • removes digits for request monitor
    • improves request monitor
    • extracts id provider
    • improves logic; adds danger class for outdated versions
    • fixed type in Services\Statistics

    control-panel-common

    • added missing return types in contracts
    • added IdProvider abstract class

    core

    • .gitIgnore
    • adds alias for ensure-frontent-requests-are-stateful middleware
    • extras middleware registration in separate provider
    • updates .styleci.yml
    • style update
    • removes core-api route group
    • improves Logout trait to work with non spa env
    • reverts logout
    • New State logic - customization flexibility #393
    • used App::make instead of new for providers instantiation for flexibility on customizing states.

    data-export

    • fixed export error notification
    • added custom row action contract

    forms

    • fixed section visibility set automatically to visible in the builder

    helpers

    • added forceable index
    • added cascades observers trait

    localisation

    • updated translations for webshop reviews
    • added php version 8 for styleci cfg

    roles

    • improved syntax in config writer

    select

    • Options ordering - more sorting flexibility. #46
    • created new select config option 'sortByOptions' for controling Select Options sorting.
    • used new config 'sortByOptions' inside Options get method

    sentry

    • added prefix for recent exceptions; added dedupeInterval in publisheable config

    tables

    • fixed button name check (needed only for row)
    • fixed tests

    users

    • added policy fixes
    • implemented cascades observers

    Privates

    webshop-commercial

    • updated middleware names

    webshop

    • added exception when attempting navigation to unavailable pages; fixes #46

    • removed log

    • updated cookie consent blade

    • cleanup of unused routes; added local auth middleware instead of package

    • customized verifiy active state for webshop

    • makes product filters a partial;

    • built with latest sentry version

    • disabled the form button after submitting a review to avoid double clicks

    • updated the Review Submitted notif to include the product name

    emag

    • handled setting attribute for when value is array; ref #30

    • updated offer generation for bundle

    • updated new offer resource for bundle products

    • updated resource re:ean for packages

    financials

    • updated flow

    • removed hard coded logic for shipping service in XML generation

    wiki

    • fixes login route

    • adds verify active state

    frisbo

    • adds bundle publishing ability

    api

    • added logs
    • adds core-api midleware group

    fetcher

    • updates gitlab ci and vue.config

    • increased the timeout limit

    Upgrade steps

    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.
    • php artisan enso:upgrade --before-migration
    • php artisan migrate
    • php artisan enso:upgrade to execute the upgrades
    • if you need to customize the select options sort method, you can do so by publishing the select config using php artisan vendor:publish --tag=select-config --force and updating the sortByOptions key as needed.
    • make sure permissions are properly configured for each role and then save/refresh the roles configuration files
    • update the Enso version to 4.8.1 in config/enso/config.php
    Source code(tar.gz)
    Source code(zip)
  • 4.8.0(Jun 23, 2021)

    4.8.0

    This new release adds the possibility for back-end packages to publish their own state to the front-end as well migrates the framework & packages to PHP 8.0. Where applicable, updated packages to take advantage of the new language features.

    Front-end

    Most of the packages received a dependency list cleanup.

    bulma

    • added enhanced progress indicator
    • added ProgressIndicator component export

    charts

    • fixed labels update on structure change
    • added display function prop

    enums

    • renamed the internal i18n attribute to _i18n, to avoid potention conflicts with enum keys

    financials

    • fixed supplier invoice index layout

    localisation

    • improved store module

    products

    • improved the product form to update slug dynamically
    • improved product picture styling/layout in table & form
    • added newly computed supplier discounted price to the form

    progress-indicator

    • implemented enhanced indicator; various progress indicator improvements

    rating

    • updated mobile bottom position

    scroll-to-top

    • updated mobile bottom position

    strings

    • fixed the slug helper

    tables

    • removed the already deprecated money support; templates should now use number - more details are found in the upgrade steps
    • added customizable total label via the template's totalLabel property
    • fixed page toggling

    ui

    • improved store module to allow for automatic package store registration
    • small refactor and various fixes
    • added sentry spike protection

    user-groups

    • removed unneeded file

    Back-end

    • all packages have had the route require syntax updated to reqire __DIR__./xxx.php
    • all packages that were using money configuration for numeric formatting have been updated to use the already available number configuration
    • all packages that were including data imports, have been updated so that importers respect the new methods' signatures
    • all get_class($instance) usages refactored to $instance::class
    • seeders and factories have been updated, and where it made sense, helper methods (such as test()) were added which create a different factory state (such as for testing)

    action-logger

    • code cleanup

    activity-log

    • route refactor

    api (new)

    • new package that provides boileplate for implementing APIs

    categories

    • fixed stacked bar chart

    charts

    • added contains nested scope

    companies

    • extracted user state to the users package

    core

    • extracted user state to the users package

    currencies

    • removed FixesCurrencyApi exception
    • refactored to use the new api package

    data-export

    • added data_exports.name index upgrade

    data-import

    • improved error logging for local environments
    • updated interfaces to pass the import model instead of params/user
    • added avoids deletion conflicts and updated delete method
    • added notifies boolean flag in json template and notifiableIds config option
    • added params to optional attributes

    files

    • improved the file resource

    helpers

    • disabled algolia syncing when not in production
    • fixed searchable
    • added price computor
    • added new custom cast for Object

    localisation

    • added & updated various keys & translations

    measurement-units

    • added the name attribute to the rememberable keys config array
    • added MeasurementUnits enum

    products

    • updated price computor use
    • updated product visibility in the supplier resource
    • added newly computed supplier discounted price
    • added generateSlug helper
    • added part_number index on product_supplier pivot
    • updated package_quantity type to int

    roles

    • added config options for restricting user groups
    • improved visible scope

    sentry

    • extracted sentry functionality from the Core package

    services

    • made measurement unit not nullable in the table
    • improved upgrade

    upgrade

    • renamed nullable Column method to isNullable
    • added isSigned, isUnsigned helpers, getPrecision and getScale for decimals

    users (new)

    • extracted user functionality from the Core package
    • removed title from profile builder
    • added state provider
    • improved changeGroup policy

    user-groups (new)

    • extracted user groups functionality from the Core package
    • added config options for restricting user groups
    • improved visible scope

    tables

    • added customizable total label
    • removed the already deprecated money support; templates should now use number - more details are found in the upgrade steps

    Upgrade steps

    • run composer update in the project's root
    • run the upgrade commands (both regular and before-migration) to ensure database & strucure is up to date, since this release cleans up a lot of package upgrades
    • upgrade your machine to php8
    • in composer.json update the following dependencies to the given versions:
      • "laravel-enso/core": "^7.0",
      • "sentry/sentry-laravel": "^2.0.0"
      • "laravel-enso/phpunit-pretty-print": "^1.0",
      • "nunomaduro/phpinsights": "^2.0",
    • search & replace in your local project (including the database folder) the following namespaces:
      • Core\Models\UserGroup -> UserGroups\Models\UserGroup
      • Core\Enums\UserGroups -> UserGroups\Enums\UserGroups
      • Core\\Enums\\UserGroups -> UserGroups\\Enums\\UserGroups
      • Core\Models\User -> Users\Models\User
      • Core\Policies\User -> Users\Policies\User
      • Core\Models\Session -> Users\Models\Session
      • Core\Http\Controllers\Administration\Users -> Users\Http\Controllers
      • Core\Http\Controllers\Administration\UserGroups -> UserGroups\Http\Controllers
      • Core\Tables\Administration\Users -> Users\Tabels
      • Core\Forms\Administration\Users -> Users\Forms
      • Core\Http\Resources\User -> Users\Http\Resources\User
      • Core\\Http\\Resources\\User -> Users\\Http\\Resources\\User
      • Core\Http\Requests\ValidateUserRequest -> Users\Http\Requests\ValidateUserRequest
      • Core\Database\Factories\UserFactory -> Users\Database\Factories\UserFactory
      • Core\Database\Seeders\UserGroupSeeder -> UserGroups\Database\Seeders\UserGroupSeeder
      • Core\Database\Seeders\UserSeeder -> Users\Database\Seeders\UserSeeder
    • remove from config/insights.php the deprecated:
    use ObjectCalisthenics\Sniffs\Files\FunctionLengthSniff;
    use ObjectCalisthenics\Sniffs\Metrics\MethodPerClassLimitSniff;
    use ObjectCalisthenics\Sniffs\NamingConventions\ElementNameMinimalLengthSniff;
    
    • run composer update in the project's root
    • update any local person/people factories and seeders and remove the title attribute as it has been dropped
    • for your local imports, for the importer & validator classes, update the following method signatures (& logic where necessary):
      • run: public function run(Obj $row, DataImport $import);
      • after: public function after(DataImport $import);
      • authorizes: public function authorizes(DataImport $import): bool;
      • before: public function before(DataImport $import);
    • for your local table JSON templates, change any money keys to number, and remove any "thousand" & "decimal" attributes. Number supports precision, symbol and template (e.g. "%v %s" - %v for value, %s for symbol)
    • local storage/app/.gitignore should be updated to ignore all and look like this
      *
      !.gitignore
      

      You may also remove .gitignore files from individual enso created, app sub-folders (except public)

    • check the local config/enso/tables.php file and if the export.path key is present, update it to export.folder
    • local state:
      • remove the local state binding from App\Providers\AppServiceProvider: CoreLocalState::class => LocalState::class,
      • remove the App\Services\LocalState class after moving any logic to one or more state builder services
      • from client/src/js/enso.js, remove the import: import './localState';
      • remove the file client/src/js/localState.js
      • if you moved logic from the old LocalState class, update the file client/src/js/store/local.js as required, otherwise you may delete it. Note that the client/src/js/store folder MUST be present.
    • compare config/enso/config.php with vendor/laravel-enso/core/config/config.php and remove any extra, deprecated keys
    • still in config/enso/config.php update the Enso version to 4.8.0
    • compare config/enso/addresses.php with vendor/laravel-enso/addresses/config/addresses.php and remove any extra, deprecated keys
    • update the password config/enso/auth.php key as follows:
      'password' => [
              'lifetime' => env('PASSWORD_LIFETIME', 0),
              'minLength' => env('PASSWORD_MIN_LENGTH', 6),
              'mixedCase' => (bool) env('PASSWORD_MIXED_CASE', 0),
              'numeric' => (bool) env('PASSWORD_NUMERIC', 0),
              'special' => (bool) env('PASSWORD_SPECIAL', 0),
      ],
      
    • from Database\Seeders\DatabaseSeeder, from the run() method's unit tests running branch, you may delete the following seeders, as the respective factories have been updated to no longer require this:
                  CountrySeeder::class,
                  RegionSeeder::class,
                  TownshipSeeder::class,
                  LocalitySeeder::class,
      
    • update/rename the following .env variables:
      • PASSWORD_LENGTH -> PASSWORD_MIN_LENGTH
      • PASSWORD_NUMERIC_CHARACTERS -> PASSWORD_NUMERIC
      • PASSWORD_SPECIAL_CHARACTERS -> PASSWORD_SPECIAL
      • PASSWORD_UPPER_CASE_CHARACTERS -> PASSWORD_MIXED_CASE
    • replace LaravelEnso\Core\Exceptions\Sentry usage and import with LaravelEnso\Sentry\Exceptions\Handler in App\Exceptions\Handler.php
    • remove bulma-rtl patch from client\patches, as is no longer needed
    • run yarn, yarn upgrade && yarn in /client to ensure you have the latest versions and patches are applied. If necessary, update your patches
    • php artisan migrate
    • php artisan enso:upgrade
    • as per every release, delete any local, deprecated upgrades
    • it recommended to also run the all the enso tests to make everything is working properly; therefore, compare your local phpunit.xml with Enso's and make sure that you're not missing any package tests.
    Source code(tar.gz)
    Source code(zip)
  • 4.7.1(May 13, 2021)

    4.7.1

    This is a patch release whose main purpose is to update localisation files.

    Upgrade steps

    • update the Enso version to 4.7.1 in config/enso/config.php
    • run composer update in the project's root
    • publish the updated localisation assets with php artisan vendor:publish --tag=enso-localisation --force
    • run yarn, yarn upgrade && yarn in /client 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
    Source code(tar.gz)
    Source code(zip)
  • 4.7.0(May 11, 2021)

    4.7.0

    This aims to be the last minor release before upgrading to PHP 8 and includes many improvements, bug fixes and also several new features.

    Front-end

    Most of the packages received a dependency list cleanup.

    activity-log

    • moved the icons file

    addresses

    • improved postcode in form

    auth

    • refactored components

    bulma

    • added orderable trees

    calendar

    • added filter in components/CalendarFilter.vue

    categories

    • updated dependencies: now uses the orderable trees package

    clipboard

    • updated readme

    companies

    • small fixes
    • removed unused code
    • improved people association removal

    data-import

    • added back cascade of the browseFiles method which makes it easier to use the component standalone, for example in a table
    • fixed rejected import download

    documents

    • added file size limit

    emag

    • updated commercial form content and components

    filters

    • added translatable to vue-filter

    financials

    • updated dashboard chart
    • improved client filter

    forms

    • hided actions in autosave mode
    • returned promises from fetch & submit; added submitting and submitted events
    • added clearErrorsControl, section-divider class, section visibility and watcher for the form path, so that the form is re-fetched if the path changes
    • fixed style and hidden fields
    • cleaned and updated CoreForm.vue
    • updated FormSection.vue
    • removed meta

    inventory

    • updated product components; moved icons to src

    io

    • fixed channels, small fixes

    notifications

    • fixed channels, method name

    orderable-trees (new)

    • facilitates creating and ordering tree structures with drag-and-drop functionality

    products

    • fixed images in picture uploader
    • fixes missing dependency

    rating (new)

    • simple component which facilitates star rating

    scroll-to-top

    • updated mobile margins

    switch

    • made label clickable
    • simplified logic

    tables

    • fixed boolean classes in table cell and slot

    tasks

    • used new websocket getter

    toastr

    • extended HTML support for title similar to body, if html flag is set, treat title (if set) as html.

    typeahead

    • made search control hidden on mobile
    • passed enso error handler
    • added taggableoption: can create when typing non existing options; emits keydown events to be used in different implementation scenarios; small internal refactor
    • cascaded the core typeahead clear method and made the query & loading values available in the controls slot

    ui

    • fixed @enso-ui/auth and channels
    • improved logo display in navbar
    • small refactor

    Privates

    commercial

    • updated pages and components
    • integrated sale channel package
    • allow issue invoice at all times
    • reorders actions to be more natural
    • added cancellation
    • multiple fixes and enhancements

    eav (new)

    • provides entity attribute value functionality for entities which require a scalable number of attributes

    emag

    • added response handling for product publish
    • added sale channels and services as dependencies
    • added settings table
    • added option for manual invoice upload
    • various fixes and updates

    frisbo (new)

    • provides action components for syncing, stock check and dispaching orders on Frisbo platform

    inventory

    • updated overwritable products pages
    • added warehouses store

    sale channels (new)

    • basic sale channels CRUD components with store functionality

    webshop

    • added approve & reject action in table
    • added sale channels and services as dependencies
    • various fixes and improvements

    Back-end

    addresses

    • added rememberable on locality and region
    • improved store logic and label
    • added cast for addressable_id
    • allows multiple billing addresses
    • fixed test
    • added postcode to label
    • added scopes and dynamic user relation

    avatars

    • updated user_id cast

    calendar

    • added phpmd config
    • fixed notification queue
    • updated notification subject

    categories

    • fixed logic due to illuminate collection constructor update
    • added rememberable keys in category, global scope & small changes
    • cleanup and fixes
    • improved scope by adding the table
    • updated parentTree to return only parents
    • updated tests to reflect previous changes to the parentTree method
    • added contains nested scope

    charts

    • added colorsConfig setter, updates ChartCard and Chart
    • fixed chart options reactivity

    cli

    • fixed package generation

    comments

    • updated notification subject

    companies

    • added rememberable keys in company
    • updated factory and tests

    core

    • extracted impersonate policy
    • added version update
    • fixed import, style, password reset when email is wrong, notification queue and email footer
    • updated Version.php, config.phpand social media icons
    • added core version, missing key in guest state and admins & supervisors scopes on user
    • improved reset password notification and enso mail theme
    • replaced social media icons with svgs; improved publishing aliases
    • extended the reset storage command to take optional list of folders (comma separated)
    • removed deprecated googleplus and unused import
    • reworded reset password notification subject

    countries

    • added rememberable keys in country for iso.
    • added name to rememberable keys
    • improved region label

    data-export

    • fixed notification queue

    data-import

    • fixed wrong number with restart
    • added error in console mode and validations in template export
    • updated Chunk.php
    • reseted counters to zero when data-import was restarted in all cases.
    • removed ImportTypes

    departments

    • removed useless import

    documentation

    • updated documentation for Search Modes

    enums

    • added ability to use private constants for custom logic
    • fixed enum localisation and mapping

    excel

    • refactored in export service

    forms

    • flexible number of columns
    • added visibility
    • fixed wrong property, meta test, input "content" validation
    • added clearErrorsControl structure option

    helpers

    • updated Sleep

    impersonate

    • added gate
    • updated AuthServiceProvider.php

    io

    • made event dispatchable

    localisation

    • added & improved translations

    notifications

    • fixed route (http verb name)
    • fixed order
    • updated test due to route update

    packaging-units

    • added rememberable keys

    pdf

    • enabled risky
    • updated margins and added footer font size
    • added download method

    people

    • added caching feature to company() helper
    • company() always loads relation

    products

    • refactored form for easier customization
    • added internal code management
    • improved internal code logic
    • added length in config for internal code
    • removed unwanted section
    • added attachPicture method and acquisition price helper
    • implemented product slug
    • added wysiwyg form field options
    • migrated towards 4 decimals and updated migration
    • updated company factory use
    • fixed product booted method

    rememberable

    • added custom key
    • added tests
    • renamed config key & exception message
    • fixed key for polymorphic relation
    • raised default to 1h
    • various fixes

    roles

    • updated default menu

    services

    • small visual refactor
    • migrated towards 4 decimals
    • removed unneded financials dependency

    tables

    • no longer added default order by clause when the base query already has order by clauses applied
    • improved raw total efficiency
    • fixed typo and enum localisation

    tasks

    • fixed email path
    • updated default menu order
    • updated notification subject

    upgrade

    • added nullable helper on column
    • added new hasType helper method for the Table utility class

    versions

    • improved flow

    Privates

    api (new)

    • provides boilerplate and base functionality for implementing external apis

    commercial

    • made events dispatchable; implemented the new computor; improved client stock import service
    • implemented shipping and billing address
    • added container resolve for all xlsx document generation instances
    • added payment method
    • migrated towards 4 decimals
    • added undo fullfillment
    • refactored invoice & order blades, order email, notifications
    • added enum for file formats and refactored order controllers
    • added cancelled_at and Cancel controller
    • added reservable scope
    • updated policies
    • added addresses option controller
    • multiple fixes and enchancements

    discounts

    • added service clientDiscounts relation
    • removed int cast in discounts
    • fixed discount factories

    eav (new)

    • provides entity attribute value functionality for entities which require a scalable number of attributes

    emag

    • implemented product publish
    • added sale channels and services as dependencies
    • added settings
    • added voucher handling
    • added payment method to sale creation
    • implemented free_shipping_above
    • added emag orders fallback
    • migrated towards 4 decimals
    • added Emag courier accounts, AddAttachment action
    • added and updated enums
    • added invoice upload on sale creation flow
    • refactored and added NewOrder, OrderCancellation and awb notifications
    • multiple fixes and enchancements

    fetcher

    • fixed stream closing on upload
    • updated notification subjects

    financials

    • added new Computor; dropped ComputesLines, ComputesTotals, LineComputor, TotalsComputor
    • migrated towards 4 decimals
    • added discountWithVat helper
    • rewrited invoice blades
    • added pdf invoice download option
    • multiple fixes and enchancements

    frisbo (new)

    • Frisbo api implementation for external order fulfillment. Provides functionality for managing products, dispaching, updating and syncing orders

    inventory

    • added rememberable on position
    • improved fulfilment flow
    • added new Order contract
    • added reservable scope as needed
    • added cancel method in Warehouse model and Fulfilment contract
    • various fixes and enchancements

    product-eav (new)

    • loose coupling package implementation between products and eav for avoiding unwanted dependencies

    sale channels (new)

    • provides basic sale channels structure

    stripe (new)

    • Stripe api implementation for processing card payments

    webshop

    • added missing factory attribute and facebook fields
    • added ability to store cart in session if content is not private
    • updated stock statuses
    • implemented fast registration and free_shipping_above
    • improved cart logic
    • added google ads support
    • updated payment methods
    • added welcome_text_on_mobile to migration
    • removed external ref in orders table
    • fixed seo
    • improved ratings and reviews
    • added product repository
    • thorough layout, flow and functionality refactor
    • multiple fixes and enchancements

    webshop-commercial

    • implemented the new computor, reused dynamics between product and service
    • implemented shipping & billing addresses
    • added side by side form for adding new card
    • implemented free shipping and finalize order on payment creation;
    • updated the response to support wire transfer
    • updated the Line price method to show unitary price with vat
    • refactored notifications
    • added stripe checkout
    • covered edge case when order payment method is set
    • thorough refactor
    • multiple fixes and enchancements

    Upgrade steps

    • update the Enso version to 4.7.0 in config/enso/config.php
    • run composer update in the project's root
    • run yarn, yarn upgrade && yarn in /client 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
    Source code(tar.gz)
    Source code(zip)
  • 4.6.0(Jan 26, 2021)

    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
    Source code(tar.gz)
    Source code(zip)
  • 4.5.0(Dec 14, 2020)

    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

      public function sheets(): array
      
      public function mapping($row): array
      

      becomes

      public function mapping($call): array
      
    • the previous BeforeExportHook' &AfterExportHookcontracts have been renamed toBeforeHook&AfterHook` respectively, and allow you to add specific logic before & after running the export as before
    • by default, the user running the export is notified upon the export's completion
    • there is a new Notifies contract that allows you to replace the default notification logic, which you may also use to disable notifications
    • if previously, you were handling notifications for exports, consider using the out-of-the-box functionality and remove the notification logic
    • on the exporter, you may optionally add a public function emailSubject(): string method and return a custom subject for the email notification
    • on the exporter, you may optionally add a public function notifiables(DataExport $export): Collection method, which should return an array of notifiable entities, that receive the export done notification
    • previously, when creating an export, you had to create a DataExport model, the exporter class, instantiate the ExcelExport service, and the call its handle method:
      $exporter = new MyExporter();
      $dataExport = DataExport::create([
          'name' => $exporter->filename(),
          'entries' => 0,
          'created_by' => $user->id,
      ]);
      
      (new ExcelExport($user, $dataExport, $exporter))->handle();
      
      return $dataExport->download();
      
    • now, you may call the static excel(...) method on the DataExport model
      $exporter = new MyExporter();
      
      return DataExport::excel($exporter)->file->inline();
      
    • if running exports programmatically or from jobs, authenticate using the required user before running the export:
      Auth::setUser($this->user);
      

    if working locally with files, or models that work with files

    The following Enso models use the HasFile trait: Avatar, Brand, CarouselSlide, Company, DataExport, DataImport, Document, Picture, Poster, RejectedImport, Upload, Video, WebshopPage.

    • the included FilePath upgrade will handle the update of files attached to Enso models (such as those above).

      However, the Attachable contract in concert with the HasFile trait allows an attachable model to specify a potentially dynamic folder name where to store files.

      IF you are using this flow for your own local models, you need to handle upgrade for those file records yourself.

    • the HasFile trait has been updated and no longer cascades the following methods:

      • inline
      • download
      • temporaryLink
      • attach
      • upload
      • folder

      What this means is that you should load the file and chain/call the desired method on the file model: php $document->file->download();

    • the storagePath() method has been removed, both from the trait and the File model. You should use instead:

      Storage::path($document->file->path);
      
    • the LaravelEnso\Files\Traits/Uploads.php has been removed

    • previously, when using the attach(...) method on the File model or the any Attachable model, through the HasFile proxy method with the same name, the file was being optimized. If you are attaching files that somehow do not come through the Enso flow, handle any needed optimization manually.

    • the file relationship as defined in the HasFile provides a default if no file exists:

      public function file(): Relation
          {
              return $this->morphOne(File::class, 'attachable')
                  ->withDefault();
          }
      

      Update any checks using truthy logic such as if ($myAttachableModel->file) {...} as required, or you may have unexpected consequences.

    Source code(tar.gz)
    Source code(zip)
  • 4.4.0(Nov 13, 2020)

    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
    Source code(tar.gz)
    Source code(zip)
  • 4.3.0(Oct 15, 2020)

    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
    Source code(tar.gz)
    Source code(zip)
  • 4.2.0(Oct 2, 2020)

    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
    • removed the paid column from the webshop_orders table & refactored as required

    Upgrade steps

    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.
    • php artisan migrate
    • composer dump-autoload
    • run php artisan enso:upgrade to execute the upgrades (you may also runphp artisan enso:upgrade:status to view the upgrades' statuses)
    • make sure permissions are properly configured for each role and then save/refresh the roles configuration files
    • update the Enso version to 4.2.0 in config/enso/config.php
    • in composer.json, in the scripts.post-update-cmd section add the following scripts:
      • "php artisan telescope:publish",
      • "php artisan horizon:publish",
      • "php artisan enso:webshop:publish", (if applicable)
    Source code(tar.gz)
    Source code(zip)
  • 4.1.0(Jul 31, 2020)

    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
    Source code(tar.gz)
    Source code(zip)
  • 4.0.1(Jul 15, 2020)

    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
    Source code(tar.gz)
    Source code(zip)
  • 4.0.0(Jul 9, 2020)

    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 documents as dependencies
    • added HtmlDescription to validation
    • removed tutorial permission (added dynamically from the tutorials package)
    • updated web middleware group to api for sanctum

    products

    • changed web middleware to api
    • updated relation
    • updated codacy badge

    rememberable

    • updated codacy badge

    roles

    • changed web middleware to api
    • updated HasRoles
    • removed todo

    searchable

    • changed web middleware to api
    • updated codacy badge

    services

    • changed web middleware to api

    tables

    • updated codacy badge
    • updated helpers namespace

    teams

    • changed web middleware to api
    • replaced direct relation traits with dynamic relations
    • updated codacy badge

    track-who

    • use Config facade instead of helper
    • refined tests

    tutorials

    • added tutorials dynamic relations to permission
    • updated web middleware group to api for sanctum

    upgrade

    • updated codacy badge

    versioning

    • updated codacy badge

    upgrades steps

    Backend

    1. update dependencies to next major for example core ^5.0 (like this)
    2. run composer update
    3. add SANCTUM_STATEFUL_DOMAINS to .env (like this)
    4. remove App from namespace of packages,(you can use this regex, LaravelEnso\\(.*)\\App\\ replace with LaravelEnso\\$1\\)
      • you need to replace laravel-enso/(.*)/src/App/ with laravel-enso/$1/src/ too
    5. Comments, Discussions & Replies traits were removed and you need remove them from User.php (like this)
    6. run composer dump-autoload
    7. you need to add the AuthorizationCookie and EnsureFrontendRequestsAreStateful middleware classes to middleware group (like this)
    8. if you didn't bind Core/User to the local User, you need to do this now in AppServiceProvider (like this )
    9. you need to replace the web middleware with api in RouteServiceProvider.php and in your local api.php routes (like this)
    10. you must update the configuration values for defaults.guard to api and api.driver to sanctum (like this)
    11. we have replaced the fillable property with guarded on all of our models, so make sure to update the local models accordingly
    12. the CompanyStatuses enum was renamed to Statuses
    13. you need to add types to LaravelEnso/Migrator Migration class fields (like this)
    14. you may need to fix routes in imports and static files (like this) (you can use this pattern for searching laravel-enso/.*/src/database)
    15. publish the sanctum config php artisan vendor:publish --tag=sanctum-config
    16. publish the monitoring seeder php artisan vendor:publish --tag=control-panel-api-seeder (optional, if you’re using Control Panel Api)
    17. add Broadcast::routes(['middleware' => ['auth:sanctum']]); to routes/api.php(like this)
    18. search & replace use LaravelEnso\Helpers\Classes\ with use LaravelEnso\Helpers\Services\
    19. companies doesn't have documents, comments, discussion as dependencies anymore, if you still need them you need to install them and using DynamicMethod (like dynamic-methods, AppServiceProvider.php, composer.json)
    20. how-to, activity-log & tutorials were removed from the laravel-enso/core, therefore if you need to use them you need install too (like this)
    21. obs field was replaced with notes, you need to update migrations and factories regarding this change
    22. replace the deprecated defaultAddress() method with address where necessary
    23. publish the telescope assets by running php artisan telescope:publish
    24. publish the horizon assets by running php artisan horizon:publish
    25. update version 4.0.0

    FrontEnd:

    1. update dependencies to the next major version (for example "@enso-ui/ui": "^3.0") except (clipboard, confirmation, datepicker, directives, divider, dropdown-indicator, enums, erd, laravel-validation, money, progress-bar, progress-circle, route-mapper, strings, switch, tabs, textarea, themes, transitions, wysiwyg, uploader) (like this)
    2. run yarn, yarn upgrade && yarn to ensure you have the latest versions and patches are applied. If necessary, update your patch files
    3. remove the eslintrc.js file from the project root
    4. remove App from namespace of packages (you can use this regex, search for LaravelEnso\\(.*)\\App\\ and replace with LaravelEnso\\$1\\)
    5. how-to, activity-log, tutorials were removed from the enso-ui/ui, therefore if you need to use them you should install the packages and set them up (you can look at .eslintrc.js, app.js, vue.config.js, router.js)
    6. companies doesn't depend on documents, comments or discussion anymore, if you still need them you can use patch (like this)
    7. toastr was changed in this version, and you need to inject it wherever you need(like this) (it's optional but recommended)
    8. modal was changed and the :show property has been removed, you need to use v-if instead of :show (like this and this)
    9. documents, comments, addresses & discussions were extracted from Accessories therefore if you need them you can import them from @enso-ui/bulma instead of @enso-ui/accessories (like this)
    Source code(tar.gz)
    Source code(zip)
  • 3.9.5(Jun 26, 2020)

    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
    Source code(tar.gz)
    Source code(zip)
  • v3.9.4(May 25, 2020)

    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 instead of default namespaces as this solves issues with relationships breaking when extending models which use morph relationships. For consistency, you should do the same to your local models (you may look at the Company model & companies AppServiceProvider classes as example)
    • the files test folder config key has been updated from enso.files.paths.testing to enso.files.testingFolder. If you are customizing the value, make sure to update the config file structure. Also make sure to update the local file after the one in the files package.
    • if using the products package, note that the validator's validateUnicity method has been renamed to validateUniqueness - update your local validator if required
    • for this release, we've switched from using predis to using phpredis. Ensure that:
      • the phpredis extension is installed on your (live) machines
      • the redis.client configuration option is set to phpredis in your config/database.php
      • if present in your env, the REDIS_CLIENT key value is phpredis
      • remove the predis package from your composer.json
    • we've consolidated some assets (picture) locations and simplified the build process. You should:
      • run the php artisan vendor:publish --tag=core-assets command
      • cleanup the multiple CopyPlugin instances and keep just the command that copies assets from ../resources/images to images. Use enso's vue.config.js file as an example
    • the VatRates enum was removed from the financials & products packages and put in the helpers package. If using it locally, update the namespace to LaravelEnso\Helpers\App\Enums\VatRates
    • the localisation package and flow has been enhanced. To update for the new flow do the following:
      • remove the enso resource directory from local language resources. From now on, when merging translations the core translations will be taken directly from the package resources
      • run php artisan vendor:publish --force --tag=enso-localisation
      • remove from your local composer.json file "php artisan vendor:publish --tag=localisation-lang-files" from under the post-update-cmd section
    • since the email theme assets were updated, if you want to use the refreshed theme, you should publish the assets with php artisan vendor:publish --force --tag=enso-email
    • the addresses package has been refactored and updated. You should:
      • publish the package seeders with php artisan vendor:publish --force --tag=addresses-seeds
      • publish the AddressFactory.php file with php artisan vendor:publish --force --tag=addresses-factory
      • if present, delete the local RoAddress factory from the factories folder
      • if using the addresses package WITHOUT the ro-addresses extension, make sure that the php artisan enso:upgrade command is run AFTER php artisan migrate
      • if using the addresses package WITH the ro-addresses extension, make sure that the php artisan enso:upgrade command is run BEFORE php artisan migrate
      • update the local/published addresses config file using the package version as reference
      • since there are some new addresses routes added, please ensure that the roles/permissions are correctly configured for your projects and then save the roles configurations
    • run php artisan enso:upgrade considering the mentions above (in the addresses section)
    Source code(tar.gz)
    Source code(zip)
  • v3.9.3(Apr 30, 2020)

    front-end

    categories

    • removed deprecated routes & pages
    • added the CategoryTree Vue component featuring an improved flow, CRUD & reorder abilities
    • updated dependencies
    • updated move route
    • now the selected category is cleared when destroying category
    • fixed the package entry point

    calendar

    • added translation for the calendar's name

    charts

    • fixes typo/leftover regarding the label formatter function
    • fixed data-labels with formatter
    • fixed progress in info-panel

    commercial

    • added short numbers to the stats info panel
    • added picture to items
    • pictures are now vertically aligned in the product selection typeahead

    control-panel

    • removed unneeded dependency
    • made all top columns narrow

    emag

    • updated routes
    • ui updates
    • adjusted for missing match's pictures
    • refactor to make available more information in sub components
    • fixed enum option name
    • unmatched products with a selection of emag products are now styled differently
    • refactored components
    • fixed missing product id
    • now modal is closed when match choice is made
    • matching process fixes
    • further tweak for the modal closing; removes published/is_published usage

    financials

    • added short-numbers to info panel

    modal

    • removed deregisteration from close, added it to beforeDestroy

    products

    • updated form for the new CategoryTree.vue component
    • added box on categories in form
    • added picture gallery
    • updated BaseForm for gallery
    • added missing dependency
    • added missing import

    select

    • fixed bug related to the disabled selection of options while loading the option list

    ui

    • parses number for type safety for the shortNumber formatter

    uploader

    • added support for manual uploading

    back-end

    categories

    • updated factory
    • fixed validation bug
    • fixed moving of categories within the tree
    • updated the move route

    cli

    • refactored to get rid of deprecation notice

    core

    • adds categories upgrade
    • fixes user conflict exception

    files

    • changed resize / optimize order

    image-transformer

    • allows transformer to work with local files too

    products

    • added product pictures
    • fixed reordering
    • added a picture relation for the default picture (order_index 1)
    • removed active filter from product options controller

    roles

    • updated to use injected service in command handle method

    upgrade

    • fixed default role permission syncing
    • updated Structure.php
    • fixed typo and default role query
    • added a new ShouldRunInConsole contract
    • removes invalid logic
    • removed deprecated exception

    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.3 in config/enso/config.php
    • if using the categories package, ensure that the php artisan enso:upgrade command is run
    Source code(tar.gz)
    Source code(zip)
  • 3.9.2(Apr 16, 2020)

    3.9.2

    front-end

    Front-end packages have had their yarn.lock file removed as it wasn't mandatory and fixed various automated depencency vulnerability warnings.

    accessories

    • removed tooltip.js as direct dependency
    • fixed comments' avatar display
    • reverted to 'component'-wrapper class names for the Discussions and Comments components

    categories (new)

    • created a new package which is currently a dependency of the products package

    charts

    • added a new component, info panel to the package
    • added slot for controls
    • now performs fetch on source change
    • added missing shortNumber filter
    • added default min:0 for y axis ticks
    • improved chart to use formatter function on y axis

    commercial

    • added stats example page
    • added missing package dependencies
    • fixed product select template
    • updated QuickView component import
    • added a github issue template to the repository

    confirmation

    • removes tooltip.js as direct dependency

    data-import

    • updated/fixed the Enum usage
    • added a github issue template to the repository

    departments

    • updated menu icon
    • updated ui dependency requirement

    directives

    • added a new v-resize directive, meant to be used with input fields, that resizes the field based on its content length

    dropdown

    • removed popper.js as dependency
    • cascaded the hide() method;
    • fixed the proper closing of drop-downs when dealing with multiple drop-downs
    • added stopPropagation for click events
    • tweaked the component height to have it aligned with other Enso UI components

    enums (new)

    • micro package that exposes Enum functionality, similar the the back-end package with the same name

    filters

    • removed tooltip.js as direct dependency
    • @enso-ui/strings was added as a dependency as some utility methods are used within CoreDateFilter

    forms

    • removes tiptap as dependency

    hr

    • added fa-pro dependency
    • removed unneded dep

    inventory

    • added addresses to the warehouse edit form as a result of adding an address relationship to the warehouse model
    • the @enso-ui/products dependency was updated to the new minor version
    • added a github issue template to the repository

    permissions

    • the permission.js mixin was converted to a module
    • added a github issue template to the repository

    quick-view

    • added a github issue template to the repository
    • removes unneeded @enso-ui/card dependency

    roles

    • updated the roles configuration component to work with the new permission module
    • added a github issue template to the repository

    search-mode (new)

    • added support for exact and doesn't contain matching
    • added stopPropagation for the click event

    strings (new)

    • micro package that contains a set of string manipulation methods

    tables

    • added support for configurable, state persistent, general filters
    • addressed bug tooltip position bug for some tables with one or two rows
    • translation support was added the column visibility selection
    • @enso-ui/select was added as dependency as dropdown usage was replaced by select
    • @enso-ui/enums was added as dependency as Enum computation was added to the front-end
    • added support for average totals
    • extracted search in its own component
    • fixed some layout problems in the top controls
    • fixed a bug where a double fetch was performed when resetting preferences
    • trimmed down request by removing garbage data
    • fixed preferences handling

    teams

    • added a github issue template to the repository
    • fixes team name padding in card

    themes

    • added the sidebar.scss component as part of the fix for the UI menu issue

    tutorials

    • updated column name in the index table
    • updates enum slot to the new table
    • added a github issue template to the repository

    typeahead

    • itemEvents & highlight attributes are now exposed in items slot

    products

    • fixed directives requirement/import
    • added category selection to the product form as the product model now has a category relationship
    • @enso-ui/categories was added as a dependency
    • added a github issue template to the repository

    select

    • updated the multi-select trigger css (set height & min-height)
    • extended selection slot to also cover the 'no selection' or 'no options' scenarios
    • fixed bug where select height was not matched with inputs
    • fixed select / deselect events payload to include full object when working in objects mode

    ui

    • fixes collapsed sidebar label position on scroll
    • removed tooltip.js as direct dep
    • fixed navbar search tag filtering
    • @enso-ui/enums was added as a dependency
    • fixed bug related to missing a background color for the menu, on mobile usage mode
    • used interpolation syntax for scss variables usage

    back-end

    addresses

    • replaces helper with facade
    • added checks for single vs multi address support

    avatars

    • now the supervisor can update the avatar of the impersonated user
    • refactored Default Avatar service, the create method returns now the freshly created avatar
    • improveed the logic in test

    calendar

    • removed event body from the birthday calendar
    • refactored event request validator
    • fixed logic in event policy causing users with the proper roles to not be able to edit certain events

    categories (new)

    • the package adds categories functionality and is currently a dependency of the products package

    charts

    • now axes are displayed by default

    cli

    • removed log
    • fixed bug that was not allowing the creation of a parent menu with null route

    control-panel

    • fixed bug caused by url leading slashes

    comments

    • fixed the user resource used for displaying the avatar

    companies

    • fixed the publish tag
    • added importer & excel seeder
    • fixed enum usage
    • updated the static Company model owner method

    currencies

    • added slot for the symbol table column

    data-import

    • fixed rejected import download
    • removed deprecated attribute from table select
    • fixed enum usage in table

    filters

    • fixed Hour typo related bug
    • added TimeSegments enum & timeSegment getter and property in the Interval service
    • extended comparison operators with Equal, Is, IsNot, NotLike, NotILike
    • extended search modes with exact and doesn't contain matching
    • fixed a bug in the search service when having falsies as value
    • adds tests for the new search modes

    forms

    • enums are now resolved from the service container

    localisation

    • updated a 'ro' translation value

    permissions

    • improved computed type by adding a Verbs enum

    phpunit-pretty-print (new)

    • created a phpunit pretty printer package

    products

    • added vat rates enum
    • improved form
    • added category attribute & functionality to the package
    • added upgrade service to products

    ro-addresses

    • added missing facade import
    • updated index controller for the new for scope
    • refactors seeders
    • added factory & tests
    • fixes validator by adding missing attribute

    select

    • fixed resource instantiation via the usage of dependency injection

    tables

    • refactored optimal chunk service & its respective test
    • enums are now resolved from the service container
    • fixes enum localisation when building template
    • added support for configurable, state persistent, general filters
    • updated api version
    • filterable is now a supported meta attribute within the json table configuration files used to mark columns that are filterable using the new filtering functionality
    • average is now a supported meta attribute within the json table configuration files used to mark columns for which we want a average type of total
    • updates backend for the new trimmed request
    • added some missing return types for methods
    • fixed a bug in rawTotals where the result was being cast to int
    • fixed an inconsistence where the columns was mapped in a Collection instead of a Obj
    • added support for exact and doesn't contain search modes
    • removed Enum computation in favor of front-end handling
    • renamed the fetchMode method to serverSide
    • added enum transformation for front-end enum processing

    upgrade

    • fixed exception method signature
    • fixed admin role syncing in production for structure upgrade

    The new tables filters

    While the new minimum configuration table filters are implemented and you may test drive them (by adding the "filterable" attribute in the table columns' meta arrays, and then configuring the filters from the table's UI), please note that some of the filters configuration options/values/structure may change. We therefore don't recommend using them just yet in production.

    When this feature will reach what we consider a stable form, the various options will be explained and the documentation updated.

    Upgrade steps

    To upgrade:

    • remove from client/package.json:
      • extract-text-webpack-plugin
      • popper.js
      • postcss-cssnext
    • add in client/package.json
      • postcss-preset-env
    • run `composer require --dev laravel-enso/phpunit-pretty-print
    • add in phpunit.xml printerClass="LaravelEnso\PHPUnitPrettyPrint\PrettyPrint"
    • 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.2 in config/enso/config.php
    • in config/enso/tables.php update the comparisonOperator and searchModes keys to:
    'comparisonOperator' => ComparisonOperators::Like,
    'searchModes' => [
        SearchModes::Full, SearchModes::StartsWith, SearchModes::EndsWith,
        SearchModes::ExactMatch, SearchModes::DoesntContain,
    ],
    
    • in config/enso/select.php update the comparisonOperator and searchMode keys to:
    'comparisonOperator' => ComparisonOperators::Like,
    'searchMode' => SearchModes::Full,
    
    • in config/enso/imports.php:
      • add the new companies importer under the configs array
      'companies' => [
          'label' => 'Companies',
          'template' => 'vendor/laravel-enso/companies/src/App/Imports/Templates/companies.json',
      ],
      
      • update app namespace to App for userGroups' importer
    • update resources/preferences.json and change the expandedMenu key to expandedSidebar
    • if using the products package:
      • add the LaravelEnso\Products\App\Services\Upgrades\Products upgrade service class to your upgrade logic and if customizing the validation/form, extending the model, ensure that the new attribute is fillable/etc as required
      • since products now depends on the @enso-ui/categories package, you should also import the package's icon and routes
    Source code(tar.gz)
    Source code(zip)
  • 3.9.1(Mar 30, 2020)

    3.9.1

    The release includes a complete refactor of the main Menu and many small changes and fixes both on the back-end and the front-end.

    front-end

    accessories

    • updated avatarLink usage
    • removes quick-view due to extracting it to its own package

    calendar

    • switched vuecal to default grey theme
    • added translation for the small calendar

    card

    • added is-naked on card control

    checkbox

    • updated the CheckboxItems.vue component class

    commercial

    • updated enso date filters usage

    contracts

    • fixed parties enum in Index.vue
    • updated enso date filters usage

    financials

    • updated enso date filters usage

    how-to

    • fixed template upload vertical alignment

    logs

    • log card controls are now naked instead of success/info/danger

    mixins

    • updated last route / intended route mutation usage

    modal

    • small refactor

    projects

    • fixed icon for the ProjectCard component

    quick-view (new)

    • replaced hardcoded scss top value with variable in order to detect navbar height

    route-mapper (new)

    • new micro package which contains the route mapping logic

    tables

    • fixed tag width on boolean columns
    • removed unnecessary span around cells
    • improved top controls
    • updated search layout
    • enhanced column visibility & style selector
    • added helper for invisible columns

    teams

    • fixed team name padding in card

    themes

    • renamed the is-hoverable helper to is-hoverable-item
    • added a settings component
    • improved the font import, made it easier to customize
    • added Muli as family secondary font, used for the refactored menu
    • adjusted shadows for is-raised, raises-on-hover, box and card
    • made changes to improve contrast for both themes

    typeahead

    • drop down events are now cascaded
    • exposed itemEvents & highlight in the items slot

    toastr

    • vertically centered the message icon

    ui

    • removed deprecated Route.js
    • refactored document title, route.js
    • small refactor in Loader.vue
    • now using intendedRoute & intendedPath when redirecting a logged out user after login
    • renamed MenuState to SidebarState
    • implemented sidebar and navbar variables
    • updated aside shadow to be more discreet
    • changed page header animations to simple fade
    • updated navbar elements
      • changed order for sidebar control
      • added tooltip on env indicator
      • removed arrow from notifications
      • added a long awaited user dropdown when clicking the user profile link that allows quick logout
      • upgraded search:
        • by default it is hidden
        • can be activated by clicking the search icon or using the / key
        • on esc & blur it hides itself
    • updated sidebar / menu style:
      • made the sidebar wider
      • added a new font
      • increased the menu-label & menu-item font
      • updated highlighting and selected state of menu
      • the parent menu now remains open when changing to a menu with a different parent
      • added a visual indicator / handle for menu reorder
      • refactored the way active menus are managed
    • refactored store
      • renamed menus store module to menu
      • renamed layout/menu module to layout/sidebar
      • renamed layout/settingsBar to layout/settings
      • added a layout/search module for managing the global search state
      • integrated the logout request into the auth.js module
    • made the user group forms smaller
    • updated the avatar component to use the user resource format
    • added footer resize on sidebar collapse
    • added footer transition
    • made bookmarks shadow similar to that of the sidebar
    • renamed sidebar related classes (menu => sidebar)
    • set the menu font smaller (0.95em)
    • fixed bug in search when selecting from list
    • updated the sidebar state's label

    back-end

    All back-end packages have been updated due to renaming the app folder to App. You can find more information below.

    avatars

    • fixed trait folder name
    • added unique constraint for the user_id column

    cli

    • refactored logic & tests as needed to support the generation of files in both local & package modes, using the correct case for the App folder

    companies

    • added a default, open/permissive policy for the controller actions
    • project specific logic can be created locally when needed, by extending and binding a new policy

    core

    • added a role relation to user group
    • adjusted the user group form
    • updated the way the avatar is shown in users table
    • added a unique constraint for the user_id column in the avatars table
    • fixed namespace for the avatars upgrade command

    currencies

    • dropped Types from migrations

    data import

    • removed deprecated parameter from the UploadedFile constructor call

    excel

    • fixed namespace for ExcelExport from LaravelEnso\Excel\App\Exports to LaravelEnso\Excel\App\Services

    filters

    • fixed incorrect interval filtering by returning copies of the carbon objects
    • adds a new search service to be used for query builder searching

    helpers

    • added a new When helper trait which can be used in a similar fashion to query builder style

    localisation

    • added translation keys for the Sentry front-end error report form
    • small keys cleanup
    • updated localisation form layout
    • updated user translation for the 'ro' language files

    menus

    • moved attribute set from tree builder to resource
    • added an active attribute to the resource

    people

    • added a default, open/permissive policy for the controller actions
    • project specific logic can be created locally when needed, by extending and binding a new policy
    • multi-tenant specific request authorization logic has been removed form the request validation
    • fixed test

    products

    • fixes failing tests when suppliers are not given

    searchable

    • implemented the new search service from laravel-enso/filters; removed local logic

    select

    • refactored traits, used the new When helper trait for a more fluent, conditional flow

    tables

    • implemented the new search service from laravel-enso/filters; removed local logic

    upgrade

    • fixed the structure migration
    • fixed the default role permission syncing
    • refactored native php function to collection for better readability

    Upgrade steps

    It was necessary to rename the app folders as with newer composer versions, the tool would complain (show notices) about the namespace not being psr4 compliant.

    If these notices were to be present when deploying, Envoyer would stop the deploy process.

    However, since the namespaces remained the same, these changes should not affect you.

    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.1 in config/enso/config.php
    • if using the ExcelExport class locally, search & replace LaravelEnso\Excel\App\Exports\ExcelExport with LaravelEnso\Excel\App\Services\ExcelExport
    • if directly using import templates from any of the Enso packages, update the path to the JSON templates in config/enso/imports.php
    Source code(tar.gz)
    Source code(zip)
  • 3.9.0(Mar 25, 2020)

    3.9.0

    This release includes many improvements and new features, bugfixes as well as the upgrade to Laravel 7.*.

    Since the Laravel upgrade contains some pontetially breaking changes, you should take a look at the official upgrade instructions to see if/how you're affected.

    front-end

    bulma

    • added components: TreeView, CheckboxManager, CheckboxItems, QuickView

    calendar

    • fixed the event slot, due to the VueCal update
    • fixed an UI template issue when the selected option was not ready
    • added an update action when an event was modified via drag & drop due to the new VueCal feature
    • fixed display for long calendar names
    • refactored event update confirmation modal - now uses buttons instead of radio buttons

    categories (new)

    • created package that handles product categories

    checkbox (new)

    • created package with checkbox items & manager components - extracted from the roles package (role configurator)

    clipboard

    • added clipboard support for passing an argument to the copy method - the argument represents the value that you want copied to the clipboard

    commercial

    • small UI updates for the order lines
    • cleanup of unused injection in FormContent
    • implemented order lines reload when trying to add a line to an order with stale data

    companies

    • added a new website attribute to the company model and as a result, a new column is visible and clickable in the index table
    • a corresponding upgrade was added to Enso (more information below)

    discounts

    • small refactor of the package's pages, removing duplicated code

    dropdown

    • updated dropdown item selector strategy

    emag

    • updated form content & extracted logic into the EmagOrder component
    • added check for the presence of the emag order id value

    filters

    • removed the deprecated SimpleDateFilter/ EnsoSimpleDateFilter components
    • refactored & improved date filter to handle more intervals

    financials

    • improved payment type filtering logic, to work better with internationalization
    • improved client filter to work better when used together with local state loading

    mixins

    • fixes throwing unkown errors
    • makes errorHandler more readable

    permissions

    • permission type was extracted to a dynamic computed property and the db table's column was dropped
    • added mixin with the CSS class used for the different permission types

    roles

    • Configure.vue now uses the new @enso-io/checkbox functionality which was extracted to a distinct package that roles now depends on

    search-mode (new)

    • a new dependency package that permits switching between the different search modes (full, starts with, ends with)
    • this new package is now utilized by select, typeahead and tables

    select

    • fixes the shouldDisableDropdown/dropdownDisabled computed property
    • improves the reload handling
    • added a searchLimit property, with the default value fo 10
    • added the new search mode functionality (hidden by default)

    quick-view (new)

    • a new dependency package that contains the QuickView component, extracted from the accessories package
    • the quick view default width was updated (is a little larger)

    tables

    • enhances support for highlighting rows
    • fixes tr :key attribute

    themes

    • added an is-hoverable helper class

    toastr

    • added a when method that allows fluent syntax while having conditionals

    tree-view (new)

    • added new package for the TreeView component

    typeahead

    • fixed the display of the 'no results' message visible when there are no results available
    • added ongoing request cancellation when multiple requests are made
    • added the new search mode functionality (hidden by default)

    ui

    • fixed the shortNumber filter, so that it does not alter 0 as well negative numbers
    • fixed an edge case in Enum.js
    • removed the dashboard route and page from the ui package (were moved to the local project)
    • menus related components refactor (has_children attribute usage changed to hasChildren)
    • refactored toastr usage in Notifications.vue & fixed small bug when toaster level was not specified
    • adds support for redirect after login
    • fixes edge case where error was sometimes not thrown when using the the errorHandler
    • updated Sentry integration, the RAVEN_DSN key is no longer required

    back-end

    The type attribute has been deprecated for structure migrations - all the packages with such migrations have been updated and have had the attribute removed.

    Also, dependencies were updated as required.

    action logger

    • adds index on created_at column

    avatars

    • adds avatar resource

    calendar

    • refactors tests, adds validation for event destroy, updates validation for event, refactors frequency and sequence logic
    • adds formatting for reccurence end date for parent event
    • adds check for sequence break so it is no longer performed when not needed, if performing update on first event in the sequence
    • renames update type enum labels
    • fixes bugs

    categories (new)

    • added new package that handles product categories

    cli

    • removes deprecated permission Types from stubs

    commercial

    • refactors inCents to decimal, small changes due to refactor
    • updates migrations
    • client stocks supplier is now optional
    • updates client stock import

    companies

    • adds new website attribute (nullable)

    core

    • updates for Laravel 7
    • removes jessengers/date
    • adds DB upgrade for permissions
    • adds enso-aggregator to composer.json
    • extracts upgrade logic in its own package
    • update due to JsonParser to JsonReader rename
    • adds companies upgrade command due to new website attribute
    • updates failed jobs id to bigIncrements
    • adds User & Grup resources
    • refactors AppState to return resources

    countries

    • update due to JsonParser to JsonReader rename

    data import

    • fixes edge case for cells that need trimming
    • fixes tests to work with the new UploadedFile
    • returns array from template show / store controllers
    • update due to JsonParser to JsonReader rename

    discounts

    • decimal discounts refactor

    files

    • adds a model helper to the facade
    • refactors deprecated getClientSize and getClientMimeType in Files.php

    filters (new)

    • new package that can work in tandem with the front-end date filter component to generate date interval values for queries, graphs etc

    forms

    • update due to JsonParser to JsonReader rename

    financials

    • refactors inCents
    • modifies computors
    • fixes supplier payment factory
    • various small updates: updates suppplier payment validator, adds return types for methods, adds typed properties, updates factories, updates tests
    • reverted to explicit asserts

    helpers

    • JsonParser was renamed to JsonReader
    • adds When helper trait

    hr

    • refactors inCents

    inventory

    • fixes manual transactions for persistent processes
    • refactors inCents

    localisation

    • updates middleware to use Carbon instead of Jessengers\Date
    • update due to JsonParser to JsonReader rename
    • fixes typo in factory

    menus

    • adds a Menu resource
    • updates tree builder to return collection

    notifications

    • fixes test to fit the new Carbon serialization for models

    people

    • adds person resource

    permissions

    • small fixes
    • refactors type into computed property

    products

    • refactors inCents to decimal
    • updates request validation by adding internal code unique rule

    projects

    • removes Types from migration

    rememberable

    • adds return null if id is null

    roles

    • refactors permission tree to work with permission computed type
    • encapsulates config writing in model
    • adds a role resource

    select

    • adds searchMode

    services

    • refactors inCents to decimal

    tables

    • fixes global button filtering
    • uses getCountForPagination to fix count for queries that use group
    • update due to JsonParser to JsonReader rename
    • adds datetime support
    • adds a dateTimeFormat config option

    upgrade (new)

    • new package, contains upgrade logic for your local project

    Upgrade steps

    • due to the upgrade to Laravel 7, there are quite a few small changes you have to do in your local project. Take a look at this commit and check the list of changes. You should ignore:
      • composer.lock
      • client/yarn.lock
      • .styleci.yaml
      • telescope and horizon assets (you will publish these in the next steps)
    • you may safely remove the RAVEN_DSN key from your .env* files as it's no longer required
    • update TelescopeServiceProvider using this as example
    • update the sentry config file using this as example
    • run composer update in the project's root
    • run php artisan horizon:install
    • run php artisan telescope:install
    • edit client/package.json and
      • update @enso-ui/ui to 2.5.x
      • update pusher-js to ^5.0.0
    • rename in your .env* files MAIL_DRIVER to MAIL_MAILER
    • 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.0 in config/enso/config.php
    • run php artisan vendor:publish --tag=select-config" to publish theselect.php` config
    • note that the type attribute present in structure migrations has been deprecated and is no longer required - you may update your migrations, but it's not breaking if you leave it
    • the database upgrade service has been refactored and extracted to its own package. If you have upgrade logic in your local project you may need to update it. You should use as an updated example the core upgrade here and here
    • update config/cors.php if your project requires it
    • update local factories
    • find any local LaravelEnso\Helpers\App\Classes\JsonParser usages and update to LaravelEnso\Helpers\App\Classes\JsonReader
    • note that for Permission, the name should be unique; update the factory, look here for example
    • update App\Exceptions\Handler, use this as model
    • make sure that in your composer.json you still have the following dependencies:
      • "doctrine/dbal": "^2.8",
      • "predis/predis": "^1.1"
    • note that the vuex state structure is slightly changed. If you rely on the user's state in your front end components, make sure to update your logic according to the new User Resource format. Eg: replace this.$store.state.user.role_id with this.$store.state.user.role.id

    New structure:

    {
        "id": 1,
        "isActive": true,
        "email": "[email protected]",
        "person": {
            "id": 1,
            "name": "Example",
            "appellative": "Eg",
            "birthday": null,
            "title": null,
            "phone": "234"
        },
        "avatar": {
            "id": 1870
        },
        "role": {
            "id": 1,
            "name": "admin",
            "displayName": "Administrator",
            "description": "Administrator role. Full featured."
        },
        "group": {
            "id": 1,
            "name": "Admin"
        }
    }
    
    Source code(tar.gz)
    Source code(zip)
  • 3.8.2(Feb 26, 2020)

    3.8.2

    The release includes much needed UI vue-select / dropdown refactor.

    These changes are breaking when customizing/building upon the @enso-ui/select components.

    front-end

    Most of the packages received a dependency list cleanup.

    bulma

    • added the dropdown item component

    calendar

    • updates color select for the new vue-select / dropdown

    clipboard (new)

    • a simple VueJS clipboard copy component

    commercial

    • small adjustment in Order.vue

    contracts

    • refactored ui imports

    control-panel

    • added ubuntu icon import

    data-import

    • refactored ui imports

    datepicker

    • adds is-small boolean prop

    directives

    • v-focus can now be active conditionally

    dropdown

    • adds arrow keys support
    • updated selector strategy

    emag

    • components refactor
    • loading flag enhancement

    filters

    • fixes format/altFormat small bug
    • added input width for DateFilter

    financials

    • added documents & comments to client payments

    projects

    • refactored ui imports

    select

    • removes keyboard handling (moved to dropdown)
    • updates the selection slot usage
    • adds click modifier for tag / deselect
    • improved tag handling
    • fixed several edge cases
    • adjusts search input size
    • fixed dropdown indicator
    • fixed tag delete button and label split when they did not fit the containing div

    tables

    • refactored dropdown use
    • adjusted is-table-tag lateral padding

    textarea (new)

    • textarea component that can be easily integrated within the form

    themes

    • fixed small form-box overflow bug

    typeahead

    • upgrades dropdown usage

    ui

    • improves the main menu to handle indirect nested child pages
    • fixes a small typo related bug in the notifications page
    • upgrades dropdown usage
    • adds a margin between tags and options for the navbar search dropdown menu items

    wysiwyg

    • removed premium plugins from the default configuration

    back-end

    avatars

    • fixed manual transaction for persistent processes

    calendar

    • fixed factories

    control-panel

    • improved token management

    control-panel-api

    • refined memory extracting
    • updated operating system label
    • general refactor & improvements
    • fixed total memory reporting
    • refactored closures
    • fixes OS sensor value

    currencies

    • improved seeder
    • fixed manual transaction for persistent processes

    core

    • added index for created_at to action logs table
    • updated the upgrade command
    • added a protected indexExists($index, $table) helper in DatabaseUpgrade
    • fixed Authentication exception namespace

    countries

    • refactored seeder to use JsonParser

    data-import

    • added support for disabled imports (imports that are missing the template in imports.php config)
    • fixed manual transaction for persistent processes

    forms

    • fixes test
    • fixes error reporting for missing attributes

    helpers

    • enhanced JsonParser to support Collection & Obj
    • small refactor

    how-to

    • fixed manual transaction for persistent processes

    localisation

    • fixed manual transaction for persistent processes

    measurement-units

    • fixed factory edge case issue

    people

    • fixed the appellative helper
    • added dynamic methods dependencies in composer.json

    products

    • fixes a validation error occurring when saving a product with suppliers but without a default supplier

    roles

    • fixes visible role scope

    select

    • refactors option list retrieval flow
    • ensures options are sorted alphabetically
    • improves the options list limit computation

    services

    • the Service model is now Rememberable

    tables

    • refactored leftover app namespaces to App
    • refactored remaining collect() usage to Collection
    • fixed stub publishing
    • updated ButtonTest.php
    • fixed Meta $filtered type from bool to int
    • fixed count cache key implementation
    • added new feature that supports Custom Cache Key for table counts
    • fixed bug resulted from refactoring affecting multi-selection filtering
    • removed unneeded name attribute from buttons
    • added support for json resources / resource collections on table properties
    • made rogue column exportable by default

    versions

    • adds Version exception
    • small refactor in trait
    • fixed manual transaction for persistent processes

    versioning

    • fixed manual transaction for persistent processes

    Upgrade steps:

    • edit client/package.json and update all @enso-ui packages to their next respective minor version
    "@enso-ui/accessories": "2.4.x",
    "@enso-ui/bulma": "2.3.x",
    "@enso-ui/calendar": "1.4.x",
    "@enso-ui/filters": "1.4.x",
    "@enso-ui/forms": "1.4.x",
    "@enso-ui/mixins": "1.1.x",
    "@enso-ui/tables": "1.4.x",
    "@enso-ui/ui": "2.4.x"
    
    • run yarn, yarn upgrade && yarn to ensure you have the latest versions and patches are applied
    • run composer update in the project's root
    • update the version to 3.8.2 in config/enso/config.php
    • if you have front-end customisations to Dropdown / VueSelect / EnsoSelect / Typeahead / EnsoTypeahead ensure that they're functioning okay and make changes if necessary
    • if using rogue columns, unless you want those columns as exportable, mark each such column as notExportable in the table templates meta, since they're now exportable by default
    Source code(tar.gz)
    Source code(zip)
  • 3.8.1(Feb 2, 2020)

    3.8.1

    With this release, we have upgraded sass-loader to the latest version(8.0.3)

    front-end

    currencies

    • adds a Conversion.js service and a vuex store module
    • adds allowed prop to currencies
    • splits initialise in distinct actions for countries / currencies

    divider

    • centers title and slightly adjusts horizontal position

    forms

    • removed optional SelectField params attribute binding to field.meta.params
    • adds slot in form field

    modal

    • adds ability to stack multiple modals w/o breaking close on esc

    products

    • small cleanup

    projects

    • adds projects status
    • upgrades deps

    roles

    • extract hover to themes
    • adds class
    • revert

    tables

    • adds clearSelected Helper
    • set pagesSelected to false directly
    • refactors action slots

    teams

    • updated deps versions

    themes

    • fixes syntax
    • move hover logic
    • refactor content-manager

    tutorials

    • upgrades sass-loader

    ui

    • adds an Avatar.vue component that works with the backend TrackWho resource
    • refactors users table to use the new avatar component
    • updated dependencies version

    back-end

    core

    • added migrations for morphable models namespaces
    • adds currencies permission in upgrade command
    • Spa and AppState flexibility #272
    • made AppState private methods protected.
    • Spa __invoke method will not instantiate with "new AppState" but with App::make
    • adds missing import
    • refactors Enso's Login event

    countries

    • adds avoids deletion conflicts trait

    currencies

    • fixes converter with default currency
    • adds check for same currencies in converter; adds exception if no rate is found
    • fix; needs refactor / rename
    • renames Converter to Conversion; adds an endpoint for making conversions; refactors validators location;
    • fixes typo in exchange rates table; adds an apiPrecision config option

    data-export

    • adds a purge command
    • adds a retainFor config option

    data-import

    • fixes validation/import logic
    • removed leftover/deprecated Validator methods

    files

    • fixes forUser scope check

    forms

    • adds option to customize label in form
    • added taggable to the list of supported meta params
    • removed params, pivotParams and customParams from the list of valid, optional meta attributes

    helpers

    • fixes db seed progress bars
    • adds a DiskSize helper class for human readable values

    image-transformer

    • removed leftover exceptions

    localisation

    • removed leftover command
    • added new translation keys

    migrator

    • removes leftover classes, improves structure migration rollback logic
    • fixes rollback when parent menu is null; small refactor
    • improves logic encapsulation
    • adds validation on rollback for permissions

    products

    • improves syncSupplier method; improves validation

    ro-addresses

    • fixes method signature in AddressForm

    select

    • fixes bug when search is empty and the builder was making a comparison to %%

    tables

    • removes unneeded name attribute from buttons
    • adds support for json resources on table properties
    • adds support for resource collection
    • adds comptesArrayColumns and computesModelColumns contracts
    • adds Resource computor
    • adds a strip template option that can receive an array of attributes that will be stripped from the response
    • refactors config to Config

    track-who

    • fixes created by & updated by when no user is auth

    Upgrade steps:

    • update sass-loader in client/packages.json from "sass-loader": "^6.0.0" to "sass-loader": "^8.0.0"
    • add bulma-extensions+2.2.2.patch from the current repo to your client/patches
    • update client/vue.config.js to compile the view locally instead of under the vendor folder
        filename: process.env.NODE_ENV === 'production'
            ? '../resources/views/index.blade.php'
            : './index.html',
    
    • update the default route in routes/web.php to
        Route::view('/{any}', 'index')->where('any', '.*');
    
    • add in .gitignore the local view (resources/views/index.blade.php)
    • since this version we went back on building the app for both legacy and modern browsers. To enable that you have to:
      • update the babel.config.js file to:
      module.exports = {
          presets: [
              '@vue/cli-plugin-babel/preset',
          ],
      };
      
      • add the --modern flag in client/package.json for the build script
      "build": "rm -rf ../public/{js,themes,themes-rtl,images} && vue-cli-service build --no-clean --modern",
      
    • run yarn upgrade && yarn in /client
    • run composer update in project root
    • update the version to 3.8.1 in config/enso/config.php

    Note:

    Besides what's mentioned above, you should go through these files in your project and align / adapt their content with the ones from the Enso repo:

    • client/package.json
    • client/vue.config.js
    • client/babel.config.js
    • .eslintrc.js and client/.eslintrc.js
    Source code(tar.gz)
    Source code(zip)
  • 3.8.0(Jan 10, 2020)

    3.8.0

    With this release, we have upgraded our back-end packages to require PHP7.4+. Consequently, we have made several changes to adapt our back-end code to the latest syntax such as:

    • refactoring to short closures
    • adding typed properties and method return types where necessary

    Furthermore, we have also generally improved and refactored all of our packages in order for them to be consistent and more easily maintained. During this process we have aimed to:

    • normalize package namespaces ( renamed app to App )
    • replacing collect() helpers in favor of instantiating the Collection() object
    • drop redundant suffixes for job, exception and policy classes where necessary
    • refactor Exceptions to encapsulate error messages for consistency and reusability
    • split route files
    • add missing facade imports
    • use array syntax for service provider tag publishing
    • upgrade Enums to use the latest version
    • improve overall logic where possible

    front-end

    commercial

    • updates serialize-javascript from 1.9.1 to 2.1.1
    • renames quick-view-controls to controls
    • renames controls to actions
    • adds controls, row-actions and filters slots

    contracts

    • adds icons
    • refactors Form, Index, BaseForm, Card and List components
    • adds ContractParties enum
    • updates dependencies
    • fixes bugs

    departments

    • updates icon and dependencies

    forms

    • routing to the edit page is now done asynchronously

    hr

    • drops Projects component
    • updates dependencies
    • fixes style for payrolls Index page
    • renames splited to split
    • updates namespaces

    projects

    • fixes bugs and namespaces

    roles

    • updates permissions

    tables

    • adds icon
    • improves custom slots handling
    • exposes slots for both row and global buttons
    • splits scopedSlots into actionSlots, controlSlots and bodySlots

    ui

    • updates dependencies

    back-end

    addresses

    • renames setDefault permission to makeDefault

    calendar

    • overall refactors and removes enso:calendar:send-reminders command from AppServiceProvider. This means that notifications will no longer be sent automatically.

    cli

    • makes the code DRYer
    • reduces cyclomatic complexity
    • improves writers
    • extracts Cli trait in src/tests
    • overall logic improvement

    companies

    • refactors company request validator's unique methods into a parameterised one

    control-panel-api

    • reverts statistics refactor

    contracts

    • reverts statistics refactor

    core

    • refactors state builders and adds return types for their methods
      • data() changes to data(): array inside the local state builder
    • adds upgrade command for new roles structure
    • fixes user group conflict exception

    data-import

    • adds a Finalize job
    • adds in config unknownError key for customizing undetermined errors in rejected summaries
    • makes the User available in custom validators via the user() helper
    • shows duration in imports table for both mysql and sqlite
    • fixes template validation message
    • removes deprecated splittingQueue from config
    • renames Policy to DataImport

    discussions

    • adds DiscussionConflict exception
    • users DI in controllers
    • refactors validators

    documents

    • adds DocumentConflict exception
    • the Policy class was renamed to Document

    dynamic-methods

    • adds contract and services for better managing the creation and binding of methods and relations to models

    emails

    • removes unused controller and routes ( Create )
    • removes superfluous service ( Mail Manager)
    • removes deprecated publish ( resources/js )

    enums

    • renames attributes() in data() to be consistent with the property name
    • $data becomes typed (array $data)
    • adds return type for data() method ( data(): array )
    • adds laravel as dependency in composer.json

    excel

    • adds ExcelExport exception

    files

    • improves file validation

    helpers

    • adds tests for InCents and MapsRequestKeys
    • improves logic in InCents, JsonParser, Obj, Decimals

    forms

    • small refactor and logic improvement

    helpers

    • improves logic in InCents, JsonParser, Obj, Decimals
    • adds test for InCents
    • optimize imports

    how-to

    • renames VideoException to Video. It now extends ConflictHttpException

    hr

    • renames splited to split

    inventory (PRIVATE)

    • refactored dynamic methods to new style

    localisation

    • refactors unique fields in request validator

    menus

    • improves logic in Organizer and in TreeBuilder
    • adds a Menu exception that extends ConflictHttpException and encapsulates error messages

    multitenancy

    • removed from core's dependencies ( becomes optional )
    • fixes enums constant visibility

    notifications

    • refines broadcast service provider

    people

    • adds an appellative() helper on Person

    permissions

    • adds a Permission exception that extends ConflictHttpException and encapsulates error messages

    products

    • changes cents strategy
    • refactors company relations using the new dynamic methods

    roles

    • renames permissions
    • refactors controllers structure
    • extracts command logic to service

    searchable

    • improves Finder.php

    services

    • improves Finder.php

    tables

    • adds new feature that supports Custom Cache Key for table counts
    • adds optional name and slot attributes for button template object

    teams

    • removes unused trait from Team Model

    Upgrade steps:

    • within composer.json update where necessary:
      • laravel-enso/calendar to 1.5.* ( if using this package )
      • laravel-enso/cli to 3.4.*
      • laravel-enso/cnp-validator to 1.3.* ( if using this package )
      • laravel-enso/control-panel-api to 2.4.*
      • laravel-enso/core to 4.7.*
      • laravel-enso/dynamic-methods to 1.1.* ( if using this package )
      • laravel-enso/enums to 1.2.* ( if using this package )
      • laravel-enso/excel to 1.1.*
      • laravel-enso/pdf to 1.1.*
      • laravel-enso/ro-addresses to 3.3.* ( if using this package )
      • laravel-enso/versions to 1.1.* ( if using this package )
    • update in client/package.json:
      • "@enso-ui/accessories": "2.3.x",
      • "@enso-ui/tables": "1.3.x",
      • "@enso-ui/ui": "2.3.x",
    • within client/src/js/enso.js update the import ('../sass/enso.scss'); line to import '../sass/enso.scss';
    • remove from composer.json the following line since it is no longer required: "LaravelEnso\\Cli\\tests\\": "vendor/laravel-enso/cli/tests/",
    • update your Enso classes imports ( search the whole project for \app\ and replace with \App\ )
    • if you are implementing our state builder interface or extending our local state builder, make sure to update your build() method signature ( build(): array)
    • upgrade Enums accordingly
      • rename attributes() method to data() where required
      • $data becomes a typed property ( array $data= [..] )
    • if using/extending the LaravelEnso\Documents\App\Policies\Policy class, update any imports to LaravelEnso\Documents\App\Policies\Document
    • if using/extending the use LaravelEnso\Files\App\Policies\FilePolicy class, update any imports to LaravelEnso\Documents\App\Policies\File
    • if using/extending the LaravelEnso\People\App\Http\Requests\ValidatePersonRequest class, note that the uidUnique() & emailUnique() methods have been replaced by the unique($attribute) method
    • add the following block inside your phpunit.xml file:
    <testsuite name="helpers">
        <directory suffix="Test.php">./vendor/laravel-enso/helpers/tests/units</directory>
    </testsuite>
    
    • if you wish to continue sending calendar reminders, you need to handle this in your apps App\Console\Kernel.php
    protected function schedule(Schedule $schedule)
    {
        ...
        $schedule->command('enso:calendar:send-reminders')->everyMinute();
        ...
    }
    
    • remove from config/enso/imports.php the deprecated splittingQueue key,
    • run composer update
    • run yarn upgrade && yarn in /client
    • run php artisan enso:upgrade
    • run php artisan migrate
    • update telescope assets: php artisan telescope:publish
    • update the version to 3.8.0 in config/enso/config.php

    (optional)

    In order for the local project to be syntactically consistent with our ecosystem you should refactor as follows:

    • use typed properties where necessary
    • replace all collect() helpers with the Collection() facade
    • refactor closures to the new PHP7.4+ short closure syntax
    • split route files ( eg. https://github.com/laravel-enso/core/tree/master/src/routes )
    • if using phpinsights, don't forget to update the config file from config/insights.php ( https://github.com/laravel-enso/enso/blob/master/config/insights.php )
    • we have moved the local User::class from our Enso app under App\Models namespace. From now on, we have decided to keep the models in all of our projects under this namespace for better readability. If you wish to adopt this structure as well, don't forget to update your config\auth.php file.
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],
    
    • the local factories and seeders have been updated to use short closures as well. if you wish, you can force publish the updated versions ( careful, this will overwrite your local customisations ) with:

      • php artisan vendor:publish --force --tag=enso-factories
      • php artisan vendor:publish --force --tag=enso-seeders
    • if you wish to take advantage of the new tables feature which allows the use of custom cache keys for counts, your table builders must implement CustomCountCacheKey().

    • Regarding changing namespaces, you may need to update the namespaces for polymorphic relation in the database tables like comments, documents etc, if you sql server is case sensitive.

    Source code(tar.gz)
    Source code(zip)
  • 3.7.4(Dec 16, 2019)

    3.7.4

    This release improves the quality of the back-end code addressing issues revealed by phpinsights (more info in the back-end section) as well as the usual small updates and fixes.

    front-end

    calendar

    • added support for the spanish language

    forms

    • added in-page preview for PDF files
    • fixed small styling issues and updated dependencies
    • now emits a template-fetch-error when there is an error fetching the template from the API

    products

    • added missing measurement-units package dependency

    tables

    • added support for row global actions

    backend-end

    All packages were checked with the analitics tool and, where needed, the appropriate fixes and updates where implemented.

    Most packages have had updates pertaining to:

    • missing constants visibility
    • unused variables
    • string concatenation vs string templates
    • using old school methods such as get_class in favor of using ::class
    • inconsistent array indentation
    • class fields and methods ordering and more.

    In addition to the code, architecture and style changes, the route files have been broken down into smaller files to make management easier.

    Apart from these updates, which are too many to list individually for each package, the packages below have had other additions.

    cli

    • fixed the generated method name used in the table builder stub

    core

    • added the missing doctype to the production tag, which fixes a TinyMCE issue
    • the User model deletion is now handled by the AvoidsDeletionConflicts trait

    countries

    • added the country code to the model's resource

    currencies

    • fixed the Currency resource
    • fixed the seeder for testing cases
    • improved the converter so as to use the most recent date as fallback if there is no rate available for a given day
    • laravel-enso/countries is now a dependency for the package
    • the short_name attribute was refactored into code

    products

    • changed content type for the product part number form input from number to text

    teams

    • the Team model now uses the AvoidsDeletionConflicts trait for the delete process
    • the Relations trait is utilized to be able to support dynamic methods

    Upgrade steps

    This is a non breaking upgrade:

    • run composer update
    • run yarn upgrade && yarn in /client
    • update the version to 3.7.4 in config/enso/config.php
    • if using the currencies package with a prior version to 1.4.0, also run php artisan enso:upgrade in order to update the short_name table column
    Source code(tar.gz)
    Source code(zip)
  • 3.7.3(Dec 6, 2019)

    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:reset command 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-units package

    cli

    • added the TableCache trait to the generated model
    • fixed the request validator namespace
    • updated the resources folder to client/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/products package

    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_unit column from Product and replaces it with measurement_unit_id
    • added the upgrade php artisan enso:products:upgrade console command which will migrate your products table and seed either a default Piece measurement 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 && yarn in /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-units package and products now depends on it
    • measurement units were stored in the products table's measurement_units column, and the values were taken from the MeasurementUnits enum
    • that column is dropped and replaced with a measurment_unit_id column which points to the measurement_units table

    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

    Source code(tar.gz)
    Source code(zip)
  • 3.7.2(Nov 20, 2019)

    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 owner method 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 && yarn in /client
    • update the version to 3.7.2 in config/enso/config.php
    • update the config/enso/forms.php configuration 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
    
    Source code(tar.gz)
    Source code(zip)
  • 3.7.1(Nov 18, 2019)

    Laravel Enso's Changelog

    3.7.1

    front-end

    calendar

    • fixed request filter date format

    filters

    • fixes fill method 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 ownerCompanyId key in config.php
    • updated the config.php configuration, so that the values that make sense are read from the .env file 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 & customParams meta properties for select

    helpers

    • fixed filled getter on Obj when value is an instance of Collection

    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 && yarn in /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).

    Source code(tar.gz)
    Source code(zip)
  • 3.7.0(Nov 14, 2019)

    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-d or Y-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-input parameter usage was fixed

    filters

    • DateFilter now has a direction parameter & control: you can now choose to filter from past & future presets
    • DateFilter also has a new forward boolean 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-format handling for the date field
    • instead of a single actions slot, the form now has a two actions-left & actions-right slots. 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 value parameter 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_rates date 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 dateFormat parameter is now named altDateFormat (breaking change)
    • fixed route generation in Builder
    • updated the tests

    helpers

    • the DateAttributes trait 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 show route was renamed to load
    • 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/js to client/src/js
    • the front-end dependecies location will change from node_modules to client/node_modules
    • the package.json configuration file location will change from project root to client
    • the front-end patches location will change from patches to client/patches
    • when installing dependencies using Yarn, building or serving the front-end, you will need to cd into the client folder first.
    • instead of using Laravel Mix's webpack.mix.js file to configure the build, we will be using VueCli's vue.config.js
    • we can still use Valet to serve the back-end but we must use yarn serve to serve the front-end for hot module replacement

    VueCli upgrade related steps

    • copy the client folder from the Enso repo into your project root

    • add any (package) aliases you had previously added to the webpack.mix.js file into:

      • the settings.import-resolve.alias.map section of the client/.eslintrc.js file
      • the configureWebpack.resolve.alias section of the client/vue.config.js file
    • update/replace your project root .eslintrc.js with the contents from client/.eslintrc.js and correct the aliases paths

    • if you had customized the .babelrc file, move those customizations to the client/.babelrc file, and remove the root file

    • move your patches from patches to client/patches

    • move any local dependencies you had added to the package.json to the client/package.json file

    • move any additions from the resources/js/app.js file to the client/src/js/app.js

    • move any additions from the resources/js/localState.js file to the client/src/js/localState.js

    • move any additions from the resources/js/router.js file to the client/src/js/router.js

    • move your local components, pages, routes & store from resources/js to client/src/js

    • once you have moved your js files, you may delete the resources/js folder

    • if you have any local image resources in resources/images you can create a client/src/images folder and move them there. Afterwards, you should add a new CopyPlugin instance to the configureWebpack.plugins section within vue.config.js so that the images are copied on build (and overwrite, if needed, the default Enso assets).

      You may then delete the resources/images folder (the image files provided with Enso, such as the ones in the emails and corners have been extracted to their respective packages)

    • move any addtions from within the resources/sass files to the client/src/sass files

    • once you've moved everything, the resources folder should look like on the Enso repo here

    • remove the webpack.mix.js file

    • update .gitignore using Enso's as example and double check client/.gitignore

    • within composer.json update:

      • laravel-enso/core to 4.6.*
      • laravel-enso/calendar to 1.4.* (if using the calendar package)
    • run composer update in the project root to update the back-end packages

    • cd into the client folder and run yarn to install the front-end packages

    • make a copy of the client/.env.example file, 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 DateAttributes usages, 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 with LaravelEnso\Countries\app\Models\Country;
    • where using the actions slot within forms, replace the actions slot with actions-left and/or actions-right slots 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
    
    • publish the updated CountrySeeder.php
    php artisan vendor:publish --tag=countries-seeder --force
    
    • if using the Calendar, also:

      • publish the calendar factories
      php artisan vendor:publish --tag=calendar-factories --force
      
      • add the calendar test suite to phpunit.xml:
          <testsuite name="calendar">
              <directory suffix="Test.php">./vendor/laravel-enso/calendar/tests</directory>
          </testsuite>
      
      • add the following namespace "LaravelEnso\\Calendar\\tests\\features\\": "vendor/laravel-enso/calendar/tests/features/", to composer.json's autoload-dev.psr-4
    • in config/enso/config.php increment the version to 3.7.0

    • in config/enso/forms.php update the dateFormat key to altDateFormat

    • cd into the client folder and serve the front-end with yarn serve or build it with yarn build

    • (optional) a new feature allows you to notify your currently logged in users that a new application update/version was deployed.

      To use it, update your live deployment process and after the deploy is done, add a hook that calls php artisan enso:announce-app-update. The logged in users will get a toaster message as a well a pulsing notification control in the navbar, which, when clicked, will reload the page.

      Note that for the user to be notified, the current in-page version must be different from the released version, so don't forget to update the enso.config.version value.

      Reloading helps avoid js errors related to the lazy loading of the front-end assets as well as any mismatches between the stale front-end and the updated back-end API.

      The page reload is not done automatically for a better user experience as well as to give users the chance to save their work.

    Serving the assets

    Serving the assets has changed from running yarn run hot to cd-ing into the client folder and running yarn serve.

    No other steps are necessary if you are serving the back-end API as before, for example with Valet.

    Alternatively, if you don't want to use Valet, you may run php artisan serve and then point to the back-end URL, within the client/.env config.

    Building the assets

    Building the assets has changed from running yarn run prod to cd-ing into the client folder and running yarn build.

    While the command is different, the resulted build is, for all practical purposes, indentical to the one resulted when using Laravel Mix.

    Deploying in production

    To deploy the build you shoul follow the same flow as before.

    IF within your worfklow you are also building the front-end, you should update your scripts so as to take into the account the client folder (see above).

    Source code(tar.gz)
    Source code(zip)
Admin One is simple, beautiful and free Laravel admin dashboard (built with Vue.js, Bulma & Buefy).

Admin One — Free Laravel Vue Bulma Dashboard Admin One is simple, beautiful and free Laravel admin dashboard (built with Vue.js, Bulma & Buefy). Built

Viktor Kuzhelny 136 Dec 27, 2022
:elephant: A Laravel 6 SPA boilerplate with a users CRUD using Vue.js 2.6, GraphQL, Bootstrap 4, TypeScript, Sass, and Pug.

Laravel Vue Boilerplate A Laravel 6 Single Page Application boilerplate using Vue.js 2.6, GraphQL, Bootstrap 4, TypeScript, Sass and Pug with: A users

Alefe Souza 533 Jan 3, 2023
A Laravel 8 and Vue 3 SPA boilerplate using tailwind styling and sanctum for authentication :ghost:

Laravel Vue Sanctum SPA Laravel and vue spa using tailwind (laravel/ui looks) for styling and sanctum for authentification Features Laravel 8 Vue + Vu

Hijen EL Khalifi 62 Dec 5, 2022
A Laravel-Vue SPA starter kit.

Laravel-Vue SPA A Laravel-Vue SPA starter kit. Features Laravel 8 Vue + VueRouter + Vuex + VueI18n + ESlint Pages with dynamic import and custom layou

Cretu Eusebiu 3k Jan 6, 2023
Until 2018, Backpack v3 used this Base package to offer admin authentication and a blank admin panel using AdminLTE. Backpack v4 no longer uses this package, they're now built-in - use Backpack/CRUD instead.

Note: This package is only used by Backpack v3. Starting with Backpack v4, everything this package does is included in Backpack/CRUD - one package to

Backpack for Laravel 845 Nov 29, 2022
A Laravel 9, Vite, Svelte SPA, Tailwind CSS (w/ Forms Plugin & Aspect Ratio Plugin), Axios & TypeScript starter template.

Laravel 9 + Vite + Svelte + Tailwind CSS This starter template includes: Laravel 9 Vite Svelte Tailwind CSS (w/ @tailwindcss/forms and @tailwindcss/as

Ronnie 19 Dec 20, 2022
SPA Skeleton with Mithril.js and Slim Framework

A single-page application (SPA) skeleton based on Mithril.js and Slim Framework 4 trying to use good practices

tebe 5 Oct 23, 2022
A simple and clean boilerplate to start a new SPA project with authentication and more features from fortify

A simple and clean boilerplate to start a new SPA project with authentication and more features from fortify. Its like the little sister of Jetstream, but as SPA.

Tobias Schulz 11 Dec 30, 2022
dcat-admin's extension that was build in one package by vue

Dcat Admin Extension 此扩展为大合一扩展,以后使用vue3构建的组件都将合并在一起 演示地址 demo: http://dcat.weiwait.cn (admin:admin) 依赖扩展 freyo/flysystem-qcloud-cos-v5 overtrue/larave

null 7 Dec 3, 2022
LaraAdmin is a Open source Laravel Admin Panel / CMS which can be used as Admin Backend, Data Management Tool or CRM boilerplate for Laravel with features like Advanced CRUD Generation, Module Manager, Backups and many more.

LaraAdmin 1.0 LaraAdmin is a Open source CRM for quick-start Admin based applications with features like Advanced CRUD Generation, Schema Manager and

Dwij IT Solutions 1.5k Dec 29, 2022
Littlelink admin is an admin panel for littlelink that provides you a website similar linktree.

⚙️ LittleLink Admin LittleLink Admin is an admin panel for littlelink that provides you a website similar linktree. ?? Features creating a link page w

Khashayar Zavosh 70 Oct 29, 2022
Littlelink admin is an admin panel for littlelink that provides you a website similar linktree.

LittleLink Admin is an admin panel for littlelink that provides you a website similar linktree.

Khashayar Zavosh 70 Oct 29, 2022
Admin Columns allows you to manage and organize columns in the posts, users, comments, and media lists tables in the WordPress admin panel.

Admin Columns allows you to manage and organize columns in the posts, users, comments, and media lists tables in the WordPress admin panel. Transform the WordPress admin screens into beautiful, clear overviews.

Codepress 67 Dec 14, 2022
Backpack v3 used this Base package to offer admin authentication and a blank admin panel using AdminLTE

Until 2018, Backpack v3 used this Base package to offer admin authentication and a blank admin panel using AdminLTE. Backpack v4 no longer uses this package, they're now built-in - use Backpack/CRUD instead.

Backpack for Laravel 845 Nov 29, 2022
Gestor de Contraseñas basado en Laravel 8 + PHP 8 + MySQL 8. Self-hosted Password Manager based on Laravel 8 + PHP 8 + MySQL 8.

English Gestor de Contraseñas Esta aplicación permite una gestión completa de contraseñas para múltiples tipos de servicios (web, ssh, teléfonos, wifi

Lito 134 Jan 2, 2023
Demo and practice application with Laravel 8 and InertiaJS. (From laracasts course)

InertiaJS playground ⚽️ Started with the Laracasts: Build Modern Laravel Apps Using Inertia.js course and decided to share all my code here, I'll be a

Kasper Ligthart 1 Dec 2, 2021
Demo App for Symfony Twig & Live Components

Twig & Live Components Demo Hi there! You've stumbled across a treasure of demos for the the TwigComponent and LiveComponent libraries! Fun! If you wa

Ryan Weaver 48 Jun 27, 2022
Create read update & delete using Laravel 8 with Login & register

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Fawwaz Bayureksa 1 Feb 4, 2022