Хак Компонента iChat (от Maxisoft)

1520
Приветствую

Компонент Чат устанавливает для себя настройки для аякса по умолчанию, которые влияют не только на этот компонент, но и вообще на все скрипты, использующие аякс в своей работе. Из-за этих настроек одновременно с чатом не работает "Система переписки" и некоторые другие доработки.

Еще один момент - в чате отображаются все BB коды, а некоторые из них просто рушат чат если их случайно отправить.

В архиве два файла - chat.js (нужно закинуть в /components/chat/js) - исправлены настройки аякса.
и frontend.php (закинуть в components/chat/frontend.php) - убраны некоторые критические bb кнопки (если что нужно убрать - можете сами открыть и просто удалить лишние).

Обновление 23.07.2012: frontend.php убираю из обновления по причине того, что его обновление не у всех работает одинаково.

Скачать тут.
Перед заменой обязательно сделайте копии своих файлов.
Техника безопасности или АнтиШелл | Ускорение загрузки сайта (оптимизация js и css скриптов)
Комментарии (35)
Максим Шкутин 25 мая 2012 в 20:07 +1
Прикольно ++++++
Алексей Гаврилов 25 мая 2012 в 20:58 0
Чет я не нашел разницы...
CROSS ツ 25 мая 2012 в 22:11 0
В чём проверяли?
Алхимик 25 мая 2012 в 22:25 +1
SJen убрал кнопки бб-кодов "спойлер" и "вставить код", из-за которых чат вылетал в белый экран. пользователи нечаянно тыкали на эти кнопки и приходилось лазить в базу, чтобы удалить сообщение. только тогда чат и начинал работать. так же на главной из-за чата не работала система переписки от SJen, теперь она работает) наконец-то нашёлся кто-то исправить этот чат, спасибо)
Алхимик 25 мая 2012 в 22:27 0
в комментах можно прочитать о проблемах: http://instantcms.ru/catalog/item131.html
SJen 25 мая 2012 в 22:48 +3
разница только в том, что я поправил работу с аяксом (чтобы чат не вызывал конфликтов с другими разработками)
и в том, что я вынес во фронтент кнопки bb кодов для того, чтобы можно было очень просто отредактировать что показывать, а что нет.

Функционально это остался все тот же компонент, только менее конфликтный)
Алхимик 25 мая 2012 в 22:51 0
это был ужас а не чат, теперь более менее можно пользоваться) спасибо!
st.Puh 26 мая 2012 в 00:36 0
меняю закинуть в components/chat/frontend.php на ваш и вообще вв кнопки перестают работать все
SJen 26 мая 2012 в 00:49 0
надо смотреть почему, но если все так плохо - не меняйте frontend, может я сделал не совсем универсально(например на инстанте 1.8 я не проверял совсем, только на 1.9). Или можете сами по аналогии с моим вариантом сделать - надо посмотреть в коде как у вас отображаются рабочие бб коды и копировать их в файл frontend.

А сhat.js обновите - из-за него проблем не будет.
st.Puh 26 мая 2012 в 01:23 0
я сhat.js закинул,у меня в файле frontend идет так
Код PHP:
<div class="usr_msg_bbcodebox">
        <?php echo cmsPage :: getBBCodeToolbar('message', false); ?>
    </div>
