Changed RSS to Atom feed and improve paging

This commit is contained in:
Thomas Citharel
2017-06-13 18:48:10 +02:00
committed by Jeremy Benoist
parent 522e37ad27
commit 531c8d0a5c
57 changed files with 635 additions and 564 deletions

View File

@ -94,43 +94,43 @@
{{ form_rest(form.config) }}
</form>
<h2>{{ 'config.tab_menu.rss'|trans }}</h2>
<h2>{{ 'config.tab_menu.feed'|trans }}</h2>
{{ form_start(form.rss) }}
{{ form_errors(form.rss) }}
{{ form_start(form.feed) }}
{{ form_errors(form.feed) }}
<div class="row">
{{ 'config.form_rss.description'|trans }}
{{ 'config.form_feed.description'|trans }}
</div>
<fieldset class="w500p inline">
<div class="row">
<label>{{ 'config.form_rss.token_label'|trans }}</label>
{% if rss.token %}
{{ rss.token }}
<label>{{ 'config.form_feed.token_label'|trans }}</label>
{% if feed.token %}
{{ feed.token }}
{% else %}
<em>{{ 'config.form_rss.no_token'|trans }}</em>
<em>{{ 'config.form_feed.no_token'|trans }}</em>
{% endif %}
<a href="{{ path('generate_token') }}">
{% if rss.token %}
{{ 'config.form_rss.token_reset'|trans }}
{% if feed.token %}
{{ 'config.form_feed.token_reset'|trans }}
{% else %}
{{ 'config.form_rss.token_create'|trans }}
{{ 'config.form_feed.token_create'|trans }}
{% endif %}
</a>
</div>
</fieldset>
{% if rss.token %}
{% if feed.token %}
<fieldset class="w500p inline">
<div class="row">
<label>{{ 'config.form_rss.rss_links'|trans }}</label>
<label>{{ 'config.form_feed.feed_links'|trans }}</label>
<ul>
<li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li>
<li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li>
<li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li>
<li><a href="{{ path('all_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.all'|trans }}</a></li>
<li><a href="{{ path('unread_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.unread'|trans }}</a></li>
<li><a href="{{ path('starred_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.starred'|trans }}</a></li>
<li><a href="{{ path('archive_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.archive'|trans }}</a></li>
<li><a href="{{ path('all_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.all'|trans }}</a></li>
</ul>
</div>
</fieldset>
@ -138,13 +138,13 @@
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.rss.rss_limit) }}
{{ form_errors(form.rss.rss_limit) }}
{{ form_widget(form.rss.rss_limit) }}
{{ form_label(form.feed.feed_limit) }}
{{ form_errors(form.feed.feed_limit) }}
{{ form_widget(form.feed.feed_limit) }}
</div>
</fieldset>
{{ form_rest(form.rss) }}
{{ form_rest(form.feed) }}
</form>
<h2>{{ 'config.tab_menu.user_info'|trans }}</h2>

View File

@ -2,8 +2,8 @@
{% block head %}
{{ parent() }}
{% if tag is defined and app.user.config.rssToken %}
<link rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" />
{% if tag is defined and app.user.config.feedToken %}
<link rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" />
{% endif %}
{% endblock %}
@ -28,8 +28,8 @@
<div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
<div class="pagination">
<a href="{{ path('switch_view_mode') }}"><i class="listMode-btn material-icons md-24">{% if listMode == 0 %}list{% else %}view_module{% endif %}</i></a>
{% if app.user.config.rssToken %}
{% include "@WallabagCore/themes/common/Entry/_rss_link.html.twig" %}
{% if app.user.config.feedToken %}
{% include "@WallabagCore/themes/common/Entry/_feed_link.html.twig" %}
{% endif %}
{% if currentRoute in ['unread', 'starred', 'archive', 'untagged', 'all'] %}
<a href="{{ path('random_entry', { 'type': currentRoute }) }}"><i class="btn-clickable material-icons md-24 js-random-action">casino</i></a>

View File

@ -22,7 +22,7 @@
</a>
{% endif %}
{% if app.user.config.rssToken %}
<a rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" class="right">
<a rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" class="right">
<i class="material-icons md-24">rss_feed</i>
</a>
{% endif %}

View File

@ -0,0 +1,11 @@
{% if tag is defined %}
<a rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" class="right"><i class="material-icons md-24">rss_feed</i></a>
{% elseif currentRoute in ['homepage', 'unread', 'starred', 'archive', 'all'] %}
{% set feedRoute = currentRoute %}
{% if currentRoute == 'homepage' %}
{% set feedRoute = 'unread' %}
{% endif %}
{% set feedRoute = feedRoute ~ '_feed' %}
<a rel="alternate" type="application/atom+xml" href="{{ path(feedRoute, {'username': app.user.username, 'token': app.user.config.feedToken}) }}" class="right"><i class="material-icons">rss_feed</i></a>
{% endif %}

