Advertisement
Shrike_Finland

SilverStripe SS4 extending page

Feb 8th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.23 KB | None | 0 0
  1. <?php
  2.  
  3. namespace SilverStripe\Masters;
  4.  
  5. use Page;
  6. use SilverStripe\Assets\Image;
  7. use SilverStripe\AssetAdmin\Forms\UploadField;
  8. use SilverStripe\Forms\CheckboxSetField;
  9. use SilverStripe\Forms\DropdownField;
  10. use SilverStripe\Forms\HeaderField;
  11. use SilverStripe\Forms\TextareaField;
  12. use SilverStripe\Forms\TextField;
  13.  
  14. class HeaderSection extends Page {
  15.  
  16.     private static $singular_name = 'Header Section';
  17.     private static $plural_name = 'Headers Sections';
  18.     private static $description = 'Headers section part to be used in upper part of page.';
  19.     private static $icon = '';
  20.  
  21.     private static $db = [ 
  22.         'Maintitle' => 'Varchar(128)',
  23.         'Subtitle' => 'Varchar(128)',
  24.         'Kicker' => 'Varchar(128)',
  25.         'LeadContent' => 'HTMLText',
  26.         'Jumbotron' => "Enum('None,Graphical,BackgroundImage,Graphical-Full,BackgroundImage-Full','None')",
  27.         'Inverse' => 'Boolean',
  28.         'ElementClass' => 'Varchar(192)',
  29.         'SubElementClass' => 'Varchar(192)',
  30.         'RowExtraClass' => 'Varchar(192)',
  31.         'MainContentClass' => 'Varchar(192)',
  32.         'JumbotronClass' => 'Varchar(192)',
  33.         'ContainerFluid' => 'Boolean',
  34.         'TitleClass' => 'Varchar(192)',
  35.         'HideTitles' => 'Boolean',
  36.         'SubtitleClass' => 'Varchar(192)',
  37.         'KickerClass' => 'Varchar(192)',
  38.         'LeadContentClass' => 'Varchar(192)'
  39.     ];
  40.    
  41.     private static $has_one = [
  42.         'MainImage' => Image::class,
  43.         'BackgroundImage' => Image::class
  44.     ];
  45.  
  46.     private static $defaults = [
  47.         'MainContentClass' => 'col-md-12',
  48.         'ContainerFluid' => '0',
  49.         'JumbotronClass' => 'col-md-12',
  50.         'ElementClass' => '',
  51.         'LeadContentClass' => '',
  52.         'KickerClass' => '',
  53.         'TitleClass' => '',
  54.         'SubtitleClass' => ''
  55.     ];
  56.  
  57.     private function getJumbotronStyle() {
  58.         return array(
  59.             'None' => _t('Content.JUMBOTRONNONE', 'None'),
  60.             'Graphical' => _t('Content.JUMBOTRONGRAPHICAL', 'Graphical'),
  61.             'BackgroundImage' => _t('Content.JUMBOTRONBACKGROUNDIMAGE', 'Background image'),
  62.             'Graphical-Full' => _t('Content.JUMBOTRONGRAPHICALFULL', 'Full sized graphical element'),
  63.             'BackgroundImage-Full' => _t('Content.JUMBOTRONBACKGROUNDIMAGEFULL', 'Full sized background image')
  64.         );
  65.     }
  66.    
  67.     function getCMSFields() {
  68.  
  69.         // Settings for UploadFields : Main Image
  70.  
  71.         $UploadField = UploadField::create("MainImage", _t('Content.MAINIMAGE','Main image'));
  72.         $UploadField
  73.             ->setFolderName('Uploads/images/mainimages/')
  74.             ->setDisplayFolderName('Uploads/images/mainimages/')
  75.             ->getValidator()->setAllowedExtensions(array('jpg', 'gif', 'png'));
  76.  
  77.         $UploadField2 = UploadField::create("BackgroundImage", _t('Content.ELEMENTBACKGROUNDIMAGE','Element backgroundimage'));
  78.         $UploadField2
  79.             ->setFolderName('Uploads/images/backgrounds/')
  80.             ->setDisplayFolderName('Uploads/images/backgrounds/')
  81.             ->getValidator()->setAllowedExtensions(array('jpg', 'gif', 'png'));
  82.  
  83.                
  84.         $fields = parent::getCMSFields();
  85.  
  86.         $fields->findOrMakeTab('Root.Main', _t('Content.TABHEADER','Header'));
  87.         $fields->addFieldsToTab('Root.Main', [      
  88.        
  89.             HeaderField::create(_t('Content.MASTERHEADING','Masterheading')),
  90.             TextField::create("Kicker", _t('Content.KICKER','Kicker text before title'))
  91.                 ->setDescription(_t('Content.KICKERHELP','Small introduction text')),
  92.             TextField::create("Maintitle", _t('Content.MAINTITLE','Main title'))
  93.                 ->setDescription(_t('Content.MAINTITLEHELP','If used, overrides page name.')),
  94.             CheckboxField::create('HideTitles', _t('Content.HIDETITLES','Hide titles?'))
  95.                 ->setDescription(_t('Content.HIDETITLESHELP','Hide Maintitle and Master heading')),
  96.             TextField::create("Subtitle", _t('Content.SUBTITLE','Subtitle under the title')),
  97.             $leadContentField = HtmlEditorField::create('LeadContent', _t('Content.LEADCONTENT','Introduction content'))
  98.                 ->setDescription(_t('Content.LEADCONTENTHELP','Write short and effective lead text about the content. Change style, if needed.')),
  99.             HeaderField::create(_t('Content.IMAGES','Images')),
  100.             $UploadField->setDescription(_t('Content.MAINIMAGEHELP','Includes automatic scaling for image.')),
  101.             $UploadField2->setDescription(_t('Content.ELEMENTBACKGROUNDIMAGEHELP','Use for big backgrounds in element.')),
  102.             HeaderField::create(_t('Content.CONTENT','Main content in one column'))
  103.         ], 'Content');
  104.  
  105.         $fields->findOrMakeTab('Root.Main', _t('Content.TABHEADER','Header'));
  106.         $fields->addFieldsToTab('Root.Main', [     
  107.             TextField::create("MainContentClass", _t('Content.MAINCONTENTCLASS','Page content class'))
  108.                 ->setDescription(_t('Content.MAINCONTENTCLASSHELP','You can use Bootstrap grid classes. Default value: col-md-12 To center content: text-center'))
  109.         ]);
  110.  
  111.         $fields->findOrMakeTab('Root.OPTIONS', _t('Content.TABOPTIONS','Options'));
  112.         $fields->addFieldsToTab('Root.OPTIONS', [
  113.             HeaderField::create(_t('Content.PAGESTYLING','Settings for page layout')),
  114.             TextField::create("ElementClass", _t('Content.ELEMENTCLASS','Bootstrap class for element'))
  115.                 ->setDescription(_t('Content.ELEMENTCLASSHELP','Usage e.g. block-fill-height block-fill-height-half text-center etc.')),
  116.             TextField::create("SubElementClass", _t('Content.SUBELEMENTCLASS','Bootstrap class for subelement'))
  117.                 ->setDescription(_t('Content.SUBELEMENTCLASSHELP','Next to Block-element. Usage e.g. block-xs-middle block-md-bottom etc.')),
  118.             CheckboxField::create('ContainerFluid', _t('Content.CONTAINERFLUID','Fluid Container?'))
  119.                 ->setTitle (_t('Content.CONTAINERFLUIDTITLE','Fluid container?'))
  120.                 ->setName ('ContainerFluid')
  121.                 ->setDescription(_t('Content.CONTAINERFLUIDHELP','Makes element full width with Bootstrap container-fluid class.')),
  122.             TextField::create("RowExtraClass", _t('Content.ROWEXTRACLASS','Extra row class'))
  123.                 ->setDescription(_t('Content.ROWEXTRACLASSHELP','Add extra class for Bootstrap row, like row-valign-middle')),
  124.             HeaderField::create(_t('Content.MASTERHEADSTYLING','Masterheading styling options')),
  125.             DropdownField::create('Jumbotron', _t('Content.JUMBOTRON', 'Jumbotron'), $this->getJumbotronStyle())
  126.                 ->setDescription(_t('Content.JUMBOTRONHELP','Specify, do you need jumbotron element and in what style.')),
  127.             TextField::create("JumbotronClass", _t('Content.JUMBOTRONCLASS','Jumbotron css-class'))
  128.                 ->setDescription(_t('Content.JUMBOTRONCLASSHELP','Used for col-xx-x (default col-md-12)')),
  129.             CheckboxField::create('Inverse', _t('Content.INVERSE','Inverse?'))
  130.                 ->setDescription(_t('Content.INVERSEHELP','Light text over dark background')),
  131.             HeaderField::create(_t('Content.MASTERHEADTYPOGRAPHY','Masterhead typography styling options')),
  132.             TextField::create("TitleClass", _t('Content.TITLECLASS','Title css-class'))
  133.                 ->setDescription(_t('Content.TITLECLASSHELP','Usage e.g. block-title text-muted text-uppercase')),
  134.             TextField::create("KickerClass", _t('Content.KICKERCLASS','Kicker css-class'))
  135.                 ->setDescription(_t('Content.KICKERCLASSHELP','Usage e.g. text-muted text-uppercase')),
  136.             TextField::create("SubtitleClass", _t('Content.SUBTITLECLASS','Subtitle css-class'))
  137.                 ->setDescription(_t('Content.SUBTITLECLASSHELP','Usage e.g. text-muted text-uppercase')),
  138.             TextField::create("LeadContentClass", _t('Content.LEADCONTENTCLASS','Lead content css-class'))
  139.                 ->setDescription(_t('Content.LEADCONTENTCLASSHELP','Usage e.g. text-muted'))
  140.         ]);
  141.         $leadContentField->addExtraClass('stacked')->setRows(3);
  142.  
  143.     return $fields;
  144.  
  145.     }
  146.  
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement