Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Strategius

Global New Topic Button (Доработка)

Рекомендованные сообщения

Здравствуйте.

Есть хук, добавляющий кнопку открытия новой темы на главную страницу. У него есть функция - при нажатии на эту кнопку гостем, всплывает браузерное окно с подсказкой.

 

Вопрос такой: можно ли это всплывающее окно заменить на нормальное форумное модальное или popup-сверстанное окно?

 

За всплывающую подсказку, насколько понял, отвечает строка:

 

$this->returnJsonArray( array( 'error' => $this->lang->words['hookNewTopic_no_forums'] ) );

 

Вот сам хук: globalNewTopicButton.xml

Поделиться сообщением


Ссылка на сообщение

Это строчка отвечает за возврат ошибки из ajax запроса. За "браузерное окно", или скорее меню ипб, отвечает js код:

 

$('global_new_topic').addClassName('ipbmenu');
$('ipboard_body').insert( t.responseJSON['html'] );

var _newMenu = new ipb.Menu( $('global_new_topic'), $('global_new_topic_menucontent') );
_newMenu.doOpen();

В виде popup окна это будет выглядеть примерно так

 

new ipb.Popup( 'new_topic_popup', {
				type: 'pane',
				initial: t.responseJSON['html'],
				hideAtStart: false,
				w: '600px',
				h: 250
			});

Дальше окно дорабатывайте сами.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Спасибо! Но после замены кода, когда гость нажимает на вкладку "Создать тему", все равно вылазит браузерное окно... Его можно как-нибудь тоже на popup-заменить?

 

Вот такое вылазит: post-59150-0-88953200-1471772873_thumb.png

Поделиться сообщением


Ссылка на сообщение

alert( t.responseJSON['error'] ) заменить на модальное окно, где контент t.responseJSON['error'].

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
08/21/16 10:04 (изменено)

Попробую... Аналогично вышеприведенному коду? Кстати, заметил баг: при закрытии popup-окна оно повторно не открывается, только после перезагрузки страницы. Можно ли пофиксить?

 

Upd. Пофиксил:

 

new ipb.Popup( 'new_topic_popup', {
                   type: 'modal',
                   modal: true,
                   initial: t.responseJSON['error'],
                   hideAtStart: false,
                   w: '600px',
                   h: 250
               });

Не подскажете, возможно ли заменить это окно на type: 'balloon'?

Изменено пользователем Strategius

Поделиться сообщением


Ссылка на сообщение

Не подскажете, возможно ли заменить это окно на type: 'balloon'?

Да, можно задать любой тип.

Поделиться сообщением


Ссылка на сообщение
08/21/16 12:34 (изменено)

А как, не подскажете? Использую такой код, но не работает...

 

new ipb.Popup( 'new_topic_popup', {
                   type: 'balloon',
                   stem: true,
                   attach: { target: $('new_topic_popup'), position: 'auto' },
                   initial: t.responseJSON['error'],
                   hideAtStart: false,
                   w: '600px',
                   h: 250
               });

Изменено пользователем Strategius

Поделиться сообщением


Ссылка на сообщение

Аттач не тот , это элемент к которому прикрепляется окно

attach: { target: $('global_new_topic'), position: 'auto' },

Поделиться сообщением


Ссылка на сообщение
08/21/16 13:28 (изменено)

Не пашет... Всплывает обычное модальное окно и не открывается при повторном открытии...

 

Код такой:

 

new ipb.Popup( 'new_topic_popup', {
                   type: 'balloon',
                   stem: true,
                   attach: { target: $('global_new_topic'), position: 'auto' },
                   initial: t.responseJSON['error'],
                   hideAtStart: false,
                   w: '600px',
                   h: 250
               });

Изменено пользователем Strategius

Поделиться сообщением


Ссылка на сообщение

Хм, должно работать. С повторным открытием есть такая проблема.

Поделиться сообщением


Ссылка на сообщение

Почему-то не работает... А не знаете, можно ли добавить свой стиль конкретному всплывающему окну? Т.е. прописать class="" и style="" в скрипт? Нужно поменять расположение кнопки закрытия в одном окне.

Поделиться сообщением


Ссылка на сообщение

Почему-то не работает.

balloon не хочет работать если аттач находится на том же элементе на котором висит клик евент. Как вариант повесить на родительский элемент

 

attach: { target: $('global_new_topic').parentNode, position: 'auto' },

 

можно ли добавить свой стиль конкретному всплывающему окну?

Можно. первый аргумент это ид окна с добавлением в конце '_popup', либо можно в объекте опции указать класс через classname.

Поделиться сообщением


Ссылка на сообщение
08/22/16 14:21 (изменено)

Вроде работает с этим аттачем, но ошибка с повторным открытием осталась... Увидел Ваше решение отсюда: http://ipbskins.ru/forum/topic14228.html/page__view__findpost__p__95303

 

Сделал по образцу:

 

var popup;
$('popupP').observe('mouseover', function(event) {
   var row = event.findElement('a.blclass');
   if(row){
       popup = new ipb.Popup('popup', {
                   type: 'balloon',
                   stem: true,
                   attach: { target: $('global_new_topic').parentNode, position: 'auto' },
                   hideAtStart: false,
                   initial: t.responseJSON['html'],
                   w: '600px',
                   h: 750
       });
   }
});
$('popupP').observe('mouseout', function(event) {
   var row = event.findElement('a.blclass');
   if(row){
       if(popup){
           popup.kill();
           popup = false;
       }
   }
});

 

Но окно почему-то вообще не открывается - ни впервые, ни повторно... в чем тут проблема, я понять не могу? Для гостей окно повторно открывается (initial: t.responseJSON['error'],), а для пользователей (initial: t.responseJSON['html'],) вообще ни в какую... Как пофиксить, не подскажете?

Изменено пользователем Strategius

Поделиться сообщением


Ссылка на сообщение

Его надо адаптировать под конкретный случай учитывая все ид элементов. В коде выше я этого не вижу, он просто тупо скопирован. Кроме того он для несколько элементов с срабатыванием при наведение.

Поделиться сообщением


Ссылка на сообщение
	document.observe("dom:loaded", function()
	{
		$('global_new_topic').observe('click', function(e)
		{
			Event.stop(e);
			if ( !$('new_topic_popup') )
			{
				var url = ipb.vars['base_url'] + 'app=forums&module=ajax&section=forums&do=fetchNewTopicForums';

				new Ajax.Request
				(
					url,
					{
						method: 'post',
						evalJSON: 'force',
						parameters: {
							secure_key: ipb.vars['secure_hash']
						},
						onSuccess: function(t)
						{
							var popup = new ipb.Popup( 'new_topic',
							{
								type: 'balloon',
								stem: true,
								attach: {target: $('global_new_topic').parentNode, position: 'auto'},
								initial: t.responseJSON['error'] ? t.responseJSON['error'] : t.responseJSON['html'],
								hideAtStart: false,
								w: '600px',
								h: 250
							});
							popup.wrapper.style.left = parseInt(popup.wrapper.style.left)-35+'px';
						}
					}
				);
			}
			else
			{
				$('new_topic_popup').show();
			}
		});
	});

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...