LINUX.ORG.RU

Ответы на комментарий

 , ,


0

3

Бывает, читаю комментарий и хочу быстро посмотреть ответы к нему. Сейчас приходится запоминать имя пользователя и время и искать вручную, особенно весело, если тред длинный. Добавьте кнопку «прыгнуть к следующему ответу» или как-нибудь так.

★★★★★

На лоре хоть когда-нибудь что-нибудь делали по запросу кроме самозабана?

Дата регистрации: 02.11.2014 19:12:32

а, понятно

unt1tled ★★★★
()
Ответ на: комментарий от grem

Почему это не отследишь?

Кстати, насчёт древовидности. Если её и делать, то imho желательно ограничить количество уровней вложения, т.е. например максимум 3, остальные уже отображаются линейно. Ну и разбивку на страницы убирать не стоит при этом, а то почти везде где дерево, обычно всё на одной странице.

FoodFighter
()
Ответ на: комментарий от FoodFighter

А мне больше нравится "бесконечная лента".

В любом случае, нужен полноценный ЛОР-API, либо придется полностью переписывать движок ЛОРа, чтобы он работал с динамическими страницами.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Меня сплошная лента с разбивкой тоже более чем с устраивает. Тем более, что в одном сообщении можно ответить сразу нескольким людям.

grem ★★★★★
()
Ответ на: комментарий от grem

Вот я бы еще добавил вылезающий список ответов на выбранный комментарий (тупо выпадающий список с ответами первого уровня) + для удобства мультицитирования блок с текстом ответа сделал бы плавающим поверх основного текста (тогда можно будет прокручивать и тыкать в кнопки [юзер], [цитата], [блок-цитата], забульбенивая в одном ответе сразу ответ на несколько комментариев).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от maxcom

В принципе, оно же уже есть, в форме удаления комментария. По идее, там немного работы (код не смотрел)

leave ★★★★★
()
Ответ на: комментарий от FoodFighter

Можно сделать, только опционально и не как в Opennet.

Klymedy ★★★★★
() автор топика

Только цвета поправь под себя.

// ==UserScript==
// @id             www.linux.org.ru-2ch-style@scriptish
// @name           LOR 2ch-style
// @version    0.1
// @author         
// @description    enter something useful
// @match      http://www.linux.org.ru/*
// @match      https://www.linux.org.ru/*
// @namespace http://www.linux.org.ru/*
// @namespace https://www.linux.org.ru/*
// @include http://www.linux.org.ru/*
// @include https://www.linux.org.ru/*
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.js
// @run-at         document-end
// ==/UserScript==

