После создания новой записи (статьи, новости, файла или другого материала) появляется удобное окно, в котором можно выбрать — отправлять ли сообщение в чат. Скрипт автоматически формирует сообщение с названием материала и ссылкой на него, что позволяет быстро уведомить посетителей сайта о новых публикациях.
Возможности скрипта:
- Автоматическое добавление новых материалов в чат
- Формирование сообщения с названием и ссылкой на материал
- Возможность редактировать шаблон сообщения перед отправкой
- Кнопка быстрого перехода на страницу материала после публикации
- Удобное всплывающее окно без перезагрузки страницы
- Совместимость с системой добавления материалов uCoz
Скрипт отлично подойдет для сайтов, где важно быстро информировать пользователей о новых статьях, новостях, обновлениях файлов или других публикациях.
На страницу. Добавление редактирования материалы. Разместить данный код.
<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%');
Комментарии (0)
Присоединиться к обсуждению
Поделитесь мнением об этом материале — комментарий появится в списке слева сразу после отправки.