public function onSave()
    {
        $this->validateRequestTheme();
        $type = Request::input('templateType');
        $templatePath = trim(Request::input('templatePath'));
        $template = $templatePath ? $this->loadTemplate($type, $templatePath) : $this->createTemplate($type);
        $formWidget = $this->makeTemplateFormWidget($type, $template);

        $saveData = $formWidget->getSaveData();
        $postData = post();
        $templateData = [];

        $settings = array_get($saveData, 'settings', []) + Request::input('settings', []);
        $settings = $this->upgradeSettings($settings);

        if ($settings) {
            $templateData['settings'] = $settings;
        }

        $fields = ['markup', 'code', 'fileName', 'content'];

        foreach ($fields as $field) {
            if (array_key_exists($field, $saveData)) {
                $templateData[$field] = $saveData[$field];
            }
            elseif (array_key_exists($field, $postData)) {
                $templateData[$field] = $postData[$field];
            }
        }

        if (!empty($templateData['markup']) && Config::get('cms.convertLineEndings', false) === true) {
            $templateData['markup'] = $this->convertLineEndings($templateData['markup']);
        }

        if (!empty($templateData['code']) && Config::get('cms.convertLineEndings', false) === true) {
            $templateData['code'] = $this->convertLineEndings($templateData['code']);
        }

        if (
            !Request::input('templateForceSave') && $template->mtime
            && Request::input('templateMtime') != $template->mtime
        ) {
            throw new ApplicationException('mtime-mismatch');
        }

        $template->attributes = [];
        $template->fill($templateData);
        $template->save();

        /**
         * @event cms.template.save
         * Fires after a CMS template (page|partial|layout|content|asset) has been saved.
         *
         * Example usage:
         *
         *     Event::listen('cms.template.save', function ((\Cms\Controllers\Index) $controller, (mixed) $templateObject, (string) $type) {
         *         \Log::info("A $type has been saved");
         *     });
         *
         * Or
         *
         *     $CmsIndexController->bindEvent('template.save', function ((mixed) $templateObject, (string) $type) {
         *         \Log::info("A $type has been saved");
         *     });
         *
         */
        $this->fireSystemEvent('cms.template.save', [$template, $type]);

        Flash::success(Lang::get('cms::lang.template.saved'));

        $result = [
            'templatePath'  => $template->fileName,
            'templateMtime' => $template->mtime,
            'tabTitle'      => $this->getTabTitle($type, $template)
        ];

        if ($type === 'page') {
            $result['pageUrl'] = Url::to($template->url);
            $router = new Router($this->theme);
            $router->clearCache();
            CmsCompoundObject::clearCache($this->theme);
        }

        return $result;
    }
public function onSave()
    {
        $this->validateRequestTheme();
        $type = Request::input('templateType');
        $templatePath = trim(Request::input('templatePath'));
        $template = $templatePath ? $this->loadTemplate($type, $templatePath) : $this->createTemplate($type);
        $formWidget = $this->makeTemplateFormWidget($type, $template);

        $saveData = $formWidget->getSaveData();
        $postData = post();
        $templateData = [];

        $settings = array_get($saveData, 'settings', []) + Request::input('settings', []);
        $settings = $this->upgradeSettings($settings);

        if ($settings) {
            $templateData['settings'] = $settings;
        }

        $fields = ['markup', 'code', 'fileName', 'content'];

        foreach ($fields as $field) {
            if (array_key_exists($field, $saveData)) {
                $templateData[$field] = $saveData[$field];
            }
            elseif (array_key_exists($field, $postData)) {
                $templateData[$field] = $postData[$field];
            }
        }

        if (!empty($templateData['markup']) && Config::get('cms.convertLineEndings', false) === true) {
            $templateData['markup'] = $this->convertLineEndings($templateData['markup']);
        }

        if (!empty($templateData['code']) && Config::get('cms.convertLineEndings', false) === true) {
            $templateData['code'] = $this->convertLineEndings($templateData['code']);
        }

        if (
            !Request::input('templateForceSave') && $template->mtime
            && Request::input('templateMtime') != $template->mtime
        ) {
            throw new ApplicationException('mtime-mismatch');
        }

        $template->attributes = [];
        $template->fill($templateData);
        $template->save();

        /**
         * @event cms.template.save
         * Fires after a CMS template (page|partial|layout|content|asset) has been saved.
         *
         * Example usage:
         *
         *     Event::listen('cms.template.save', function ((\Cms\Controllers\Index) $controller, (mixed) $templateObject, (string) $type) {
         *         \Log::info("A $type has been saved");
         *     });
         *
         * Or
         *
         *     $CmsIndexController->bindEvent('template.save', function ((mixed) $templateObject, (string) $type) {
         *         \Log::info("A $type has been saved");
         *     });
         *
         */
        $this->fireSystemEvent('cms.template.save', [$template, $type]);

        Flash::success(Lang::get('cms::lang.template.saved'));

        $result = [
            'templatePath'  => $template->fileName,
            'templateMtime' => $template->mtime,
            'tabTitle'      => $this->getTabTitle($type, $template)
        ];

        if ($type === 'page') {
            $result['pageUrl'] = Url::to($template->url);
            $router = new Router($this->theme);
            $router->clearCache();
            CmsCompoundObject::clearCache($this->theme);
        }

        return $result;
    }
