XemorDio(died) | Дата: Суббота, 09.01.2016, 21:13 | Сообщение # 1 |
 Генерал-лейтенант
Группа: Свобода
Сообщений: 626
Статус: 
|  Скрипт разработан по просьбе пользователя DarkPROF, добавления/изменения- QWERTY™(я) Основной задачей скрипта была подгрузка новых сообщений в теме, в которой в данный момент находится пользователь
Я потратил чуть более трёх часов, чтобы довести код до совершенства, дабы он мог работать на любых форумах системы uCoz и в любых темах
Какие мозги прикручены: 1) На какой бы странице темы вы не находились - скрипт всегда будет проверять именно последнюю страницу 2) Скрипт понимает, когда сообщение оставляете именно вы 3) Даже если один пользователь оставил два разных сообщения или отредактировал старое - скрипт это поймёт и уведомит вас 4) Даже если два разных пользователя напишут два одинаковых сообщения - скрипт и это поймёт 5) Если новое сообщение оставлено на новой странице, даже в этом случае скрипт подгрузит именно сообщение с новой страницы и запомнит, что это уже новая страница 6) После подгрузки новых сообщений скрипт сам прокрутит страницу до самого низа 7) Скрипт использует минимум гет запросов - 1 при заходе на страницу и 1 каждые 25 секунд для проверки всех параметров. Третий гет запрос выполняется очень редко, в случаях, если новое сообщение оставлено на новой странице От меня было добавлено: 1.Автоматическое добавление постов без перезагрузки 2.Кнопка "Обновить" 3.Слитие все в кучу. Установка:
В Общем виде страниц форума после $BODY$: Код ><?if($PAGE_ID$='main')?><style type="text/css"> .gTopCornerRight {display:none;} </style> <script type="text/javascript" src="/fforum/toggleforums.js"></script><?endif?> </div><?if$PAGE_ID$='threadpage' or $PAGE_ID$='addthread' or $PAGE_ID$='addpoll'?><script type="text/javascript">function haveFiles(){var f = false;$("input.uplFileFl").each(function(){if ($(this).val()) f=true;});return f}document.addform.onsubmit = function(){var namewnd = "w" + Math.floor(Math.random()*999); _uWnd.alert('<img src="/.s/img/wd/3/ajax.gif" border="0" alt="Загрузка">','Загрузка',{name: namewnd, w: 250, h: 80, tm: 0}); $("#frF16").attr("disabled", true); if (haveFiles()) {_uPostForm($("form[name='addform']"), {success: function(dt){ parseResult(dt, namewnd);}})} else {$.post("/forum", $("form[name='addform']").serialize(), function(dt) {parseResult(dt, namewnd)})};return false;};function parseResult(dt, namewnd){var err = $("#frM2", dt).text(), thmurl = $("a:first", dt).attr("href"); if (err) {_uWnd.content(namewnd, '<center>'+err+'</center>'); _uWnd.setTitle(namewnd, 'Ошибка'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000);} else if ($(dt).text().indexOf("Ответ добавлен") > -1) { $("textarea#message").val(""); $("form[name='addform'] input:file").val(""); _uWnd.content(namewnd, '<center>Добавлено</center>'); _uWnd.setTitle(namewnd, 'Успех'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); setTimeout(function(){ <?if $PAGE_ID$='threadpage'?>$(".gDivRight:first").load(thmurl + "?" + Math.floor(Math.random()*9999) + " .gDivRight:first"); setPnt(thmurl);<?endif?><?if $PAGE_ID$='addthread' or $PAGE_ID$='addpoll'?>setPnt($("td.forumNamesBar:first a.forumBarA:last", dt).attr("href"), true);<?endif?>}, 50);} else { _uWnd.content(namewnd, 'Во время отправки произошла обишка'); _uWnd.setTitle(namewnd, 'Не удалось'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); }};</script><?endif?></div> <?if$PAGE_ID$='threadpage' or $PAGE_ID$='addthread' or $PAGE_ID$='addpoll'?><script type="text/javascript">function haveFiles(){var f = false;$("input.uplFileFl").each(function(){if ($(this).val()) f=true;});return f}document.addform.onsubmit = function(){var namewnd = "w" + Math.floor(Math.random()*999); _uWnd.alert('<img src="/.s/img/wd/3/ajax.gif" border="0" alt="Загрузка">','Загрузка',{name: namewnd, w: 250, h: 80, tm: 0}); $("#frF16").attr("disabled", true); if (haveFiles()) {_uPostForm($("form[name='addform']"), {success: function(dt){ parseResult(dt, namewnd);}})} else {$.post("/forum", $("form[name='addform']").serialize(), function(dt) {parseResult(dt, namewnd)})};return false;};function parseResult(dt, namewnd){var err = $("#frM2", dt).text(), thmurl = $("a:first", dt).attr("href"); if (err) {_uWnd.content(namewnd, '<center>'+err+'</center>'); _uWnd.setTitle(namewnd, 'Ошибка'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000);} else if ($(dt).text().indexOf("Ответ добавлен") > -1) { $("textarea#message").val(""); $("form[name='addform'] input:file").val(""); _uWnd.content(namewnd, '<center>Добавлено</center>'); _uWnd.setTitle(namewnd, 'Успех'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); setTimeout(function(){ <?if $PAGE_ID$='threadpage'?>$(".gDivRight:first").load(thmurl + "?" + Math.floor(Math.random()*9999) + " .gDivRight:first"); setPnt(thmurl);<?endif?><?if $PAGE_ID$='addthread' or $PAGE_ID$='addpoll'?>setPnt($("td.forumNamesBar:first a.forumBarA:last", dt).attr("href"), true);<?endif?>}, 50);} else { _uWnd.content(namewnd, 'Во время отправки произошла обишка'); _uWnd.setTitle(namewnd, 'Не удалось'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); }};</script><?endif?> <script type="text/javascript"> stylebutton = 'font-weight:bold;background:#f8f8f8;border:1px solid #cbcbcb;color:#333;margin-left:3px;margin-right:3px;'; // стиль кнопки $(document).ready(function() {$('.codeButtons').eq(2).after('<input type="button" style="'+stylebutton+'" title="Reload" value="Обновить сообщения" onclick="reloadforum()" class="codeButtons" id="email" /><span id="gl"></span>');}); function reloadforum() {href_l = location.href; // получаем ссылку на страницу $('#gl').html('<img src="http://txtformat.ucoz.com/loadgen.gif" style="vertical-align:-5px;">') scrop = $(".tru:last").text() $('#stry').load(href_l+' #stry',function(data){ if(scrop == $(".tru:last",data).text()){_uWnd.alert('<center><font color="red">Новых постов на данной странице не найдено!</font></center>', 'Результат',{w:200, h:80})} else{_uWnd.alert('<center><font color="blue">Сообщения подгружены</font></center>', 'Результат',{w:200, h:80})} $(document).ready(function() {$('.codeButtons').eq(2).after('<input type="button" style="'+stylebutton+'" title="Reload" value="Обновить сообщения" onclick="reloadforum()" class="codeButtons" id="email" /><span id="gl"></span>');}); }); } </script> </div> <img src="/images/apoL.gif" id="apoL" style="position:fixed;z-index:100;top:50%;margin-top:-10px;left:50%;margin-left:-80px;opacity:0;" />
<?if($PAGE_ID$='threadpage')?> <script> // Умная подгрузка постов by Apocalypse var apo1 = window.location.href; var apos = $('.numPages:first').text(); var apos0 = apos.length; var apo2 = apo1.length; var apo3 = apo1.substr(0, apo2-apos0); var apous; // Глобальная переменная пользователя, последнего оставившего сообщение var apotxt; // Глобальная переменная текста последнего сообщения $.get(apo3+apos, function(apo0) { apous = $('.postUser:last', apo0).text(); apotxt = $('.posttdMessage:last', apo0).text(); }); setInterval(function() { $.get(apo3+apos, function(apo) { var aposwitch = $('.switchDigit:last', apo).attr('href'); var apous2 = $('.postUser:last', apo).text(); var apotxt2 = $('.posttdMessage:last', apo).text(); if(apous2!='$USERNAME$' && apotxt!=apotxt2 || apous2!='$USERNAME$' && apous!=apous2) { $('#apoL').stop().fadeTo(500, 1); $('.gTable').stop().fadeTo(500, 0.3); apous=$('.postUser:last', apo).text(); apotxt=$('.posttdMessage:last', apo).text(); apos = $('.numPages:first', apo).text(); if(apos!=$('.numPages:first', apo).text()) { $('.gTable').load(aposwitch+' .gTable', function() { $('#apoL').stop().fadeTo(500, 0); $('.gTable').stop().fadeTo(500, 1); $('body').animate({scrollTop: 15000}, 500); _uWnd.alert('Подгружено со страницы '+$('.numPages:first', apo).text()+' от <b>'+apous2+'</b>', '', {w:200, h:60}); }); } else { $('.gTable:first').html($('.gTable:first', apo)); setTimeout(function() { $('#apoL').stop().fadeTo(500, 0); $('.gTable').stop().fadeTo(500, 1); $('body').animate({scrollTop: 15000}, 500); }, 1000); _uWnd.alert('Подгружено со страницы '+apos+' от <b>'+apous2+'</b>', '', {w:200, h:60}); }; }; }); }, 25000); //apo-ucoz.com (c) 2012 </script> <?endif?>
|
|
| |