materio-d9/web/modules/custom/materio_user/materio_user.module

208 lines
6.3 KiB
PHP

<?php
/**
* @file
* Contains materio_user.module.
*/
use \Drupal\Core\Form\FormStateInterface;
use \Drupal\Core\Block\BlockPluginInterface;
use \Drupal\Core\Url;
use \Drupal\Core\Link;
use \Drupal\materio_user\MaterioUserLoginBlockAlterRender;
/**
* implements hook_form_FORM_ID_alter()
*
*/
function materio_user_form_user_login_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$form['name']['#attributes'] += array(
"v-model" => "mail",
"title" => "",
// "@keyup.enter" => "login"
);
$form['pass']['#attributes'] = array(
"v-model" => "password",
"title" => "",
// "@keyup.enter" => "login"
);
$url = Url::fromRoute('user.pass');
$form['pass']['#description'] = Link::fromTextAndUrl(t('Forgot your password?'), $url)->toString();
// "<a href="{{ path('user.pass') }}">{{ 'Forgot your password?'|t }}</a>";
$form['actions']['submit']['#attributes'] = array(
"@click.prevent" => "login"
);
$form['message'] = array(
'#weight' => -10,
'#markup' => '
<span class="login-message" v-if="loginMessage">
{{ loginMessage }}
</span>
'
);
}
function materio_user_form_user_modal_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$form['account']['mail']['#attributes'] = array(
"v-model" => "mail",
"@keyup.enter" => "register",
"placeholder" => $form['account']['mail']['#title'],
"title" => $form['account']['mail']['#description']
);
// ? https://drupal.stackexchange.com/a/217112
// Get default process function array:
// $element_info = element_info('password_confirm');
// ? https://api.drupal.org/api/drupal/core%21includes%21common.inc/function/element_info/8.2.x
$element_info = \Drupal::service('element_info')->getInfo('password_confirm');
$process = $element_info['#process'];
// Add our process function to the array:
$process[] = '_materio_user_process_password_confirm';
$form['account']['pass']['#process'] = $process;
$form['actions']['submit']['#attributes'] = array(
"@click.prevent" => "register",
"@keyup.enter" => "register",
"ref" => "register",
"disabled" => true
// ":class" => "can_register"
);
$form['account']['message'] = array(
'#weight' => -10,
'#markup' => '
<span class="register-message" v-if="registerMessage">
{{ registerMessage }}
</span>
'
);
}
function _materio_user_process_password_confirm($element){
$element['pass1']['#description'] = t('Password must contains height lowercase, uppercase, digits and special characters.');
$element['pass1']['#attributes'] += array(
"v-model" => "pass1",
"placeholder" => $element['pass1']['#title'],
":class" => "psswd_class"
);
$element['pass2']['#attributes'] += array(
"v-model" => "pass2",
"placeholder" => $element['pass2']['#title']
);
return $element;
}
/**
* Returns HTML for a form element.
* Prepares variables for form element templates.
*
* Default template: form-element.html.twig.
*
* @param array $variables
* An associative array containing:
* - element: An associative array containing the properties of the element.
* Properties used: #title, #title_display, #description, #id, #required,
* #children, #type, #name, #label_for.
*/
// function materio_user_preprocess_form_element(&$vars) {
// $element = $vars['element'];
// if($element['#type'] == 'password' && $element['#array_parents'][0] == 'account'){
// ksm($vars);
// // $vars['attributes']['placeholder'] = $element['#title'];
// $vars['element']['#attributes']['placeholder'] = $element['#title'];
// }
// }
/**
* implements hook_block_view_BASE_BLOCK_ID_alter()
*
* OLD D8 https://www.drupal.org/project/drupal/issues/2626224
* NEW D9 https://www.drupal.org/node/2966725
*/
function materio_user_block_view_user_login_block_alter(array &$build, BlockPluginInterface $block) {
// $build['#pre_render'][] = '_materio_user_user_login_block_pre_render';
$build['#pre_render'][] = [MaterioUserLoginBlockAlterRender::class, 'preRender'];
}
function _materio_user_user_login_block_pre_render(array $build){
$user_links = &$build['content']['user_links'];
$items = &$user_links['#items'];
unset($items['create_account']);
// $items['create_account']['#url']->mergeOptions(array(
// "attributes" => array(
// "@click.prevent" => "create_account"
// )
// ));
// Do not handle passward reset with vue
// $items['request_password']['#url']->mergeOptions(array(
// 'attributes' => array(
// "@click.prevent" => "request_password"
// )
// ));
return $build;
}
function materio_user_entity_type_build(array &$entity_types) {
// https://drupal.stackexchange.com/a/230547
$entity_types['user']->setFormClass('modal', 'Drupal\user\RegisterForm');
}
/*
* hook_menu_local_tasks_alter
*/
function materio_user_menu_local_tasks_alter(&$data, $route_name){
$t="t";
// remove some tabs on user pages
// if (in_array($route_name, ['entity.user.canonical', 'entity.user.edit_form']) ) {
if (preg_match('/^entity\.user\./', $route_name)
|| in_array($route_name, [
'simplenews.newsletter_subscriptions_user',
'commerce_order.address_book.overview',
'entity.commerce_payment_method.collection',
'view.commerce_user_orders.order_page',
'view.commerce_user_subscriptions.page_1'
])) {
unset($data['tabs'][0]['profile.user_page:member']);
$data['tabs'][0]['entity.user.edit_form']['#weight'] = -20;
$data['tabs'][0]['simplenews.newsletter_subscriptions_user']['#weight'] = -9;
}
// foreach ($data['tabs'] as $key => $tab) {
// if ($key == 'profile.user_page:member') {
// unset($data['tabs'][$key]);
// }
// if ($key == 'entity.user.edit_form') {
// $data['tabs'][$key]['#weight'] = -200;
// }
//
// }
}
/*
* hook_local_tasks_alter
*/
// function materio_user_local_tasks_alter(&$local_tasks){
// $t="t";
// }
function materio_user_form_alter(array &$form, FormStateInterface $forme_state, $form_id){
if ($form_id == 'simplenews_subscriber_account_form') {
$user = \Drupal::currentUser();
$roles = $user->getRoles();
$t="t";
if (in_array('adherent', $roles)) {
unset($form['subscriptions']['widget']['#options']['companies']);
unset($form['subscriptions']['widget']['#options']['test']);
}
}
}