/**
  * Adds group select fields to CMS
  * 
  * @param FieldSet $fields
  * @return void
  */
 public function updateCMSFields(FieldSet &$fields)
 {
     // Only modify folder objects with parent nodes
     if (!$this->owner instanceof Folder || !$this->owner->ID) {
         return;
     }
     // Only allow ADMIN and SECURE_FILE_SETTINGS members to edit these options
     if (!Permission::checkMember(Member::currentUser(), array('ADMIN', 'SECURE_FILE_SETTINGS'))) {
         return;
     }
     // Update Security Tab
     $secureFilesTab = $fields->findOrMakeTab('Root.' . _t('SecureFiles.SECUREFILETABNAME', 'Security'));
     $secureFilesTab->push(new HeaderField(_t('SecureFiles.GROUPACCESSTITLE', 'Group Access')));
     $secureFilesTab->push(new TreeMultiselectField('GroupPermissions', _t('SecureFiles.GROUPACCESSFIELD', 'Group Access Permissions')));
     if ($this->owner->InheritSecured()) {
         $permissionGroups = $this->owner->InheritedGroupPermissions();
         if ($permissionGroups->Count()) {
             $fieldText = implode(", ", $permissionGroups->map());
         } else {
             $fieldText = _t('SecureFiles.NONE', "(None)");
         }
         $InheritedGroupsField = new ReadonlyField("InheritedGroupPermissionsText", _t('SecureFiles.GROUPINHERITEDPERMS', 'Inherited Group Permissions'), $fieldText);
         $InheritedGroupsField->addExtraClass('prependUnlock');
         $secureFilesTab->push($InheritedGroupsField);
     }
 }
 /**
  * Returns a readonly version of this field
  */
 function performReadonlyTransformation()
 {
     $field = new ReadonlyField($this->name, $this->title, $this->value);
     $field->addExtraClass($this->extraClass());
     $field->setForm($this->form);
     return $field;
 }
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     // Add the preview fields here, including rules used
     $t = new StaticSitePageTransformer();
     $urlField = new ReadonlyField("PreviewSourceURL", "Imported from", "<a href=\"{$this->AbsoluteURL}\">" . Convert::raw2xml($this->AbsoluteURL) . "</a>");
     $urlField->dontEscape = true;
     $fields->addFieldToTab("Root.Preview", $urlField);
     $content = $t->getContentFieldsAndSelectors($this);
     if (count($content) === 0) {
         return $fields;
     }
     foreach ($content as $k => $v) {
         $readonlyField = new ReadonlyField("Preview{$k}", "{$k}<br>\n<em>" . $v['selector'] . "</em>", $v['content']);
         $readonlyField->addExtraClass('readonly-click-toggle');
         $fields->addFieldToTab("Root.Preview", $readonlyField);
     }
     Requirements::javascript('staticsiteconnector/js/StaticSiteContentItem.js');
     Requirements::css('staticsiteconnector/css/StaticSiteContentItem.css');
     return $fields;
 }
 /**
  * Security tab for folders
  */
 public function updateCMSFields(FieldSet &$fields)
 {
     // Only modify folder objects with parent nodes
     if (!$this->owner instanceof Folder || !$this->owner->ID) {
         return;
     }
     // Only allow ADMIN and SECURE_FILE_SETTINGS members to edit these options
     if (!Permission::checkMember(Member::currentUser(), array('ADMIN', 'SECURE_FILE_SETTINGS'))) {
         return;
     }
     $secureFilesTab = $fields->findOrMakeTab('Root.' . _t('SecureFiles.SECUREFILETABNAME', 'Security'));
     $EnableSecurityHolder = new FieldGroup();
     $EnableSecurityHolder->addExtraClass('securityFieldHolder');
     if ($this->InheritSecured()) {
         $EnableSecurityField = new ReadonlyField('InheritSecurity', '', _t('SecureFiles.INHERITED', 'This folder is inheriting security settings from a parent folder.'));
         $EnableSecurityField->addExtraClass('prependLock');
     } else {
         $EnableSecurityField = new CheckboxField('Secured', _t('SecureFiles.SECUREFOLDER', 'Folder is secure.'));
     }
     $secureFilesTab->push(new HeaderField(_t('SecureFiles.FOLDERSECURITY', 'Folder Security')));
     $EnableSecurityHolder->push($EnableSecurityField);
     $secureFilesTab->push($EnableSecurityHolder);
 }
 /**
  * Gets the field list for a record.
  *
  * @param GridField $grid
  * @param DataObjectInterface $record
  * @return FieldList
  */
 public function getFields(GridField $grid, DataObjectInterface $record)
 {
     $cols = $this->getDisplayFields($grid);
     $fields = new FieldList();
     $list = $grid->getList();
     $class = $list ? $list->dataClass() : null;
     foreach ($cols as $col => $info) {
         $field = null;
         if ($info instanceof Closure) {
             $field = call_user_func($info, $record, $col, $grid);
         } elseif (is_array($info)) {
             if (isset($info['callback'])) {
                 $field = call_user_func($info['callback'], $record, $col, $grid);
             } elseif (isset($info['field'])) {
                 if ($info['field'] == 'LiteralField') {
                     $field = new $info['field']($col, null);
                 } else {
                     $field = new $info['field']($col);
                 }
             }
             if (!$field instanceof FormField) {
                 throw new Exception(sprintf('The field for column "%s" is not a valid form field', $col));
             }
         }
         if (!$field && $list instanceof ManyManyList) {
             $extra = $list->getExtraFields();
             if ($extra && array_key_exists($col, $extra)) {
                 $field = Object::create_from_string($extra[$col], $col)->scaffoldFormField();
             }
         }
         if (!$field) {
             if (!$this->displayFields) {
                 // If setDisplayFields() not used, utilize $summary_fields
                 // in a way similar to base class
                 //
                 // Allows use of 'MyBool.Nice' and 'MyHTML.NoHTML' so that
                 // GridFields not using inline editing still look good or
                 // revert to looking good in cases where the field isn't
                 // available or is readonly
                 //
                 $colRelation = explode('.', $col);
                 if ($class && ($obj = singleton($class)->dbObject($colRelation[0]))) {
                     $field = $obj->scaffoldFormField();
                 } else {
                     $field = new ReadonlyField($colRelation[0]);
                 }
             } else {
                 if ($class && ($obj = singleton($class)->dbObject($col))) {
                     $field = $obj->scaffoldFormField();
                 } else {
                     $field = new ReadonlyField($col);
                 }
             }
         }
         if (!$field instanceof FormField) {
             throw new Exception(sprintf('Invalid form field instance for column "%s"', $col));
         }
         // Add CSS class for interactive fields
         if (!($field->isReadOnly() || $field instanceof LiteralField)) {
             $field->addExtraClass('editable-column-field');
         }
         $fields->push($field);
     }
     return $fields;
 }
