forked from wallabag/wallabag
Changed RSS to Atom feed and improve paging
This commit is contained in:
committed by
Jeremy Benoist
parent
522e37ad27
commit
531c8d0a5c
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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 %}
|
||||
|
||||
@ -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 %}
|
||||
@ -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 %}
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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 %}
|
||||
|
||||
@ -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 %}
|
||||
|
||||
Reference in New Issue
Block a user