|
Оффлайн
Среда, 30.03.2011, 17:27 | Сообщение # 1
|
|
Скрин Есть такой стандартный модуль «Мини-чат», но его функциональность оставляет желать лучшего. Данный скрипт чата сделан из модуля Гостевая книга. Реализованы некоторые полезные функции, которые делают его очень удобным. Реализованы опции, которые каждый пользователь может легко и быстро настроить: — Авто открытие списка смайлов (onfocus textarea). — Авто обновление сообщений через указанный интервал. — Отправка сообщений комбинацией клавиш Ctrl+Enter. — Выбор цвета сообщений, которые адресованы Вам (скриншот). — Красивая панелька основных ББ-кодов (разработанная специально для чата). — Возможность скрыть панель ББ-кодов (если мешает). — Уведомление о обновлении сообщений в чате, а также возможность отключить уведомление (сообщение, живущее 2 секунды. Появляется при обновлении сообщений). — Панель с аватаркой и ссылкой на профиль и ЛС возле каждого пользователя (скриншот) Появляется после клика на иконку возле каждого сообщения. Если отвести мышку с окошка и держать её за пределами окна более секунды, окошко само исчезает (разработано для этого чата). — Возможность обновить чат в любой момент. — У администрации есть возможность удалять любые сообщения. — Поддержка каптчи. Простые пользователи не могут удалять свои сообщения (не предусмотрено системой uCoz). Возможно, в следующих версиях скрипта это будет. Пример чата на нашем сайте uCodes.ru; Чат сделает ваш сайт не таким скучным, как он был. Пользователям будет интересно общаться в этом удобном чате. 1. Качаем скрипт Code getcooks: function (name) { return cookgb(name, 'get'); }, o: { a: 8 }, post: function () { if (ucodes.ru.logged != "1") return alert('Отправка сообщений лишь для пользователей доступна.'); var msg = $("#txtchatGB").val(), m = $("#statimg-chat"); if (msg.length < 2) return _uWnd.alert('Ваше сообщение слишком короткое', 'Ошибка', { w: 215, h: 75, tm: 3000 }); m.show().attr('src', 'http://ucodes.ru/upload/icons/load.gif'); gbch.o["message"] = msg; $.get("/gb", function (k) { var ds = k.split("_y8M=_dS('"), dc = k.split("_y7M=_dC('"); ds = (typeof ds[1] !== "undefined") ? ds[1].split("');")[0].replace(/\\\'/g, "'") : ""; dc = (typeof dc[1] !== "undefined") ? dc[1].split("');")[0].replace(/\\\'/g, "'") : ""; if (ds) decodeS(ds); if (dc) decodeS(dc); var seckey = $("input[name='seckey']", k).val(), skimg = $("#secImg", k).clone(); if (!seckey) postmessageinchat(); else { gbch.o.seckey = seckey; capcodechat(skimg); } }); } } function capcodechat(img) { new _uWnd('cap', 'Каптча', 300, 70, { modal: 1, oncontent: function () { $("#capImgSpanchat").html(img); $("#capchatcode").focus(); }, onclose: function () { $("#statimg-chat").hide(); } }, '<span id="capImgSpanchat"></span> <input type="text" id="capchatcode" onkeyup="chkcapcodechat(this.value);">'); } function chkcapcodechat(v) { if (v.length >= 4) { gbch.o.code = v; postmessageinchat(); } } function postmessageinchat() { var m = $("#statimg-chat"); $.post("/gb", gbch.o, function (data) { var ress = $(data).text(); if (ress.indexOf("успешно") > -1) { if (_uWnd.getbyname('cap')) _uWnd.close('cap');
$("#txtchatGB").val(""); setTimeout(function () { loadPageChat(1, true); }, 350); m.show().attr('src', 'http://ucodes.ru/upload/icons/ok.png'); setTimeout(function () { m.hide(); }, 1000); } else if (ress.indexOf("код безопасности") > -1) { try { $("#secImg").trigger("click"); $("#capchatcode").val(""); } catch(e) {} } else { alert(ress.replace("document.getElementById('gbsbm').disabled=false;", "")); m.show().attr('src', 'http://ucodes.ru/upload/icons/error.png'); setTimeout(function () { m.hide(); }, 1000); } }); } function optionschat() { new _uWnd('opt', 'Настройки', 530, 150, { align: 0, modal: 1, oncontent: function () { var autosmile = gbch.getcooks('autosmileschat'), autoload = gbch.getcooks('newmessloadchat'), fastsend = gbch.getcooks('fastsendctrlenter'), colorchat = gbch.getcooks('colormymesschat'), hidebbcodes = gbch.getcooks('hidechatbbcodes'), alrtnew = gbch.getcooks('alertnewmessages'), reloadbutton = gbch.getcooks('reloadbuttonshowchat'); if (autosmile == "yes") $("#autosmileschat option[value='yes']").attr("selected", true); if (fastsend == "no") $("#fastsendctrlenter option[value='no']").attr("selected", true); if (autoload) $("#newmessloadchat option[value='" + autoload + "']").attr("selected", true); if (colorchat) $("#colormymesschat option[value='" + colorchat + "']").attr("selected", true); if (hidebbcodes == "yes") $("#hidechatbbcodes option[value='yes']").attr("selected", true); if (alrtnew == "no") $("#alertnewmessages option[value='no']").attr("selected", true); if (reloadbutton == "no") $("#reloadbuttonshowchat option[value='no']").attr("selected", true); } }, '<fieldset><legend>Настраиваемые функции</legend><div class="optblockchat"><div class="optvalchat">Автоматически открывать окошко со смайликами</div> <select onchange="setoptionchat(this.id, this.value);" id="autosmileschat"><option value="no">Нет</option><option value="yes">Да</option></select></div><div class="optblockchat"><div class="optvalchat">Подгружать новые сообщения каждые</div> <select onchange="setoptionchat(this.id, this.value);" id="newmessloadchat"><option value="10000">10 сек</option><option value="20000">20 сек</option><option value="30000">30 сек</option><option value="60000">1 мин</option><option value="300000">5 мин</option></select></div><div class="optblockchat"><div class="optvalchat">Отправлять сообщения комбинацией клавиш Ctrl+Enter</div> <select onchange="setoptionchat(this.id, this.value);" id="fastsendctrlenter"><option value="yes">Да</option><option value="no">Нет</option></select></div><div class="optblockchat"><div class="optvalchat">Цвет сообщений, которые адресованы Вам</div> <select onchange="setoptionchat(this.id, this.value);" id="colormymesschat"><option value="black">Черный</option><option value="green">Зеленый</option><option value="#3286cd">Синий</option><option value="#e18f37">Оранжевый</option><option value="#a936de">Сиреневый</option><option value="#e0de12">Желтый</option><option value="#4cd800">Салатовый</option><option value="#e800c5">Розовый</option></select></div><div class="optblockchat"><div class="optvalchat">Скрывать панель ББ-кодов</div> <select onchange="setoptionchat(this.id, this.value);" id="hidechatbbcodes"><option value="no">Нет</option><option value="yes">Да</option></select></div><div class="optblockchat"><div class="optvalchat">Уведомлять о обновлении сообщений</div> <select onchange="setoptionchat(this.id, this.value);" id="alertnewmessages"><option value="yes">Да</option><option value="no">Нет</option></select></div><div class="optblockchat"><div class="optvalchat">Показывать кнопку обновления сообщений</div> <select onchange="setoptionchat(this.id, this.value);" id="reloadbuttonshowchat"><option value="yes">Да</option><option value="no">Нет</option></select></div></fieldset><fieldset><input type="button" value="Закрыть" onclick="_uWnd.close(\'opt\');"></fieldset>'); } function myreloadchat() { var lr = gbch.TimeOfLastReload || 0; if (((new Date()).valueOf() - lr) < 4500) return _uWnd.alert('Нельзя обновлять чат слишком часто. Минимальный интервал: 4.5 секунды', 'Предупреждение', { w: 245, h: 75, tm: 3000 }); loadPageChat(gbch.pagenow || 1); if (gbch.getcooks('alertnewmessages') != "no") { $("#reNewPostsChat").show(); setTimeout(function () { $("#reNewPostsChat").fadeOut("slow"); }, 2000); } } function setoptionchat(n, v) { cookgb(n, 'set', v, 365); } function ifchatautosmiles() { if (gbch.getcooks('autosmileschat') == "yes") smilesToggleChat(); } function cookgb(a, t, v, x) { if (t == 'set') { var h = new Date(); h.setTime(h.getTime() + (x * 86400000)); var ex = "; expires=" + h.toGMTString(); document.cookie = a + "=" + v + ex + "; path=/"; } if (t == 'get') { var k = a + "=", ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(k) == 0) return c.substring(k.length, c.length); } return null; } if (t == 'del') { arguments.callee(a, 'set', '', -1); } } function decodeS(s) { var i, r = "", l = s.length - 1, k = s.substr(l, 1); for (i = 0; i < l; i++) { c = s.charCodeAt(i) - k; if (c < 32) { c = 127 - (32 - c); } r += String.fromCharCode(c); }; gbch.o[r.split('"')[3]] = r.split('"')[5]; } function smilesToggleChat() { $.get("/index/35-1-0", function (xml) { var d = $('cmd[p="content"]', xml).text(), imgs = []; $("img", d).each(function () { var onclk = $(this).parents("tr").attr("onclick").toString(); onclk = onclk.split("'")[1] || onclk.split('"')[1]; imgs.push('<img src="' + $(this).attr("src") + '" style="border: none; cursor: pointer;" onclick="chatsmilegb(\'' + onclk + '\');return false;">'); }); new _uWnd('smls', 'Смайлы', 400, 300, { y: $("#txtchatGB").position().top - $(window).scrollTop() - 250, x: $("#txtchatGB").position().left - $(window).scrollLeft() + 75, maxw: 400, maxh: 300, oncontent: function () { setTimeout(function () { _uWnd.getbyname('smls').checksize() }, 500); } }, imgs.reverse().join(" ")); }); } function chatsmilegb(a) { $("#txtchatGB")[0].value += " " + a + " "; $("#txtchatGB").focus(); } function loadPageChat(n, ran) { gbch.TimeOfLastReload = (new Date()).valueOf(); gbch.pagenow = n; var _cb = $("#compageblock").html(); if (_cb) $("#compageblock").html("Загрузка…"); var url = ran ? "/gb?" + Math.floor(Math.random() * 99999) : "/gb/" + n; $("#gbcb1").load(url + " .blockGbChat", function (data) { if ($(".blockGbChat", data).size() == 0) $('#gbcb1').html('<div style="text-align: center; padding-top: 50px">Сообщений нет</div>'); var pgs = $("#pagesBlock1", data).html(), morathan1page = $("#pagesBlock1 a", data).size(); if (morathan1page) $("#gbcb1").append($("<div id='compageblock'/>").html(pgs.replace(/swchItemA/gi, 'now-page-chat').replace(/Страницы\:\s/i, '').replace(/swchItem/gi, 'notsel-page').replace(/swchItemDots/gi, 'dot-page-cht').replace(/spages/gi, 'loadPageChat'))).find("#compageblock a").attr("href", "javascript://"); }); } function toUmane(a) { $("#txtchatGB")[0].value += "[b]" + a + "[/b], "; $("#txtchatGB").focus(); } function userChatNav(o, t) { var _ = "chb" + o.num, tp = $(t).position(); $("#" + _).show().css({ top: tp.top - $(window).scrollTop() - 10, left: tp.left - $(window).scrollLeft() - 10 }); } function menuJJ(obj, a) { if (a) { if (obj.h) clearTimeout(obj.h); } else { obj.h = setTimeout(function () { $(obj).fadeOut(500); }, 900); } } function delchatmsg(id, c) { if (!confirm('Удалить сообщение?')) return; $.get("/gb", function (y) { var ssid = y.match(/\/index\/92\-9\-\'\+id\+\'\-(\w+)\'/) || []; if (ssid && ssid[1]) { $.get("/index/92-9-" + id + "-" + ssid[1], function () { $(c).slideUp(1000, function () { $(c).remove(); if ($(".blockGbChat").size() == 0) loadPageChat(1); }) }) } else alert('Истек период сессии'); }); } function menuNavChat(id, f) { if (f == 0) window.open('/index/8-' + id, 'prof', 'scrollbars=1,top=70,left=15,resizable=1,width=650,height=400'); if (f == 1) window.open('/index/14-' + id + '-0-1', 'pm', 'scrollbars=1,top=70,left=15,resizable=1,width=650,height=370'); } loadPageChat(1); if (gbch.getcooks('reloadbuttonshowchat') == 'no') $("#reloadchatbutton").hide(); function ctrlpost(e, f) { if (gbch.getcooks("fastsendctrlenter") == "no") return; e = e || window.event; if (e.keyCode == 10 || e.ctrlKey && e.keyCode == 13) f(); } gbch.reloadtime = gbch.getcooks('newmessloadchat') || 10000; $("#txtchatGB").bind("select change click focus keyup", function () { if (document.selection) this.sel = document.selection.createRange().duplicate(); }); function bbcodeChat(tg) { var o = '[' + tg + ']', c = '[/' + tg + ']', doc = $('#txtchatGB')[0]; doc.focus(); if (window.attachEvent && navigator.userAgent.indexOf('Opera') === -1) { var s = doc.sel; if (s) { var l = s.text.length; s.text = o + s.text + c; s.moveEnd("character", -c.length); s.moveStart("character", -l); s.select(); } } else { var ss = doc.scrollTop; sel1 = doc.value.substr(0, doc.selectionStart); sel2 = doc.value.substr(doc.selectionEnd); sel = doc.value.substr(doc.selectionStart, doc.selectionEnd - doc.selectionStart); doc.value = sel1 + o + sel + c + sel2; doc.selectionStart = sel1.length + o.length; doc.selectionEnd = doc.selectionStart + sel.length; doc.scrollTop = ss; }; return false; } setInterval(function () { var _colorChat = gbch.getcooks('colormymesschat') || 'black'; $("div.blockGbChat").each(function () { if ($(this).html().indexOf('<b>' + ucodes.ru.login + '</b>') > -1) $(this).find('.messageChatMess').css("color", _colorChat); }); }, 1000); if (gbch.getcooks('hidechatbbcodes') == "yes") $("#bbcodesInChat").hide(); setInterval(function () { var lr = gbch.TimeOfLastReload || 0, _n = gbch.pagenow || 1; if ((((new Date()).valueOf() - lr) > gbch.reloadtime) && $(".chat-block-div:visible").size() == 0) { loadPageChat(_n); if (gbch.getcooks('alertnewmessages') != "no") { $("#reNewPostsChat").show(); setTimeout(function () { $("#reNewPostsChat").fadeOut("slow"); }, 2000); } } }, gbch.reloadtime);var gbch = { и css-стили Code #gbchat {border: 1px solid #f2f2f2; margin: 10px 0px} #gbcb1 {border: 1px solid #c6d4dd; padding: 4px 2px; max-height: 400px; overflow: auto; min-height: 150px;} .blockGbChat {margin: 5px 0px; padding: 2px 6px; max-width: 309px; overflow: hidden ;} #gbchat .cBlock2{border: 1px solid #c8e2f1; background: #f5fdff;} #gbchat .cBlock1{border: 1px solid #e4e4e4; background: #f8f8f8;} textarea#txtchatGB {width: 100%; height: 50px;border: 1px solid #c6d4dd; margin: 1px 0px 0px 0px; color: grey; background: #f9f9f9;} textarea#txtchatGB:focus {color: #363636; background: white;} .nbgbchat{float:left;} .hrchat {height: 1px; width: 100%; background: white; border-top: 1px solid #dfdfdf; margin: 2px;} .buttonChat {padding:4px 0px; border: 1px solid #c3c3c3; width: 70px; text-align: center; background: #f9f9f9; margin: 1px; color: #363636; cursor: pointer} .hoverchatbtn {background: #eeeeee; border: 1px solid #648fce; color: #005d89; text-shadow: 0.1em 0.1em 0.05em #FFF;} input.ch-b-send,input.ch-b-sml,input.ch-b-opt {padding:2px 4px; border: 1px solid #c3c3c3; background: #f9f9f9; margin: 1px; color: #363636; text-shadow: 0.1em 0.1em 0.05em #FFF;} input.ch-b-send:hover {background: white; color: #009100; cursor: pointer;} input.ch-b-sml:hover{background: white; color: #e09b37; cursor: pointer;} input.ch-b-opt:hover {background: white; color: #a22864; cursor: pointer;} span.gbchatnick {font-weight: bold; color: #878787; text-shadow: 0.1em 0.1em 0.05em #e0eef6;} span.gbchatnick:hover {color: #464646; cursor: pointer;} span.gbct-nav img {border: 0; height: 13px; opacity: 0.6; filter:Alpha(Opacity='60');} span.gbct-nav img:hover {cursor: pointer; opacity: 1; filter:Alpha(Opacity='100');} .postbuttons-chat{text-align:left;} .pstt-chat{clear:left;float:left;width:20px;} .chat-block-div{display: none; position: fixed; border: 5px solid #f1f1f1; z-index: 99999;} .cbgbH {border: 1px solid #3cb8ec; padding: 6px 15px; background: white} .gvr-chgbl {text-decoration: underline;} .menu-chat-link {text-align: left; margin-bottom: 2px; padding-left: 19px; height: 18px; font-weight: bold; text-shadow: 0.1em 0.1em 0.05em #e6f6f5; cursor: pointer; color: #3b3b3b;} .prfl-mcg {background: url('http://ucodes.ru/upload/icons/m/board.png') no-repeat;} .prfl-pm {background: url('http://ucodes.ru/upload/icons/reg.png') no-repeat;} .prfl-del{background: url('http://ucodes.ru/upload/icons/error.png') no-repeat;} #compageblock {border: 1px solid #8ac8b1; background: #fdfdfd; padding: 6px 10px; text-align: right} b.now-page-chat {border: 1px solid #e3e3e3; background: #eaf4f9; color: #3a7ac9; padding: 2px 4px;} a.notsel-page {border: 1px solid #eaf4f9; background: #fefefe; color: #9c9c9c; padding: 2px 4px;} a.notsel-page:hover {border: 1px solid #e3e3e3; background: #eaf4f9; color: #3a7ac9; padding: 2px 4px;} .notsel-pageDots {font-size: 9px; color: grey;} .optblockchat{text-align: left; padding: 2px; margin-bottom: 2px;} .optvalchat{clear:left;float:left;width:80%;} img.bbcodeImgChat {border: none; cursor: pointer;} #capchatcode {width: 110px; height: 35px; text-align: center; color: grey; font-size: 14pt;} и заливаем в корневую папку своего сайта. 2. Ставим в нужное место на вашем сайте (например: глобальный блок) Code <link type="text/css" rel="StyleSheet" href="/chat-styles.css" /> <div id="gbchat"><div id="gbcb1"><div style="text-align: center; padding-top: 50px">Загрузка…</div> </div><div style="padding: 3px;" id="bbcodesInChat"> <img class="bbcodeImgChat" align="absmiddle" src="http://ucodes.ru/upload/1/bbcode/format-text-bold.png" onclick="bbcodeChat('b');" alt="" title="Жирный"> <img class="bbcodeImgChat" align="absmiddle" src="http://ucodes.ru/upload/1/bbcode/format-text-italic.png" onclick="bbcodeChat('i');" alt="" title="Курсив"> <img class="bbcodeImgChat" align="absmiddle" src="http://ucodes.ru/upload/1/bbcode/format-text-underline.png" onclick="bbcodeChat('u');" alt="" title="Подчеркнутый"> <img class="bbcodeImgChat" align="absmiddle" src="http://ucodes.ru/upload/1/bbcode/script_code.png" onclick="bbcodeChat('code');" alt="" title="Вставить код"> <img class="bbcodeImgChat" align="absmiddle" src="http://ucodes.ru/upload/1/bbcode/miscellaneous2.png" onclick="bbcodeChat('spoiler');" alt="" title="Спойлер"> <img class="bbcodeImgChat" align="absmiddle" src="http://ucodes.ru/upload/1/bbcode/user_comment.png" onclick="bbcodeChat('quote');" alt="" title="Вставить цитату"></div><textarea id="txtchatGB" onfocus="ifchatautosmiles();" onkeypress="ctrlpost(event, gbch.post);"></textarea> <div class="postbuttons-chat"><div class="pstt-chat"><img src="http://ucodes.ru/upload/icons/load.gif" style="border: 0;padding:3px 0px 0px 2px; display: none" alt="" align="absmiddle" id="statimg-chat"></div><input type="button" value="Отправить" onclick="gbch.post();" title="Ctrl + Enter" class="ch-b-send"><input type="button" title="Список смайлов" onclick="smilesToggleChat();" value=":)" class="ch-b-sml"><input type="button" value="~" title="Опции" onclick="optionschat();" class="ch-b-opt"><input type="button" value="R" title="Обновить" onclick="myreloadchat();" id="reloadchatbutton" class="ch-b-opt"><span style="color: green; font-size: 10px; padding-left: 10px; display: none;" id="reNewPostsChat">Обновлено</span></div></div> <script type="text/javascript"> var ucodes = {ru:{logged: "$USER_LOGGED_IN$", login: "$USERNAME$"}}; includeJSfile("/ucodes.ru.chat.js", "uchat"); </script> 3. Настраиваем css под себя (так как чат может не подойти по ширине вашего блока и т.д.) 4. Вид материалов гостевой книги: Code <div class="blockGbChat $CLASS$"> <div style="float: left"> <span onclick="toUmane('<?if $USERNAME$?>$USERNAME$<?else?>Гость<?endif?>');" class="gbchatnick"> <?if $USERNAME$?>$USERNAME$<?else?>Гость<?endif?></span> </div> <div style="text-align: right"> <span title="$DATE$" class="gbct-nav" style="color: grey; font-size: 9px;">$TIME$</span> <?if $MODER_PANEL$?><span title="Удалить" class="gbct-nav" onclick="delchatmsg('<?substr($MODER_PANEL$,strrpos($MODER_PANEL$,'del_item(')+9,strpos(substr($MODER_PANEL$,strrpos($MODER_PANEL$,'del_item (')+9),')'))?>',$(this).parents('.blockGbChat'));"><img src="http://ucodes.ru/upload/icons/error.png" align="absmiddle" border="0"></span><?endif?> <span title="$USERNAME$" class="gbct-nav" onclick="<?if substr($PROFILE_URL$, strpos($PROFILE_URL$,"/index/8-")+9,strpos(substr($PROFILE_URL$,strpos($PROFILE_URL$,'/index/8-')+9),"'")) != $CUR_USER_ID$?>userChatNav({num: '$NUMBER$'},this);<?else?>_uWnd.alert('Это сообщение написали Вы.', 'Капитан Очевидность', {w: 200, h: 70, tm: 5000});<?endif?>"><img src="http://ucodes.ru/upload/icons/user_gray.png" align="absmiddle" border="0"></span> </div> <div class="hrchat"></div> <span class="messageChatMess">$MESSAGE$</span> <?if substr($PROFILE_URL$, strpos($PROFILE_URL$,"/index/8-")+9, strpos(substr($PROFILE_URL$,strpos($PROFILE_URL$,'/index/8-')+9),"'")) != $CUR_USER_ID$?><div id="chb$NUMBER$" class="chat-block-div" onmouseover="menuJJ(this, 1);" onmouseout="menuJJ(this, 0);"><div class="cbgbH"><div style="text-align: center; margin-bottom: 10px;"><?if $USER_AVATAR_URL$?><img src="$USER_AVATAR_URL$" onerror="this.src='http://ucodes.ru/images/noava.png'" style="border: 0px; max-height: 150px; max-width: 150px;"><?else?><img src="http://ucodes.ru/images/noava.png" style="border: 0px; max-height: 150px; max-width: 150px;"><?endif?></div> <div class="menu-chat-link prfl-mcg" onmouseover="$(this).toggleClass('gvr-chgbl');" onmouseout="$(this).toggleClass('gvr-chgbl');" onclick="menuNavChat('<?substr($PROFILE_URL$, strpos($PROFILE_URL$,"/index/8-")+9,strpos(substr($PROFILE_URL$,strpos($PROFILE_URL$,'/index/8-')+9),"'"))?>', 0);">Профиль</div><?if $USER_LOGGED_IN$?><div class="menu-chat-link prfl-pm" onmouseover="$(this).toggleClass('gvr-chgbl');" onmouseout="$(this).toggleClass('gvr-chgbl');" onclick="menuNavChat('<?substr($PROFILE_URL$, strpos($PROFILE_URL$,"/index/8-")+9, strpos(substr($PROFILE_URL$, strpos($PROFILE_URL$,'/index/8-')+9),"'"))?>', 1);">Отправить ЛС</div><?endif?> </div></div><?endif?> </div> 5. Идем в настройки модуля гостевая книга и там настраиваем Количество выводимых сообщений на странице и другие необходимые опции. 6. Идем в права групп, и убеждаемся, что все могут добавлять сообщения в чат. |
|