- **Автор:** Евгений Корчевский (псевдоним — ReSLeaR).
- **Платформа:** uCoz.
- **Назначение:** автоматизация публикации анонсов новых материалов (статей, новостей, записей) в встроенном чате сайта.
### Краткое описание
Скрипт позволяет пользователям, модераторам и администраторам сайтов на платформе uCoz одним кликом отправлять в чат анонс нового материала — без ручного копирования ссылок и текста. После публикации статьи скрипт:
- перехватывает отправку формы;
- извлекает заголовок и URL новой страницы;
- подставляет их в заранее заданный шаблон сообщения;
- открывает модальное окно с подтверждением и кнопкой «Добавить в чат».
Это решение особенно полезно для сообществ, форумов и блогов, где важно оперативно информировать аудиторию о новом контенте.
### Ключевые функции
1. **`showAlert()`**
Отображает уведомления с иконками (загрузка, успех, ошибка) в стиле uCoz. Использует CSS‑классы типа `myWinLoadS` для визуальной обратной связи.
2. **`showWindow()`**
Создаёт диалоговое окно (ширина — 360 px) с опцией «Написать в чат». Позволяет:
- включить чекбокс для показа шаблона сообщения в `textarea`;
- переключать видимость предустановленного шаблона по клику на «(шаблон)».
3. **`parse()`**
Заменяет плейсхолдеры `%TITLE%` и `%URL%` в шаблоне на реальные данные (заголовок и URL материала).
4. **`postChat()`**
Отправляет AJAX‑запрос на `/mchat/` с параметрами:
- `mcmessage` — сформированное сообщение;
- `a=18`;
- `ajax=1`.
Если ответ содержит `newEntryT` (успех), обновляет интерфейс: скрывает элементы и меняет кнопку на «Перейти на страницу материала».
5. **`replace_button()`**
Динамически изменяет поведение кнопки `#dwewetew65et5v`: от отправки в чат к переходу по ссылке.
6. **`init()`**
Инициализирует скрипт, привязывая обработчики событий:
- клик по шаблону;
- изменение чекбокса;
- отправка формы (`submit`).
Поддерживает **CKEDITOR** и **uCoz.uwbb** для синхронизации полей.
### Установка
- 1. Перейдите в **панель управления** uCoz.
- 2. Выберите **редактирование шаблонов** модуля «Каталог файлов».
- 3. Откройте шаблон **«Страница материала и комментария к нему»**.
4. Вставьте код в нужное место шаблона:
Код
<script src="/js/infotochat.js"></script>
<script>addInfoToChat.init('Только что добавлен новый материал %TITLE%');</script>
<script>addInfoToChat.init('Только что добавлен новый материал %TITLE%');</script>
**Примечание:**
- `/js/infotochat.js` — путь к файлу скрипта;
- строка внутри `init()` — шаблон сообщения (можно изменить под свои нужды).
### Пример шаблона сообщения
По умолчанию используется шаблон:
`Только что добавлен новый материал %TITLE%`
Плейсхолдеры:
- - `%TITLE%` — заголовок материала;
- - `%URL%` — ссылка на страницу материала.
### Технические детали
- - **Технология:** JavaScript + AJAX.
- - **Интеграция:** форма добавления материалов (`#addEntForm`).
- - **Зависимости:** библиотеки uCoz (`_uWnd`, `_uButton`, `_uPostForm`).
- - **Обработка событий:** перехватывает `submit`, предотвращает стандартную отправку, использует AJAX для асинхронной обработки.
полный код для изучения.
Код
/*
@license
---
скрипт: Объявление нового материала в чат
автор : ReSLeaR- (Korchevskiy Evgeniy)
---
https://vk.com/reslear
https://upost.su/
---
*/
var addInfoToChat={_text:"",_url:"",showWindow:function(e){var t=_uButton(null,"button",{ext:1,text:"Добавить в чат",content:'id="dwewetew65et5v"'});new _uWnd("addInfoToChat","Добавление данных",360,200,{autosize:1,resize:1,modal:1,notaskbar:1,fadetype:2,fadespeed:200,fadeclosetype:1,fadeclosespeed:500,align:"center"},'<div class="myWinLoadSD" style="margin-top:20px"></div><div style="margin:20px 0">Материал успешно добавлен!</div><input type="checkbox" id="ddasdawq" checked><label for="ddasdawq">Написать в чат</label><a href="javascript:void(0);" id="wsedrtgbhjnmk" style="opacity:.5;margin-left:10px;cursor:pointer">(шаблон)</a><textarea style="width: 100%;min-height:50px;margin-top:20px;display:none" id="dwdqwdqwrf">'+this._text+'</textarea><div style="margin:20px 0 10px">'+t+"</div>")},showAlert:function(e,t,n,a){var o=e?"load"==e?"myWinLoadS":"myWinLoadSD":"myWinLoadSF",d=t||(e?"load"==e?"Пожалуйста подождите...":'<span class="myWinSuccess">Успешно!</span>':'<span class="myWinError">Ошибка, попробуйте ещё раз!</span>');return _uWnd.alert('<div style="padding:10px"><div class="'+o+'" style="float:left"></div>'+d+"</div>","",{header:0,close:1,w:280,h:90,tm:a?a:2e4,align:"left",name:"addInfoToChat_"+(n||"_"+Date.now())}),e?1:0},success:function(e){var t=this;e=$(e).text(),e.indexOf("myWinSuccess")!=-1&&/href="(.+?)"/.test(e)?(_uWnd.close("addInfoToChat_ww"),t._url=e.match(/href=\"(.+?)\"/i)[1],this.showWindow()):$(e)[0]&&t.showAlert(0,$(e).text(),"ww")},parse:function(e){var t=this,n=$('#addEntForm [name="title"]').val()||t._url||!1,a=t._url||!1;if(!n||!a)return console.error(n,a),t.showAlert(0);var o=e.replace("%TITLE%",n).replace("%URL%",a);return o},init:function(e){var t=this,n=$(document);t._text=e,n.on("click","#wsedrtgbhjnmk",function(){t.toggle("toggle")}),n.on("change","#ddasdawq",function(){$(this).attr("checked")?t.replace_button(!1):(t.toggle("hide"),t.replace_button(!0))}),t.replace_button(!1),$("#addEntForm").removeAttr("onsubmit").submit(function(e){e.preventDefault(),window.CKEDITOR&&(CKEDITOR.instances.brief.updateElement(),CKEDITOR.instances.message.updateElement()),window.uCoz&&window.uCoz.uwbb&&$("[name=message], [name=brief]").sync(),_uPostForm("addEntForm",{success:function(e){t.success(e)}}),t.showAlert("load",0,"ww",0)})},replace_button:function(e){var t=this;$(document).off("click","#dwewetew65et5v").on("click","#dwewetew65et5v",function(){e?document.location.href=t._url:(t.showAlert("load",0,"aq"),t.postChat(t.parse(t._text)))}),$("#dwewetew65et5v").find("a").html(e?"Перейти на страницу материала":"Добавить в чат")},postChat:function(e){var t=this;return e?void $.post("/mchat/",{mcmessage:e,a:18,ajax:1},function(e){var n=$(e).text();return n.indexOf("newEntryT")==-1?(console.error(n),t.showAlert(0)):(_uWnd.getbyname("addInfoToChat_aq").close(),$("#ddasdawq").before('<div style="margin:0 0 10px">Запись успешно добавлена в чат!</div>'),$("#wsedrtgbhjnmk, #dwdqwdqwrf, #ddasdawq, #ddasdawq + label").animate({opacity:0,height:0},300),$("#dwdqwdqwrf + div").css("margin-top",0),t.replace_button(!0),_uWnd.getbyname("addInfoToChat").checksize(),void 0)}):(console.error(e),t.showAlert(0))},toggle:function(e){e=e?e:"toggle",$("#dwdqwdqwrf").animate({height:e,opacity:e},150,function(){_uWnd.getbyname("addInfoToChat").checksize()})}};
@license
---
скрипт: Объявление нового материала в чат
автор : ReSLeaR- (Korchevskiy Evgeniy)
---
https://vk.com/reslear
https://upost.su/
---
*/
var addInfoToChat={_text:"",_url:"",showWindow:function(e){var t=_uButton(null,"button",{ext:1,text:"Добавить в чат",content:'id="dwewetew65et5v"'});new _uWnd("addInfoToChat","Добавление данных",360,200,{autosize:1,resize:1,modal:1,notaskbar:1,fadetype:2,fadespeed:200,fadeclosetype:1,fadeclosespeed:500,align:"center"},'<div class="myWinLoadSD" style="margin-top:20px"></div><div style="margin:20px 0">Материал успешно добавлен!</div><input type="checkbox" id="ddasdawq" checked><label for="ddasdawq">Написать в чат</label><a href="javascript:void(0);" id="wsedrtgbhjnmk" style="opacity:.5;margin-left:10px;cursor:pointer">(шаблон)</a><textarea style="width: 100%;min-height:50px;margin-top:20px;display:none" id="dwdqwdqwrf">'+this._text+'</textarea><div style="margin:20px 0 10px">'+t+"</div>")},showAlert:function(e,t,n,a){var o=e?"load"==e?"myWinLoadS":"myWinLoadSD":"myWinLoadSF",d=t||(e?"load"==e?"Пожалуйста подождите...":'<span class="myWinSuccess">Успешно!</span>':'<span class="myWinError">Ошибка, попробуйте ещё раз!</span>');return _uWnd.alert('<div style="padding:10px"><div class="'+o+'" style="float:left"></div>'+d+"</div>","",{header:0,close:1,w:280,h:90,tm:a?a:2e4,align:"left",name:"addInfoToChat_"+(n||"_"+Date.now())}),e?1:0},success:function(e){var t=this;e=$(e).text(),e.indexOf("myWinSuccess")!=-1&&/href="(.+?)"/.test(e)?(_uWnd.close("addInfoToChat_ww"),t._url=e.match(/href=\"(.+?)\"/i)[1],this.showWindow()):$(e)[0]&&t.showAlert(0,$(e).text(),"ww")},parse:function(e){var t=this,n=$('#addEntForm [name="title"]').val()||t._url||!1,a=t._url||!1;if(!n||!a)return console.error(n,a),t.showAlert(0);var o=e.replace("%TITLE%",n).replace("%URL%",a);return o},init:function(e){var t=this,n=$(document);t._text=e,n.on("click","#wsedrtgbhjnmk",function(){t.toggle("toggle")}),n.on("change","#ddasdawq",function(){$(this).attr("checked")?t.replace_button(!1):(t.toggle("hide"),t.replace_button(!0))}),t.replace_button(!1),$("#addEntForm").removeAttr("onsubmit").submit(function(e){e.preventDefault(),window.CKEDITOR&&(CKEDITOR.instances.brief.updateElement(),CKEDITOR.instances.message.updateElement()),window.uCoz&&window.uCoz.uwbb&&$("[name=message], [name=brief]").sync(),_uPostForm("addEntForm",{success:function(e){t.success(e)}}),t.showAlert("load",0,"ww",0)})},replace_button:function(e){var t=this;$(document).off("click","#dwewetew65et5v").on("click","#dwewetew65et5v",function(){e?document.location.href=t._url:(t.showAlert("load",0,"aq"),t.postChat(t.parse(t._text)))}),$("#dwewetew65et5v").find("a").html(e?"Перейти на страницу материала":"Добавить в чат")},postChat:function(e){var t=this;return e?void $.post("/mchat/",{mcmessage:e,a:18,ajax:1},function(e){var n=$(e).text();return n.indexOf("newEntryT")==-1?(console.error(n),t.showAlert(0)):(_uWnd.getbyname("addInfoToChat_aq").close(),$("#ddasdawq").before('<div style="margin:0 0 10px">Запись успешно добавлена в чат!</div>'),$("#wsedrtgbhjnmk, #dwdqwdqwrf, #ddasdawq, #ddasdawq + label").animate({opacity:0,height:0},300),$("#dwdqwdqwrf + div").css("margin-top",0),t.replace_button(!0),_uWnd.getbyname("addInfoToChat").checksize(),void 0)}):(console.error(e),t.showAlert(0))},toggle:function(e){e=e?e:"toggle",$("#dwdqwdqwrf").animate({height:e,opacity:e},150,function(){_uWnd.getbyname("addInfoToChat").checksize()})}};