ВопросТехнология создания popup окон

На страничке http://drupalace.ru/comment/3722#comment-3722 была затронута тема создания popup логина на jquery.ui.dialog.

Всё классно, всё работает. Но, хотелось бы большего. Возникает вопрос: Как сделать, чтобы при переходе из всплывающего окна по ссылкам "регистрация" и "забыли пароль" так же возникали всплывающие окна. Как бы понятно, что, впринципе, шаблон для действий уже есть. И он уже описан в той статье. Но, из-за нехватки знаний не могу узнать id с блоком "регистрация" и "забыли пароль", а также не знаю, как влепить эти кнопки в popup окно логина.

И ещё одна неприятная мелочь: при вызове popup формы логина куда-то пропадает курсор из поля ввода имени пользователя. Приходится мышкой заново его туда устанавливать для набора имени. Как сделать, что бы он не пропадал? Заранее спасибо.

Комментарии

Аватар пользователя Алексей
Алексей написал:

Вобщем, воткнул я таки id user-register-form в js поменял я исходный код и получилось вот что:

(function($) {
 
$(document).ready(function() {
 
  var user_register_form = $('#user-register-form');
  if (user_register_form.length > 0) {
 
    user_register_form.dialog({
      autoOpen: false,
      title: Drupal.t('Registration'),
      resizable: false,
      maxWidth: 245,
      modal: true,
      show: "slide",
      hide: "explode"
    });
 
    $(??????????).click(function() {
      login_block.dialog('open');
      return false;
    });
 
  }
});
 
})(jQuery);

Как видно, там где вопросики, должна быть ссылка. Но найти её и вставить я никак не могу. Знаний не хватает. Вобщем, получается, что popup сворачивается, но не раскрывается.

30.03.2012 00:02
Аватар пользователя Алексей
Алексей написал:

Сегодня с утра зашёл на свой сайт - и нифига - не работает. Вобщем, копать-неперекопать...

30.03.2012 09:42
Аватар пользователя Алексей
Алексей написал:

Решено! Прошу поправлять меня, если что не так.

В препроцессе добавляем код (к уже добавленному :)), который указывает путь к форме
(!= 'user/register')

 elseif (!$user->uid && arg(0) != 'user/register') {
    drupal_add_library('system', 'ui.dialog');
    drupal_add_library('system', 'effects.explode');
    drupal_add_library('system', 'effects.slide');
   }

Далее, переделываем javascript код:

(function($) {
 
$(document).ready(function() {
 
  var user_register_form = $('#user-register-form');
  if (user_register_form.length > 0) {
 
    user_register_form.dialog({
      autoOpen: true,
      title: Drupal.t('Registration'),
      resizable: false,
      maxWidth: 345,
      modal: true,
      show: "slide",
      hide: "explode"
    });
 
    $('.first li a').click(function() {
      user_register_form.dialog('open');
      return false;
    });
 
  }
});
 
})(jQuery);

Обзываем его как-нибудь и подключаем через info файл темы. Как видно кроме прочих изменений я изменил строку "autoOpen:" с "false" на "true". И он стал работать. Но, но мне ещё не понятна вот этот блок кода:

 $('.first li a').click(function() {
      user_register_form.dialog('open');
      return false;

А именно $('.first li a'). Я меняю значения, пишу там, например, $('.blablabla')? он всё равно работает. А если удалю - то не работает. Как так?

30.03.2012 12:19
Аватар пользователя volandnet
volandnet написал:

Прошу помощи у знатоков. как совместить в template.php два препроцесса, вместе никак не работают:

function azazello_preprocess_page(&$variables, $hook) {
//some other stuff
if (isset($variables['node'])) {
$variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
$variables['theme_hook_suggestions'][] = "page__node__" . $variables['node']->nid;
}
}

и

function ИМЯТЕМЫ_preprocess_page(&$vars) {
  global $user;
  // Подключаем библиотеку только для анонимов
  if (!$user->uid) {
    drupal_add_library('system', 'ui.dialog');
    // Добавляем ссылку, при нажатии на которую будет показываться логин
    $vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
  }
}

как не пробовал либо то, либо другое не рпботает. В пхп знаний не хватает.
Заранее благодарен

08.04.2012 18:29
Аватар пользователя volandnet
volandnet написал:

Решено:

function neo_preprocess_page(&$vars) {
  global $user;
  if (!$user->uid && arg(0) != 'user') {
    drupal_add_library('system', 'ui.dialog');
    drupal_add_library('system', 'effects.explode');
    drupal_add_library('system', 'effects.slide');
    $vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
  }
if (isset($vars['node'])) {
$vars['theme_hook_suggestions'][] = 'page__type__'. $vars['node']->type;
$vars['theme_hook_suggestions'][] = "page__node__" . $vars['node']->nid;
}
}

Ьожет кому пригодится

09.04.2012 03:17

Комментировать