modxcms / revolution

MODX Revolution - Content Management Framework
https://modx.com/
GNU General Public License v2.0
1.36k stars 529 forks source link

Idea for a user configurable installation of core and extras #15368

Open Jako opened 3 years ago

Jako commented 3 years ago

Feature request

Summary

It would be nice to implement a method, that would automatically install new extras, predefine settings of extras etc.

Why is it needed?

To improve the MODX setup.

Suggested solution(s)

The folder core/config would be used to contain folders by namespace. Those folders contain the settings, that are installed automatically on MODX setup or during installing an extra. I suggest to use YAML based files, since they are human readable. But other filetypes should be possible too.

The core/config/workspace folder would contain a YAML that contains all extras, that have to be installed in a setup.json file with the extra namespace + version constraints.

In every namespace folder there are several default files possible (setup.yaml, update.yaml, replace.yaml, append.yaml) that would modify settings, install data etc. Installing/changing the extra settings and data would be part of an extra resolver.

We can prepare some default demo workspace configurations, that can be selected during the setup i.e. a workspace/blog.setup.yaml.

Related issue(s)/PR(s)

14364, #13472

Jako commented 3 years ago

It could be implemented with some parts of #13472. The list in distribution.tpl could be filled with some YAML files in {core_path}/config/workspace and an upload field for an own YAML file.

opengeek commented 3 years ago

All of this configuration and everything else associated with such a feature needs to be implemented in an external service that can be modified as needed. Such lists of extras should not be part of the core distribution.

Jako commented 3 years ago

Even when the configuration files itself are not part of the core, the import of such configurations should be part of it. I suggest to use the {core_path}/config/workspace folder for the place of such configuration files, that are used to preset the core installation (system settings, extras, menus etc.). And the same thing with the namespace of an installable extra {core_path}/config/<namespace>. If i.e. a setup.yaml is available in those folders, the workspace and the extra setup could use the files.

That way an automatic predefined installation of MODX with own settings is possible by injecting one/many configuration file(s). And the setup should also contain a file upload for the workspace configuration file.

And of course, we need an export button for those files.