/** * Attributes for the element containing the content returned by {@link getColumnContent()}. * * @param GridField $gridField * @param DataObject $record displayed in this row * @param string $columnName * * @return array */ public function getColumnAttributes($gridField, $record, $columnName) { Utilities::include_requirements(); $gridField->addExtraClass('ss-gridfield-timeline'); $iconClasses = array_merge([$this->getColumnForIcon($columnName), 'TimelineIcon'], $this->iconClasses); if ($this->addAttributesFromMethodOnRecord) { return array_merge($iconClasses, $record->{$this->addAttributesFromMethodOnRecord}); } return ['class' => implode(' ', array_unique($iconClasses))]; }
public function handleItem($gridField, $request) { $detailForm = $gridField->Config->getComponentByType('GridFieldDetailForm'); if (!$detailForm) { throw new Exception('A GridFieldDetailForm is required to use a modal via this component'); } Utilities::include_requirements(); $detailForm->setTemplate('GridField_Modal_View'); $itemEditCallback = $detailForm->getItemEditFormCallback(); $link = $this->Link($gridField); $detailForm->setItemEditFormCallback(function ($form, $controller) use($itemEditCallback, $link) { $form->setAttribute('data-modal-link', $link); $nonModalLink = explode('/', $controller->Link()); array_pop($nonModalLink); $nonModalLink = implode('/', $nonModalLink); $form->setAttribute('data-non-modal-link', $nonModalLink); if ($itemEditCallback) { $itemEditCallback($form, $controller); } }); return $detailForm->handleItem($gridField, $request); }
public function getColumnContent($gridField, $record, $columnName) { $flag = $this->getFlag($record, $gridField); if (!$this->checkPermissions($flag, $record, $gridField)) { return ''; } if (static::$include_font_css) { Requirements::css(singleton('env')->get('CDN.font-awesome', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css')); } Utilities::include_requirements(); $titles = $this->titles; $title = ''; $icon = ''; if (is_array($this->field) && isset($this->field['title'])) { if (is_callable($this->field['title'])) { $titles = call_user_func_array($this->replaceStringWithRecordInCallable($this->field['title'], $record), [$flag, $record, $gridField]); } else { if (is_array($this->field['title'])) { $titles = $this->field['title']; } else { $title = $this->field['title']; } } } if (!$title && count($titles)) { if ($flag) { $title = isset($titles['true']) && isset($titles['true']['title']) ? $titles['true']['title'] : ''; $icon = isset($titles['true']) && isset($titles['true']['icon']) ? $titles['true']['icon'] : ''; } else { $title = isset($titles['false']) && isset($titles['false']['title']) ? $titles['false']['title'] : ''; $icon = isset($titles['false']) && isset($titles['false']['icon']) ? $titles['false']['icon'] : ''; } } $action = $this->getActions($gridField); return GridField_FormAction::create($gridField, $action[0] . $record->ID, $title, $action[0], ['RecordID' => $record->ID])->addExtraClass('gridfield-button-toggle-action')->setAttribute('title', $title)->setAttribute('data-icon', $icon)->Field(); }
public function getHTMLFragments($grid) { GridFieldExtensions::include_requirements(); Utilities::include_requirements(); $data = ArrayData::create(['Title' => $this->getTitle(), 'Link' => $grid->Link($this->urlSegment ?: 'add-existing-search')]); if ($this->async) { $grid->addExtraClass('ss-gridfield-add-existing-picker_async'); } return [$this->fragment => $data->renderWith(['GridField_AddExistingPicker', 'GridFieldAddExistingSearchButton'])]; }
protected function getSelectField($record, $grid) { $list = $record->{$this->relation}(); if (!$list || !singleton($list->dataClass())->canView() || !$record->exists()) { return ''; } Utilities::include_requirements(); if (!$this->_saveSourceList) { $this->_saveSourceList = DataList::create($list->dataClass())->map()->toArray(); } return Object::create('Select2Field', $this->relation, $list, $this->sourceList ?: DataList::create($list->dataClass()), null, $this->referenceField, $this->valueField)->addExtraClass('ss-gridfield--tags-column--selector')->setAttribute('multiple', true)->setAttribute('data-tags', true)->setAttribute('data-gf-filter-link', Controller::join_links($grid->Link(), 'tag', $this->relation, 'filter', '{{ tag }}'))->setAttribute('data-gf-new-link', Controller::join_links($grid->Link(), 'tag', $this->relation, 'new', $record->ID, '{{ tag }}'))->setPrefetch(50)->requireSelection(!$this->allowNewItems); }
public function getHTMLFragments($grid) { Utilities::include_requirements(); return [$this->targetFragment => ArrayData::create(['Title' => $this->resetButtonTitle, 'Relation' => $this->relation])->renderWith('GridField_HasOneSelector')]; }
public function getHTMLFragments($grid) { if (!$this->canCreate($grid)) { return []; } $this->workingGrid = $grid; $grid->addExtraClass('ss-gridfield-add-inline-extended--table'); $grid->setAttribute('data-prepend', $this->prepend); $fragments = [$this->getFragment() => $this->getButtonFragment($grid)]; if (!$this->loadViaAjax) { \Requirements::javascript(THIRDPARTY_DIR . '/javascript-templates/tmpl.js'); $fragments['after'] = isset($fragments['after']) ? $fragments['after'] . $this->getRowTemplate($grid) : $this->getRowTemplate($grid); } Utilities::include_requirements(); return $fragments; }
/** * @inheritdoc */ public function getHTMLFragments($gridField) { $this->stockFormats($gridField); if (empty($this->formats)) { return []; } Utilities::include_requirements(); $currentFormat = $this->getFormatState($gridField)->current; $formats = ArrayList::create(); $icon = '<i class="ss-gridfield--format-switcher--button-icon"></i><i class="ss-gridfield--format-switcher--button-icon"></i><i class="ss-gridfield--format-switcher--button-icon"></i>'; $action = Button::create($gridField, 'unformatted', _t('GridField_FormatSwitcher.' . $this->unformatted['title'], $this->unformatted['title']), $this->urlSegment, $this->unformatted['state']); $action->ButtonContent = $icon . $action->Title(); $action->addExtraClass('ss-gridfield--format-switcher--button ss-gridfield--format-switcher--button_' . $this->unformatted['state']); if ($currentFormat == $this->unformatted['state']) { $action = $action->addExtraClass('ss-gridfield--format-switcher--button_active active')->performDisabledTransformation(); } $formats->push(ArrayData::create(['Button' => $action])); foreach ($this->formats as $formatState => $format) { if (is_array($format)) { $title = empty($format['title']) ? FormField::name_to_label($formatState) : $format['title']; } else { if (is_callable($format)) { $title = FormField::name_to_label($formatState); } else { $title = $format->getFormatTitle(); } } $action = Button::create($gridField, $formatState, $title, $this->urlSegment, $formatState); $action->ButtonContent = $icon . $action->Title(); $action->addExtraClass('ss-gridfield--format-switcher--button ss-gridfield--format-switcher--button_' . str_replace(' ', '-', $formatState)); if ($formatState == $currentFormat) { $action = $action->addExtraClass('ss-gridfield--format-switcher--button_active active')->performDisabledTransformation(); } $formats->push(ArrayData::create(['Button' => $action])); } return [$this->targetFragment => ArrayData::create(['Formats' => $formats])->renderWith('GridField_FormatSwitcher')]; }
public function getHTMLFragments($grid) { \Requirements::javascript(THIRDPARTY_DIR . '/javascript-templates/tmpl.js'); Utilities::include_requirements(); }
public function format(GridField $gridField) { Utilities::include_requirements(); $gridField->addExtraClass('ss-gridfield-timeline'); }