Требуется помощь в настройке регистрационной формы

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

Аватар пользователя Apollon Apollon 8 января 2010 в 1:38

Тут такое дело... Поручили мне сделать для сайта кафедры форму регистрации, не совсем стандартную...

Вот нынешняя форма регистрации: http://kaf36.weblikegames.com/user/register

Суть задания: добавить на страницу чекбокс "Я - преподаватель кафедры" и соответственно, если преподаватель ставит туда галочку ниже появляется поле куда ему надо ввести код подтверждения, который будет роздан всем преподам. Так же убирается поле для даты рождения и года поступления, но появляется поле "Номер кафедры". И главное - преподаватель получает право постить на сайте новости, в отличии от обычных студентов, для которых доступны только комменты.

И еще желательно перенести чекбокс правее основной формы регистрации, чтоб удобнее было... Я так понимаю это надо вручную код редактировать.

И еще подскажите - как записать этот код подтверждения в БД? Чтоб никто кроме админа и преподов не мог знать его... Ну и как процесс сверки сделать?

Вот... Не знаю если честно практически ничего по этой теме, поэтому прошу мне помочь, буду благодарен за любые советы.

Комментарии

Аватар пользователя Dan Dan 8 января 2010 в 2:11

Надо думать скорее не о полях, а о ролях - форма регистрации в зависимости от роли пользователя: во время регистрации пользователь выбирает роль, студент или преподаватель. Если студент - то показываем те поля, что есть, если преподаватель, то номер кафедры. Поможет модуль auto_assign_role.
Сначала сделайте это, а потом для преподавателя прикрутите ввод кода, который выдаёт модуль Invite.

Аватар пользователя Dan Dan 8 января 2010 в 10:36

"mak-vardugin" wrote:
http://www.drupal.ru/node/25591 тут современное состояние проблемы.

Там народ извращениями балуется, типа создания страниц через views, но почитайте.
Совет - если не работает модуль, пробуйте dev-версию (а не ставьте кучу патчей, как в посте).

Аватар пользователя Обухов Никита Обухов Никита 8 января 2010 в 14:20

hook_form_alter - чтобы изменить форму регистрации. Добавляете в этой функции еще одну функцию валидации. В саму форму добавляете чекбокс и еще 1 необязательное поле для "кода преподавателя". В функции валидации можете сделать его обязательным, если был отмечен чекбокс.

В БД создайте таблицу, в ней храните md5 хэш этих кодов преподавателей. Таблица такая:

id (autoincrement, primary key)
code (тут md5 хэш кода)

<?php

function mymodule_form_alter(&$form$form_state$form_id) {
  if (
$form_id == 'user_register') { // неуверен, надо посмотреть какой у нее id 
    
$form['prepod'] = array(
      
'#type' => 'checkbox',
      
'#title' => t('I am teacher'),
    );
    
    
$form['code'] = array(
      
'#type' => 'textfield',
      
'#title' => t('Identification code'),
      
'#size' => 10,
    );
    
    
$form['#validate'][] = 'mymodule_register_form_validate';
  }
}

function 

mymodule_register_form_validate ($form, &$form_state) {
  
$values $form_state['values'];
  if (
$values['prepod']) {
    if (!
$values['code']) {
      
form_set_error('user_register't('Please enter Identification code'));
      return;
    }
    
$code md5($values['code']);
    
$code_is_specified db_result(db_query("SELECT id FROM {mymodule_codes} WHERE code = '%s'"$code));
    if (!
$code_is_specified) {
      
form_set_error('user_register't('Invalid code'));
    }
  }
}
?>

Как добавить юзера в роль преподавателя - тут надо использовать hook_user, но сходу не скажу что там и как..

Убирать поля с годом рождения можно с помощью Яваскриптов, ну и unset их на стадии валидации.

Аватар пользователя Dan Dan 8 января 2010 в 16:57

2Обухов Никита: Ты уверен, что топик стартер будет себя уверенно чуствовать в PHP-коде? Если нет готового решения, то лучше новичкам предлагать "point-and-click" решения, тем более, что бОльшую часть функционала можно сделать именно так.

Кстати, Apollon, с учётом того, что список преподователей известен (вы же будете им коды передавать?), да и сами коды надо хранить для каждого преподователя, не проще ли самому (скриптом) завести всех юзеров-преподователей и раздать им уже логин/пасс от их учётки?

Аватар пользователя mak-vardugin mak-vardugin 8 января 2010 в 17:37

Apollon, действительно зарегьте их сами и логины-пароли на бумажке или можно сделать ход конем пусть регистрируются как все а потом вы просто измените их тип учетной записи c общей на преподавательскую в site.ru/admin/user/user/list
И если не секрет что за кафедра и какого вуза.

Аватар пользователя Apollon Apollon 11 января 2010 в 2:43

Спасибо, действительно, наверно будет проще сделать учетные записи самому...

mak-vardugin, МИФИ, факультет Кибернетики, Кафедра 36 Информационные технологии.

Аватар пользователя mak-vardugin mak-vardugin 11 января 2010 в 3:08

солидно! Когда мне в свое время предложили сделать сайт для своей кафедры я отказался, и досих пор не жалею, сделать это фигня, а вот потом его вести.....