public function onSave ( ) { $ this -> validateRequestTheme ( ) ; $ type = Request :: input ( 'templateType' ) ; $ templatePath = trim ( Request :: input ( 'templatePath' ) ) ; $ template = $ templatePath ? $ this -> loadTemplate ( $ type , $ templatePath ) : $ this -> createTemplate ( $ type ) ; $ formWidget = $ this -> makeTemplateFormWidget ( $ type , $ template ) ; $ saveData = $ formWidget -> getSaveData ( ) ; $ postData = post ( ) ; $ templateData = [ ] ; $ settings = array_get ( $ saveData , 'settings' , [ ] ) + Request :: input ( 'settings' , [ ] ) ; $ settings = $ this -> upgradeSettings ( $ settings ) ; if ( $ settings ) { $ templateData [ 'settings' ] = $ settings ; } $ fields = [ 'markup' , 'code' , 'fileName' , 'content' ] ; foreach ( $ fields as $ field ) { if ( array_key_exists ( $ field , $ saveData ) ) { $ templateData [ $ field ] = $ saveData [ $ field ] ; } elseif ( array_key_exists ( $ field , $ postData ) ) { $ templateData [ $ field ] = $ postData [ $ field ] ; } } if ( ! empty ( $ templateData [ 'markup' ] ) && Config :: get ( 'cms.convertLineEndings' , false ) === true ) { $ templateData [ 'markup' ] = $ this -> convertLineEndings ( $ templateData [ 'markup' ] ) ; } if ( ! empty ( $ templateData [ 'code' ] ) && Config :: get ( 'cms.convertLineEndings' , false ) === true ) { $ templateData [ 'code' ] = $ this -> convertLineEndings ( $ templateData [ 'code' ] ) ; } if ( ! Request :: input ( 'templateForceSave' ) && $ template -> mtime && Request :: input ( 'templateMtime' ) != $ template -> mtime ) { throw new ApplicationException ( 'mtime-mismatch' ) ; } $ template -> attributes = [ ] ; $ template -> fill ( $ templateData ) ; $ template -> save ( ) ; /**
         * @event cms.template.save
         * Fires after a CMS template (page|partial|layout|content|asset) has been saved.
         *
         * Example usage:
         *
         *     Event::listen('cms.template.save', function ((\Cms\Controllers\Index) $controller, (mixed) $templateObject, (string) $type) {
         *         \Log::info("A $type has been saved");
         *     });
         *
         * Or
         *
         *     $CmsIndexController->bindEvent('template.save', function ((mixed) $templateObject, (string) $type) {
         *         \Log::info("A $type has been saved");
         *     });
         *
         */ $ this -> fireSystemEvent ( 'cms.template.save' , [ $ template , $ type ] ) ; Flash :: success ( Lang :: get ( 'cms::lang.template.saved' ) ) ; $ result = [ 'templatePath' => $ template -> fileName , 'templateMtime' => $ template -> mtime , 'tabTitle' => $ this -> getTabTitle ( $ type , $ template ) ] ; if ( $ type === 'page' ) { $ result [ 'pageUrl' ] = Url :: to ( $ template -> url ) ; $ router = new Router ( $ this -> theme ) ; $ router -> clearCache ( ) ; CmsCompoundObject :: clearCache ( $ this -> theme ) ; } return $ result ; }
Saves the template currently open
@return array
Saves the template currently open