/** * * @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; } if (!$record->canCapture()) { return null; } \Requirements::css('omnipay-ui/css/omnipay-ui-cms.css'); \Requirements::javascript('omnipay-ui/javascript/omnipay-ui-cms.js'); \Requirements::add_i18n_javascript('omnipay-ui/javascript/lang'); $infoText = ''; switch (GatewayInfo::captureMode($record->Gateway)) { case GatewayInfo::MULTIPLE: $infoText = 'MultiCaptureInfo'; break; case GatewayInfo::PARTIAL: $infoText = 'SingleCaptureInfo'; break; case GatewayInfo::FULL: $infoText = 'FullCaptureInfo'; break; } /** @var \Money $money */ $money = $record->dbObject('Money'); $money->setAmount($record->getMaxCaptureAmount()); /** @var \GridField_FormAction $field */ $field = \GridField_FormAction::create($gridField, 'CapturePayment' . $record->ID, false, 'capturepayment', array('RecordID' => $record->ID))->addExtraClass('gridfield-button-capture payment-dialog-button')->setAttribute('title', _t('GridFieldCaptureAction.Title', 'Capture Payment'))->setAttribute('data-icon', 'button-capture')->setAttribute('data-dialog', json_encode(array('maxAmount' => $money->Nice(), 'maxAmountNum' => $money->getAmount(), 'hasAmountField' => $record->canCapture(null, true), 'infoTextKey' => $infoText, 'buttonTextKey' => 'CaptureAmount')))->setDescription(_t('GridFieldCaptureAction.Description', 'Capture authorized Payment')); return $field->Field(); }