/** * Returns a map where the keys are fragment names and the values are * pieces of HTML to add to these fragments. * * Here are 4 built-in fragments: 'header', 'footer', 'before', and * 'after', but components may also specify fragments of their own. * * To specify a new fragment, specify a new fragment by including the * text "$DefineFragment(fragmentname)" in the HTML that you return. * * Fragment names should only contain alphanumerics, -, and _. * * If you attempt to return HTML for a fragment that doesn't exist, an * exception will be thrown when the {@link GridField} is rendered. * * @param GridField $gridField * @return array */ public function getHTMLFragments($gridField) { $button = new GridField_FormAction($gridField, $this->actionName, $this->buttonText, $this->actionName, null); $button->addExtraClass('multiselect-button'); if (!empty($this->buttonConfig['icon'])) { $button->setAttribute('data-icon', $this->buttonConfig['icon']); } if (!empty($this->buttonConfig['class'])) { $button->addExtraClass($this->buttonConfig['class']); } if (!empty($this->buttonConfig['confirm'])) { $button->setAttribute('data-confirm', $this->buttonConfig['confirm']); } return array($this->targetFragment => $button->Field()); }
public function getHTMLFragments($gridField) { $button = new GridField_FormAction($gridField, 'syncwithyoutube', _t('GridFieldSyncYoutubeVideos.CTA', 'Sync with Youtube'), 'syncwithyoutube', null); $button->setAttribute('data-icon', 'accept'); $button->addExtraClass('no-ajax'); return array($this->targetFragment => '<p class="grid-csv-button">' . $button->Field() . '<br><br></p>'); }
/** * Place the export button in a <p> tag below the field */ public function getHTMLFragments($gridField) { $button = new GridField_FormAction($gridField, 'export', _t('TableListField.CSVEXPORT', 'Export to CSV'), 'export', null); $button->setAttribute('data-icon', 'download-csv'); $button->addExtraClass('no-ajax'); return array($this->targetFragment => '<p class="grid-csv-button">' . $button->Field() . '</p>'); }
/** * * @param GridField $gridField * @return string - HTML */ public function getHTMLFragments($gridField) { $searchState = $gridField->State->GridFieldSearchRelation; $dataClass = $gridField->getList()->dataClass(); $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList(); $searchFields = $this->getSearchFields() ? $this->getSearchFields() : $this->scaffoldSearchFields($dataClass); $value = $this->findSingleEntry($gridField, $searchFields, $searchState, $dataClass); $searchField = new TextField('gridfield_relationsearch', _t('GridField.RelationSearch', "Relation search"), $value); // Apparently the data-* needs to be double qouted for the jQuery.meta data plugin $searchField->setAttribute('data-search-url', '\'' . Controller::join_links($gridField->Link('search') . '\'')); $searchField->setAttribute('placeholder', $this->getPlaceholderText($dataClass)); $searchField->addExtraClass('relation-search no-change-track'); $findAction = new GridField_FormAction($gridField, 'gridfield_relationfind', _t('GridField.Find', "Find"), 'find', 'find'); $findAction->setAttribute('data-icon', 'relationfind'); $addAction = new GridField_FormAction($gridField, 'gridfield_relationadd', _t('GridField.LinkExisting', "Link Existing"), 'addto', 'addto'); $addAction->setAttribute('data-icon', 'chain--plus'); // If an object is not found, disable the action if (!is_int($gridField->State->GridFieldAddRelation)) { $addAction->setReadonly(true); } $forTemplate->Fields->push($searchField); $forTemplate->Fields->push($findAction); $forTemplate->Fields->push($addAction); return array($this->targetFragment => $forTemplate->renderWith($this->itemClass)); }
/** * Place the print button in a <p> tag below the field * * @param GridField * * @return array */ public function getHTMLFragments($gridField) { $button = new GridField_FormAction($gridField, 'print', _t('TableListField.Print', 'Print'), 'print', null); $button->setAttribute('data-icon', 'grid_print'); $button->addExtraClass('gridfield-button-print'); return array($this->targetFragment => '<p class="grid-print-button">' . $button->Field() . '</p>'); }
public function getHTMLFragments($gridField) { $model = Injector::inst()->create($gridField->getModelClass()); $parent = SiteTree::get()->byId(Controller::curr()->currentPageID()); if (!$model->canCreate()) { return array(); } $children = $this->getAllowedChildren($parent); if (count($children) > 1) { $pageTypes = DropdownField::create("PageType", "Page Type", $children, $model->defaultChild()); $pageTypes->setFieldHolderTemplate("GridFieldSiteTreeAddNewButton_holder")->addExtraClass("gridfield-dropdown no-change-track"); if (!$this->buttonName) { $this->buttonName = _t('GridFieldSiteTreeAddNewButton.AddMultipleOptions', 'Add new', "Add button text for multiple options."); } } else { $keys = array_keys($children); $pageTypes = HiddenField::create('PageType', 'Page Type', $keys[0]); if (!$this->buttonName) { $this->buttonName = _t('GridFieldSiteTreeAddNewButton.Add', 'Add new {name}', 'Add button text for a single option.', array($children[$keys[0]])); } } $state = $gridField->State->GridFieldSiteTreeAddNewButton; $state->currentPageID = $parent->ID; $state->pageType = $parent->defaultChild(); $addAction = new GridField_FormAction($gridField, 'add', $this->buttonName, 'add', 'add'); $addAction->setAttribute('data-icon', 'add')->addExtraClass("no-ajax ss-ui-action-constructive dropdown-action"); $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList(); $forTemplate->Fields->push($pageTypes); $forTemplate->Fields->push($addAction); Requirements::css(LUMBERJACK_DIR . "/css/lumberjack.css"); Requirements::javascript(LUMBERJACK_DIR . "/javascript/GridField.js"); return array($this->targetFragment => $forTemplate->renderWith("GridFieldSiteTreeAddNewButton")); }
/** * Place the export button in a <p> tag below the field */ public function getHTMLFragments($gridField) { $btnLabel = _t('Hail', 'Fetch {type}', ['type' => singleton($gridField->getModelClass())->i18n_plural_name()]); $button = new GridField_FormAction($gridField, 'fetchhail', $btnLabel, 'fetchhail', null); $button->setAttribute('data-icon', 'fetchHail'); // $button->addExtraClass('ss-ui-action-constructive'); return array($this->targetFragment => $button->Field()); }
/** * Get the html/css button and upload field to perform import. */ public function getHTMLFragments($gridField) { $button = new GridField_FormAction($gridField, 'import', _t('TableListField.CSVIMPORT', 'Import from CSV'), 'import', null); $button->setAttribute('data-icon', 'drive-upload'); $button->addExtraClass('no-ajax'); $uploadfield = $this->getUploadField($gridField); $data = array('Button' => $button, 'UploadField' => $uploadfield); $importerHTML = ArrayData::create($data)->renderWith("GridFieldImporter"); Requirements::javascript('importexport/javascript/GridFieldImporter.js'); return array($this->targetFragment => $importerHTML); }
public function getHTMLFragments($gridField) { Requirements::css(FindManyManyDropdown_PATH . '/css/FindManyManyDropdown.css'); Requirements::javascript(FindManyManyDropdown_PATH . '/javascript/FindManyManyDropdownForm.js'); $targetFragment = 'before'; if ($gridField->getConfig()->getComponentByType('GridFieldButtonRow')) { $targetFragment = 'buttons-before-right'; } $dataClass = $gridField->list->dataClass; $dropdownOptions = new DropdownField('gridfield_relationdropdown', 'Please choose an object', Dataobject::get($dataClass)->map("ID", "Title")); $dropdownOptions->setEmptyString('Select:'); $addAction = new GridField_FormAction($gridField, 'gridfield_relationadd', _t('GridField.LinkExisting', "Link Existing"), 'addDDto', 'addDDto'); $addAction->setAttribute('data-icon', 'chain--plus'); $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList(); $forTemplate->Fields->push($dropdownOptions); $forTemplate->Fields->push($addAction); return array($targetFragment => $forTemplate->renderWith('FindManyManyDropdownForm')); }
public function getHTMLFragments($gridField) { $button = new GridField_FormAction($gridField, 'defaultEventTypes', 'Add Default Event Types', 'addDefaultEventTypes', null); $button->setAttribute('data-icon', 'chain--plus'); return array($this->targetFragment => $button->Field()); }
public function getHTMLFragments($gridField) { $button = new GridField_FormAction($gridField, 'updateDefaultCategoryTags', 'Update All Categories', 'updateDefaultCategoryTags', null); $button->setAttribute('data-icon', 'chain--plus'); return array($this->targetFragment => $button->Field()); }
/** * Adds the form fields for the batch actions * * @param GridField $gridField GridField to get HTML fragments for * * @return array */ public function getHTMLFragments($gridField) { Requirements::css('silvercart/admin/css/SilvercartGridFieldBatchController.css'); Requirements::javascript('silvercart/admin/javascript/SilvercartGridFieldBatchController.js'); $source = array('' => 'Bitte wählen'); $targetBatchActionObjects = $this->getTargetBatchActionObjects(); foreach ($targetBatchActionObjects as $targetBatchAction => $targetBatchActionObject) { $source[$targetBatchAction] = $targetBatchActionObject->getTitle(); $targetBatchActionObject->RequireJavascript(); } $dropdown = new DropdownField($this->getDropdownName(), $this->getDropdownName(), $source); $dropdown->addExtraClass('grid-batch-action-selector'); $button = new GridField_FormAction($gridField, 'execute_batch_action', _t('Silvercart.EXECUTE', 'Execute'), 'handleBatchAction', null); $button->setAttribute('data-icon', 'navigation'); $button->addExtraClass('gridfield-button-batch'); return array($this->targetFragment => '<div class="grid-batch-action-button"><div class="field dropdown plain">' . $dropdown->Field() . '</div><div class="grid-batch-action-callback-target"></div>' . $button->Field() . '</div>'); }
/** * Renders the TextField and add button to the GridField. * * @param $girdField GridField * * @return string HTML **/ public function getHTMLFragments($gridField) { $dataClass = $gridField->getList()->dataClass(); $obj = singleton($dataClass); if (!$obj->canCreate()) { return ""; } $dbField = $this->getDataObjectField(); $textField = TextField::create("gridfieldaddbydbfield[" . $obj->ClassName . "][" . Convert::raw2htmlatt($dbField) . "]")->setAttribute("placeholder", $obj->fieldLabel($dbField))->addExtraClass("no-change-track"); $addAction = new GridField_FormAction($gridField, 'add', _t('GridFieldAddByDBField.Add', "Add {name}", "Add button text", array("name" => $obj->i18n_singular_name())), 'add', 'add'); $addAction->setAttribute('data-icon', 'add'); // Start thinking about rending this back to the GF $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList(); $forTemplate->Fields->push($textField); $forTemplate->Fields->push($addAction); return array($this->targetFragment => $forTemplate->renderWith("GridFieldAddByDBField")); }
/** * Renders the TextField and add button to the GridField. * * @param $gridField GridField * * @return string */ public function getHTMLFragments($gridField) { /** * @var DataList $dataList */ $dataList = $gridField->getList(); $dataClass = $dataList->dataClass(); $obj = singleton($dataClass); if (!$obj->canCreate()) { return ""; } $dbField = $this->getDataObjectField(); $textField = TextField::create(sprintf("gridfieldaddbydbfield[%s][%s]", $obj->ClassName, Convert::raw2htmlatt($dbField)))->setAttribute('placeholder', $obj->fieldLabel($dbField))->addExtraClass('no-change-track'); $addAction = new GridField_FormAction($gridField, 'add', _t('GridFieldAddByDBField.Add', 'Add {name}', "Add button text", array('name' => $obj->i18n_singular_name())), 'add', 'add'); $addAction->setAttribute('data-icon', 'add'); $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList(); $forTemplate->Fields->push($textField); $forTemplate->Fields->push($addAction); return array($this->targetFragment => $forTemplate->renderWith('GridFieldAddByDBField')); }
/** * * @param GridField $gridField * @return string - HTML */ public function getHTMLFragments($gridField) { $dataClass = $gridField->getList()->dataClass(); $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList(); $searchField = new TextField('gridfield_relationsearch', _t('GridField.RelationSearch', "Relation search")); $searchField->setAttribute('data-search-url', Controller::join_links($gridField->Link('search'))); $searchField->setAttribute('placeholder', $this->getPlaceholderText($dataClass)); $searchField->addExtraClass('relation-search no-change-track'); $findAction = new GridField_FormAction($gridField, 'gridfield_relationfind', _t('GridField.Find', "Find"), 'find', 'find'); $findAction->setAttribute('data-icon', 'relationfind'); $addAction = new GridField_FormAction($gridField, 'gridfield_relationadd', _t('GridField.LinkExisting', "Link Existing"), 'addto', 'addto'); $addAction->setAttribute('data-icon', 'chain--plus'); // If an object is not found, disable the action if (!is_int($gridField->State->GridFieldAddRelation(null))) { $addAction->setReadonly(true); } $forTemplate->Fields->push($searchField); $forTemplate->Fields->push($findAction); $forTemplate->Fields->push($addAction); return array($this->targetFragment => $forTemplate->renderWith($this->itemClass)); }
/** * Renders the TextField and add button to the GridField. * * @param $girdField GridField * * @return string HTML **/ public function getHTMLFragments($gridField) { $dataClass = $gridField->getList()->dataClass(); $obj = singleton($dataClass); if (!$obj->canCreate()) { return ""; } $dbField = $this->getDataObjectField(); $textField = TextField::create("gridfieldaddbydbfield")->setAttribute("placeholder", _t("GridFieldAddOrderItem.Add", "Add by {Filters} or {Title}", array("Filters" => implode(",", $this->getFilterFields()), "Title" => $this->getCreateField())))->addExtraClass("relation-search no-change-track")->setAttribute('data-search-url', Controller::join_links($gridField->Link('search'))); $addAction = new GridField_FormAction($gridField, 'gridfield_orderitemadd', _t("GridFieldAddOrderItem.Add", "Add"), 'add', 'add'); $addAction->setAttribute('data-icon', 'add'); // Start thinking about rending this back to the GF $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList(); $forTemplate->Fields->push($textField); $forTemplate->Fields->push($addAction); return array($this->targetFragment => $forTemplate->renderWith("GridFieldAddOrderItem")); }
/** * Place the export button in a <p> tag below the field */ public function getHTMLFragments($gridField) { $button = new GridField_FormAction($gridField, 'addapikey', _t('GridFieldAddApiKeyButton.CREATE_API_KEY', 'Create API Key'), 'addapikey', null); $button->setAttribute('data-icon', 'add'); return array($this->targetFragment => $button->Field()); }
public function getHTMLFragments($grid) { // Check create permission $singleton = singleton($grid->getModelClass()); if (!$singleton->canCreate()) { return array(); } // Get button name $buttonName = $this->getButtonName(); if (!$buttonName) { // provide a default button name, can be changed by calling {@link setButtonName()} on this component $objectName = $singleton->i18n_singular_name(); $buttonName = _t('GridField.Add', 'Add {name}', array('name' => $objectName)); } $addAction = new GridField_FormAction($grid, $this->getAction(), $buttonName, $this->getAction(), array()); $addAction->setAttribute('data-icon', 'add'); if ($this->getButtonClass()) { $addAction->addExtraClass($this->getButtonClass()); } return array($this->targetFragment => $addAction->forTemplate()); }
/** * Place the export button in a <p> tag below the field */ public function getHTMLFragments($gridField) { $button = new GridField_FormAction($gridField, $this->actionName, $this->getBtnTitle(), $this->actionName, null); $button->setAttribute('data-icon', 'download-csv'); $button->addExtraClass('no-ajax'); return array($this->targetFragment => '<p class="grid-csv-button">' . $button->Field() . '</p>'); }