LINUX.ORG.RU

Свертка вместо скрытия

 , френды


0

1

Есть тут личности, которые переходят на личности после второго же поста в толксах. Они, как и следовало ожидать, во френдлисте. И всё бы хорошо, но...

...но те же самые личности оказываются иногда (иногда! Не обольщайтесь!) полезны в техразделах.

Собственно мысль - Вот эти все ваши ссылки «показать удаленные» это, конечно хорошо, однако:
1. Перезагружает страницу.
2. Поди вспомни, кого ты френдил - приходится читать весь бредотред сначала.

Потому вопросопредложение - а не лучше ли сделать игнорируемые посты «свернутыми в заголовок»? Ну как у нас новости и мининовости, только чтобы по клику на такую «полоску» пост «разворачивался». Пофиг на анимацию и рюшечки, главное, чтобы страницу не перезагружать и заново всю ересь не читать.

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

Не делается. Чтоб что-то скрыть оно должно перед этим быть в документе. Или придётся свой игнор с блэкджеком и сетевой прозрачностью писать.

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

Милок, очевидно что игнор придется отключать, не понимаю как ты сам до этого не додумался 8)

Deleted
()
Ответ на: комментарий от AlexCones
// ==UserScript==
// @name           collapser
// @namespace      linux.org.ru
// @include        http://www.linux.org.ru/forum/*
// ==/UserScript==

ignore = ['Kalashnikov', 'JB'];

window.onload = function() {
  $ = unsafeWindow.jQuery;
  var comments = $(".msg");
  for(var i = 0; i < comments.length; ++i) {
	var comment = comments[i];
	var nick = $(".sign a", comment)[0].text;
	console.debug(nick);
	if(ignore.indexOf(nick) > -1) {
	  var commentBody = $(".msg_body",comment);
	  commentBody.hide();
	  $(comment).append("<span class='msg_body' style='cursor:pointer;text-decoration:underline' href='#'>[+] развернуть</span>")
				.click((function(b){return function(){b.toggle()}})(commentBody));
	}
  }
}

держи, думаю куда заносить имена жертв для игнора догадаешься

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

да, работает в фуррифоксе и нигде более ибо 'unsafeWindow' есть лишь в засаленой макаке, а без него жкуери я хз как подключить, без жуквери с xpath какието голимые ексепшены лезут из-за модификации нод.

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

unsafeWindow - это хромая самодеятельность, в остальных браузерах будет валиться с ошибкой. onload в юзерскриптах - это совсем плохо, если макском или другой скриптопейсатель будет так же тупить, случится что-нибудь нехорошее. И зачем href span'у?

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

man querySelector(All)

unsafeWindow есть лишь в засаленой макаке

Перепутал, но не суть.

А подключать её и не надо если скрипт в контексте документа работает.

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

unsafeWindow - это хромая самодеятельность

Похеру, найди как тащить jquery делов то. Остальные браузеры - проблемы негров.

onload в юзерскриптах - это совсем плохо

Конечно плохо, щас прикрутим либгастрал и будем парсить сраничку до ее загрузки мистер умник.

И зачем href span'у?

Можно выкинуть изначально там был a по традиции, потом я понял, что дурак.

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

querySelector

это какаято новомодная хрень, мне вообще xpath хватало, еслиб он не глючил

А подключать её и не надо если скрипт в контексте документа работает.

Попробуй сам, умник. яж ее подключать не от нечего делать стал.

Deleted
()
// ==UserScript==
// @name           collapser
// @namespace      linux.org.ru
// @include        http://www.linux.org.ru/forum/*
// ==/UserScript==

ignore = ['Kalashnikov', 'JB'];

window.onload = function() {
  $ = unsafeWindow.jQuery;
  var comments = $(".msg");
  for(var i = 0; i < comments.length; ++i) {
	var comment = comments[i];
	var nick = $(".sign a", comment)[0].text;
	console.debug(nick);
	if(ignore.indexOf(nick) > -1) {
	  var commentBody = $(".msg_body",comment);
	  commentBody.hide();
	  var expander = $("<a class='msg_body' style='cursor:pointer;text-decoration:underline'>[+] развернуть</a>");
	  expander.click((function(b){return function(){b.toggle()}})(commentBody));
	  $(".title", comment).append(expander);
	}
  }
}

пофиксил баг с привязкой скрытия ко всему коменту и еще кой какие косяки