View File

@ -1,11 +0,0 @@
{% if tag is defined %}
<a rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" class="right"><i class="material-icons md-24">rss_feed</i></a>
{% elseif currentRoute in ['homepage', 'unread', 'starred', 'archive', 'all'] %}
{% set rssRoute = currentRoute %}
{% if currentRoute == 'homepage' %}
{% set rssRoute = 'unread' %}
{% endif %}
{% set rssRoute = rssRoute ~ '_rss' %}
<a rel="alternate" type="application/rss+xml" href="{{ path(rssRoute, {'username': app.user.username, 'token': app.user.config.rssToken}) }}" class="right"><i class="material-icons">rss_feed</i></a>
{% endif %}

View File

@ -1,34 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<title>wallabag - {{ type }} feed</title>
<link>{{ url_html }}</link>
<link rel="self" href="{{ app.request.uri }}"/>
{% if entries.hasPreviousPage -%}
<link rel="previous" href="{{ url }}?page={{ entries.previousPage }}"/>
{% endif -%}
{% if entries.hasNextPage -%}
<link rel="next" href="{{ url }}?page={{ entries.nextPage }}"/>
{% endif -%}
<link rel="last" href="{{ url }}?page={{ entries.nbPages }}"/>
<pubDate>{{ "now"|date(constant('DATE_RSS')) }}</pubDate>
<generator>wallabag</generator>
<description>wallabag {{ type }} elements</description>
{% for entry in entries %}
<item>
<title><![CDATA[{{ entry.title|e }}]]></title>
<source url="{{ url('view', { 'id': entry.id }) }}">wallabag</source>
<link>{{ entry.url }}</link>
<guid>{{ entry.url }}</guid>
<pubDate>{{ entry.createdAt|date(constant('DATE_RSS')) }}</pubDate>
<description>
<![CDATA[{%- if entry.readingTime > 0 -%}{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}{%- else -%}{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}{%- endif %}{{ entry.content|raw -}}]]>
</description>
</item>
<feed xmlns="http://www.w3.org/2005/Atom">
{% if type != 'tag' %}
<title>wallabag {{type}} feed</title>
<subtitle type="html">Atom feed for {{ type }} entries</subtitle>
<id>wallabag:{{ domainName | removeScheme | removeWww }}:{{ user }}:{{ type }}</id>
<link rel="alternate" type="text/html" href="{{ url(type) }}"/>
{% else %}
<id>wallabag:{{ domainName | removeScheme | removeWww }}:{{ user }}:{{ type }}:{{ tag }}</id>
<link rel="alternate" type="text/html" href="{{ url('tag_entries', {'slug': tag}) }}"/>
<title>wallabag — {{type}} {{ tag }} feed</title>
<subtitle type="html">Atom feed for entries tagged with {{ tag }}</subtitle>
{% endif %}
{% if entries | length > 0 %}
<updated>{{ (entries | first).createdAt | date('c') }}</updated> {# Indicates the last time the feed was modified in a significant way. #}
{% endif %}
<link rel="self" type="application/atom+xml" href="{{ app.request.uri }}"/>
{% if entries.hasPreviousPage %}
<link rel="previous" href="{{ url }}/{{ entries.previousPage }}"/>
{% endif -%}
{% if entries.hasNextPage %}
<link rel="next" href="{{ url }}/{{ entries.nextPage }}"/>
{% endif -%}
<link rel="last" href="{{ url }}/{{ entries.nbPages }}"/>
<generator uri="https://wallabag.org" version="{{ version }}">wallabag</generator>
<author>
<name>{{ user }}</name>
</author>
<icon>{{ asset('favicon.ico') }}</icon>
<logo>{{ asset('bundles/wallabagcore/themes/_global/img/logo-square.png') }}</logo>
{% for entry in entries %}
<entry>
<title><![CDATA[{{ entry.title|e }}]]></title>
<link rel="alternate" type="text/html"
href="{{ url('view', {'id': entry.id}) }}"/>
<link rel="via">{{ entry.url }}</link>
<id>wallabag:{{ domainName | removeScheme | removeWww }}:{{ user }}:entry:{{ entry.id }}</id>
<updated>{{ entry.updatedAt|date('c') }}</updated>
<published>{{ entry.createdAt|date('c') }}</published>
{% for tag in entry.tags %}
<category term="{{ tag.slug }}" label="{{ tag.label }}" />
{% endfor %}
</channel>
</rss>
{% for author in entry.publishedBy %}
<author>
<name>{{ author }}</name>
</author>
{% endfor %}
<content type="html" {% if entry.language %}xml:lang="{{ entry.language[:2] }}"{% endif %}>
<![CDATA[{%- if entry.readingTime > 0 -%}{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}{%- else -%}{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}{%- endif %}{{ entry.content|raw -}}]]>
</content>
</entry>
{% endfor %}
</feed>

View File

@ -21,7 +21,7 @@
<div class="card-action">
<ul>
<li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
<li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li>
<li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.feed'|trans }}</a></li>
<li><a href="{{ path('config') }}#set5">{{ 'quickstart.more'|trans }}</a></li>
</ul>
</div>

View File

@ -12,7 +12,7 @@
<div class="div_tabs col s12">
<ul class="tabs">
<li class="tab col s12 m6 l3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set2">{{ 'config.tab_menu.rss'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set2">{{ 'config.tab_menu.feed'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li>
<li class="tab col s12 m6 l3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li>
@ -122,42 +122,42 @@
</div>
<div id="set2" class="col s12">
{{ form_start(form.rss) }}
{{ form_errors(form.rss) }}
{{ form_start(form.feed) }}
{{ form_errors(form.feed) }}
<div class="row">
<div class="input-field col s12">
{{ 'config.form_rss.description'|trans }}
{{ 'config.form_feed.description'|trans }}
</div>
</div>
<div class="row">
<div class="col s12">
<h6 class="grey-text">{{ 'config.form_rss.token_label'|trans }}</h6>
<h6 class="grey-text">{{ 'config.form_feed.token_label'|trans }}</h6>
<div>
{% if rss.token %}
{{ rss.token }}
{% if feed.token %}
{{ feed.token }}
{% else %}
<em>{{ 'config.form_rss.no_token'|trans }}</em>
<em>{{ 'config.form_feed.no_token'|trans }}</em>
{% endif %}
<a href="{{ path('generate_token') }}">
{% if rss.token %}
{{ 'config.form_rss.token_reset'|trans }}
{% if feed.token %}
{{ 'config.form_feed.token_reset'|trans }}
{% else %}
{{ 'config.form_rss.token_create'|trans }}
{{ 'config.form_feed.token_create'|trans }}
{% endif %}</a>
</div>
</div>
</div>
{% if rss.token %}
{% if feed.token %}
<div class="row">
<div class="col s12">
<h6 class="grey-text">{{ 'config.form_rss.rss_links'|trans }}</h6>
<h6 class="grey-text">{{ 'config.form_feed.feed_links'|trans }}</h6>
<ul>
<li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li>
<li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li>
<li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li>
<li><a href="{{ path('all_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.all'|trans }}</a></li>
<li><a href="{{ path('unread_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.unread'|trans }}</a></li>
<li><a href="{{ path('starred_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.starred'|trans }}</a></li>
<li><a href="{{ path('archive_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.archive'|trans }}</a></li>
<li><a href="{{ path('all_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.all'|trans }}</a></li>
</ul>
</div>
</div>
@ -165,14 +165,14 @@
<div class="row">
<div class="input-field col s12">
{{ form_label(form.rss.rss_limit) }}
{{ form_errors(form.rss.rss_limit) }}
{{ form_widget(form.rss.rss_limit) }}
{{ form_label(form.feed.feed_limit) }}
{{ form_errors(form.feed.feed_limit) }}
{{ form_widget(form.feed.feed_limit) }}
</div>
</div>
{{ form_widget(form.rss.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
{{ form_rest(form.rss) }}
{{ form_widget(form.feed.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
{{ form_rest(form.feed) }}
</form>
</div>

View File

@ -2,8 +2,8 @@
{% block head %}
{{ parent() }}
{% if tag is defined and app.user.config.rssToken %}
<link rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" />
{% if tag is defined and app.user.config.feedToken %}
<link rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" />
{% endif %}
{% endblock %}
@ -28,8 +28,8 @@
<div class="nb-results">
{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}
<a href="{{ path('switch_view_mode') }}"><i class="material-icons">{% if listMode == 0 %}view_list{% else %}view_module{% endif %}</i></a>
{% if app.user.config.rssToken %}
{% include "@WallabagCore/themes/common/Entry/_rss_link.html.twig" %}
{% if app.user.config.feedToken %}
{% include "@WallabagCore/themes/common/Entry/_feed_link.html.twig" %}
{% endif %}
</div>
{% if entries.getNbPages > 1 %}

View File

@ -26,7 +26,7 @@
</a>
{% endif %}
{% if app.user.config.rssToken %}
<a rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" class="card-tag-rss"><i class="material-icons">rss_feed</i></a>
<a rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" class="card-tag-rss"><i class="material-icons">rss_feed</i></a>
{% endif %}
</li>
{% endfor %}