а вы у себя изменили ето на вот ето
Код PHP:
<div class="usr_msg_bbcodebox">
        <a title="Жирный" href="javascript:addTag('message', '[b]', '[/b]')" class="usr_bb_button">
                <img border="0" alt="Жирный" src="/includes/bbcode/images/b.png">
             </a>
             <a title="Курсив" href="javascript:addTag('message', '[i]', '[/i]')" class="usr_bb_button">
                <img border="0" alt="Курсив" src="/includes/bbcode/images/i.png">
             </a>
             <a title="Подчеркнутый" href="javascript:addTag('message', '[u]', '[/u]')" class="usr_bb_button">
                <img border="0" alt="Подчеркнутый" src="/includes/bbcode/images/u.png">
             </a>
             <a title="Зачеркнутый" href="javascript:addTag('message', '[s]', '[/s]')" class="usr_bb_button">
                <img border="0" alt="Зачеркнутый" src="/includes/bbcode/images/s.png">
             </a>
             <a title="По левому краю" href="javascript:addTag('message', '[align=left]', '[/align]')" class="usr_bb_button">
                <img border="0" alt="По левому краю" src="/includes/bbcode/images/align_left.png">
             </a>
             <a title="По центру" href="javascript:addTag('message', '[align=center]', '[/align]')" class="usr_bb_button">
                <img border="0" alt="По центру" src="/includes/bbcode/images/align_center.png">
             </a>
             <a title="По правому краю" href="javascript:addTag('message', '[align=right]', '[/align]')" class="usr_bb_button">
                <img border="0" alt="По правому краю" src="/includes/bbcode/images/align_right.png">
             </a>
             <a title="Большой заголовок" href="javascript:addTag('message', '[h1]', '[/h1]')" class="usr_bb_button">
                <img border="0" alt="Большой заголовок" src="/includes/bbcode/images/h1.png">
             </a>
             <a title="Средний заголовок" href="javascript:addTag('message', '[h2]', '[/h2]')" class="usr_bb_button">
                <img border="0" alt="Средний заголовок" src="/includes/bbcode/images/h2.png">
             </a>
             <a title="Маленький заголовок" href="javascript:addTag('message', '[h3]', '[/h3]')" class="usr_bb_button">
                <img border="0" alt="Маленький заголовок" src="/includes/bbcode/images/h3.png">
             </a>
             <a title="Цитата" href="javascript:addTagQuote('message')" class="usr_bb_button">
                <img border="0" alt="Цитата" src="/includes/bbcode/images/quote.png">
             </a>
             <a title="Вставить ссылку" href="javascript:addTagUrl('message')" class="usr_bb_button">
                <img border="0" alt="Вставить ссылку" src="/includes/bbcode/images/url.png">
             </a>
             <a title="Вставить смайл" onclick="$('#smilespanel').slideToggle('slow')" href="javascript:void(0)" class="usr_bb_button">
                <img border="0" alt="Вставить смайл" src="/includes/bbcode/images/smiles.png">
             </a><a title="Вставить видео" href="javascript:addTagVideo('message')" class="usr_bb_button">
                    <img border="0" alt="Вставить видео" src="/includes/bbcode/images/video.png">
                 </a>
                 <a title="Вставить mp3" href="javascript:addTagAudio('message')" class="usr_bb_button">
                    <img border="0" alt="Вставить mp3" src="/includes/bbcode/images/audio.png">
                 </a>
                 <a title="Вставить картинку из Сети" href="javascript:addTagImage('message')" class="usr_bb_button">
                    <img border="0" alt="Вставить картинку из Сети" src="/includes/bbcode/images/image_link.png">
                 </a><a title="Загрузить и вставить фото" href="javascript:addImage('message')" class="usr_bb_button">
						<img border="0" alt="Загрузить и вставить фото" src="/includes/bbcode/images/image.png">
					 </a>
					 <div style="display:none" id="imginsert" class="usr_bb_button">
						<strong>Загрузить фото:</strong> <input type="file" name="attach_img" id="attach_img">
						 <input type="button" onclick="loadImage('message', '7939e47e238f7dacef670aa858d882fd', 'forum')" value="Вставить" name="goinsert">
					 </div>
					 <div style="display:none" id="imgloading" class="usr_bb_button">
						Загрузка изображения...
					 </div>    </div>
SJen 26 мая 2012 в 02:10 +1
да, все верно
а заменил я потому, что конструкция
Код PHP:
cmsPage :: getBBCodeToolbar('message', false);
добавляет нехорошие бб коды, которые рушат чат. И ничего с этим не сделаешь (не хотелось ради чата влезать в код движка). Поэтому самый простой вариант был - просто вынести все бб кнопки в файл фронтенд, избавиться от вызова процедуры getBBCodeToolbar.
st.Puh 26 мая 2012 в 03:12 0
а почему у меня с вашей вставкой несрабатывают всеже кнопки вв у меня 1.9 версия в свой файл вставляю ваш кусок кода и неработает
SJen 26 мая 2012 в 03:41 0
надо проверить чем он отличается от "Вашего" куска кода, рабочего. Надо оставить старые файлы и открыть чат. И посмотреть как там выглядит код bb кодов. Чем отличается.

И почему он работает, а новый вариант не хочет работать - видимо разница все-таки есть.
st.Puh 26 мая 2012 в 10:43 0
Чат стоит тот на который есть ссылка в этой теме выше, даже вчера презакачал и переустановил.свой файл frontend.php сравниваю с вашим на отличии програмой WinMerge v2.12.4 она каких либо других отличий кроме тех что я здесь написал в файлах ненаходит
SJen 26 мая 2012 в 11:01 0
да дело не в самом чате - он то одинаковый.
И разницу надо поискать не в моем файле и файле из чата - с ними все понятно и просто (вызов функции заменен на список кнопок).
Надо посмотреть на рабочем сайте с рабочими бб кодами - как они там прописаны? - вот в этом и корень проблемы, может что-то отличается от моего варианта, из-за чего они и перестают работать.

