Releases: evolution-cms/evolution
Evolution CMS 2.0.1
New feature:
Now we can use DynamicRelation:
SiteContent::addDynamicRelation('comments', function (SiteContent $myModel) {
return $myModel->hasMany(Comments::class);
});
Example: https://github.com/Ser1ous/evocms-comments
Video(ru): https://www.youtube.com/watch?v=gJj05HwOm0A
Lib: https://github.com/i-rocky/eloquent-dynamic-relation
Change log:
- Update DocLister
- fix: manager fix change theme (Serious)
- fix: #1271 childrens should be children (Dmi3yy)
- fix: #1294 Bad layout on page template-bound resources (Dmi3yy)
- fix: Lang issue & #1272 (Dmi3yy)
- fix: forgot ->db-> #1265 (Dmi3yy)
- fix: issets are need in codemirror plugin #1264 (Dmi3yy)
- fix: needs isset #1263 (Dmi3yy)
- fix: getDocumentObject method (Pathologic)
- fix: need use correct cachekey with event and GET (Dmi3yy)
- fix: manager theme bug (Dmi3yy)
- fix: styles anв icons (Ruslan Aleev)
- fix: tree icon for private resource (Mr B)
- fix: No hint path defined for [cache] (Pathologic)
- fix: Corrected lexicons, Corrected output of lexicons in template (Ruslan Aleev)
- fix: send mail to manager e-mail. (Yevhen Lebediev)
- fix: demo site install (Pathologic)
- fix: fullscreen tinymce hiding buttons (Mr B)
- fix: parse plugin params (dzhuryn.volodymyr)
- refactor: htaccess add rules for remove // #1239 fix (Dmi3yy)
- new: (core) Add Dynamic Relation (Ser1ous)
Evolution CMS 2.0
Evolution CMS 2.0 is fully compatible with earlier versions
To understand what is Evolution CMS 2.0 and how to work with Evolution 2.0, I recommend reading the content from the links below:
https://github.com/evolution-cms/evolution/releases/tag/2.0.0-alpha
https://github.com/evolution-cms/evolution/releases/tag/2.0.0-RC
Important change:
In the runSnippet method, 2 parameters were added to cache snippet results
string runSnippet (string $ snippetName [, array $ params, int $ cacheTime, string $ cacheKey]);
Actual for use in BLADE templates. Since by default all snippets are not cached and there are no [[]] and [!!] snippet execution options, this also makes it possible to cache snippets not forever before resetting the cache as it was before, but for some certain period of time + cacheKey which makes it possible to cache the same snippet for many pages at once.
To upgrade from 1.4.9 and below:
- Update to the latest version 1.4 (1.4.10) If there are problems with the display of icons: (Delete /manager/media/style/default/css/styles.min.css)
- Check that php version 7.2+
- Create a file core / config / database / connections / default.php with the contents:
https://github.com/evolution-cms/evolution/blob/2.0.x/install/stubs/files/config/database/connections/default.tpl
in which placeholders are replaced by their data. - Delete the manager folder
- Pour over all the files from the archive 2.0
- create an empty '.install' file in the core folder
For upgrades from 2.0.0-alpha and 2.0.0-RC
- Delete /manager/media/style/default/css/styles.min.css
- remove from /core/custom/composer.json: "vlucas / phpdotenv": "~ 2.2"
- upload all files on top
- run composer upd from the core folder (if you used new features using composer)
Evolution CMS 1.4.10
If you have problem with icons delete 'manager/media/style/default/css/styles.min.css' and re-save settings in manager panel
- Update DocLister and FormLister
- Update Bootstrap to 4.3.1
- Update Font Awesome to 5.7
- Update phpthumb snippet
- SQL syntax for mysql 8
- fix manager login lang override
- fix Error : Undefined index: enable_filter
- remove fixed id from system event names
- add Mysql transactions support
- set priority on install
- Call to undefined function evolutionCMS() fixed
- escape plugin,snippet, modules params
- fix for empty tabs
- added method for removing tabs
Full list you can see here:
https://github.com/evolution-cms/evolution/blob/1.4.x/assets/docs/changelog.txt
Evolution CMS 2.0 RC
it's release time of Evolution CMS 2.0 RC based on Laravel components, but as the previous release and subsequent discussions showed, there are a lot of questions and myths related to the 2.0 branch.
The most popular myth is that everything has changed in the new branch and will no longer be in the old way.
Everything will work as before. We expanded the new functionality without affecting the capabilities of previous features. The entry level has not changed, but more skilled developers will receive many ready-made solutions and features. Those who have enough existing components to work will be able to work as before, nobody will deprive them of usual things. Those users who are satisfied with existing components will be able to work as before, no one will deprive them of familiar things.
The level of compatibility is more than good - even from version 0.9 you can upgrade to 1.4, and then from it to 2.0 without changing the functionality. Although it is necessary to consider possible issues, which may arise using "deprecated methods", due to the fact that you need to update the PHP version to 7.2. I'll respond quickly to bugs, bringing the stable release period closer. The speed of work is worth it.
Especially for doubters, I recorded a video in which the system was updated from 1.0.8 to 1.4 (I could upgrade from an older version but did not find such an outdated hosting)
https://www.youtube.com/watch?v=E_0PluuMWT0&t=1s.
In this video already tells how to upgrade from version 1.4. * to 2.0
https://www.youtube.com/watch?v=xR9filu4A8o&t=1s
As a result, on version 2.0 you can work in exactly the same way as on 1.4 and below.
Where is everything going and what is the purpose of all these changes?
Preserving Backward Compatibility.
Evolution CMS grow up from MODX Evolution, which appeared in 2004 and I can confidently say that even the oldest site can be updated without any problems to the latest version!
It's could be done in two steps:
0.9 -> 1.4.*
1.4.* -> 2.0
I do not know any system that could boast of such a result, considering the 15-year history and where everything would be compatible. We also have moments that became deprecated, considering of the obsolescence of some functions of PHP, so your update may not go smoothly enough. But all issues are often resolved quickly and simply, it is enough to be able to use Google, copy-paste, etc. Just copy the error into Google and read the first couple of articles from the results, in 95% of cases you'll find a solution to the problem.
Modern technologies:
Modern technologies are developing rapidly and if we stand still, in the very near future we will become developers of a good, but the already outdated system. Who will need such sites when a lot of “new, relevant, trendy” systems of competitors will appear on the market, and they do not standstill.
An additional plus - if someone suddenly has a desire to explore new opportunities, dare I say that this may even become a discovery for those who have not used anything other than standard components in life. New knowledge and opportunities are the main factors in the cost of the developer’s work, we give them to you and it is up to you to use them or not.
A real example of the benefits of change - I think many people remember how a couple of years ago I was not a supporter of working in the IDE, but now I understand how much I was wrong and that it made life difficult for myself.
Framework or CMS?
CMS:
When it was decided to build Evo on Laravel components, one of the first questions was: Did someone does something similar and maybe it makes no sense to reinvent the wheel?
As a result, I reviewed more than 10 different admin areas for Laravel, and a couple of CMS based on it, and came to the conclusion that almost everything was done not for content managers who spend a lot of time in the admin area, but for developers. As a result, it’s convenient to assemble and make sites on this site, but not very helpful.
I believe that the ideology of the Evolution CMS admin panel, which came from MODX, is very cool and understandable for the average user. It takes a minimum of time for anyone to explain how to work with her. So developers can simply and quickly implement all the wishes of the client on the organization of the admin panel.
As a real example, the Collection solution: http://modx.im/blog/addons/5994.html which allows you to display child documents in the form of a table with a filter, sorting and inline editing, while you can independently configure which fields will be displayed in the table.
Framework:
Currently, Laravel is one of the most popular frameworks, which means that it has many developers, a large community that has already resolved certain issues, as well as a large information base for working with it. We are expanding the capabilities of the system, by implementing Laravel 6.0 components in Evolution CMS, as well as simplifying the life of developers and stimulating the creation of new solutions and add-ons. Those who work with Evolution for a long time and do not use other tools should monitor global trends and what new tools have appeared that simplify and speed up development: Composer, Artisan, Blade, MVC, Migration, Models, Eloquent, Git, etc. For those who are just starting to get acquainted with Evolution, but already have experience working with other systems or with Laravel, the system will have familiar and favorite tools. Thus, the Laravel components in the Evolution CMS lower the entry threshold for beginners in working with the system and provide an opportunity to upgrade their skills for those who were familiar with the Evolution CMS for the long term.
So, what's new
- Templates in files and Blade
- Controllers and MVC
- Models and Eloquent
- Packages (Chunks, Snippets, Plugins, Modules, e.t.c)
- Migration and development on DEV or PROD environment
- Laravel Cache
- Custom routing on FastRoute
- use .ENV
- Artisan
- IDE-Helper
The near future plans
The release of Evolution CMS 2.0 coming to November 2, 2019. An offline event will be organized in Moscow in the private cinema 'Kinoleto' by address: 2nd Kozhuhovsky passage 29, building 2, building 18. Pre-registration entry, registration form and more details will be here: https://evo.im/evoevent-2019.html
Evolution CMS 1.4.9
EVO 1.4.9 includes various fixes and improvements for stability and backward compatibility.
Evolution 1.4 LTS version:
- support bugfix, compatible with 2.x branch, stability until 02.02.2020
- support for critical security issues until 12.02.2021
Fixes and Updates in 1.4.9:
- [I] Add support WebP for phpthumb (Ser1ous)
- [I] New event OnLogEvent (Ser1ous)
- [F] set auto_template_logic -> sibling by default (Dmi3yy)
- [U] Update mutate_web_user.dynamic.php (bossloper)
- [U] Update mutate_user.dynamic.php (bossloper)
- [F] display thislogin date for users / managers (bossloper)
- [F] (security): update htaccess (Dmi3yy)
- [F] #1058 Warning in Admin Backend(Dmi3yy)
- [F] fix modx.js (Serg)
- [F] Undefined index enable_filter (Kamil)
- [U] #1054 Update config.inc.tpl (Dreamer0x01)
- [F] fix missing quality setting for png files (Pathologic)
- [F] #1026 Manager Manager tabs and maps (Dreamer0x01)
- [F] Manager Manager fix google and yandex map (dzhuryn)
- [F] (dbapi) unpacking the host string in a circle (AgelxNash)
- [F] #976 fix wrong language codes (Pathologic)
- [F] (core) fix undefined variable (Serg)
WebP for phpthumb:
- 1. install rosell-dk/webp-convert from composer
- 2. use not cacheble with param &webp=1
Evolution CMS 1.4.8
Evolution CMS 1.4 LTS
- support bugfix, compatible with 2.x branch, stability until 02.02.2020
- support for critical security issues until 12.02.2021
If you used 3 level of nested Snippets you need Enable modifiers in settings!
This is a bad practice to use 3 levels of snippets, but if you really need to, then enable this setting.
I recommend if you need this behavior then write your snippet in which all the logic will be written in php it will work faster #977
Fixes and Updates in 1.4.8:
- [refactor] (Extras) Updater - update only minor version(1.4 to 1.5, 2.0 to 2.1) (Update across major version (1.4 to 2.0 or 2.6 to 3.0 ) need do manual or from another plugin) (Dmi3yy)
- [fix] (phpthumb): skipping svg files (Serg)
- [fix] only if Enable modifiers in settings: #1200 only if Enable modifiers in settings: #1200 Double usage nested snippets. (Dmi3yy)
- [fix] (core) buttons on welcome page, not work with Permission (Dmi3yy)
- fix] Lightness navbar logo at width < 1200px (Nicola)
- [fix] ser Icon Standardisation Suggestion #349 (Dmi3yy)
- [refactor] clear (core) welcome.static @if (Dmi3yy)
- [fix] (managermanager): path to the jquery file (Agel_Nash)
- [feat] (manager) show template id in select on Document edit page (Dmi3yy)
- [feat] (core): more compatible with 2.x branch (Agel_Nash)
- [fix] (ElementsInTree) Categories are not sorted by name ASC (Nicola)
2.0.0-alpha
MODX Evolution is dead! Long live Evolution CMS 2.0 using Laravel components
What is Evolution CMS 2.0?
Evolution CMS 2.0 is the latest release of the popular content management system. While it works like before, underneath it's a major overhaul of a CMS that began life in 2004. The code has been modernised using components from Laravel. Gone is the infamous DocumentParser class, a collection of disparate functions. In its place are structured components for cache, events, logging, file system, cofig, console, migrations, seeders, Blade templating, models Eloquent, Observers, ServiceProvider and more.
A bit of history
- Developers Raymond Irving and Ryan Thrash unveiled the first release of MODX CMS in 2004.
- After MODX Revolution was released in 2012, the original MODX CMS (now called MODX Evolution) received minimal updates from the MODX LLC development team. A group of keen users from the MODX community stepped up to continue development.
- In March 2013, MODX Evolution 1.0.9 was released (https://habr.com/post/173667/), created exclusively by the community, under the leadership of Dmytro Lukianenko and Evgeny Borisov (who continue to work on Evo to this day). Releases were made under the auspices of MODX LCC (via modx.com).
- In April 2017, MODX LCC cut its involvement with MODX Evolution (https://modx.com/blog/evolution-cms-has-a-new-home). Since then, our team has chosen its own development course.
- In July 2017, we made the first release of the newly-renamed Evolution CMS. Evolution CMS 1.3.0 https://github.com/evolution-cms/evolution/releases/tag/1.3.0 had a completely redesigned interface and a number of new features that embodied the wishes of the community.
- In November 2017, at the MODXpo conference, Lukianenko Dmytro successfully gave a report on progress with Evolution CMS (https://modcasts.video/videos/evo-cms-life-after-modx).
- January 2018 saw the second major release of Evolution CMS 1.4.0 (https://github.com/evolution-cms/evolution/releases/tag/1.4.0), which radically changed a number of approaches in development.
- In June 2018 it was decided to rewrite the Evolution CMS using Laravel components, with the prerequisite of maintaining full backward compatibility.
- Now in December 2018 we are proud to present the first release of Evolution CMS 2.0.
A very important requirement was preserving backward compatibility with old versions of Evolution CMS and MODX Evolution, and we did it! You can safely upgrade your website from version 0.9.6 released in 2005 to 2.0. Only any code written without using the MODX Evolution API must be changed. All standard add-ons are updated and work with the new version.
Why did we choose Laravel?
There are many PHP frameworks but Laravel stood out because of its:
- Extensive documentation
- Active support
- A lot of ready-made packages that can be used on Evolution 2.0
Initially, we saw only two ways: to continue working with obsolete Evolution code, while the community scattered and developers left the project, or to start writing a new CMS while keeping the old development paradigm people liked (the resource tree, chunks, snippets, TV parameters etc).
But we found the third option in which we gradually refactored the outdated code whilst maintaining backward compatibility.
Why Evolution CMS 2.0?
Evolution CMS is simple. You can understand how to work with it in a couple of evenings, and if you want to write code for it, the knowledge is the same as working with any Laravel project. Now you don't need to learn something that's only useful when working with Evolution CMS. This gives us universal appeal, as it's easy to switch between systems.
Will my existing Evolution CMS website continue to work?
Yes! Sites built the traditional way will continue to work, but the new flexibility and innovation won't be visible.
Great! How can I start migrating my site to the new features?
The small transition in Evolution CMS 2.0 from the $modx->config array to using the $modx->getConfig() method already allows you to manipulate the system settings of the engine, which are taken from the database. You can prepare for this change in your snippets right now, because the getConfig() method has been available since version 1.4.
Plugins for events can be created as before via the admin area or (new in Evolution CMS 2.0) through files. All this improves team development, simplifies project management through git. Developers will appreciate the convenience of storing the website configuration in Git.
Why should I learn something new and not stay with 1.4?
On version 1.4 you cannot install a site with one click. 1.4 doesn't have a good story for dev and production versions. Neither can you easily store templates in Git, or use database migrations etc. In version 2.0, this is all there.
Can you use ready-made Laravel components with Evolution CMS?
Yes!
Here is a package for generating Entity Relation diagrams from the database (https://github.com/beyondcode/laravel-er-diagram-generator) Installing it requires you to run composer:
composer require beyondcode/laravel-er-diagram-generator --dev
and create a provider file (core/custom/config/app/providers/Diagram_Generator. php) containing 1 line:.
return BeyondCode\ErdGenerator\ErdGeneratorServiceProvider::class;
Done!
Let's start:
New settings and advantages
-
The entire core/config folder and core/custom/config is already working with Laravel-style configs. To use the .env file, you must install the package vlucas/phpdotenv through the composer
-
Working with Composer: adding dependencies to core/custom/composer.json and executing composer upd from the core folder
-
For convenience, we will enable debugging tools: Debug and debugbar Tracy
- Debug: create file core/custom/config/app/debug.php with code:
<?php return true;
- function dump shows information in a beautiful way:
<?php dump($modx);
-
Folder with logs core/storege/logs
-
Tracy: create file core/custom/config/tracy/active.php with code:
<?php return 'manager';
Working with Templates and Chunks using the BLADE template engine from files without using the admin panel
Linking templates to the document without EVO admin panel
To work, we need to create a folder views in the root of the site, in which we will have templates. Actually and everything, no additional actions in the form of installing anything is required.
Plugin searches for templates in such order:
- tpl-3_doc-5.blade.php - use this if resource id=5 and resource template=3;
- doc-5.blade.php - use this if resource id=5;
- tpl-3.blade.php - use this if resource template=3.
- example.blade.php - use this if resource templatealias = example;
Working with standard elements using the BLADE template engine
Before you start working with BLADE, we strongly recommend that you read the BLADE documentation: https://laravel.com/docs/6.0/blade
//Display plaсeholder [*pagetitle*]:
{{ $documentObject['pagetitle'] }}
{{ $modx->documentObject['pagetitle'] }}
//Display TV plaсeholder
{{ $documentObject['image'] }}
{{ $modx->documentObject['image']['1'] }}
//Display URL [~2~]
{{ urlProcessor::makeUrl('2') }}
{{ $modx->makeUrl('2') }}
@makeUrl('2')
//Use system settings [(site_name)]
{{ $modx->getConfig('site_name') }}
//Use chunk from db: {{chunkFromDb}}
{{ $modx->getChunk('chunkFromDb') }}
//Use chunk from file: (/views/partials/chunk.blade.php)
@include('partials.chunk', ['some' => 'data'])
//Use snippet: [[DocInfo? &docid=`2`]]
{{ $modx->runSnippet('DocInfo',['docid' => '2']) }}
//Display the output of snippet without escaping html tags
{!! $modx->runSnippet('DocInfo',['docid' => '2']) !!}
//Standart MODX Parser
@evoParser('[*pagetitle*] [(site_name)] [[DocInfo]] @{{chunkOld}}')
//Use of comments
{{-- This comment will not be in the final HTML --}}
//IF (All of the documentation for BLADE):
@for ($i = 1; $i <= 10; $i++)
{{ $i }}
@if ($i != 10)
,
@endif
@endfor
//Work with php inside template (not recomended)
@php
dump($modx); //beautiful var_dump
$chunk = '{{ $data["param1"] }}';
$chunk .= '{!! $data["param1"] !!}';
@endphp
//or
<?php
dump($modx); //beautiful var_dump
$chunk = '{{ $data["param1"] }}';
$chunk .= '{!! $data["param1"] !!}';
?>
{{ $modx->tpl->parseChunk('@B_CODE:'.$chunk, ['param1' => 'value with "quote"']) }}
{{ time() }}
//Doclister with inline BLADE template
{!! $modx->runSnippet('DocLister',['parents' => '0', 'tpl' => '@B_CODE:{{ $data["pagetitle"] }}<br />']) !!}
//DocLister with BLADE template from file (/views/partials/doc-tpl.blade.php)
{!! $modx->runSnippet('DocLister',[
'parents' => '2',
'tpl' => '@B_FILE:partials/doc-tpl',
])
!!}An example of a finished template using BLADE can be found here: https://github.com/dmi3yy/Evo-demosite-on-blade
Working with ...
1.4.7
Bug fix release
1.4.6
Evolution CMS 1.4.6
We decided before release 2.0 Alpha (very soon), on which we have been working hard lately, to devote some time to the 1.4.x branch, so meet release 1.4.6.
The main works were aimed at stability of work + on safety, now the OutdatedExtrasCheck plugin takes information from the server, thus information on additions that have security problems will appear on the dashboard, which will give even more chances to learn about possible problems with security and fix it promptly.

From interesting in 1.4.6:
- Support for working with MySQL 8.0
- Support for MySQL in strict mode
- Support for working with PHP 7.3.0RC3
- OutdatedExtrasCheck now checks outdated add-ons from the server and not locally.
- A big DocLister update to version 2.4.0 (read more here: https://github.com/AgelxNash/DocLister/releases/tag/2.4.0)
- update FormLister to 1.8.0
- phpMailer has been updated to 6.0.5
- phpthumb updated to 1.7.15
- Finally removed mootools.js
- Correct transfer of the event name when using nested events #844
- Styled webAlertAndQuit #26
- Added the ability to change the server MYSQL port #819
- Check for a minimum version of AjaxSearch updated to version 1.12.1 (I strongly recommend updating AjaxSearch for security and virus protection purposes)
- Added the ability to specify the login form in the light version for those who do not like the dark :)
- Fixed a lot of errors, a full list of which can be found here: https://github.com/evolution-cms/evolution/blob/1.4.x/assets/docs/changelog.txt
- Updated snippet DocInfo added new templid option more here: #806
- Fixed bug with displaying SVG
- Fixed URL generation for document created via MODxAPI
- rewrote the methods: getChunk and parseChunk on those that DLTemplate
- Fixed a bug in the getTemplateVar, getTemplateVars API with the choice of fields
- Corrected: Managers do not show user groups
- Multiple XSS vulnerabilities in admin panel closed
1.4.5
In 1.4.5, the main attention was paid to correcting errors and also checking that everything worked as stably as possible.
It was corrected a lot of mistakes and added some useful things.
- Updated KCFinder and added new events to it
- Fixed issues with TinyMCE4
- Support for MySql 8
You can see the full list of changes here:
https://github.com/evolution-cms/evolution/blob/1.4.x/assets/docs/changelog.txt#L4-L64
I also want to inform you that this is the last release of the 1.4 branch (there may be 1.4.6 if found critical errors or security problems) and now we are completely concentrating on work on the 2.0 branch that will work on Laravel components. In general, a lot of work in this direction already done: https://github.com/evolution-cms/evolution/commits/2.x, but there is still a lot of work that we plan to do before the release. I think that this autumn will be very saturated for EVO.





