Как добавить текст по умолчанию в поля авторизации?

Главные вкладки

Аватар пользователя Sever_a Sever_a 12 марта 2012 в 2:32

Решил сделать блок авторизация пользователя через модуль userloginbar, мне он нравится, как новичку мне достаточно легко с его помощью темизировать этот блок так, как мне нужно. НО есть вот вопрос который я не могу решить, дело в том что как я понял, этот модуль вытягивает сам блок из /modules/user/user.module , а там к полям прописаны "title" и по умолчанию к этим полям не прописаны "value", я убрал "title", а расшифровку самого поля хочу сделать в виде текста по умолчанию в самом поле, вообщем так:

function user_login_block() {
  $form = array(
    '#action' => url($_GET['q'], array('query' => drupal_get_destination())),
    '#id' => 'user-login-form',
    '#validate' => user_login_default_validators(),
    '#submit' => array('user_login_submit'),
  );
  $form['name'] = array('#type' => 'textfield',  
    '#maxlength' => USERNAME_MAX_LENGTH,
    '#size' => 60,
    '#required' => TRUE,
    '#value' => t('Username'),
  );
  $form['pass'] = array('#type' => 'password',
    '#maxlength' => 60,
    '#size' => 60,
    '#required' => TRUE,
    '#value' => t('Password'),
    );

только вот поле Логина понимает приписанный '#value' => t('Username'), а в поле "pass" подобное не прокатывает, мое подозрение что это из-за того, что данное поле определено как '#type' => 'password', народ подскажите как добавить в него текст по умолчанию?

Комментарии

Аватар пользователя Sever_a Sever_a 12 марта 2012 в 11:54

После установки compact forms сайт полетел, ошибка - "страница не найдена". Перепробовал все, чистил кэш, логи об ошибках пусты, в settings.php менял значение update на "TRUE", лимит памяти в php - 64Mb, все бесполезно, помогло восстановление из бекапа. Буду ковырять placeholder.
Jchoo, а можешь поподробнее описать, как прикрутить? Я так понимаю ссылку на файл js прикручиваешь в page.tpl.php, а атрибут placeholder приписываешь в user.module?

Аватар пользователя Sever_a Sever_a 12 марта 2012 в 19:05

День изысканий по-большому счету ничего не дал, результат такой, можно поставить плагин placeholder, позволяет дописать этот атрибут формам, но поле с типом "password" по-прежнему не хочет выводить этот атрибут, попытка успешна добавить placeholder к полю с паролем в /unclude/form.inc, будет работать, но там негде добавить этот параметр к полю "username", такая вот ж...
Промежуточное решение таково - отрыл форму, добавил в template.tpl

     function theme_user_bar() {
    global $user;
    $output = '';
     
    if (!$user->uid) {
    $output .= '<div id="user-bar">
    <form action="/user" accept-charset="UTF-8" method="post" id="user-login">
    <input type="text" placeholder=" Логин" maxlength="60" name="name" id="edit-name" value="" tabindex="1" class="form-text required" />
    <input type="password" placeholder=" Пароль" name="pass" id="edit-pass" tabindex="2" class="form-text required" />
    <input type="hidden" name="form_id" id="edit-user-login" value="user_login" />
    <input type="submit" name="op" id="edit-submit" value="Войти" tabindex="3" class="form-submit" />
    </form></div>'
;
    }
    else {
     
    $output .= '<div id="user-info">';
     
    $output .= t('<div class="text">Вы зашли как - !user</div>', array('!user' => theme('username', $user)));
     
    $output .= theme('item_list', array(
    l(t('Ваш аккаунт'), 'user/'.$user->uid, array('title' => t('Редактировать аккаунт'))),
    l(t('Выход'), 'logout')));
     
    $output .= '</div>';
     
    }
     
    return $output;
    }

работает, только вот два вопроса, как перенаправить после авторизации не на страницу пользователя, а на главную, и как к этой форме прикрутить ссылки на такие вещи как "регистрация" и "восстановление пароля"?

Аватар пользователя jchoo jchoo 13 марта 2012 в 16:08
<?php function название_твоей_темы_user_login_block($form) {
$output '';
  
$form['links'] = null;    //array('#value' => theme('item_list', $items));
  
$item1 l(t('Напомнить пароль'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'),'class' => 'user-pass')));
  
$item2 l(t('<img src="/'.path_to_theme().'/images/reg-button.png">'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'),'class' => 'user-reg'),'html' => TRUE));
  
$form['link1']['#value'] = $item1;
  
$form['link2']['#value'] = $item2;

  

$form['name']['#title']  = t('Логин');
  
$form['name']['#value']  = t('Ваш логин');
  
$form['name']['#attributes'] = array('class' => 'NormalTextBox txtSearch''onblur' => "if (this.value == '') {this.value = '".$form['name']['#value']."';} ;"'onfocus' => "if (this.value == '".$form['name']['#value']."') {this.value = '';} ;" ); //вариант через js но в пассворде будут ****
  
  
$form['pass']['#attributes'] = array('class' => 'NormalTextBox txtSearch','placeholder' => t('Ваш пароль') );
  
$form['pass']['#suffix'] =  '<script type="text/javascript">  inputPlaceholder( document.getElementById(\'edit-pass\') )</script>'//Вариант с библиотекой placeholder.js работает на всех полях.
   
  
$form['submit']['#type'] = 'image_button';
  
$form['submit']['#src'] = path_to_theme() . '/images/enter-button.png';
  
$form['submit']['#value']= t('Вход');

  

$output .= drupal_render($form['name']);
  
$output .= drupal_render($form['pass']);
  
$output .= drupal_render($form['links']);
  
$output .= drupal_render($form['link1']);
  
$output .= drupal_render($form['link2']);
  
$output .= drupal_render($form['submit']);
  
$output .= drupal_render($form);
  return 
$output;
}
?>

Рабочий вариант посмотри тут