/**
  * @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);
 }
Пример #11
0
 /**
  * @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()));
 }
Пример #12
0
 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'));
 }
Пример #14
0
 /**
  * @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'));
 }
Пример #16
0
	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);
 }
Пример #19
0
 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;
 }