/**
  * 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>');
 }