Пример #1
0
 /**
  * @param string $name
  * @param string $label
  * @param string $mode
  *
  * @return CodeEditorField
  */
 protected function getCodeEditorField($name, $label, $mode)
 {
     $field = new CodeEditorField($name, $label);
     $field->setMode($mode);
     $field->setTemplate("ReflowCodeEditorField");
     $field->setFieldHolderTemplate("ReflowCodeEditorFieldHolder");
     return $field;
 }
 function PopupForm()
 {
     $form = new Form($this, "{$this->name}/PopupForm", new FieldList($headerWrap = new CompositeField(new LiteralField('Heading', sprintf('<h3 class="htmleditorfield-mediaform-heading insert">%s</h3>', 'Edit Source'))), $codeField = new CodeEditorField('TinyMCESource', '')), new FieldList(ResetFormAction::create('cancel', 'Cancel')->addExtraClass('ss-ui-action-destructive')->setUseButtonTag(true), FormAction::create('update', 'Update')->addExtraClass('ss-ui-action-constructive')->setAttribute('data-icon', 'accept')->setUseButtonTag(true)));
     $headerWrap->addExtraClass('CompositeField composite cms-content-header nolabel ');
     //	$contentComposite->addExtraClass('tinymce-codeeditor-field content');
     $codeField->addExtraClass('nolabel stacked');
     $form->unsetValidator();
     $form->loadDataFrom($this);
     $form->addExtraClass('htmleditorfield-form htmleditorfield-codeform cms-dialog-content');
     //	$this->extend('updateLinkForm', $form);
     return $form;
 }
 public function updateCMSFields(FieldList $fields)
 {
     if (permission::check('ADMIN')) {
         $fields->addFieldToTab('Root.AdditionalCode', $codeField = new CodeEditorField('AdditionalCode', 'Additional HTML/JS/CSS Code', 50));
         $codeField->addExtraClass('stacked');
         $codeField->setRows(45);
         $codeField->setMode('html');
     }
     if ($this->owner->ClassName == "Page") {
         $fields->addFieldToTab("Root.Columns", new HTMLEditorField("LeftColumn", "Left Column Content"));
         $fields->addFieldToTab("Root.Columns", new HTMLEditorField("CenterColumn", "Center Column Content"));
         $fields->addFieldToTab("Root.Columns", new HTMLEditorField("RightColumn", "Right Column Content"));
         $fields->addFieldToTab("Root.Sidebar", new HTMLEditorField("SidebarContent", "Sidebar Content"));
     }
     return $fields;
 }
 /**
  * Adds the CodeEditorField
  *
  * @param FieldList $fields
  */
 public function updateCMSFields(FieldList $fields)
 {
     $codeField = CodeEditorField::create('CustomCSS');
     $codeField->setRows(Config::inst()->get('CustomCSS', 'Rows'));
     $codeField->setMode('css');
     if (Config::inst()->get('CustomCSS', 'Stacked')) {
         $codeField->addExtraClass('stacked');
     }
     $fields->addFieldToTab("Root.Main", $codeField);
 }
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $config = EmailTemplate::config();
     if (!$this->Theme) {
         $this->Theme = MandrillEmail::config()->default_theme;
     }
     if (!$this->Template) {
         $this->Template = MandrillEmail::config()->default_template;
     }
     if ($config->allow_configure_template || Permission::check('ADMIN')) {
         $templates = MandrillEmail::getAvailablesTemplates();
         $fields->replaceField('Template', $templateDropdown = new DropdownField('Template', 'Template', $templates));
     } else {
         $fields->removeByName('Template');
     }
     if ($config->allow_configure_theme || Permission::check('ADMIN')) {
         $themes = MandrillEmail::getAvailableThemes();
         $fields->replaceField('Theme', $themeDropdown = new DropdownField('Theme', 'Theme', array_combine($themes, $themes)));
     } else {
         $fields->removeByName('Theme');
     }
     $objectsSource = array();
     $dataobjects = ClassInfo::subclassesFor('DataObject');
     foreach ($dataobjects as $dataobject) {
         if ($dataobject == 'DataObject') {
             continue;
         }
         $objectsSource[$dataobject] = $dataobject;
     }
     asort($objectsSource);
     // form-extras integration
     if (class_exists('TableField')) {
         $fields->replaceField('ExtraModels', $extraModels = new TableField('ExtraModels', 'Extra Models'));
         $extraModels->addColumn('Name');
         $extraModels->addColumn('Model', null, TableField::TYPE_SELECT, null, array('ctrlOptions' => $objectsSource));
     } else {
         if (class_exists('CodeEditorField')) {
             $fields->replaceField('ExtraModels', $extraModelsCode = new CodeEditorField('ExtraModels', 'Extra Models'));
             $extraModelsCode->setMode('json');
         }
     }
     // form-extras integration
     if (class_exists('ComboField')) {
         $categories = EmailTemplate::get()->column('Category');
         $fields->replaceField('Category', new ComboField('Category', 'Category', array_combine($categories, $categories)));
     }
     $fields->dataFieldByName('Callout')->setRows(5);
     $codeField = $fields->dataFieldByName('Code');
     $codeField->setAttribute('placeholder', _t('EmailTemplate.CODEPLACEHOLDER', 'A unique code that will be used in code to retrieve the template, e.g.: my-email'));
     if ($this->Code) {
         $codeField->setReadonly(true);
     }
     // Merge fields helper
     $fields->addFieldToTab('Root.Main', new HeaderField('MergeFieldsHelperTitle', _t('EmailTemplate.AVAILABLEMERGEFIELDSTITLE', 'Available merge fields')));
     $content = '';
     $baseFields = array('To', 'Cc', 'Bcc', 'From', 'Subject', 'Body', 'BaseURL', 'Controller');
     foreach ($baseFields as $baseField) {
         $content .= $baseField . ', ';
     }
     $content = trim($content, ', ') . '<br/><br/>';
     $models = $this->getAvailableModels();
     $modelsByClass = array();
     $classes = array();
     foreach ($models as $name => $model) {
         $classes[] = $model;
         if (!isset($modelsByClass[$model])) {
             $modelsByClass[$model] = array();
         }
         $modelsByClass[$model][] = $name;
     }
     $classes = array_unique($classes);
     foreach ($classes as $model) {
         if (!class_exists($model)) {
             continue;
         }
         $props = Config::inst()->get($model, 'db');
         $o = singleton($model);
         $methods = array_diff($o->allMethodNames(true), $o->allMethodNames());
         $content .= '<strong>' . $model . ' (' . implode(',', $modelsByClass[$model]) . ') :</strong><br/>';
         foreach ($props as $fieldName => $fieldType) {
             $content .= $fieldName . ', ';
         }
         foreach ($methods as $method) {
             if (strpos($method, 'get') === 0) {
                 $content .= $method . ', ';
             }
         }
         $content = trim($content, ', ') . '<br/>';
     }
     $content .= "<div class='message info'>" . _t('EmailTemplate.ENCLOSEFIELD', 'To escape a field from surrounding text, you can enclose it between brackets, eg: {$CurrentMember.FirstName}.') . '</div>';
     $fields->addFieldToTab('Root.Main', new LiteralField('MergeFieldsHelper', $content));
     if ($this->ID) {
         $fields->addFieldToTab('Root.Preview', $this->previewTab());
     }
     return $fields;
 }