(function () {

var mouseOnPopup = false;

var locationurl = $(location).attr("href").replace(/#.*$/, "");

var locatTimer = null;

var processMouseEnter = function (){
    mouseOnPopup = true;
};

var processMouseLeave = function (){
    mouseOnPopup = false; 
    processMouseOut();
};


var processLink = function (lnk, elem)
        {
            	msg = lnk.parents('article');
            	msg_title = msg.find('.title');
            	msg_body = msg.find('.msg_body.message-w-userpic');
                popup = $('<div class="2ch_popup">' + '<div class="msg_title">' + msg_title.html()  + '</div>' + '<div class="msg_body">' + msg_body.html()   + '</div>' + '</div>');
            	popup.find('.hideon-phone').parent().remove();
                popup.find('div.msg_title > a').each(function (idx,elem){processTag(idx,elem);});
                popup.find('div.answers > a').each(function (idx,elem){processLinkComments(findLink(elem),$(elem));});

                popup.mouseenter(function(){processMouseEnter();}).mouseleave(function(){processMouseLeave();});
                
                if (locatTimer){
                    clearTimeout(locatTimer);
                    locatTimer = null;
                }
                
                $('body').remove('.2ch_popup');
               
                $(popup).css('z-index', '9999')
                                .css('position', 'absolute')
                                .css('top', ($(elem).offset().top)+'px')
                                .css('left', ($(elem).offset().left+$(elem).width()+5)+'px')
                                .css('background-color','#002b36')
                                .css('width', '900px')
                                .css('border-radius', '3px')
                                .css('border-width', '1px')
                                .css('border-style', 'solid')
                                .css('border-color','#FFFFFF')
                                .css('padding', '3px')
                                .attr('rel', $(elem).attr('href'));
                 $('body').append(popup);
        };
        
var findLinks = function (msg, elem){
            return msg.find('a').filter(function(){return ($(this).text() === "Ссылка" && $(this).attr('href') == $(elem).attr('href')); });
        };
        
var findLink = function (elem){
        var msgId = $(elem).prop("href").match(/comment-(\d+)/)[1];
        var msgObj = $("#comment-" + msgId);
       return msgObj.find('.title');
    };

var processMouseOver = function (elem){
       var links = findLinks($('#comments'), elem);
       if(links.length > 0)
        {
          processLink(links, elem);
          return false;
        }
        console.log('not found');
        if($('.2ch_popup').length > 0 && $('.2ch_popup').attr('rel') == $(this).attr('href'))
            return false;        
        $.ajax({type: "GET", url: $(this).attr('href')})
        .done(function(msg){
            msg = $(msg);
            msg = findLinks(msg, elem);
            processLink(msg, elem);
        })
    };
    
var processMouseOverComments = function (elem, elemshow){
          processLink(elem, elemshow);
          return false;
    };

var processMouseOut = function (){
    if (locatTimer){
        clearTimeout(locatTimer);
        locatTimer = null;
    }
    locatTimer = setTimeout(function(){    
        if(!mouseOnPopup){
            locatTimer = null;
            $('.2ch_popup').remove(); 
        }
    }, 300);
};

var processTag = function (idx,elem){
        $(elem).mouseover(function(){processMouseOver(elem); })
        .mouseout(function(){processMouseOut();})
    };

var processLinkComments = function (elem, link){

       link.mouseover(function(){processMouseOverComments(elem, link); })
           .mouseout(function(){processMouseOut();});
    };
    
        
var processTitle = function (index, url, element) {
		var replyUrl = $("a", element).prop("href");
		var replyMsgId = replyUrl.match(/.*[\?\&]?cid=(\d+).*/)[1];
		var nick = $("a[itemprop='creator']", element.next()).text();
		if (nick == null || nick == "")
			nick = "anonymous";
					
		var msgId = element.parent().prop("id").match(/comment-(\d+)/)[1];

		$("#comment-" + replyMsgId).each(function() {

			var href = url + "#comment-" + msgId;
			var link = $("<a href='" + href + "'>" + nick + "</a>");
			processLinkComments(element, link);

			var container = $(".msg_body", $(this));
			var answersClass = "answers";
			var answers = $("." + answersClass, container);
			if (!answers.length) {
				answers = $("<div class='" + answersClass + "'>Ответы: </div>");
				answers.css("font-size", "smaller");
				container.append(answers);
			}
			if (answers.children().length) {
				answers.append(", ");
			}
			answers.append(link);
		});
    };
    
	$(".title").has("a[data-samepage='samePage']").each(function(index) {processTitle(index, locationurl, $(this));});
    $('div.title > a').each(function (idx,elem){ processTag(idx,elem); });

}());

StReLoK ☆☆
()
Ответ на: комментарий от StReLoK

Скрипт хороший, но работает только на текущей странице, другие не парсит. Да и в принципе такое лучше делать на стороне сервера.

Klymedy ★★★★★
() автор топика

Кстати, удвою, ну или в конце поста отображать ссылки на ответы. Оказывается это весьма удобно.

Vier_E ★★★
()
Ответ на: комментарий от Klymedy

работает только на текущей странице, другие не парсит

У меня в профиле есть ссылка на скрипт для многостраничных тем. Он еще ответы как всплывающие может показывать.

orm-i-auga ★★★★★
()
Ответ на: комментарий от orm-i-auga

Хм, проверил, ну как всегда, в фаерфоксе не работает. Почему-то с ним проблемы всегда. Надо будет проверить в чём дело.

UPD. Оказывается, ему просто был нужен живительный перезапуск.

orm-i-auga ★★★★★
()
Последнее исправление: orm-i-auga (всего исправлений: 1)
Ответ на: комментарий от Deleted

Я сказал опционально. Не нужно — не включай. Кому нужно, включат. (или наоборот, смотря как будет по дефолту)

FoodFighter
()
Ответ на: комментарий от lexxus-lex

Ну тогда я не знаю. Похоже что у тебя браузер косячит. У меня на тормозилле всё отлично.

StReLoK ☆☆
()
Ответ на: комментарий от nagibator

и разметку на какую-нибудь вакабо-подобную

Markdown — наше всё.

KRoN73 ★★★★★
()
Ответ на: комментарий от nagibator

и чтобы можно было картинки прикреплять. и разметку на какую-нибудь вакабо-подобную.

Шел бы ты отсюда, двачер.

dexpl ★★★★★
()
Ответ на: комментарий от lexxus-lex

Ты видишь в этом треде больше 1 страницы?:))

Я вижу здесь 2 страницы и твой комментарий на второй ;) Не у всех дефолт стоит, ага :)

Valkeru ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.