Chris@14
|
1 <?php
|
Chris@14
|
2
|
Chris@14
|
3 /**
|
Chris@14
|
4 * @file
|
Chris@14
|
5 * Enables modules and site configuration for a demo_umami site installation.
|
Chris@14
|
6 */
|
Chris@14
|
7
|
Chris@14
|
8 use Drupal\contact\Entity\ContactForm;
|
Chris@14
|
9 use Drupal\Core\Form\FormStateInterface;
|
Chris@14
|
10
|
Chris@14
|
11 /**
|
Chris@14
|
12 * Implements hook_form_FORM_ID_alter() for install_configure_form().
|
Chris@14
|
13 *
|
Chris@14
|
14 * Allows the profile to alter the site configuration form.
|
Chris@14
|
15 */
|
Chris@14
|
16 function demo_umami_form_install_configure_form_alter(&$form, FormStateInterface $form_state) {
|
Chris@14
|
17 $form['site_information']['site_name']['#default_value'] = 'Umami Food Magazine';
|
Chris@14
|
18 $form['#submit'][] = 'demo_umami_form_install_configure_submit';
|
Chris@14
|
19 }
|
Chris@14
|
20
|
Chris@14
|
21 /**
|
Chris@14
|
22 * Submission handler to sync the contact.form.feedback recipient.
|
Chris@14
|
23 */
|
Chris@14
|
24 function demo_umami_form_install_configure_submit($form, FormStateInterface $form_state) {
|
Chris@14
|
25 $site_mail = $form_state->getValue('site_mail');
|
Chris@14
|
26 ContactForm::load('feedback')->setRecipients([$site_mail])->trustData()->save();
|
Chris@18
|
27
|
Chris@18
|
28 $password = $form_state->getValue('account')['pass'];
|
Chris@18
|
29 demo_umami_set_users_passwords($password);
|
Chris@18
|
30 }
|
Chris@18
|
31
|
Chris@18
|
32 /**
|
Chris@18
|
33 * Sets the password of admin to be the password for all users.
|
Chris@18
|
34 */
|
Chris@18
|
35 function demo_umami_set_users_passwords($admin_password) {
|
Chris@18
|
36 // Collect the IDs of all users with roles editor or author.
|
Chris@18
|
37 $ids = \Drupal::entityQuery('user')
|
Chris@18
|
38 ->condition('roles', ['author', 'editor'], 'IN')
|
Chris@18
|
39 ->execute();
|
Chris@18
|
40
|
Chris@18
|
41 $users = \Drupal::entityTypeManager()->getStorage('user')->loadMultiple($ids);
|
Chris@18
|
42
|
Chris@18
|
43 foreach ($users as $user) {
|
Chris@18
|
44 $user->setPassword($admin_password);
|
Chris@18
|
45 $user->save();
|
Chris@18
|
46 }
|
Chris@14
|
47 }
|
Chris@14
|
48
|
Chris@14
|
49 /**
|
Chris@14
|
50 * Implements hook_toolbar().
|
Chris@14
|
51 */
|
Chris@14
|
52 function demo_umami_toolbar() {
|
Chris@14
|
53 // Add a warning about using an experimental profile.
|
Chris@17
|
54 // @todo This can be removed once a generic warning for experimental profiles
|
Chris@17
|
55 // has been introduced. https://www.drupal.org/project/drupal/issues/2934374
|
Chris@14
|
56 $items['experimental-profile-warning'] = [
|
Chris@14
|
57 '#weight' => 999,
|
Chris@14
|
58 '#cache' => [
|
Chris@14
|
59 'contexts' => ['route'],
|
Chris@14
|
60 ],
|
Chris@14
|
61 ];
|
Chris@14
|
62
|
Chris@14
|
63 // Show warning only on administration pages.
|
Chris@14
|
64 $admin_context = \Drupal::service('router.admin_context');
|
Chris@14
|
65 if ($admin_context->isAdminRoute()) {
|
Chris@14
|
66 $items['experimental-profile-warning']['#type'] = 'toolbar_item';
|
Chris@14
|
67 $items['experimental-profile-warning']['tab'] = [
|
Chris@14
|
68 '#type' => 'inline_template',
|
Chris@14
|
69 '#template' => '<a class="toolbar-warning" href="{{ more_info_link }}">This site is intended for demonstration purposes.</a>',
|
Chris@14
|
70 '#context' => [
|
Chris@14
|
71 'more_info_link' => 'https://www.drupal.org/node/2941833',
|
Chris@14
|
72 ],
|
Chris@14
|
73 '#attached' => [
|
Chris@14
|
74 'library' => ['demo_umami/toolbar-warning'],
|
Chris@14
|
75 ],
|
Chris@14
|
76 ];
|
Chris@14
|
77 }
|
Chris@14
|
78 return $items;
|
Chris@14
|
79 }
|