Strategius Posted August 20, 2016 Share Posted August 20, 2016 Здравствуйте.Есть хук, добавляющий кнопку открытия новой темы на главную страницу. У него есть функция - при нажатии на эту кнопку гостем, всплывает браузерное окно с подсказкой. Вопрос такой: можно ли это всплывающее окно заменить на нормальное форумное модальное или popup-сверстанное окно? За всплывающую подсказку, насколько понял, отвечает строка: $this->returnJsonArray( array( 'error' => $this->lang->words['hookNewTopic_no_forums'] ) ); Вот сам хук: globalNewTopicButton.xml Link to comment Share on other sites More sharing options...
siv1987 Posted August 21, 2016 Share Posted August 21, 2016 Это строчка отвечает за возврат ошибки из 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 }); Дальше окно дорабатывайте сами. 1 Link to comment Share on other sites More sharing options...
Strategius Posted August 21, 2016 Author Share Posted August 21, 2016 Спасибо! Но после замены кода, когда гость нажимает на вкладку "Создать тему", все равно вылазит браузерное окно... Его можно как-нибудь тоже на popup-заменить? Вот такое вылазит: Link to comment Share on other sites More sharing options...
siv1987 Posted August 21, 2016 Share Posted August 21, 2016 alert( t.responseJSON['error'] ) заменить на модальное окно, где контент t.responseJSON['error']. 1 Link to comment Share on other sites More sharing options...
Strategius Posted August 21, 2016 Author Share Posted August 21, 2016 (edited) Попробую... Аналогично вышеприведенному коду? Кстати, заметил баг: при закрытии popup-окна оно повторно не открывается, только после перезагрузки страницы. Можно ли пофиксить? Upd. Пофиксил: new ipb.Popup( 'new_topic_popup', { type: 'modal', modal: true, initial: t.responseJSON['error'], hideAtStart: false, w: '600px', h: 250 });Не подскажете, возможно ли заменить это окно на type: 'balloon'? Edited August 21, 2016 by Strategius Link to comment Share on other sites More sharing options...
siv1987 Posted August 21, 2016 Share Posted August 21, 2016 Не подскажете, возможно ли заменить это окно на type: 'balloon'?Да, можно задать любой тип. Link to comment Share on other sites More sharing options...
Strategius Posted August 21, 2016 Author Share Posted August 21, 2016 (edited) А как, не подскажете? Использую такой код, но не работает... 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 }); Edited August 21, 2016 by Strategius Link to comment Share on other sites More sharing options...
siv1987 Posted August 21, 2016 Share Posted August 21, 2016 Аттач не тот , это элемент к которому прикрепляется окно attach: { target: $('global_new_topic'), position: 'auto' }, Link to comment Share on other sites More sharing options...
Strategius Posted August 21, 2016 Author Share Posted August 21, 2016 (edited) Не пашет... Всплывает обычное модальное окно и не открывается при повторном открытии... Код такой: 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 }); Edited August 21, 2016 by Strategius Link to comment Share on other sites More sharing options...
siv1987 Posted August 21, 2016 Share Posted August 21, 2016 Хм, должно работать. С повторным открытием есть такая проблема. Link to comment Share on other sites More sharing options...
Strategius Posted August 21, 2016 Author Share Posted August 21, 2016 Почему-то не работает... А не знаете, можно ли добавить свой стиль конкретному всплывающему окну? Т.е. прописать class="" и style="" в скрипт? Нужно поменять расположение кнопки закрытия в одном окне. Link to comment Share on other sites More sharing options...
siv1987 Posted August 22, 2016 Share Posted August 22, 2016 Почему-то не работает.balloon не хочет работать если аттач находится на том же элементе на котором висит клик евент. Как вариант повесить на родительский элемент attach: { target: $('global_new_topic').parentNode, position: 'auto' }, можно ли добавить свой стиль конкретному всплывающему окну?Можно. первый аргумент это ид окна с добавлением в конце '_popup', либо можно в объекте опции указать класс через classname. Link to comment Share on other sites More sharing options...
Strategius Posted August 22, 2016 Author Share Posted August 22, 2016 (edited) Вроде работает с этим аттачем, но ошибка с повторным открытием осталась... Увидел Ваше решение отсюда: 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'],) вообще ни в какую... Как пофиксить, не подскажете? Edited August 22, 2016 by Strategius Link to comment Share on other sites More sharing options...
siv1987 Posted August 22, 2016 Share Posted August 22, 2016 Его надо адаптировать под конкретный случай учитывая все ид элементов. В коде выше я этого не вижу, он просто тупо скопирован. Кроме того он для несколько элементов с срабатыванием при наведение. Link to comment Share on other sites More sharing options...
siv1987 Posted August 22, 2016 Share Posted August 22, 2016 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§ion=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(); } }); }); 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now