LINUX.ORG.RU

lorify-ng новое универсальное расширение для LOR -а

 , ,


23

14

Это реинкарнация проекта lorify - скрипт+расширение, реализующее функционал схожий с тем, что добавляет куклоскрипт для имиджборд.

Расширение умеет:

  • Получать сообщения от сервера через WebSocket и обновлять контент на странице (новые комментарии, уведомления, правки)
  • Индикацию на фавиконе вкладки о количестве новых комментариев (очищается даблкликом в любом месте страницы);
    Цвета информируют о состоянии соединения с сервером (зеленый - ок, желтый - отсоединился, красный - сбой)
  • Системные оповещения о уведомлениях пользователя (для юзерскрипта требуется «разрешить сайту www.linux.org.ru показывать уведомления»)
  • Динамическая навигация по страничкам темы (по умолчанию подгружается только текущая открытая и последняя, в настройках можно задать количество подгружаемых заранее)
  • Само собой показ превью постов и ссылки указывающие на комментарии с ответами
  • Кнопки разметки и хоткеи (гайд по использованию)
  • Просмотр, масштабирование и поворачивание картинок, как для встроенных превью в топике так и доступных в тексте комментариев по прямым ссылкам (если url картинки имеет непрямой вид к нему можно добавить хэштег с названием и расширением картинки imghost.orc/24dfuh5d1#скриншот.png)
  • Цитирование с форматированием, как всего комментария так и выделенного в нем текста


Доступны следующие варианты установки

  • Юзерскрипт(тестировался с Violentmonkey)
  • Аддон для Firefox
  • Chrome (платный, нужно $5)
    • можно так же установить вручную включив на странице chrome://extensions режим разработчика и выбрав папку с исходниками расширения в качестве распакованного

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

>>> Страница проекта на GitHub

★★★

Последнее исправление: uin (всего исправлений: 10)
Ответ на: комментарий от eternal_sorrow

Так куда сделать? Сайт во вкладке открыт - есть уведомления, нету вкладок - нет уведомлений. Браузер при старте вкладку не прогрузил - то же самое.

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

Так куда сделать? Сайт во вкладке открыт - есть уведомления, нету вкладок - нет уведомлений.

А как мне ютуб уведомления шлёт даже когда открытых вкладок нет?

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

Ну вот пойди и разбери:

// ##########################################################################
// DEPRECATED: The service_worker.js file in the root should be used instead.
// ##########################################################################

"use strict";

self.addEventListener('push', function(event)
{
	if (!(self.Notification && self.Notification.permission === 'granted'))
	{
		return;
	}

	try
	{
		var data = event.data.json();
	}
	catch (e)
	{
		console.warn('Received push notification but payload not in the expected format.', e);
		console.warn('Received data:', event.data.text());
		return;
	}

	if (!data || !data.title || !data.body)
	{
		console.warn('Received push notification but no payload data or required fields missing.', data);
		return;
	}

	data.last_count = 0;

	var options = {
		body: data.body,
		dir: data.dir || 'ltr',
		data: data
	};
	if (data.badge)
	{
		options.badge = data.badge;
	}
	if (data.icon)
	{
		options.icon = data.icon;
	}

	var notificationPromise;

	if (data.tag && data.tag_phrase)
	{
		options.tag = data.tag;
		options.renotify = true;

		notificationPromise = self.registration.getNotifications({ tag: data.tag })
			.then(function(notifications)
			{
				var lastKey = (notifications.length - 1),
					notification = notifications[lastKey],
					count = 0;

				if (notification)
				{
					count = parseInt(notification.data.last_count, 10) + 1;
					options.data.last_count = count;

					options.body = options.body +  ' ' + data.tag_phrase.replace('{count}', count.toString());
				}

				return self.registration.showNotification(data.title, options);
			});
	}
	else
	{
		notificationPromise = self.registration.showNotification(data.title, options);
	}

	event.waitUntil(notificationPromise);
});

self.addEventListener('notificationclick', function(event)
{
	var notification = event.notification;
	
	notification.close();

	if (notification.data.url)
	{
		event.waitUntil(clients.openWindow(notification.data.url));
	}
});

Кстати кто то тут на вконтакт жаловался недавно, что не показывает, наверное тоже дело в воркере. У меня лично вообще никакой нигде не работает. Но вообще нотификейшены через воркер это хорошая вещь.

uin ★★★
() автор топика
3 апреля 2022 г.

ЛОР стал присылать comment $cid вместо comment-$cid, из-за чего отвалились ссылки «Добавлено x новых. Обновить.»

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)
5 июня 2022 г.
20 октября 2022 г.

