Файл: sys/themes/light_web/user.js
Строк: 723
<?php
function user_update_mail_notice() {
/**
* тут можно сделать дополнительное (звуковое) уведомление пользователя
*/
}
function user_update_mail(count) {
count = +count;
var dom_mail = document.querySelector('#user_mail');
if (USER.mail_new_count != count)
user_update_mail_notice();
USER.mail_new_count = count;
if (USER.mail_new_count) {
dom_mail.querySelector('span').innerHTML = USER.mail_new_count;
DCMS.Dom.classRemove(dom_mail, 'hide');
} else {
DCMS.Dom.classAdd(dom_mail, 'hide');
}
}
function user_update_friends(count) {
count = +count;
var dom_friend = document.querySelector('#user_friend');
USER.friend_new_count = count;
if (USER.friend_new_count) {
dom_friend.querySelector('span').innerHTML = USER.friend_new_count;
DCMS.Dom.classRemove(dom_friend, 'hide');
} else {
DCMS.Dom.classAdd(dom_friend, 'hide');
}
}
function user_update(data) {
if (data.id != USER.id) {
//console.log(USER, data);
DCMS.UserUpdate.stop();
//window.location.reload();
return;
}
user_update_mail(data.mail_new_count);
user_update_friends(data.friend_new_count);
}
// подписываемся на событие поступления новых данных пользователя
DCMS.Event.on('user_update', user_update);
/**
* Сворачиваем поле ввода до дефолтных размеров
*/
function onTextareaBlur() {
//DCMS.Animation.style(textarea, 'height', '' , 300);
}
function onTextareaChange() {
var textarea = this;
var hasInnerText = (document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;
var attributes_copy = ['width', 'font', 'padding'];
var testdiv = DCMS.Dom.createFromHtml('<div style="position: absolute; left: -9999px;word-break: break-all;white-space: pre-wrap" />', false, textarea.parentNode);
var testvalue = textarea.value + "nn";
if (hasInnerText)
testdiv.innerText = testvalue;
else
testdiv.textContent = testvalue;
for (var i = 0; i < attributes_copy.length; i++) {
DCMS.Dom.setStyle(testdiv, attributes_copy[i], DCMS.Dom.getComputedValue(textarea, attributes_copy[i]));
}
DCMS.Animation.style(textarea, 'height', DCMS.Dom.getComputedValue(testdiv, 'height'), 300);
testdiv.parentNode.removeChild(testdiv);
}
function onTextareaBBcodeClickB(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[b]', '[/b]');
}
function onTextareaBBcodeClickU(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[u]', '[/u]');
}
function onTextareaBBcodeClickI(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[i]', '[/i]');
}
function onTextareaBBcodeClickBIG(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[big]', '[/big]');
}
function onTextareaBBcodeClickSMALL(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[small]', '[/small]');
}
function onTextareaBBcodeClickIMG(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[img]', '[/img]');
}
function onTextareaBBcodeClickPHP(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[php]', '[/php]');
}
function onTextareaBBcodeClickGRADIENT(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[gradient from="#bc009a" to="#008e21"]', '[/gradient]');
}
function onTextareaBBcodeClickHIDE(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[hide balls="0" group="0"]', '[/hide]');
}
function onTextareaBBcodeClickSPOILER(event) {
var textarea = this.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '[spoiler title="' + LANG.bbcode_spoiler + '"]', '[/spoiler]');
}
function onTextareaBBcodeClickSmiles(event){
var domSmiles = this.parentNode.parentNode.querySelector(".bbcode_smiles");
DCMS.Dom.setStyle(domSmiles, 'display', DCMS.Dom.getComputedValue(domSmiles, 'display') == 'none' ? 'block' : 'none');
}
function onTextareaBBcodeClickок(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*ок*', '');
}
function onTextareaBBcodeClicknono(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*нет*', '');
}
function onTextareaBBcodeClickbeee(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*обида*', '');
}
function onTextareaBBcodeClickmosking(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*mosking*', ' ');
}
function onTextareaBBcodeClickrtfm(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*rtfm*', ' ');
}
function onTextareaBBcodeClickbye(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*улыбка*', ' ');
}
function onTextareaBBcodeClickcrazy(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*скучно*', ' ');
}
function onTextareaBBcodeClickdirol(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*coffee*', ' ');
}
function onTextareaBBcodeClickfacepalm(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*facepalm*', ' ');
}
function onTextareaBBcodeClicklol(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*подзатыльник*', ' ');
}
function onTextareaBBcodeClickdrinks(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*пиво*', ' ');
}
function onTextareaBBcodeClickdntknw(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*незнаю*', ' ');
}
function onTextareaBBcodeClickhelp(event) {
var textarea = this.parentNode.parentNode.parentNode.lastChild;
DCMS.Dom.inputInsert(textarea, '*help*', ' ');
}
function textareaModify() {
var texareas = document.querySelectorAll('textarea');
for (var i = 0; i < texareas.length; i++) {
var textarea = texareas[i];
Event.add(textarea, 'blur', onTextareaBlur);
Event.add(textarea, ['keyup', 'paste', 'cut', 'change', 'focus', 'input'], onTextareaChange);
var node_txt_wrapper = DCMS.Dom.create('div', 'textarea_wrapper', textarea.parentNode, textarea);
node_txt_wrapper.appendChild(textarea);
var node_bbcode = DCMS.Dom.create('div', 'textarea_bbcode', node_txt_wrapper, textarea);
var node_bb_b = DCMS.Dom.createFromHtml('<span title="' + LANG.bbcode_b + '">B</span>', '', node_bbcode);
Event.add(node_bb_b, 'click', onTextareaBBcodeClickB);
var node_bb_i = DCMS.Dom.createFromHtml('<span title="' + LANG.bbcode_i + '">I</span>', '', node_bbcode);
Event.add(node_bb_i, 'click', onTextareaBBcodeClickI);
var node_bb_u = DCMS.Dom.createFromHtml('<span title="' + LANG.bbcode_u + '">U</span>', '', node_bbcode);
Event.add(node_bb_u, 'click', onTextareaBBcodeClickU);
var node_bb_big = DCMS.Dom.createFromHtml('<span title="' + LANG.bbcode_big + '">BIG</span>', '', node_bbcode);
Event.add(node_bb_big, 'click', onTextareaBBcodeClickBIG);
var node_bb_small = DCMS.Dom.createFromHtml('<span title="' + LANG.bbcode_small + '">small</span>', '', node_bbcode);
Event.add(node_bb_small, 'click', onTextareaBBcodeClickSMALL);
var node_bb_img = DCMS.Dom.createFromHtml('<span title="' + LANG.bbcode_img + '">IMG</span>', '', node_bbcode);
Event.add(node_bb_img, 'click', onTextareaBBcodeClickIMG);
var node_bb_php = DCMS.Dom.createFromHtml('<span title="' + LANG.bbcode_php + '">PHP</span>', '', node_bbcode);
Event.add(node_bb_php, 'click', onTextareaBBcodeClickPHP);
//var node_bb_gradient = DCMS.Dom.createFromHtml('<span title="'+LANG.bbcode_gradient+'"><font color="#BC009A">G</font><font color="#A4118A">R</font><font color="#8D237B">A</font><font color="#75356C">D</font><font color="#5E475D">I</font><font color="#46584E">E</font><font color="#2F6A3F">N</font><font color="#177C30">T</font></span>', '', node_bbcode);
//Event.add(node_bb_gradient, 'click', onTextareaBBcodeClickGRADIENT);
var node_bb_spoiler = DCMS.Dom.createFromHtml('<span title="' + LANG.bbcode_spoiler + '">SPOILER</span>', '', node_bbcode);
Event.add(node_bb_spoiler, 'click', onTextareaBBcodeClickSPOILER);
var node_bb_hide = DCMS.Dom.createFromHtml('<span title="' + LANG.bbcode_hide + '">HIDE</span>', '', node_bbcode);
Event.add(node_bb_hide, 'click', onTextareaBBcodeClickHIDE);
var node_bb_smiles = DCMS.Dom.createFromHtml('<span title="' + LANG.smiles + '">' + LANG.smiles + '</span>', '', node_bbcode);
Event.add(node_bb_smiles, 'click', onTextareaBBcodeClickSmiles);
var smiles_node = DCMS.Dom.create('div', 'bbcode_smiles', node_bbcode);
var node_bb_ок = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/ok.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_ок, 'click', onTextareaBBcodeClickок);
var node_bb_nono = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/nono.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_nono, 'click', onTextareaBBcodeClicknono);
var node_bb_beee = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/beee.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_beee, 'click', onTextareaBBcodeClickbeee);
var node_bb_mosking = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/mosking.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_mosking, 'click', onTextareaBBcodeClickmosking);
var node_bb_rtfm = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/rtfm.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_rtfm, 'click', onTextareaBBcodeClickrtfm);
var node_bb_bye = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/smile.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_bye, 'click', onTextareaBBcodeClickbye);
var node_bb_crazy = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/boredom.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_crazy, 'click', onTextareaBBcodeClickcrazy);
var node_bb_dirol = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/coffee.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_dirol, 'click', onTextareaBBcodeClickdirol);
var node_bb_facepalm = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/facepalm.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_facepalm, 'click', onTextareaBBcodeClickfacepalm);
var node_bb_lol = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/punish.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_lol, 'click', onTextareaBBcodeClicklol);
var node_bb_drinks = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/drinks.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_drinks, 'click', onTextareaBBcodeClickdrinks);
var node_bb_dntknw = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/dntknw.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_dntknw, 'click', onTextareaBBcodeClickdntknw);
var node_bb_help = DCMS.Dom.createFromHtml('<img class="bbcode_smile" src="/sys/images/smiles/help.gif" alt="" title="" />', '', smiles_node);
Event.add(node_bb_help, 'click', onTextareaBBcodeClickhelp);
}
}
ready(textareaModify);
function onSpoilerClick() {
if (DCMS.Dom.classHas(this.parentNode, 'expanded')) {
DCMS.Dom.classRemove(this.parentNode, 'expanded');
DCMS.Dom.classAdd(this.parentNode, 'collapsed');
DCMS.Animation.style(this.nextSibling, 'height', '0');
} else {
DCMS.Dom.classRemove(this.parentNode, 'collapsed');
DCMS.Dom.classAdd(this.parentNode, 'expanded');
DCMS.Animation.style(this.nextSibling, 'height', '');
}
return false;
}
function spoilersModify() {
var spoilers = document.querySelectorAll('.DCMS_spoiler_title');
for (var i = 0; i < spoilers.length; i++) {
var spoiler = spoilers[i];
DCMS.Dom.classAdd(spoiler.parentNode, 'collapsed');
DCMS.Dom.setStyle(spoiler.nextSibling, 'height', '0');
Event.add(spoiler, 'click', onSpoilerClick);
}
}
ready(spoilersModify);
function listing_auto_update(listing_node, url, no_recurce) {
var ids = [];
for (var i = 0; i < listing_node.children.length; i++) {
ids.push(listing_node.children[i].id);
}
DCMS.listing_update(url, ids,
function (data) {
// success
listing_update(listing_node, data);
if (!no_recurce) {
setTimeout(function () {
// повтор
listing_auto_update(listing_node, url);
}, 7000);
}
},
function () {
// error
if (!no_recurce) {
setTimeout(function () {
// повтор
listing_auto_update(listing_node, url);
}, 30000);
}
});
}
function listing_update(listing_node, data) {
var json = JSON.parse(data);
if (!json)
return;
// console.log(json);
for (var i = 0; i < json.add.length; i++) {
var dom_before = false, dom_after = false;
var add = json.add[i];
if (add.after_id) {
dom_after = listing_node.querySelector('#' + add.after_id);
dom_before = dom_after ? dom_after.nextSibling : false;
}
else if (!dom_before) {
dom_before = listing_node.children[0];
//console.log(dom_before);
}
var dom = DCMS.Dom.createFromHtml(add.html, false, listing_node, dom_before);
DCMS.Animation.style(dom, 'opacity', ['0', '1'], 1000);
DCMS.Animation.style(dom, 'height', ['0px', ''], 500);
}
for (i = 0; i < json.remove.length; i++) {
var remove = json.remove[i];
if (remove) {
var dom_remove = listing_node.querySelector('#' + remove);
if (DCMS.isDom(dom_remove)) {
DCMS.Animation.style(dom_remove, 'opacity', '0', 500, function () {
this.parentNode.removeChild(this);
});
}
}
}
}
function form_ajax_submit(node_form, url) {
Event.add(node_form, ['submit'], function () {
return onFormSubmit(node_form, url);
});
}
function onFormSubmit(node_form, url) {
var data = {};
for (var i = 0; i < node_form.elements.length; i++) {
data[node_form.elements[i].name ] = node_form.elements[i].value;
}
form_lock(node_form);
DCMS.Ajax({
url: url,
post: data,
callback: function (cdata) {
if (cdata) {
var json = JSON.parse(cdata);
if (json.err)
form_err(node_form, json.err);
else if (json.msg) {
form_msg(node_form, json.msg);
//node_form.reset();
if (json.form)
form_set_values(node_form, json.form);
DCMS.Event.trigger('form_submited', node_form);
}
}
form_unlock(node_form);
},
error: function () {
form_err(node_form, LANG.form_submit_error)
form_unlock(node_form);
}
});
return false;
}
function form_lock(node_form) {
node_form.disabled = 'disabled';
DCMS.Dom.classAdd(node_form, 'submiting');
}
function form_unlock(node_form) {
node_form.disabled = '';
DCMS.Dom.classRemove(node_form, 'submiting');
}
function form_set_values(node_form, values) {
for (var i = 0; i < node_form.elements.length; i++) {
var name = node_form.elements[i].name;
if (typeof (values[name]) !== 'undefined')
node_form.elements[i].value = values[name];
}
}
function form_msg(node_form, msg) {
var msg_node = node_form.querySelector('.msg');
if (msg_node) {
msg_node.innerHTML = msg;
DCMS.Animation.style(msg_node, 'opacity', '0', 5000, function () {
DCMS.Dom.setStyle(this, 'opacity', '');
this.innerHTML = '';
});
}
}
function form_err(node_form, msg) {
var msg_node = node_form.querySelector('.err');
if (msg_node) {
msg_node.innerHTML = msg;
DCMS.Animation.style(msg_node, 'opacity', '0', 5000, function () {
DCMS.Dom.setStyle(this, 'opacity', '');
this.innerHTML = '';
});
}
}
?>