Пример #6
0
 /**
  * @return FieldList
  */
 protected function getFieldsForOembed($url, $file)
 {
     if (isset($file->Oembed->thumbnail_url)) {
         $thumbnailURL = $file->Oembed->thumbnail_url;
     } elseif ($file->Type == 'photo') {
         $thumbnailURL = $file->Oembed->url;
     } else {
         $thumbnailURL = FRAMEWORK_DIR . '/images/default_media.png';
     }
     $previewField = new LiteralField("ImageFull", "<img id='thumbnailImage' class='thumbnail-preview' src='{$thumbnailURL}?r=" . rand(1, 100000) . "' alt='{$file->Name}' />\n");
     if ($file->Width != null) {
         $dimensionsField = new FieldGroup(_t('HtmlEditorField.IMAGEDIMENSIONS', 'Dimensions'), $widthField = new TextField('Width', _t('HtmlEditorField.IMAGEWIDTHPX', 'Width'), $file->Width), $heightField = new TextField('Height', _t('HtmlEditorField.IMAGEHEIGHTPX', 'Height'), $file->Height));
     }
     $fields = new FieldList($filePreview = CompositeField::create(CompositeField::create($previewField)->setName("FilePreviewImage")->addExtraClass('cms-file-info-preview'), CompositeField::create(CompositeField::create(new ReadonlyField("FileType", _t('AssetTableField.TYPE', 'File type') . ':', $file->Type), $urlField = new ReadonlyField('ClickableURL', _t('AssetTableField.URL', 'URL'), sprintf('<a href="%s" target="_blank" class="file">%s</a>', $url, $url))))->setName("FilePreviewData")->addExtraClass('cms-file-info-data'))->setName("FilePreview")->addExtraClass('cms-file-info'), new TextField('CaptionText', _t('HtmlEditorField.CAPTIONTEXT', 'Caption text')), $alignment = new DropdownField('CSSClass', _t('HtmlEditorField.CSSCLASS', 'Alignment / style'), array('left' => _t('HtmlEditorField.CSSCLASSLEFT', 'On the left, with text wrapping around.'), 'leftAlone' => _t('HtmlEditorField.CSSCLASSLEFTALONE', 'On the left, on its own.'), 'right' => _t('HtmlEditorField.CSSCLASSRIGHT', 'On the right, with text wrapping around.'), 'center' => _t('HtmlEditorField.CSSCLASSCENTER', 'Centered, on its own.'))), $dimensionsField);
     $urlField->addExtraClass('text-wrap');
     $urlField->dontEscape = true;
     if ($dimensionsField) {
         $dimensionsField->addExtraClass('dimensions last');
         $widthField->setMaxLength(5);
         $heightField->setMaxLength(5);
     } else {
         $alignment->addExtraClass('last');
     }
     if ($file->Type == 'photo') {
         $filePreview->FieldList()->insertBefore(new TextField('AltText', _t('HtmlEditorField.IMAGEALTTEXT', 'Alternative text (alt) - shown if image cannot be displayed'), $file->Title, 80), 'CaptionText');
         $filePreview->FieldList()->insertBefore(new TextField('Title', _t('HtmlEditorField.IMAGETITLE', 'Title text (tooltip) - for additional information about the image')), 'CaptionText');
     }
     $this->extend('updateFieldsForImage', $fields, $url, $file);
     return $fields;
 }