Может кто подскажет, на ЛОРе есть для навигации удобные сочетания клавиш Ctrl-Left и Ctrl-Right для перехода на предыдущий и следующий тред соответственно. Но вот при включении данного скрипта, эти хоткеи перестают работать. Причем проверял в разных браузерах и с разными плагинами(TamperMonkey, GreaseMonkey) Есдинственно, возможно с аддоном к файрфоксу работает - не помню, но фоксом давно не пользуюсь.

Может в скрипте что-то поменять можно, чтобы починить работу хоткеев? Я бы и сам может поменял, но мне хотя бы направление в каком двигаться. Не очень я с джаваскриптом и с аддонописательством в частности.

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

Не понял, навигацию по страницам надо, или в другой тред переходить?

Это наверное лоровский встроенный jquery плагин делал, надо просто глянуть да и добавить.

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

Навигация по тредам. Нажимаешь Ctrl-Left и переходишь на предыдущий в разделе. При отключенном плагине, работает, кстати, и с Ctrl и с Alt.

Это наверное лоровский встроенный jquery плагин делал, надо просто глянуть да и добавить.

Попробую глянуть что там. Если найду :)

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

Ну я примерно понял, это по ссылкам которые наверху, типа
<- обновилcя Firefox Линус уронил сосиску ->
Сделаю, но при печатаньи текста (на всякий случай) работать не будет.

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

Сделаю

Спасибо!

но при печатаньи текста (на всякий случай) работать не будет.

Ну это логично.

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

По Ctrl по этим ссылкам переход, а по Alt похоже и сейчас работает. Тут я неправильно сказал, по Alt это браузерные переходы Назад-Вперед, а не лоровские.

Loki13 ★★★★★
()

Появилась лишняя кавычка:

Добавлено 2 новых. ’Обновить.

diff --git a/lorify-ng.user.js b/lorify-ng.user.js
index 30125c2..cc45954 100644
--- a/lorify-ng.user.js
+++ b/lorify-ng.user.js
@@ -1627,7 +1627,7 @@ const onWSData = (cids) => {
                if (g === count)
                        Navigation.ref(g_ref);
        };
-       realtime.children[0].textContent = `Добавлено ${count} новых.\n'`;
+       realtime.children[0].textContent = `Добавлено ${count} новых.\n`;
        realtime.children[1].search = search;

        if (!USER_SETTINGS['Realtime Loader']) {

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)

token_polyak

Появилась лишняя кавычка:
Добавлено 2 новых. ’Обновить.



Все верно же, это мой косяк.
Движок лора сам кнопок рендерит, её (в случае стокового функционала) добавляет встроенный jquery, а в случае lorify добавляет он сам.

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

Я уже исправил, там еще редактирование поломалось.
Надо еще багов поискать.

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

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

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)

Где-то поломался постинг сообщений. У меня с включенным расширением всё время 500 выдаётся. Пробовал отлавливать через консоль браузера, но даже запрос к серверу при постинге не увидел.

Могу предположить, что что-то сломалось по части веб-сокетов. Но самостоятельно виновника у меня выловить не получается.

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

Это не вебсокет, это постинг сломался

uin ★★★
() автор топика
13 декабря 2022 г.
Ответ на: комментарий от KOT040188

Во всяком случае вполне работает.

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

У меня просто залипли уведомления в нём и не убирались. Скачал и установил новую версию, залипшие уведомления пропали, но по новым невозможно открыть тему, при нажатии ничего не происходит, остаётся только стирать.

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

по новым невозможно открыть тему, при нажатии ничего не происходит, остаётся только стирать.

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

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

