commerce_trustedshops-8.x-2.x-dev/src/Plugin/views/field/OrderLinkInviteReview.php
src/Plugin/views/field/OrderLinkInviteReview.php
<?php
namespace Drupal\commerce_trustedshops\Plugin\views\field;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
use Drupal\views\Plugin\views\field\LinkBase;
use Drupal\views\ResultRow;
/**
* Field handler to show a TrustedShops link to send a review invite on order.
*
* @ingroup views_field_handlers
*
* @ViewsField("order_link_invite_review")
*/
class OrderLinkInviteReview extends LinkBase {
/**
* {@inheritdoc}
*/
public function render(ResultRow $row) {
return $this->getEntity($row) ? parent::render($row) : [];
}
/**
* {@inheritdoc}
*/
protected function renderLink(ResultRow $row) {
if ($this->options['output_url_as_text']) {
return $this->getUrlInfo($row)->toString();
}
return parent::renderLink($row);
}
/**
* {@inheritdoc}
*/
protected function getUrlInfo(ResultRow $row) {
$order = $this->getEntity($row);
return Url::fromRoute('commerce_trustedshops.commerce_order.invite_review_confirm', ['commerce_order' => $order->id()]);
}
/**
* {@inheritdoc}
*/
protected function getDefaultLabel() {
return $this->t('invite to review');
}
/**
* {@inheritdoc}
*/
protected function defineOptions() {
$options = parent::defineOptions();
$options['output_url_as_text'] = ['default' => FALSE];
$options['absolute'] = ['default' => FALSE];
return $options;
}
/**
* {@inheritdoc}
*/
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
$form['output_url_as_text'] = [
'#type' => 'checkbox',
'#title' => $this->t('Output the URL as text'),
'#default_value' => $this->options['output_url_as_text'],
];
$form['absolute'] = [
'#type' => 'checkbox',
'#title' => $this->t('Use absolute link (begins with "http://")'),
'#default_value' => $this->options['absolute'],
'#description' => $this->t('Enable this option to output an absolute link. Required if you want to use the path as a link destination.'),
];
parent::buildOptionsForm($form, $form_state);
// Only show the 'text' field if we don't want to output the raw URL.
$form['text']['#states']['visible'][':input[name="options[output_url_as_text]"]'] = ['checked' => FALSE];
}
}
