Yaffs site version 1.1
[yaffs-website] / vendor / drupal / console / templates / module / src / Controller / entity-controller.php.twig
1 {% extends "base/class.php.twig" %}
2
3 {% block file_path %}
4 \Drupal\{{module}}\Controller\{{ entity_class }}Controller.
5 {% endblock %}
6
7 {% block namespace_class %}
8 namespace Drupal\{{ module }}\Controller;
9 {% endblock %}
10
11 {% block use_class %}
12 use Drupal\Component\Utility\Xss;
13 use Drupal\Core\Controller\ControllerBase;
14 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
15 use Drupal\Core\Url;
16 use Drupal\{{ module }}\Entity\{{ entity_class }}Interface;
17 {% endblock %}
18 {% block class_declaration %}
19 /**
20  * Class {{ entity_class }}Controller.
21  *
22  *  Returns responses for {{ label }} routes.
23  *
24  * @package Drupal\{{ module }}\Controller
25  */
26 class {{ entity_class }}Controller extends ControllerBase implements ContainerInjectionInterface {% endblock %}
27
28 {% block class_methods %}
29   /**
30    * Displays a {{ label }}  revision.
31    *
32    * @param int ${{ entity_name }}_revision
33    *   The {{ label }}  revision ID.
34    *
35    * @return array
36    *   An array suitable for drupal_render().
37    */
38   public function revisionShow(${{ entity_name }}_revision) {
39     ${{ entity_name }} = $this->entityManager()->getStorage('{{ entity_name }}')->loadRevision(${{ entity_name }}_revision);
40     $view_builder = $this->entityManager()->getViewBuilder('{{ entity_name }}');
41
42     return $view_builder->view(${{ entity_name }});
43   }
44
45   /**
46    * Page title callback for a {{ label }}  revision.
47    *
48    * @param int ${{ entity_name }}_revision
49    *   The {{ label }}  revision ID.
50    *
51    * @return string
52    *   The page title.
53    */
54   public function revisionPageTitle(${{ entity_name }}_revision) {
55     ${{ entity_name }} = $this->entityManager()->getStorage('{{ entity_name }}')->loadRevision(${{ entity_name }}_revision);
56     return $this->t('Revision of %title from %date', ['%title' => ${{ entity_name }}->label(), '%date' => format_date(${{ entity_name }}->getRevisionCreationTime())]);
57   }
58
59   /**
60    * Generates an overview table of older revisions of a {{ label }} .
61    *
62    * @param \Drupal\{{ module }}\Entity\{{ entity_class }}Interface ${{ entity_name }}
63    *   A {{ label }}  object.
64    *
65    * @return array
66    *   An array as expected by drupal_render().
67    */
68   public function revisionOverview({{ entity_class }}Interface ${{ entity_name }}) {
69     $account = $this->currentUser();
70     $langcode = ${{ entity_name }}->language()->getId();
71     $langname = ${{ entity_name }}->language()->getName();
72     $languages = ${{ entity_name }}->getTranslationLanguages();
73     $has_translations = (count($languages) > 1);
74     ${{ entity_name }}_storage = $this->entityManager()->getStorage('{{ entity_name }}');
75
76     $build['#title'] = $has_translations ? $this->t('@langname revisions for %title', ['@langname' => $langname, '%title' => ${{ entity_name }}->label()]) : $this->t('Revisions for %title', ['%title' => ${{ entity_name }}->label()]);
77     $header = [$this->t('Revision'), $this->t('Operations')];
78
79     $revert_permission = (($account->hasPermission("revert all {{ label|lower }} revisions") || $account->hasPermission('administer {{ label|lower }} entities')));
80     $delete_permission = (($account->hasPermission("delete all {{ label|lower }} revisions") || $account->hasPermission('administer {{ label|lower }} entities')));
81
82     $rows = [];
83
84     $vids = ${{ entity_name }}_storage->revisionIds(${{ entity_name }});
85
86     $latest_revision = TRUE;
87
88     foreach (array_reverse($vids) as $vid) {
89       /** @var \Drupal\{{ module }}\{{ entity_class }}Interface $revision */
90       $revision = ${{ entity_name }}_storage->loadRevision($vid);
91       // Only show revisions that are affected by the language that is being
92       // displayed.
93       if ($revision->hasTranslation($langcode) && $revision->getTranslation($langcode)->isRevisionTranslationAffected()) {
94         $username = [
95           '#theme' => 'username',
96           '#account' => $revision->getRevisionUser(),
97         ];
98
99         // Use revision link to link to revisions that are not active.
100         $date = \Drupal::service('date.formatter')->format($revision->getRevisionCreationTime(), 'short');
101         if ($vid != ${{ entity_name }}->getRevisionId()) {
102           $link = $this->l($date, new Url('entity.{{ entity_name }}.revision', ['{{ entity_name }}' => ${{ entity_name }}->id(), '{{ entity_name }}_revision' => $vid]));
103         }
104         else {
105           $link = ${{ entity_name }}->link($date);
106         }
107
108         $row = [];
109         $column = [
110           'data' => [
111             '#type' => 'inline_template',
112             '#template' => '{{  '{% trans %}{{ date }} by {{ username }}{% endtrans %}{% if message %}<p class="revision-log">{{ message }}</p>{% endif %}' }}',
113             '#context' => [
114               'date' => $link,
115               'username' => \Drupal::service('renderer')->renderPlain($username),
116               'message' => ['#markup' => $revision->getRevisionLogMessage(), '#allowed_tags' => Xss::getHtmlTagList()],
117             ],
118           ],
119         ];
120         $row[] = $column;
121
122         if ($latest_revision) {
123           $row[] = [
124             'data' => [
125               '#prefix' => '<em>',
126               '#markup' => $this->t('Current revision'),
127               '#suffix' => '</em>',
128             ],
129           ];
130           foreach ($row as &$current) {
131             $current['class'] = ['revision-current'];
132           }
133           $latest_revision = FALSE;
134         }
135         else {
136           $links = [];
137           if ($revert_permission) {
138             $links['revert'] = [
139               'title' => $this->t('Revert'),
140 {% if is_translatable %}
141               'url' => $has_translations ?
142               Url::fromRoute('entity.{{ entity_name }}.translation_revert', ['{{ entity_name }}' => ${{ entity_name }}->id(), '{{ entity_name }}_revision' => $vid, 'langcode' => $langcode]) :
143               Url::fromRoute('entity.{{ entity_name }}.revision_revert', ['{{ entity_name }}' => ${{ entity_name }}->id(), '{{ entity_name }}_revision' => $vid]),
144 {%  else %}
145               'url' => Url::fromRoute('entity.{{ entity_name }}.revision_revert', ['{{ entity_name }}' => ${{ entity_name }}->id(), '{{ entity_name }}_revision' => $vid]),
146 {% endif %}
147             ];
148           }
149
150           if ($delete_permission) {
151             $links['delete'] = [
152               'title' => $this->t('Delete'),
153               'url' => Url::fromRoute('entity.{{ entity_name }}.revision_delete', ['{{ entity_name }}' => ${{ entity_name }}->id(), '{{ entity_name }}_revision' => $vid]),
154             ];
155           }
156
157           $row[] = [
158             'data' => [
159               '#type' => 'operations',
160               '#links' => $links,
161             ],
162           ];
163         }
164
165         $rows[] = $row;
166       }
167     }
168
169     $build['{{ entity_name }}_revisions_table'] = [
170       '#theme' => 'table',
171       '#rows' => $rows,
172       '#header' => $header,
173     ];
174
175     return $build;
176   }
177 {% endblock %}