Норм. Но только я не понимаю логики его поведения. Если без расширения заходить в уведомления на сайте, а потом переходить к комментарию, уведомления помечается как прочитанное и на сайте не висит цифра счётчика. Но если установить расширение, то всё, уведомления можно стереть только руками через расширение, иначе они будут висеть вечно со счётчиком. Это специально так сделано? Зачем?

KOT040188 ★★
()
Последнее исправление: KOT040188 (всего исправлений: 1)

Из интереса поставил юзерскрипт. Какого то хрена даже форма для комментария не работает как следует. При клике на «[Ответить на это сообщение]» перекидывает на отдельную страницу вместо открытия формы прямо на странице.

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)

Попробовал. Вымораживают неочищающиеся уведомления. Кнопочки с форматированием в эпоху маркдауна (жирное ИМХО) не слишком актуальны.

Что действительно полезно:

  • ссылка «Ответить с цитатой», вот это киллерфича однозначно;
  • подтверждение «Очистить форму?».

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

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)

Грешил на сам ЛОР, но оказалось при выключенном скрипте все норм.

В общем, с недавнего времени местами ШГ и сломана статистика. Хром вайолетманкей ш11

Скрин с [b]не[/b] всеми местами https://i.imgur.com/OPbx1YJ.png

admucher ★★
()

Что-то неладное стало с отображением собственных постов:

[Ответить . с цитатой] [Ответить . с цитатой] [Ответить . с цитатой]

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

В 3.3.4 исправится, сейчас еще багов пособираю и залью

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

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

admucher ★★
()

Опера

Версия:94.0.4606.38
Используется обновленная версия Opera
Канал обновлений:Stable
Система:Ubuntu 22.04.1 LTS (x86_64; XFCE)
Версия Chromium:108.0.5359.125
После установки в режиме разработчика с гитхаба имеем вот что:
Manifest version 2 is deprecated, and support will be removed in 2023. See https://developer.chrome.com/blog/mv2-transition/ for more details.
{
  "manifest_version": 2,
  "name": "lorify-ng",
  "version": "3.3.4",
  "description": "Расширение для сайта linux.org.ru поддерживающее загрузку комментариев через технологию WebSocket, а так же уведомления об ответах через системные оповещения и многое другое.",
  "options_ui": {
    "page": "settings.html"
  },
Когда отвечаешь с цитатой - цитаты в окне нет.
Предпросмотр не работает. В окне предпросмотра просто пишет:
undefined
Как-то так.
Все это случилось не так давно и скорее всего после добавления смайликов.

hbars ★★★★★
()
18 марта 2023 г.
Ответ на: комментарий от admucher

Текущий движок лора не позволяет.
Когда тыкаешь на кнопку «показать удаленные» там отправляется форма и выдает полный тред с удаленными комментариями.
В принципе можно изобрести мегакостыль который сможет через этот механизм их как то подгружать, но мне пока не охота.

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

третий манифест придется потестировать, он в фаирфоксе вроде не поддерживается, остальное исправил.

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

Макском зажег звёзды, и они кому-то да оказались нужны.

После нововведения с часовыми поясами новый лорифай поменял привычный формат даты ДД.ММ.ЫЫЫЫ на какие-то мерзкие слеши. Естественно, не предлагаю сделать так, как мне нравится - просто хорошо было бы иметь возможность настройки, или следования локали.

Также не работает «ответить с цитатой».

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

это стандартный js-овский форматер для ru локали такую дату выдает, в качестве быстрого решения могу предложить выбрать форматы других стран, но лучше все таки сделать нормальное форматирование.

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

Йо йо! А можно фичреквест сделать? Хочу, чтобы при клике в уведомлениях не открывалась новая вкладка по дефолту.

hateyoufeel ★★★★★
()

Заметил, что всё ещё проявляется бага, зарепорченная Мандалой летом 2019 года. Ну или вернулась.

Нужно редко, но когда нужно - нужно.

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

Перевел на Manifest v3, не так все страшно оказалось.

А где оно вообще сейчас обитает? На гитхабе вроде как ничего не поменялось.

hbars ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.