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)

Если отключить автоматическую подгрузку, то по клике на «синюю полоску» кидает не на первый новый коммент, а на последний — очень не удобно. Родная лоровская панелька кидает на первый не прочитанный.

mandala ★★★★★
()

Есть тег lorify, на него 35 человек подписано, поставь — подтянутся.

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

Чегож раньше то не зарепортил
Там поправить то всего ничего

Есть тег lorify, на него 35 человек подписано, поставь — подтянутся.

О, хорошо, благодарю.

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

Чегож раньше то не зарепортил

Тема горячая про сгон жира попалась, а так и не замечал особо.

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

И чем оно лучше lorify? У меня lorify пока норм работает и всем устраивает.

Новое расширение подгружающее посты через вебсокет

Подгружалка нативная от лор-движка не мешается, т.к. оно её заменяет. Ну и оно на WebExtention (это про firefox) и автор имеет желание и возможность ее развивать

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

Больше велосипедов хороших и разных же.
Если все работает и все устраивает то наверно незачем.

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

автор имеет желание и возможность ее развивать

Ну сейчас его отшлифовать бы, все то что работает не так как хотелось бы отловить и подделать/переделать

www.linux.org.ru/tag/lorify-ng

Это тоесть заменить его? Хорошо.

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

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

mandala ★★★★★
()

Расширение классное! Спасибо!

SL_RU ★★★★
()

Баг - при каждой загрузке страницы на секунду показывается (1) рядом с уведомлениями, хотя там всё прочитано.

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

И чем оно лучше lorify?

А, тут еще панель кнопок для тегов (как в скрипте LorCode Tools Native, только еще верстка поля ввода по ширине не прилипает).

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

Когда кликаешь на пункт «новые уведомления», каждый раз открывается новая вкладка. PR в твою репу лениво делать (да и наверняка, у себя ты уже наделал изменений, которые пока не запушил в репу), поэтому тут поделюсь примерным кодом:

const notifUrlPattern = "*://www.linux.org.ru/notifications";
const notifUrl = "https://www.linux.org.ru/notifications";
function onGetTabs(tabs) {
            /// If exists a tab with URL == `notify_Url` then we switches to this tab.
            var tab;
            var tabExists = false;
            for (var i of tabs) {
                tab = tabs[i];
                chrome.tabs.update(tab.id, { url: notifUrl, active: true });
                tabExists = true;
                break;
            }
            function onGetAllTabs(tabs) {
                /// If opened a new tab (or the start page) then we goes to the `notify_Url`.
                if (!tabExists) {
                    var urls = [
                        "about:blank",
                        "about:newtab",
                        "about:home",
                        "chrome://startpage/",
                        "chrome://newtab/"
                    ];
                    var tab = tabs.filter((tab) => {
                        if (tab.active)
                            return tab;
                        else
                            return null;
                    })[0];
                    if (urls.indexOf(tab.url) > -1) {
                        chrome.tabs.update(tab.id, { url: notifUrl });
                    }
                    else {
                        chrome.tabs.create({ url: notifUrl });
                    }
                }
            }
            chrome.tabs.query({}, onGetAllTabs);
        }
        chrome.tabs.query({ url: notifUrlPattern }, onGetTabs);
То есть если уже есть открытая вкладка с уведомлениями, то перключаемся на неё и обновляем страницу, если открыты стартовая страница или новая вкладка, то открываем уведомления прямо в текущей вкладке, ну и наконец, если ничто не срабатывает, то уже открываем новую вкладку и в ней уведомления.
Кстати говоря, вижу, ты используешь синтаксис for (var i in ...), но его недавно deprecate'нули, емнип, рекомендуется форма с `of` for (var i of ...).

Virtuos86 ★★★★★
()

Кнопки разметки и хоткеи (ман по использованию напишу чуть позже в комментариях)

Ctrl+c не срабатывает для копипасты, ff 57, xorg, ubunru 16.04 x86_64, unity.

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

У него там обработка шоткатов так сделана. Например, если выделить текст мышкой и нажать «>» (натурально, Shift+> в английской раскладке, разумеется), то выделенный текст вставится в форму ответа как уже отформатированнная цитата. А если выделить никнейм и нажать «@», то вставится каст юзера. Беда в том, что так ни «>», ни «@» набрать в тексте уже не получается.