выглядит так http://storage8.static.itmages.ru/i/13/0102/h_1357155047_1728662_f65ec74aeb.png

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

onload в юзерскриптах - это совсем плохо

Конечно плохо, щас прикрутим либгастрал и будем парсить сраничку до ее загрузки мистер умник.

Даю наводку: события.

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

Даю наводку: события.

даю наводку и напиво в лузерскритах window - ненастоящий

Deleted
()

Показано 0 сообщений из 13.

// А так я за.

olibjerd ★★★★★
()

Пройдись по списку и добавь комментарии за что зафрендил.

И видно и разфрендить в будущем можно, тех кто не на два пожизненных надружился.

frob ★★★★★
()

Полезнота, одобряю.

Deleted
()

Мой скрипт игнора для Оперы: http://pastebin.com/707KHAAU . Уже как-то кидал ссылку тут на него, с полгода назад.

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

выглядит так

Не совсем то, что я имел в виду. Я имел в виду, тонкую полоску, чтобы даже лишний раз аватаркой не раздражаться. Ну вот как у нас мининовости на главной висят.

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

добавь скрытие аватары, делов то, мне до вечер некогда будет

Deleted
()
Ответ на: комментарий от AlexCones
// ==UserScript==
// @name           collapser
// @namespace      linux.org.ru
// @include        http://www.linux.org.ru/forum/*
// ==/UserScript==

ignore = ['Kalashnikov', 'JB'];

elements = [".msg_body", ".userpic"];

window.onload = function() {
  $ = unsafeWindow.jQuery;
  var comments = $(".msg");
  for(var i = 0; i < comments.length; ++i) {
	var comment = comments[i];
	var nick = $(".sign a", comment)[0].text;
	if(ignore.indexOf(nick) > -1) {
	  var es = $(elements.map(function(sel){return $(sel, comment)[0]}));
	  es.hide();
	  var expander = $("<a class='msg_body' style='cursor:pointer;text-decoration:underline'>[+] развернуть (" + nick + ")</a>");
	  expander.click((function(b){return function(){b.toggle()}})(es));
	  $(".title", comment).append(expander);
	}
  }
}
Deleted
()
Ответ на: комментарий от Deleted

Отлично работает, спасибо! Правда ругается, что нет @grant, а так всё нормально. СПАСИБО!

Реквестирую maxcom на добавление этого скрипта в мейнстрим.

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

Нашел досадную багу - зашел в тред «игнорируемого» - саом ОП-сообщение скрылось, а его комментарии-ответы - нет.

Пруф: https://dl.dropbox.com/u/31471800/p2p/Снимок экрана от 2013-01-03 14:11:48.png

AlexCones ★★★
() автор топика
Последнее исправление: AlexCones (всего исправлений: 1)
Ответ на: комментарий от AlexCones

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

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

Еслик моенты не скрылись то нужно отлаживать, а чтобы не скрывать заглавный пост надо заменить .msg на .comment .msg

-  var comments = $(".msg");
+  var comments = $(".comment .msg");

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

фикс

// ==UserScript==
// @name           collapser
// @namespace      linux.org.ru
// @include        http://www.linux.org.ru/forum/*
// ==/UserScript==

ignore = ['Kalashnikov', 'JB', 'Kindly_Cat'];

elements = [".msg_body", ".userpic"];
function getSignum(comment) {
  var es = $(".sign a", comment);
  return es.length && es[0].text || null;
}
window.onload = function() {
  $ = unsafeWindow.jQuery;
  var comments = $(".comment .msg");
  try {
  for(var i = 0; i < comments.length; ++i) {
	var comment = comments[i];
	var nick = getSignum(comment);
	if(nick && ignore.indexOf(nick) > -1) {
	  var es = $(elements.map(function(sel){return $(sel, comment)[0]}));
	  es.hide();
	  var expander = $("<a class='msg_body' style='cursor:pointer;text-decoration:underline'>[+] развернуть (" + nick + ")</a>");
	  expander.click((function(b){return function(){b.toggle()}})(es));
	  $(".title", comment).append(expander);
	}
  }
  } catch(e) {console.debug(e)}
}

во всем были виноваты анонимусы

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

Добавь

// @include        http://www.linux.org.ru/gallery/*
// @include        http://www.linux.org.ru/news/*


к

// @include        http://www.linux.org.ru/forum/* 

возможно аткже с новостя

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

Был бы ты бабой, я бы тебя обнял. А так просто «спасибо»!

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