/** * @param GridField $field */ public function getHTMLFragments($field) { VersionedGridFieldExtensions::include_requirements(); $field->addExtraClass('ss-versioned-gridfield-orderable'); $field->setAttribute('data-url-reorder', $field->Link('reorder')); $field->setAttribute('data-url-movetopage', $field->Link('movetopage')); }
/** * @param GridField $gridField * @param DataObject $record * @param string $columnName * * @return string - the HTML for the column */ public function getColumnContent($gridField, $record, $columnName) { // No permission checks, handled through GridFieldDetailForm, // which can make the form readonly if no edit permissions are available. $data = new ArrayData(array('Link' => Controller::join_links($gridField->Link('item'), $record->ID, 'edit'))); return $data->renderWith('GridFieldEditButton'); }
/** * * @param GridField $gridField * @param DataObject $record * @param string $columnName * @return string - the HTML for the column */ public function getColumnContent($gridField, $record, $columnName) { $data = new ArrayData(array('Link' => Controller::join_links($gridField->Link('item'), $record->ID, 'refresh'))); $templatePath = dirname(dirname(__FILE__)) . '/templates/GridFieldRefreshButton.ss'; $templatePath = str_replace(BASE_PATH, '', $templatePath); return $data->renderWith('../' . $templatePath); }
/** * Return a Link to this field, if the list is an instance of StatefulGridFieldList the session key for the state is appended to the url * @param {string} $action Action to append to the url * @return {string} Relative link to this form field */ public function Link($action = null) { if ($this->list instanceof StatefulGridFieldList) { return Controller::join_links(parent::Link($action), '?' . strtolower($this->name) . '_skey=' . $this->state->getSessionKey()); } return parent::Link($action); }
/** * * @param GridField $gridField * @param DataObject $record * @param string $columnName * @return string - the HTML for the column */ public function getColumnContent($gridField, $record, $columnName) { if (!$record->canEdit()) { return; } $data = new ArrayData(array('Link' => Controller::join_links($gridField->Link('item'), $record->ID, 'edit'))); return $data->renderWith('GridFieldEditButton'); }
/** * @param GridField $gridField * @param DataObject $record * @param string $columnName * * @return string - the HTML for the column */ public function getColumnContent($gridField, $record, $columnName) { if (!$record instanceof Member || !$record->canMasquerade()) { return; } // No permission checks, handled through GridFieldDetailForm, // which can make the form readonly if no edit permissions are available. $data = new ArrayData(array('Link' => Controller::join_links($gridField->Link('item'), $record->ID, 'masquerade'))); return $data->renderWith('GridFieldMasqueradeButton'); }
/** * @param GridField $field */ public function getHTMLFragments($field) { self::include_requirements(); // set ajax urls / vars $field->addExtraClass('ss-gridfield-blockenhancements'); // $field->setAttribute('data-url-area-assignment', $field->Link('area_assignment')); $field->setAttribute('data-url-blocktype-assignment', $field->Link('blocktype_assignment')); // $field->setAttribute('data-block-area-none-title', Config::inst()->get(get_class(), 'unassigned_area_description')); // add no-chozen to dropdown // $field->getConfig()->getComponentByType('GridFieldAddNewMultiClass')-> // $field->getConfig()->getComponentByType('GridFieldDetailForm')->setAttribute('data-project-dir', project()); }
/** * * @param \GridField $gridField * @param \DataObject $record * @param string $columnName * @return string|null - the HTML for the column */ public function getColumnContent($gridField, $record, $columnName) { if (!$record instanceof \Payment) { return null; } \Requirements::css('omnipay-ui/css/omnipay-ui-cms.css'); \Requirements::javascript('omnipay-ui/javascript/omnipay-ui-cms.js'); if (preg_match('/Pending(Capture|Void|Refund)/', $record->Status)) { return \SSViewer::execute_template('PaymentPendingIndicator', \ArrayData::create(array('StatusLink' => \Controller::join_links($gridField->Link('checkPaymentPending')), 'PaymentID' => $record->ID, 'Timeout' => 2000))); } return null; }
/** * Generate a cache key unique to this gridfield */ protected function cacheKey() { return md5($this->gridField->Link()); }
public function Link($action = null) { return Controller::join_links($this->grid->Link(), 'add-existing-search', $action); }
/** * @return array */ public function getAttributes() { // Store state in session, and pass ID to client side. $state = array('grid' => $this->getNameFromParent(), 'actionName' => $this->actionName, 'args' => $this->args); // Ensure $id doesn't contain only numeric characters $id = 'gf_' . substr(md5(serialize($state)), 0, 8); Session::set($id, $state); $actionData['StateID'] = $id; return array_merge(parent::getAttributes(), array('name' => 'action_gridFieldAlterAction' . '?' . http_build_query($actionData), 'data-url' => $this->gridField->Link())); }
public function Link($action = null) { return Controller::join_links($this->gridField->Link('item'), $this->record->ID ? $this->record->ID : 'new', $action); }
/** * HTML to be embedded into the GridField. * * @param GridField $gridField * * @return array */ public function getHTMLFragments($gridField) { // permission check if (!singleton($gridField->getModelClass())->canEdit()) { return array(); } // check BulkManager exists $bulkManager = $gridField->getConfig()->getComponentsByType('GridFieldBulkManager'); // upload management buttons $finishButton = FormAction::create('Finish', _t('GRIDFIELD_BULK_UPLOAD.FINISH_BTN_LABEL', 'Finish'))->addExtraClass('bulkUploadFinishButton')->setAttribute('data-icon', 'accept')->setUseButtonTag(true); $clearErrorButton = FormAction::create('ClearError', _t('GRIDFIELD_BULK_UPLOAD.CLEAR_ERROR_BTN_LABEL', 'Clear errors'))->addExtraClass('bulkUploadClearErrorButton')->setAttribute('data-icon', 'arrow-circle-double')->setUseButtonTag(true); if (count($bulkManager)) { $cancelButton = FormAction::create('Cancel', _t('GRIDFIELD_BULK_UPLOAD.CANCEL_BTN_LABEL', 'Cancel'))->addExtraClass('bulkUploadCancelButton ss-ui-action-destructive')->setAttribute('data-icon', 'decline')->setAttribute('data-url', $gridField->Link('bulkupload/cancel'))->setUseButtonTag(true); $bulkManager_config = $bulkManager->first()->getConfig(); $bulkManager_actions = $bulkManager_config['actions']; if (array_key_exists('bulkedit', $bulkManager_actions)) { $editAllButton = FormAction::create('EditAll', _t('GRIDFIELD_BULK_UPLOAD.EDIT_ALL_BTN_LABEL', 'Edit all'))->addExtraClass('bulkUploadEditButton')->setAttribute('data-icon', 'pencil')->setAttribute('data-url', $gridField->Link('bulkupload/edit'))->setUseButtonTag(true); } else { $editAllButton = ''; } } else { $cancelButton = ''; $editAllButton = ''; } // get uploadField + inject extra buttons $uploadField = $this->bulkUploadField($gridField); $uploadField->FinishButton = $finishButton; $uploadField->CancelButton = $cancelButton; $uploadField->EditAllButton = $editAllButton; $uploadField->ClearErrorButton = $clearErrorButton; $data = ArrayData::create(array('Colspan' => count($gridField->getColumns()), 'UploadField' => $uploadField->Field())); Requirements::css(BULKEDITTOOLS_UPLOAD_PATH . '/css/GridFieldBulkUpload.css'); Requirements::javascript(BULKEDITTOOLS_UPLOAD_PATH . '/javascript/GridFieldBulkUpload.js'); Requirements::javascript(BULKEDITTOOLS_UPLOAD_PATH . '/javascript/GridFieldBulkUpload_downloadtemplate.js'); Requirements::add_i18n_javascript(BULKEDITTOOLS_PATH . '/lang/js'); return array('header' => $data->renderWith('GridFieldBulkUpload')); }
/** * @return array */ public function getAttributes() { $state = array('grid' => $this->getNameFromParent(), 'actionName' => $this->actionName, 'args' => $this->args); $id = 'gf_' . substr(md5(serialize($state)), 0, 8); Session::set($id, $state); $actionData['StateID'] = $id; return array_merge(parent::getAttributes(), array('name' => 'action_gridFieldAlterAction?' . http_build_query($actionData), 'data-url' => $this->gridField->Link())); }
/** * @param GridField $gridField * * @return array */ public function getHTMLFragments($gridField) { Requirements::css(BULKEDITTOOLS_MANAGER_PATH . '/css/GridFieldBulkManager.css'); Requirements::javascript(BULKEDITTOOLS_MANAGER_PATH . '/javascript/GridFieldBulkManager.js'); Requirements::add_i18n_javascript(BULKEDITTOOLS_PATH . '/lang/js'); if (!count($this->config['actions'])) { user_error('Trying to use GridFieldBulkManager without any bulk action.', E_USER_ERROR); } $actionsListSource = array(); $actionsConfig = array(); foreach ($this->config['actions'] as $action => $actionData) { $actionsListSource[$action] = $actionData['label']; $actionsConfig[$action] = $actionData['config']; } reset($this->config['actions']); $firstAction = key($this->config['actions']); $dropDownActionsList = DropdownField::create('bulkActionName', '')->setSource($actionsListSource)->setAttribute('class', 'bulkActionName no-change-track')->setAttribute('id', ''); $templateData = array('Menu' => $dropDownActionsList->FieldHolder(), 'Button' => array('Label' => _t('GRIDFIELD_BULK_MANAGER.ACTION_BTN_LABEL', 'Go'), 'DataURL' => $gridField->Link('bulkAction'), 'Icon' => $this->config['actions'][$firstAction]['config']['icon'], 'DataConfig' => htmlspecialchars(json_encode($actionsConfig), ENT_QUOTES, 'UTF-8')), 'Select' => array('Label' => _t('GRIDFIELD_BULK_MANAGER.SELECT_ALL_LABEL', 'Select all')), 'Colspan' => count($gridField->getColumns()) - 1); $templateData = new ArrayData($templateData); return array('header' => $templateData->renderWith('BulkManagerButtons')); }
public function getAttributes() { // Store state in session, and pass ID to client side $state = array( 'grid' => $this->getNameFromParent(), 'actionName' => $this->actionName, 'args' => $this->args, ); $id = preg_replace('/[^\w]+/', '_', uniqid('', true)); Session::set($id, $state); $actionData['StateID'] = $id; return array_merge( parent::getAttributes(), array( // Note: This field needs to be less than 65 chars, otherwise Suhosin security patch // will strip it from the requests 'name' => 'action_gridFieldAlterAction'. '?' . http_build_query($actionData), 'data-url' => $this->gridField->Link(), ) ); }
public function Link($action = null) { return Controller::join_links($this->grid->Link(), $this->name, $action); }
/** * @param string $action * @return string */ public function Link($action = null) { return Controller::join_links($this->gridField->Link(), '/bulkupload/', $action); }
public function getAttributes() { // Store state in session, and pass ID to client side $state = array('grid' => $this->getNameFromParent(), 'actionName' => $this->actionName, 'args' => $this->args); $id = preg_replace('/[^\\w]+/', '_', uniqid('', true)); Session::set($id, $state); $actionData['StateID'] = $id; return array_merge(parent::getAttributes(), array('name' => 'action_gridFieldAlterAction' . '?' . http_build_query($actionData), 'data-url' => $this->gridField->Link())); }
/** * @param GridField $field */ public function getHTMLFragments($field) { GridFieldExtensions::include_requirements(); $field->addExtraClass('ss-gridfield-orderable'); $field->setAttribute('data-immediate-update', (string) (int) $this->immediateUpdate); $field->setAttribute('data-url-reorder', $field->Link('reorder')); $field->setAttribute('data-url-movetopage', $field->Link('movetopage')); }
/** * * @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)); }
/** * @param GridField $field */ public function getHTMLFragments($field) { if (!$field->getConfig()->getComponentByType('GridFieldOrderableRows')) { user_error("GridFieldGroupable requires a GridFieldOrderableRows component", E_USER_WARNING); } self::include_requirements(); // set ajax urls / vars $field->addExtraClass('ss-gridfield-groupable'); $field->setAttribute('data-url-group-assignment', $field->Link('group_assignment')); // setoptions [groupUnassignedName, groupFieldLabel, groupField, groupsAvailable] $field->setAttribute('data-groupable-unassigned', $this->getOption('groupUnassignedName')); $field->setAttribute('data-groupable-role', $this->getOption('groupFieldLabel')); $field->setAttribute('data-groupable-itemfield', $this->getOption('groupField')); $field->setAttribute('data-groupable-groups', json_encode($this->getOption('groupsAvailable'))); }
/** * Return a configured UploadField instance * * @param GridField $gridField Current GridField * @return UploadField Configured UploadField instance */ public function getUploadField(GridField $gridField) { $uploadField = UploadField::create($gridField->Name . "_ImportUploadField", 'Upload CSV')->setForm($gridField->getForm())->setConfig('url', $gridField->Link('importer/upload'))->setConfig('edit_url', $gridField->Link('importer/import'))->setConfig('allowedMaxFileNumber', 1)->setConfig('changeDetection', false)->setConfig('canPreviewFolder', false)->setConfig('canAttachExisting', false)->setConfig('overwriteWarning', false)->setAllowedExtensions(array('csv'))->setFolderName('csvImports')->addExtraClass("import-upload-csv-field"); return $uploadField; }