Pull to refresh

Маленькие плюшки для сервиса Eventr.com

Lumber room
В топике я опишу простой способ немного улучшить сервис Eventr, не так давно описанный на Хабре. Этот сервис сразу заинтересовал меня своей идеей и я решил пристально следить за его развитием. А как можно следить не используя его? Так я и перенес все свои ленты из GoogleReader’а в этот сервис и начал пытаться пользоваться им как основным RSS-агрегатором.
Я не стану перечислять здесь все, на мой взгляд, детские болезни и ошибки, для этого есть фидбек, где я успел изрядно «надоесть» найденными багами или группа на Реформале для новых идей.

Сразу подчеркну: Я не имею отношения к команде разработчиков сервиса. Все (целых два) улучшения написаны мной для личного использования. И не являются официальными решениями сервиса.

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

Итак, что же я сделал:
  1. Кнопка для панели закладок Добавить в Eventr;
  2. Выделение лент и папок имеющих новые посты.

Добавить в Eventr


Часть первая: Браузерный парсер RSS.

Желаемое: Научить браузер воспринимать Eventr.com как RSS-агрегатор, куда можно передать фид.

Пример для GoogleChrome



Для Mozilla Firefox я не нашел способа. Искал механизм правки «приложений» для чтения RSS, но так и не нашел.

Для Google Chrome и его стандартного расширения от самой Google RSS Subscription Extension (от Google) все оказалось максимально просто и прозрачно: При выборе агрегатора, последним пунктом идет Menage... (Управление...)
image
там просто создаем новый пункт, указываем название Eventr и прописываем шаблон ссылки через который можно добавить поток.

http://eventr.com/stream/subscribe?url=%s

Где %s будет заменятся адресом фида.

Часть вторая: Eventr сам умеет искать фиды на странице — не будем мешать.

Изначально, я написал код закладки таким образом, что с текущей страницы выбирался первый найденный фид и передавался на Eventr, но в службе поддержки, мне любезно подсказали, что сайт сам умеет искать ленты на выбранном сайте/адресе. Так родилась кнопка которая вызывает в новом окне Eventr и предлагает добавить поток с текущего открытого сайта.
Код простой и незатейливый, не использующий потайные ходы в браузерах.
javascript:(
function(){
f = 'http://eventr.com/stream/discover?url=' + encodeURIComponent(window.location.href);
a = function(){
if (!window.open(f, 'eventr', 'location=yes,links=no,scrollbars=yes,toolbar=no,width=1024,height=1000'))
location.href = f;
};
if (/Firefox/.test(navigator.userAgent)) {
setTimeout(a, 0)
} else {
a()
}
})()


* This source code was highlighted with Source Code Highlighter.

Хоть сжимать столь маленький код смысла мало, но все же сжатый вариант:

javascript:(function(){f='http://eventr.com/stream/discover?url='+encodeURIComponent(window.location.href);a=function(){if(!window.open(f,'eventr','location=yes,links=no,scrollbars=yes,toolbar=no,width=1024,height=1000')) location.href = f;};if (/Firefox/.test(navigator.userAgent)){setTimeout(a, 0)}else{a()}})()

Те, кому лень сверять форматированный код со сжатым, могут скопировать форматированный, для браузера это не принципиально.

Если лента на переданной странице одна, то Eventr сразу добавляет её и отображает.

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

Выделение непрочитанных лент


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

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

image

Я снова не нашел ничего подходящего для Mozilla Firefox, но я честно искал, попробовал несколько разных дополнений (сейчас его поклонники закидают меня помидорами...), но ничего подходящего я не нашел, потому если кто в комментариях даст ссылку на аддон позволяющий выполнить JS-код сразу после загрузки страницы, я добавлю это к посту.

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

А пока — решение для Google Chrome.
Для этого нам понадобится аддон Персонализированный Веб который отлично позволяет модифицировать открываемые сайты. На странице описания аддона есть подробный список возможностей, потому сразу к делу.

Применять для URL:
^http://(www\.)?eventr.com/.+$

Т.к. сервис уже использует jQuery, то почему бы нам им не воспользоваться? Допишем JS-код к документу который будет каждый раз при открытии новой страницы искать пункты в дереве фидов у которых есть класс has-new.
Добавлять HTML:
<script>
$(document).ready(function(){
$('.group li').each(function(){
if($(this).hasClass('has-new')){
$('a:first span', this).css('color', '#4D1E1E').css('font-weight', 'bold');
}
});
});
</script>


* This source code was highlighted with Source Code Highlighter.

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

Очень надеюсь, что в скором времени, с выкатом обновлений сервиса, такие ухищрения уже будут не нужны. А пока — я пользуюсь. Если пригодится кому-то еще — буду рад.
Tags:eventrкастомизациярасширениясервисыjavascriptrssrss reader
Hubs: Lumber room
Total votes 11: ↑8 and ↓3 +5
Views223

Popular right now