Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 21 |
| ContactLink | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
42 | |
0.00% |
0 / 21 |
| buildOptionsForm | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 5 |
|||
| getUrlInfo | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| renderLink | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 12 |
|||
| getDefaultLabel | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\contact\Plugin\views\field\ContactLink. | |
| */ | |
| namespace Drupal\contact\Plugin\views\field; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Drupal\Core\Url; | |
| use Drupal\views\Plugin\views\field\LinkBase; | |
| use Drupal\views\ResultRow; | |
| /** | |
| * Defines a field that links to the user contact page, if access is permitted. | |
| * | |
| * @ingroup views_field_handlers | |
| * | |
| * @ViewsField("contact_link") | |
| */ | |
| class ContactLink extends LinkBase { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function buildOptionsForm(&$form, FormStateInterface $form_state) { | |
| parent::buildOptionsForm($form, $form_state); | |
| $form['text']['#title'] = $this->t('Link label'); | |
| $form['text']['#required'] = TRUE; | |
| $form['text']['#default_value'] = empty($this->options['text']) ? $this->getDefaultLabel() : $this->options['text']; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function getUrlInfo(ResultRow $row) { | |
| return Url::fromRoute('entity.user.contact_form', ['user' => $this->getEntity($row)->id()]); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function renderLink(ResultRow $row) { | |
| $entity = $this->getEntity($row); | |
| $this->options['alter']['make_link'] = TRUE; | |
| $this->options['alter']['url'] = $this->getUrlInfo($row); | |
| $title = $this->t('Contact %user', array('%user' => $entity->label())); | |
| $this->options['alter']['attributes'] = array('title' => $title); | |
| if (!empty($this->options['text'])) { | |
| return $this->options['text']; | |
| } | |
| else { | |
| return $title; | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function getDefaultLabel() { | |
| return $this->t('contact'); | |
| } | |
| } |