Данный скрипт позволяет автоматически отправлять информацию о новом добавленном материале прямо в чат сайта.

После создания новой записи (статьи, новости, файла или другого материала) появляется удобное окно, в котором можно выбрать — отправлять ли сообщение в чат. Скрипт автоматически формирует сообщение с названием материала и ссылкой на него, что позволяет быстро уведомить посетителей сайта о новых публикациях.
Возможности скрипта:

  • Автоматическое добавление новых материалов в чат
  • Формирование сообщения с названием и ссылкой на материал
  • Возможность редактировать шаблон сообщения перед отправкой
  • Кнопка быстрого перехода на страницу материала после публикации
  • Удобное всплывающее окно без перезагрузки страницы
  • Совместимость с системой добавления материалов uCoz


Скрипт отлично подойдет для сайтов, где важно быстро информировать пользователей о новых статьях, новостях, обновлениях файлов или других публикациях.

На страницу. Добавление редактирования материалы. Разместить данный код.

Код
<script src="/js/infotochat.js"></script>  
  <script>addInfoToChat.init('Только что добавлен новый материал %TITLE%');</script>


Полный код для изучения.

Код
/*  
@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/  
---  

Примечание: логика полностью сохранена как в оригинале,  
изменена только читаемость (форматирование, имена локальных  
переменных, комментарии). ID элементов и селекторы не менялись,  
т.к. они могут быть завязаны на верстку/шаблон uCoz.  
  */  

  var addInfoToChat = {  

// текст шаблона сообщения в чат (передаётся через init)  
_text: "",  

// URL добавленного материала (заполняется после успешного добавления)  
_url: "",  

/**  
* Показывает окно с предложением написать в чат  
* после успешного добавления материала.  
*/  
showWindow: function () {  
var button = _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">' + button + '</div>'  
);  
},  

/**  
* Показывает всплывающее окно-алерт (загрузка / успех / ошибка).  
*  
* @param {string|number|boolean} type - "load" для окна загрузки,  
* 0/false для окна ошибки/успеха (см. content ниже).  
* @param {string} content - произвольный html-контент алерта,  
* если не передан — подставляется текст по умолчанию.  
* @param {string} name - суффикс имени окна (для _uWnd.getbyname).  
* @param {number} timeout - время автозакрытия окна в мс.  
*/  
showAlert: function (type, content, name, timeout) {  
var iconClass;  
if (type) {  
iconClass = (type == "load") ? "myWinLoadS" : "myWinLoadSD";  
} else {  
iconClass = "myWinLoadSF";  
}  

var defaultText;  
if (content) {  
defaultText = content;  
} else if (type) {  
defaultText = (type == "load")  
? "Пожалуйста подождите..."  
: '<span class="myWinSuccess">Успешно!</span>';  
} else {  
defaultText = '<span class="myWinError">Ошибка, попробуйте ещё раз!</span>';  
}  

_uWnd.alert(  
'<div style="padding:10px"><div class="' + iconClass + '" style="float:left"></div>' + defaultText + '</div>',  
"",  
{  
header: 0,  
close: 1,  
w: 280,  
h: 90,  
tm: timeout ? timeout : 20000,  
align: "left",  
name: "addInfoToChat_" + (name || "_" + Date.now())  
}  
);  

// возвращает 1, если это было окно загрузки/успеха, иначе 0 (ошибка)  
return type ? 1 : 0;  
},  

/**  
* Обработчик ответа сервера после отправки формы добавления материала.  
* Если в ответе есть класс myWinSuccess и ссылка href="..." —  
* считаем добавление успешным и показываем окно "Добавить в чат".  
*/  
success: function (response) {  
var self = this;  
var html = $(response).text();  

var isSuccess = html.indexOf("myWinSuccess") !== -1 && /href="(.+?)"/.test(html);  

if (isSuccess) {  
_uWnd.close("addInfoToChat_ww");  
self._url = html.match(/href="(.+?)"/i)[1];  
this.showWindow();  
} else if ($(response)[0]) {  
self.showAlert(0, $(response).text(), "ww");  
}  
},  

/**  
* Подставляет заголовок материала и URL в шаблон сообщения.  
* Заголовок берётся из поля #addEntForm [name="title"],  
* либо (если пусто) используется сам URL.  
*/  
parse: function (template) {  
var self = this;  

var title = $('#addEntForm [name="title"]').val() || self._url || false;  
var url = self._url || false;  

if (!title || !url) {  
console.error(title, url);  
return self.showAlert(0);  
}  

return template  
.replace("%TITLE%", title)  
.replace("%URL%", url);  
},  

/**  
* Инициализация скрипта.  
* @param {string} template - текст шаблона сообщения для чата.  
*/  
init: function (template) {  
var self = this;  
var doc = $(document);  

self._text = template;  

// клик по "(шаблон)" — раскрыть/свернуть textarea с шаблоном  
doc.on("click", "#wsedrtgbhjnmk", function () {  
self.toggle("toggle");  
});  

// переключение чекбокса "Написать в чат"  
doc.on("change", "#ddasdawq", function () {  
if ($(this).attr("checked")) {  
self.replace_button(false);  
} else {  
self.toggle("hide");  
self.replace_button(true);  
}  
});  

self.replace_button(false);  

// перехват отправки формы добавления материала  
$("#addEntForm")  
.removeAttr("onsubmit")  
.submit(function (e) {  
e.preventDefault();  

if (window.CKEDITOR) {  
CKEDITOR.instances.brief.updateElement();  
CKEDITOR.instances.message.updateElement();  
}  

if (window.uCoz && window.uCoz.uwbb) {  
$("[name=message], [name=brief]").sync();  
}  

_uPostForm("addEntForm", {  
success: function (response) {  
self.success(response);  
}  
});  

self.showAlert("load", 0, "ww", 0);  
});  
},  

/**  
* Перепривязывает обработчик клика на кнопке "Добавить в чат".  
* @param {boolean} isDone - true, если материал уже добавлен в чат  
* (тогда кнопка ведёт на страницу материала),  
* false — кнопка отправляет сообщение в чат.  
*/  
replace_button: function (isDone) {  
var self = this;  

$(document)  
.off("click", "#dwewetew65et5v")  
.on("click", "#dwewetew65et5v", function () {  
if (isDone) {  
document.location.href = self._url;  
} else {  
self.showAlert("load", 0, "aq");  
self.postChat(self.parse(self._text));  
}  
});  

$("#dwewetew65et5v")  
.find("a")  
.html(isDone ? "Перейти на страницу материала" : "Добавить в чат");  
},  

/**  
* Отправляет сообщение в чат (POST /mchat/).  
*/  
postChat: function (message) {  
var self = this;  

if (!message) {  
console.error(message);  
return self.showAlert(0);  
}  

$.post("/mchat/", { mcmessage: message, a: 18, ajax: 1 }, function (response) {  
var html = $(response).text();  

if (html.indexOf("newEntryT") === -1) {  
console.error(html);  
return self.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);  

self.replace_button(true);  
_uWnd.getbyname("addInfoToChat").checksize();  
});  
},  

/**  
* Разворачивает/сворачивает textarea с шаблоном сообщения.  
*/  
toggle: function (state) {  
state = state || "toggle";  

$("#dwdqwdqwrf").animate({ height: state, opacity: state }, 150, function () {  
_uWnd.getbyname("addInfoToChat").checksize();  
});  
}  
  };  
  addInfoToChat.init('Только что добавлен новый материал %TITLE% %URL%');