materio_user.module 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. /**
  3. * @file
  4. * Contains materio_user.module.
  5. */
  6. use \Drupal\Core\Form\FormStateInterface;
  7. use \Drupal\Core\Block\BlockPluginInterface;
  8. use \Drupal\Core\Url;
  9. use \Drupal\Core\Link;
  10. /**
  11. * implements hook_form_FORM_ID_alter()
  12. *
  13. */
  14. function materio_user_form_user_login_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  15. $form['name']['#attributes'] += array(
  16. "v-model" => "mail",
  17. // "@keyup.enter" => "login"
  18. );
  19. $form['pass']['#attributes'] = array(
  20. "v-model" => "password",
  21. // "@keyup.enter" => "login"
  22. );
  23. $url = Url::fromRoute('user.pass');
  24. $form['pass']['#description'] = Link::fromTextAndUrl('Forgot your password?', $url)->toString();
  25. // "<a href="{{ path('user.pass') }}">{{ 'Forgot your password?'|t }}</a>";
  26. $form['actions']['submit']['#attributes'] = array(
  27. "@click.prevent" => "login"
  28. );
  29. $form['message'] = array(
  30. '#weight' => -10,
  31. '#markup' => '
  32. <span class="login-message" v-if="loginMessage">
  33. {{ loginMessage }}
  34. </span>
  35. '
  36. );
  37. }
  38. function materio_user_form_user_modal_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  39. $form['account']['mail']['#attributes'] = array(
  40. "v-model" => "mail",
  41. "@keyup.enter" => "register",
  42. "placeholder" => $form['account']['mail']['#title'],
  43. "title" => $form['account']['mail']['#description']
  44. );
  45. // https://drupal.stackexchange.com/a/217112
  46. // Get default process function array:
  47. $element_info = element_info('password_confirm');
  48. $process = $element_info['#process'];
  49. // Add our process function to the array:
  50. $process[] = '_materio_user_process_password_confirm';
  51. $form['account']['pass']['#process'] = $process;
  52. $form['actions']['submit']['#attributes'] = array(
  53. "@click.prevent" => "register",
  54. "@keyup.enter" => "register",
  55. "ref" => "register"
  56. // ":class" => "can_register"
  57. );
  58. $form['account']['message'] = array(
  59. '#weight' => -10,
  60. '#markup' => '
  61. <span class="register-message" v-if="registerMessage">
  62. {{ registerMessage }}
  63. </span>
  64. '
  65. );
  66. }
  67. function _materio_user_process_password_confirm($element){
  68. // ksm($element);
  69. $element['pass1']['#description'] = t('Password must contains Lowercase and Uppercase Letters, numbers, and punctuation.');
  70. $element['pass1']['#attributes'] += array(
  71. "v-model" => "pass1",
  72. "placeholder" => $element['pass1']['#title'],
  73. ":class" => "psswd_class"
  74. );
  75. $element['pass2']['#attributes'] += array(
  76. "v-model" => "pass2",
  77. "placeholder" => $element['pass2']['#title']
  78. );
  79. return $element;
  80. }
  81. /**
  82. * Returns HTML for a form element.
  83. * Prepares variables for form element templates.
  84. *
  85. * Default template: form-element.html.twig.
  86. *
  87. * @param array $variables
  88. * An associative array containing:
  89. * - element: An associative array containing the properties of the element.
  90. * Properties used: #title, #title_display, #description, #id, #required,
  91. * #children, #type, #name, #label_for.
  92. */
  93. // function materio_user_preprocess_form_element(&$vars) {
  94. // $element = $vars['element'];
  95. // if($element['#type'] == 'password' && $element['#array_parents'][0] == 'account'){
  96. // ksm($vars);
  97. // // $vars['attributes']['placeholder'] = $element['#title'];
  98. // $vars['element']['#attributes']['placeholder'] = $element['#title'];
  99. // }
  100. // }
  101. /**
  102. * implements hook_block_view_BASE_BLOCK_ID_alter()
  103. *
  104. * https://www.drupal.org/project/drupal/issues/2626224
  105. */
  106. function materio_user_block_view_user_login_block_alter(array &$build, BlockPluginInterface $block) {
  107. $build['#pre_render'][] = '_materio_user_user_login_block_pre_render';
  108. }
  109. function _materio_user_user_login_block_pre_render(array $build){
  110. $user_links = &$build['content']['user_links'];
  111. $items = &$user_links['#items'];
  112. unset($items['create_account']);
  113. // $items['create_account']['#url']->mergeOptions(array(
  114. // "attributes" => array(
  115. // "@click.prevent" => "create_account"
  116. // )
  117. // ));
  118. // Do not handle passward reset with vue
  119. // $items['request_password']['#url']->mergeOptions(array(
  120. // 'attributes' => array(
  121. // "@click.prevent" => "request_password"
  122. // )
  123. // ));
  124. return $build;
  125. }
  126. function materio_user_entity_type_build(array &$entity_types) {
  127. // https://drupal.stackexchange.com/a/230547
  128. $entity_types['user']->setFormClass('modal', 'Drupal\user\RegisterForm');
  129. }