annotate core/profiles/demo_umami/demo_umami.profile @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
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 }