Ночь неистового траха с jquery дроп-слайдером и переопредление формы авторизации

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

Аватар пользователя Shift-Web Shift-Web 22 марта 2010 в 8:11

В общем бодяга такая... Правый глаз уже ритмично подергивается в такт левому яичку, формочка сворачивается\разворачивается, почти доволен, но заметил вот такую хрень:

С родным друпаловским jquery работать анимация свертывания и развертывания отказывается начисто

С подключенным заводским 1.3.2\1.3.2.min\1.4 alfa она работает, но при этом возникают странные эффекты на внутренних страницах.

Например у меня поле body анонса при создании страницы, которого не должно быть видно, появлялось над рабочей textarea. Причем она неактивкая - с ней вообще ничего сделать нельзя, даже правая кнопка мыши - ноль эмоций. При клике на отделение анонса она красиво анимируется и стает адекватно функционирующей. При этом работоспособность моей панели пропадает ):

Появились другие неприятные глюки.

Два вопроса:

1. Чем пофиксить друпаловский jquery так, чтобы он нормально функционировал и для друпал и для внешних примочек.
2. Как в мою форму авторизации добавить чек "запомнить"?
3. После входа сбрасывает на страницу профиля. Есть ли решение для получения текушего адреса и потом возврата на него сразу после авторизации?

Перерыл много инфы - ответов нет.

Для переопределения дописал пару функций в template.php

<?php
function SW_U_bar() {
global 
$user$output '';
if (!
$user->uid) {    
  
$login_form get_user_login_form(); 
  
$swlogin.= $login_form->form_start
  
$swlogin.= 'Username:'.$login_form->name.'<br />Password:'.$login_form->pass.'<br />'.$login_form->submit.'<br /><br /><a title="Нет аккаунта?" href="/user/register" rel="nofollow">регистрация</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="Проёб пасворд?" href="/user/password" rel="nofollow">выслать пароль</a>';
  
$swlogin.= $login_form->form_end;
  print 
$swlogin; }                                                                          
  
else {                                                                     
$output .= t('<span class="SW-Hook-UI">Привет !user, рады снова Вас видеть!</span><br /><br /><br /><a title="Закрыть сессию и выйти" href="/logout" rel="nofollow">Выход</a>', array('!user' => theme('username'$user)));
}
  
return 
$output;
}

function 

get_user_login_form() {
  
$form_id 'user_login';
  
$form = array();
  
$form['name'] = array(
    
'#type' => 'textfield',
    
'#maxlength' => USERNAME_MAX_LENGTH,
    
'#size' => '15',
    
'#required' => TRUE,
    
'#attributes' => array('tabindex' => '1'),
  );
  
$form['pass'] = array(
    
'#type' => 'password',
    
'#size' => '15',
    
'#required' => TRUE,
    
'#attributes' => array('tabindex' => '2'),
  );
  
$form['submit'] = array(
    
'#type' => 'submit',
    
'#value' => 'Вход',
    
'#weight' => 2,
    
'#attributes' => array('tabindex' => '3')
  );
  
$form['#validate'] = user_login_default_validators();
  
$form['#build_id'] = sprintf('form-%s'md5(uniqid(mt_rand(), TRUE)));
  
$form_state = array();
  
drupal_prepare_form($form_id$form$form_state);
  
drupal_process_form($form_id$form$form_state);
  
$out = new stdClass;
  
$out->form_start sprintf("<span>Добро Пожаловать на Shift-Web!</span><br /><br /><span class='SW-Hook-UL'><form method='post' accept-charset='UTF-8' action='%s'>",url('user/login'));
  
$out->form_end "</form></span>";
  
$out->name drupal_render($form['name']);
  
$out->pass drupal_render($form['pass']);
  
$out->submit drupal_render($form['form_id']).drupal_render($form['form_build_id']) . drupal_render($form['submit']);
  return 
$out;

?>

В шабе выводятся через print SW_U_bar();

Заранее премного благодарен!

Комментарии

Аватар пользователя glu2006 glu2006 22 марта 2010 в 9:10

1. Ничем не надо фиксить, просто подключайте заводской Jquery только там где он нужен, для этого есть соотв функция.
2. Модуль для этого есть.
3. Вам надо навесить на кнопку "войти" дополнительный свой коллбек который будет редиректить хоть к черту на кулички.

Аватар пользователя Shift-Web Shift-Web 22 марта 2010 в 17:19

Т.е. допилить один скрипт на всё не выйдет? Жаль ...

Я тут подумал: а что если его через echo разфускать(ну вы поняли, имеется ввиду сдёрнуть пакер), аналогично сделать со вторым. Проанализировать код и посмотреть где несостыковки. Сегодня попробую - о результатах отпишу.

Просто не вижу смысла таскать тонны разных скриптов для каждой страницы своих. Про модули типа инъектора и условных подключений в курсе. Но этот вариант не кошерен.

Спасибо!