Или кидайте просто в личку сайт, я сам открою и проверю (делов на 2 минуты:) )
Алхимик 26 мая 2012 в 12:41 0
чат использовал бб-коды установленные в instantcms, а не свои.
ALreD 23 июля 2012 в 18:15 0
Да, у меня тоже не работают кнопки... Просто заменил на Ваш файл...
Александр 29 мая 2012 в 01:18 0
Скриншотик бы, а то ставил разные чаты и не поймешь какой это
SJen 29 мая 2012 в 02:10 +1
это единственный чат, сделанный Максисофтом.
Да и тут же всего-лишь хак, исправление двух файлов. Хотите увидеть скриншот двух файлов?))
Алхимик 9 июня 2012 в 21:57 0
ещё этот чат не понимает символы в логине и выводит вместо этого &#9619;&#9618;&#9617; Vikky&#9786;Mikky &#9617;&#9618;&#9619; вот что: &#9619;&#9618;&#9617; Vikky&#9786;Mikky &#9617;&#9618;&#9619;
Алхимик 9 июня 2012 в 21:59 0
SeoNick 14 июня 2012 в 16:41 0
Подскажите, и с этим хаком и без него выскакивает ошибка: {"response":"Good work","to":"","privat":false,"nickname":"ADMIN","message":"","time":"16:54:24","lasttime":3620,"bgcolor":"rgb(0, 0, 0)","display":"","uid":"1"}

Раньше все нормально работало. :(
SJen 14 июня 2012 в 17:39 +1
это же не мой компонент, я по нему ничего не смогу сказать. Глюки есть, поддержки уже нет (насколько я знаю). Хак в основном исправляет косяк с аяксом - это главное, другие баги он не затрагивает.
SeoNick 14 июня 2012 в 19:16 0
Может подскажите компонент другого чата?
FreeLancer 14 июня 2012 в 19:36 0
SeoNick 20 июня 2012 в 18:35 0
А сам код где взять? Вроде чат неплохой.
krz 20 июня 2012 в 19:02 0
купиить)) он его продает вроде
Camfrog 21 июля 2012 в 01:06 0
Где?
ALreD 23 июля 2012 в 19:03 0
Значит так... Отписываю результаты трудов...
У меня, как и у некоторых отписавшихся, после замены файла frontend СОВСЕМ! перестали работать кнопки... Почему это происходит у нас но не происходит у автора модификации - понять невозможно! ПОтому, после пары часов экспериментов, решил проблему следующим образом... МОжет, это и не элегантное решение, но оно вполне работоспособное!
1. Вернул назад "родной" файл frontend.php
2. Открыл файл \core\classes\page.class.php, где описана процедура getBBCodeToolbar
3. Не думаем плохого! Я не мешаю этой процедуре существовать в других разделах сайта!!! )))
4. Продублировал часть кода, ответсвенный за эту процедуру и присвоил ему уникальное имя - getBBCodeToolbar9 (ну "9" - первое что пришло в голову! Можно любое иное...)
5. Вычистил в этой части кода ненужные кнопки - спойлер в частности - но с ним и многие иные в чате не нужные по сути...
6. Вернулся в frontend.php и вместо процедуры cmsPage :: getBBCodeToolbar('message', false); вписал новую (отредактированную) процедуру - cmsPage :: getBBCodeToolbar9('message', false);

ЧТо мы получили в результате? Мы избавиилсь от спорных модификаций файла frontend.php, получили полную работоспособность чата с удаленными функциями - но который работает по правильному алгоритму - но с отдельной процедурой вызова панели... Буду тестировать дальше - но пока, часа 2 уже - полет нормальный!
Всем успехов )
SJen 23 июля 2012 в 19:18 0
обновил пост, убрал свой фронтенд. Мысль правильная, я думаю полет и будет нормальным. Я же вместо дублирования процедуры просто вставил код, который она возвращала (у меня) - при этом убрав лишние кнопки. Но видимо мой вариант сработал "как надо" не у всех.
ALreD 23 июля 2012 в 19:27 0
да я смотрел... Либо моих знаний недостаточно что бы разобраться, какие коды она возвращает (а я ну совсем не программист!) либо не у всех все одинаково - что странно... В любом случае - если Ваш метод у кого то работает - отлично. У кого нет - может помочь моя методика) Свобода выбора, ептить)))
SJen 23 июля 2012 в 19:44 0
ALreD:
Либо моих знаний недостаточно что бы разобраться, какие коды она возвращает
Чтобы это узнать, достаточно в браузере посмотреть исходный код страницы(в фаерфоксе Инструменты->Веб-разработка->Исходных код страницы). В данном случае ничего программировать не нужно)
Saw 13 ноября 2012 в 16:52 0
Помогло, спасибо
Константин Г. 22 ноября 2012 в 21:58 0
Здрасти. А можете мне помочь с тем что у меня сильно чат срезается внизу и когда статус открываю или цвет-окошко со статусами вылизит за низ страницы Скринчик там все я стрелкой показал что именно если не поняли.
Вадим 27 ноября 2012 в 04:57 0
Тоже была такая проблема, в css вроде исправлял какой-то размер, точно не вспомню, давно это было.