diff --git a/modules/cms/classes/CmsCompoundObject.php b/modules/cms/classes/CmsCompoundObject.php index 856d7d258..5705515bc 100644 --- a/modules/cms/classes/CmsCompoundObject.php +++ b/modules/cms/classes/CmsCompoundObject.php @@ -7,6 +7,7 @@ use Config; use Cms\Twig\Loader as TwigLoader; use Cms\Twig\Extension as CmsTwigExtension; use Cms\Components\ViewBag; +use Cms\Helpers\Cms as CmsHelpers; use System\Twig\Extension as SystemTwigExtension; use October\Rain\Halcyon\Processors\SectionParser; use Twig\Source as TwigSource; @@ -143,12 +144,7 @@ class CmsCompoundObject extends CmsObject */ protected function checkSafeMode() { - $safeMode = Config::get('cms.enableSafeMode', null); - if ($safeMode === null) { - $safeMode = !Config::get('app.debug', false); - } - - if ($safeMode && $this->isDirty('code') && strlen(trim($this->code))) { + if (CmsHelpers::safeModeEnabled() && $this->isDirty('code') && strlen(trim($this->code))) { throw new ApplicationException(Lang::get('cms::lang.cms_object.safe_mode_enabled')); } } diff --git a/modules/cms/classes/layout/fields.yaml b/modules/cms/classes/layout/fields.yaml index 3c02f16d3..62c292114 100644 --- a/modules/cms/classes/layout/fields.yaml +++ b/modules/cms/classes/layout/fields.yaml @@ -32,6 +32,12 @@ secondaryTabs: type: codeeditor language: twig + safemode_notice: + tab: cms::lang.editor.code + type: partial + hidden: true + cssClass: p-b-0 + code: tab: cms::lang.editor.code stretch: true diff --git a/modules/cms/classes/page/fields.yaml b/modules/cms/classes/page/fields.yaml index 44c56a5e9..ac754d31e 100644 --- a/modules/cms/classes/page/fields.yaml +++ b/modules/cms/classes/page/fields.yaml @@ -74,6 +74,12 @@ secondaryTabs: type: codeeditor language: twig + safemode_notice: + tab: cms::lang.editor.code + type: partial + hidden: true + cssClass: p-b-0 + code: tab: cms::lang.editor.code stretch: true diff --git a/modules/cms/classes/partial/fields.yaml b/modules/cms/classes/partial/fields.yaml index 4d23dba15..9e5f0a838 100644 --- a/modules/cms/classes/partial/fields.yaml +++ b/modules/cms/classes/partial/fields.yaml @@ -32,6 +32,12 @@ secondaryTabs: type: codeeditor language: twig + safemode_notice: + tab: cms::lang.editor.code + type: partial + hidden: true + cssClass: p-b-0 + code: tab: cms::lang.editor.code stretch: true diff --git a/modules/cms/controllers/Index.php b/modules/cms/controllers/Index.php index c0ecc5ae7..4f9d2e78d 100644 --- a/modules/cms/controllers/Index.php +++ b/modules/cms/controllers/Index.php @@ -4,6 +4,7 @@ use Url; use Lang; use Flash; use Config; +use Event; use Request; use Exception; use BackendMenu; @@ -20,6 +21,7 @@ use Cms\Classes\CmsObject; use Cms\Classes\CmsCompoundObject; use Cms\Classes\ComponentManager; use Cms\Classes\ComponentPartial; +use Cms\Helpers\Cms as CmsHelpers; use Backend\Classes\Controller; use System\Helpers\DateTime; use October\Rain\Router\Router as RainRouter; @@ -59,6 +61,19 @@ class Index extends Controller { parent::__construct(); + Event::listen('backend.form.extendFieldsBefore', function ($widget) { + if (!$widget->getController() instanceof Index) { + return; + } + if (!$widget->model instanceof CmsCompoundObject) { + return; + } + if (key_exists('code', $widget->secondaryTabs['fields']) && CmsHelpers::safeModeEnabled()) { + $widget->secondaryTabs['fields']['safemode_notice']['hidden'] = false; + $widget->secondaryTabs['fields']['code']['readOnly'] = true; + }; + }); + BackendMenu::setContext('October.Cms', 'cms', true); try { diff --git a/modules/cms/controllers/index/_safemode_notice.htm b/modules/cms/controllers/index/_safemode_notice.htm new file mode 100644 index 000000000..b9e320c89 --- /dev/null +++ b/modules/cms/controllers/index/_safemode_notice.htm @@ -0,0 +1,6 @@ +