uin, сделай по уму шоткаты, с помощью параметра «commands» в манифесте. Да, тогда придется добавить лидирующий модификатор ко всем шоткатам (ограничение API), но иначе люди не поймут :)

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

У него там обработка шоткатов так сделана.

Интересно.

Беда в том, что так ни «>», ни «@» вставить в текст уже не получается.

> — получаются, а вот @ не получается, да. При выделении текста уже в поле ввода Shift+> не работает (работает системный), так я скопировал @. :)

Я бы хотел такую штуку пока, хотя бы опционально. Может быть понравится.

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

Хотел, так пользуйся. Есть еще шоткаты, но по коду непонятно, на какие клавиши повешаны, там числовые коды указаны.

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

Поймал - это случается, когда расширение «видит» непрочитанное уведомление, но на самом деле непрочитанных нет.

SL_RU ★★★★
()

Круто надо попробовать, а то старое расширение в новой лисе не работает.

Wind ★★★
()

userscript в тамперманки на хроме не работает.

VM320:2 ERROR: Execution of script 'lorify-ng' failed! chrome.runtime.connect() called from a webpage must specify an Extension ID (string) for its first argument

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

Не понял, сделать то есть что если вкладка с уведомлениями уже открыта просто фокус на нее? Хорошо.

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

mandala

Ctrl+c не срабатывает для копипасты

Это баг, я уже чинится
Virtuos86

если выделить текст мышкой и нажать «>» (натурально, Shift+> в английской раскладке, разумеется), то выделенный текст вставится в форму ответа как уже отформатированнная цитата.
А если выделить никнейм и нажать «@», то вставится каст юзера. Беда в том, что так ни «>», ни «@» набрать в тексте уже не получается.

Да, все так кроме последнего - «>» и @ работают как шорткат только по выделенному тексту, когда просто печатаешь никакого действия не должно происходить (забыл про проверку на выделение в самой форме просто)

сделай по уму шоткаты, с помощью параметра «commands» в манифесте

Тогда в юзерскрипте не будет работать же, кроме того нам оно нужно только если пользователю доступна форма ответа на странице, а это вообще что то для управления действиями браузера скорее чем для управления контентом на странице. Для чего вообще KeyboardEvent в веб апи добавлен? Вот для как раз для этого, так что тут все нормально, не критикуй.

Те что числовые, это Enter, Backspace Tab они не имеют символа только код кнопки. А что делают внутри тега code ведут себя как простенький редактор кода, отступы переносят, скобки раскрывают итд итп

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

Ну так он и будет если темперманки поддерживает.

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

Беда с этими уведомлениями.
Как собственно и с превьюхами над ними надо бы подольше посидеть

uin ★★★
() автор топика
Ответ на: комментарий от uin
  • вкладка с уведомлениями уже где-то открыта среди вкладок — переносим фокус на нее;
  • открыты новая вкладка (about:newtab в FF) или стартовая страница — открываем в ней URL страницы с уведомлениями;
  • не удовлетворяются предыдущие два условия — создаем новую вкладку и открываем URL страницы с уведомлениями.
Virtuos86 ★★★★★
()
Ответ на: комментарий от Radjah

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

Нисколько не уничижаю работу эдди, вижу там несколько интересных кнопок (например list), надо посмотреть. Однако тег cut давно например не работает и в теге br я то же не вижу особо смысла.

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

Однако тег cut давно например не работает

Работает, я использовал пару месяцев назад, когда новость оформлял. Может, конечно, он только в Новостях и работает, но ведь работает :). Хотя и там он нужен только единожды, потому что одноразовый по своей сути.

и в теге br я то же не вижу особо смысла.

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

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

Ну так есть же настройка специальная User line breaks w/quoting

«User line breaks» только.
У меня такое ощущение, что раньше при ней не работало цитирование с помощью «>».
Сейчас проверил — работает, но память говорит, что раньше не работало и надо было BB-кодами обмазываться.

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

Давай, оформляй тему в lor-sourse, я буду рукать махать чтоб закрепили.

mandala ★★★★★
()

Добавь в гитхаб репозиторий файл с лицензией и списком авторов, а то что-то как-то сомнительно выглядит.

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

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

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

А вообще ты прав, отдельный файл лицензии быть обязан, если можно.

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