RainLab\Pages\Classes\Snippet::extendPartialForm PHP Method

extendPartialForm() public static method

Extends the partial form with Snippet fields.
public static extendPartialForm ( $formWidget )
    public static function extendPartialForm($formWidget)
    {
        /*
         * Snippet code field
         */
        $fieldConfig = ['tab' => 'rainlab.pages::lang.snippet.partialtab', 'type' => 'text', 'label' => 'rainlab.pages::lang.snippet.code', 'comment' => 'rainlab.pages::lang.snippet.code_comment', 'span' => 'left'];
        $formWidget->tabs['fields']['viewBag[snippetCode]'] = $fieldConfig;
        /*
         * Snippet description field
         */
        $fieldConfig = ['tab' => 'rainlab.pages::lang.snippet.partialtab', 'type' => 'text', 'label' => 'rainlab.pages::lang.snippet.name', 'comment' => 'rainlab.pages::lang.snippet.name_comment', 'span' => 'right'];
        $formWidget->tabs['fields']['viewBag[snippetName]'] = $fieldConfig;
        /*
         * Snippet properties field
         */
        $fieldConfig = ['tab' => 'rainlab.pages::lang.snippet.partialtab', 'type' => 'datatable', 'height' => '150', 'dynamicHeight' => true, 'columns' => ['title' => ['title' => 'rainlab.pages::lang.snippet.column_property', 'validation' => ['required' => ['message' => 'Please provide the property title', 'requiredWith' => 'property']]], 'property' => ['title' => 'rainlab.pages::lang.snippet.column_code', 'validation' => ['required' => ['message' => 'Please provide the property code', 'requiredWith' => 'title'], 'regex' => ['pattern' => '^[a-z][a-z0-9]*$', 'modifiers' => 'i', 'message' => Lang::get('rainlab.pages::lang.snippet.property_format_error')]]], 'type' => ['title' => 'rainlab.pages::lang.snippet.column_type', 'type' => 'dropdown', 'options' => ['string' => 'rainlab.pages::lang.snippet.column_type_string', 'checkbox' => 'rainlab.pages::lang.snippet.column_type_checkbox', 'dropdown' => 'rainlab.pages::lang.snippet.column_type_dropdown'], 'validation' => ['required' => ['requiredWith' => 'title']]], 'default' => ['title' => 'rainlab.pages::lang.snippet.column_default'], 'options' => ['title' => 'rainlab.pages::lang.snippet.column_options']]];
        $formWidget->tabs['fields']['viewBag[snippetProperties]'] = $fieldConfig;
    }

Usage Example

Example #1
0
 public function boot()
 {
     Event::listen('cms.router.beforeRoute', function ($url) {
         return Controller::instance()->initCmsPage($url);
     });
     Event::listen('cms.page.beforeRenderPage', function ($controller, $page) {
         /*
          * Before twig renders
          */
         $twig = $controller->getTwig();
         $loader = $controller->getLoader();
         Controller::instance()->injectPageTwig($page, $loader, $twig);
         /*
          * Get rendered content
          */
         $contents = Controller::instance()->getPageContents($page);
         if (strlen($contents)) {
             return $contents;
         }
     });
     Event::listen('cms.page.initComponents', function ($controller, $page) {
         Controller::instance()->initPageComponents($controller, $page);
     });
     Event::listen('cms.block.render', function ($blockName, $blockContents) {
         $page = CmsController::getController()->getPage();
         if (!isset($page->apiBag['staticPage'])) {
             return;
         }
         $contents = Controller::instance()->getPlaceholderContents($page, $blockName, $blockContents);
         if (strlen($contents)) {
             return $contents;
         }
     });
     Event::listen('pages.menuitem.listTypes', function () {
         return ['static-page' => 'rainlab.pages::lang.menuitem.static_page', 'all-static-pages' => 'rainlab.pages::lang.menuitem.all_static_pages'];
     });
     Event::listen('pages.menuitem.getTypeInfo', function ($type) {
         if ($type == 'url') {
             return [];
         }
         if ($type == 'static-page' || $type == 'all-static-pages') {
             return StaticPage::getMenuTypeInfo($type);
         }
     });
     Event::listen('pages.menuitem.resolveItem', function ($type, $item, $url, $theme) {
         if ($type == 'static-page' || $type == 'all-static-pages') {
             return StaticPage::resolveMenuItem($item, $url, $theme);
         }
     });
     Event::listen('backend.form.extendFieldsBefore', function ($formWidget) {
         if ($formWidget->model instanceof \Cms\Classes\Partial) {
             Snippet::extendPartialForm($formWidget);
         }
     });
     Event::listen('cms.template.save', function ($controller, $template, $type) {
         Plugin::clearCache();
     });
     Event::listen('cms.template.processSettingsBeforeSave', function ($controller, $dataHolder) {
         $dataHolder->settings = Snippet::processTemplateSettingsArray($dataHolder->settings);
     });
     Event::listen('cms.template.processSettingsAfterLoad', function ($controller, $template) {
         Snippet::processTemplateSettings($template);
     });
     Event::listen('cms.template.processTwigContent', function ($template, $dataHolder) {
         if ($template instanceof \Cms\Classes\Layout) {
             $dataHolder->content = Controller::instance()->parseSyntaxFields($dataHolder->content);
         }
     });
     Event::listen('backend.richeditor.listTypes', function () {
         return ['static-page' => 'rainlab.pages::lang.menuitem.static_page'];
     });
     Event::listen('backend.richeditor.getTypeInfo', function ($type) {
         if ($type === 'static-page') {
             return StaticPage::getRichEditorTypeInfo($type);
         }
     });
 }