materio_user.module 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  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. use \Drupal\materio_user\MaterioUserLoginBlockAlterRender;
  11. /**
  12. * implements hook_form_FORM_ID_alter()
  13. *
  14. */
  15. function materio_user_form_user_login_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  16. $form['name']['#attributes'] += array(
  17. "v-model" => "mail",
  18. "title" => "",
  19. // "@keyup.enter" => "login"
  20. );
  21. $form['pass']['#attributes'] = array(
  22. "v-model" => "password",
  23. "title" => "",
  24. // "@keyup.enter" => "login"
  25. );
  26. $url = Url::fromRoute('user.pass');
  27. $form['pass']['#description'] = Link::fromTextAndUrl(t('Forgot your password?'), $url)->toString();
  28. // "<a href="{{ path('user.pass') }}">{{ 'Forgot your password?'|t }}</a>";
  29. $form['actions']['submit']['#attributes'] = array(
  30. "@click.prevent" => "login"
  31. );
  32. $form['message'] = array(
  33. '#weight' => -10,
  34. '#markup' => '
  35. <span class="login-message" v-if="loginMessage">
  36. {{ loginMessage }}
  37. </span>
  38. '
  39. );
  40. }
  41. function materio_user_form_user_modal_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  42. $form['account']['mail']['#attributes'] = array(
  43. "v-model" => "mail",
  44. "@keyup.enter" => "register",
  45. "placeholder" => $form['account']['mail']['#title'],
  46. "title" => $form['account']['mail']['#description']
  47. );
  48. // https://drupal.stackexchange.com/a/217112
  49. // Get default process function array:
  50. $element_info = element_info('password_confirm');
  51. $process = $element_info['#process'];
  52. // Add our process function to the array:
  53. $process[] = '_materio_user_process_password_confirm';
  54. $form['account']['pass']['#process'] = $process;
  55. $form['actions']['submit']['#attributes'] = array(
  56. "@click.prevent" => "register",
  57. "@keyup.enter" => "register",
  58. "ref" => "register"
  59. // ":class" => "can_register"
  60. );
  61. $form['account']['message'] = array(
  62. '#weight' => -10,
  63. '#markup' => '
  64. <span class="register-message" v-if="registerMessage">
  65. {{ registerMessage }}
  66. </span>
  67. '
  68. );
  69. }
  70. function _materio_user_process_password_confirm($element){
  71. // ksm($element);
  72. $element['pass1']['#description'] = t('Password must contains height lowercase, uppercase, digits and special characters.');
  73. $element['pass1']['#attributes'] += array(
  74. "v-model" => "pass1",
  75. "placeholder" => $element['pass1']['#title'],
  76. ":class" => "psswd_class"
  77. );
  78. $element['pass2']['#attributes'] += array(
  79. "v-model" => "pass2",
  80. "placeholder" => $element['pass2']['#title']
  81. );
  82. return $element;
  83. }
  84. /**
  85. * Returns HTML for a form element.
  86. * Prepares variables for form element templates.
  87. *
  88. * Default template: form-element.html.twig.
  89. *
  90. * @param array $variables
  91. * An associative array containing:
  92. * - element: An associative array containing the properties of the element.
  93. * Properties used: #title, #title_display, #description, #id, #required,
  94. * #children, #type, #name, #label_for.
  95. */
  96. // function materio_user_preprocess_form_element(&$vars) {
  97. // $element = $vars['element'];
  98. // if($element['#type'] == 'password' && $element['#array_parents'][0] == 'account'){
  99. // ksm($vars);
  100. // // $vars['attributes']['placeholder'] = $element['#title'];
  101. // $vars['element']['#attributes']['placeholder'] = $element['#title'];
  102. // }
  103. // }
  104. /**
  105. * implements hook_block_view_BASE_BLOCK_ID_alter()
  106. *
  107. * OLD D8 https://www.drupal.org/project/drupal/issues/2626224
  108. * NEW D9 https://www.drupal.org/node/2966725
  109. */
  110. function materio_user_block_view_user_login_block_alter(array &$build, BlockPluginInterface $block) {
  111. // $build['#pre_render'][] = '_materio_user_user_login_block_pre_render';
  112. $build['#pre_render'][] = [MaterioUserLoginBlockAlterRender::class, 'preRender'];
  113. }
  114. function _materio_user_user_login_block_pre_render(array $build){
  115. $user_links = &$build['content']['user_links'];
  116. $items = &$user_links['#items'];
  117. unset($items['create_account']);
  118. // $items['create_account']['#url']->mergeOptions(array(
  119. // "attributes" => array(
  120. // "@click.prevent" => "create_account"
  121. // )
  122. // ));
  123. // Do not handle passward reset with vue
  124. // $items['request_password']['#url']->mergeOptions(array(
  125. // 'attributes' => array(
  126. // "@click.prevent" => "request_password"
  127. // )
  128. // ));
  129. return $build;
  130. }
  131. function materio_user_entity_type_build(array &$entity_types) {
  132. // https://drupal.stackexchange.com/a/230547
  133. $entity_types['user']->setFormClass('modal', 'Drupal\user\RegisterForm');
  134. }
  135. /*
  136. * hook_menu_local_tasks_alter
  137. */
  138. function materio_user_menu_local_tasks_alter(&$data, $route_name){
  139. $t="t";
  140. // remove some tabs on user pages
  141. // if (in_array($route_name, ['entity.user.canonical', 'entity.user.edit_form']) ) {
  142. if (preg_match('/^entity\.user\./', $route_name)
  143. || in_array($route_name, [
  144. 'simplenews.newsletter_subscriptions_user',
  145. 'commerce_order.address_book.overview',
  146. 'entity.commerce_payment_method.collection',
  147. 'view.commerce_user_orders.order_page',
  148. 'view.commerce_user_subscriptions.page_1'
  149. ])) {
  150. unset($data['tabs'][0]['profile.user_page:member']);
  151. $data['tabs'][0]['entity.user.edit_form']['#weight'] = -20;
  152. $data['tabs'][0]['simplenews.newsletter_subscriptions_user']['#weight'] = -9;
  153. }
  154. // foreach ($data['tabs'] as $key => $tab) {
  155. // if ($key == 'profile.user_page:member') {
  156. // unset($data['tabs'][$key]);
  157. // }
  158. // if ($key == 'entity.user.edit_form') {
  159. // $data['tabs'][$key]['#weight'] = -200;
  160. // }
  161. //
  162. // }
  163. }
  164. /*
  165. * hook_local_tasks_alter
  166. */
  167. // function materio_user_local_tasks_alter(&$local_tasks){
  168. // $t="t";
  169. // }
  170. function materio_user_form_alter(array &$form, FormStateInterface $forme_state, $form_id){
  171. if ($form_id == 'simplenews_subscriber_account_form') {
  172. $user = \Drupal::currentUser();
  173. $roles = $user->getRoles();
  174. $t="t";
  175. if (in_array('adherent', $roles)) {
  176. unset($form['subscriptions']['widget']['#options']['companies']);
  177. unset($form['subscriptions']['widget']['#options']['test']);
  178. }
  179. }
  180. }