wallabag/templates/Entry/entries.html.twig

235 lines
13 KiB
Twig
Raw Normal View History

2024-02-18 23:03:14 +00:00
{% extends "layout.html.twig" %}
2015-08-04 14:18:15 +00:00
{% block head %}
{{ parent() }}
{% 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 %}
{% block title %}
2016-11-04 22:24:43 +00:00
{% set filter = '' %}
2016-10-26 13:49:44 +00:00
{% if tag is defined %}
{% set filter = tag.slug %}
2016-10-26 13:49:44 +00:00
{% endif %}
2016-11-05 14:24:42 +00:00
{% if searchTerm is defined and searchTerm is not empty %}
2016-11-04 22:24:43 +00:00
{% set filter = searchTerm %}
{% endif %}
2024-02-18 23:03:14 +00:00
{% include "Entry/_title.html.twig" with {'filter': filter} %}
{% endblock %}
2015-08-04 14:18:15 +00:00
{% block content %}
2023-12-25 20:42:08 +00:00
{% set current_path = path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) %}
2022-05-03 21:28:20 +00:00
{% set list_mode = app.user.config.listMode %}
{% set entries_with_archived_class_routes = ['tag_entries', 'search', 'all'] %}
{% set current_route = app.request.attributes.get('_route') %}
{% if current_route == 'homepage' %}
{% set current_route = 'unread' %}
2017-12-22 14:44:00 +00:00
{% endif %}
2023-12-25 20:42:08 +00:00
<form name="form_mass_action" action="{{ path('mass_action', {redirect: current_path}) }}" method="post">
2017-12-04 18:34:46 +00:00
<div class="results">
<div class="nb-results">
2023-08-05 22:39:13 +00:00
{{ 'entry.list.number_on_the_page'|trans({'%count%': entries.count}) }}
{% if entries.count > 0 %}
2023-12-25 20:42:08 +00:00
<a class="results-item" href="{{ path('switch_view_mode', {redirect: current_path}) }}"><i class="material-icons">{% if list_mode == 0 %}view_list{% else %}view_module{% endif %}</i></a>
{% endif %}
2024-03-23 14:34:02 +00:00
{% if entries.count > 0 and is_granted('EDIT_ENTRIES') %}
<label for="mass-action-inputs-displayed" class="mass-action-toggle results-item tooltipped" data-position="right" data-delay="50" data-tooltip="{{ 'entry.list.toggle_mass_action'|trans }}"><i class="material-icons">library_add_check</i></label>
{% endif %}
{% if app.user.config.feedToken %}
2024-02-18 23:03:14 +00:00
{% include "Entry/_feed_link.html.twig" %}
{% endif %}
</div>
2023-12-25 20:42:08 +00:00
{% if current_route == 'search' %}<div><a href="{{ path('tag_this_search', {'filter': searchTerm, 'currentRoute': app.request.get('currentRoute'), redirect: current_path}) }}" title="{{ 'entry.list.assign_search_tag'|trans }}">{{ 'entry.list.assign_search_tag'|trans }}</a></div>{% endif %}
{% if entries.getNbPages > 1 %}
2022-12-14 13:36:29 +00:00
{{ pagerfanta(entries, 'default_wallabag') }}
{% endif %}
</div>
{% if entries.count > 0 %}
2023-05-22 19:12:29 +00:00
<input id="mass-action-inputs-displayed" class="toggle-checkbox" type="checkbox" />
<div class="mass-action">
<div class="mass-action-group">
<input type="checkbox" class="entry-checkbox-input" data-toggle="[data-js='entry-checkbox']" data-js="checkboxes-toggle" />
2023-05-22 19:12:29 +00:00
<button class="mass-action-button btn cyan darken-1" type="submit" name="toggle-read" title="{{ 'entry.list.toogle_as_read'|trans }}"><i class="material-icons">done</i></button>
<button class="mass-action-button btn cyan darken-1" type="submit" name="toggle-star" title="{{ 'entry.list.toogle_as_star'|trans }}" ><i class="material-icons">star</i></button>
<button class="mass-action-button btn cyan darken-1" type="submit" name="delete" onclick="return confirm('{{ 'entry.confirm.delete_entries'|trans|escape('js') }}')" title="{{ 'entry.list.delete'|trans }}"><i class="material-icons">delete</i></button>
</div>
2023-05-22 19:12:29 +00:00
<div class="mass-action-tags">
2023-09-01 19:54:34 +00:00
<button class="btn cyan darken-1 mass-action-button mass-action-button--tags" type="submit" name="tag" title="{{ 'entry.list.add_tags'|trans }}"><i class="material-icons">label</i></button>
<input type="text" class="mass-action-tags-input" name="tags" placeholder="{{ 'entry.list.mass_action_tags_input_placeholder'|trans }}" />
2023-05-22 19:12:29 +00:00
</div>
</div>
<ol class="entries {% if list_mode == 1 %}collection{% else %}row entries-row data{% endif %}">
{% for entry in entries %}
<li id="entry-{{ entry.id|e }}" class="{% if list_mode != 0 %}col collection-item{% endif %} s12" data-entry-id="{{ entry.id|e }}" data-test="entry">
{% if list_mode == 1 %}
2024-02-18 23:03:14 +00:00
{% include "Entry/_card_list.html.twig" with {'entry': entry, 'currentRoute': current_route, 'routes': entries_with_archived_class_routes} only %}
{% elseif not entry.previewPicture is null and entry.mimetype starts with 'image/' %}
2024-02-18 23:03:14 +00:00
{% include "Entry/_card_full_image.html.twig" with {'entry': entry, 'currentRoute': current_route, 'routes': entries_with_archived_class_routes} only %}
{% else %}
2024-02-18 23:03:14 +00:00
{% include "Entry/_card_preview.html.twig" with {'entry': entry, 'currentRoute': current_route, 'routes': entries_with_archived_class_routes} only %}
{% endif %}
</li>
{% endfor %}
</ol>
{% endif %}
</form>
2015-08-12 19:55:44 +00:00
{% if entries.getNbPages > 1 %}
2017-12-04 18:34:46 +00:00
<div class="results">
2022-12-14 13:36:29 +00:00
{{ pagerfanta(entries, 'default_wallabag') }}
2017-12-04 18:34:46 +00:00
</div>
{% endif %}
<!-- Export -->
<div id="export" class="side-nav right-aligned">
2022-05-03 21:28:20 +00:00
{% set current_tag = null %}
{% if tag is defined %}
2022-05-03 21:28:20 +00:00
{% set current_tag = tag.slug %}
{% endif %}
2022-05-03 21:28:20 +00:00
{% set export_search_term = null %}
{% if searchTerm is defined %}
2022-05-03 21:28:20 +00:00
{% set export_search_term = searchTerm %}
{% endif %}
2023-06-29 15:10:23 +00:00
{% set entry = app.request.attributes.get('id') %}
2022-05-03 21:28:20 +00:00
{% set previous_route = app.request.attributes.get('currentRoute') %}
<h4 class="center">{{ 'entry.list.export_title'|trans }}</h4>
<ul>
2023-06-29 15:10:23 +00:00
{% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'epub', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">EPUB</a></li>{% endif %}
{% if craue_setting('export_pdf') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'pdf', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">PDF</a></li>{% endif %}
{% if craue_setting('export_json') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'json', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">JSON</a></li>{% endif %}
{% if craue_setting('export_csv') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'csv', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">CSV</a></li>{% endif %}
{% if craue_setting('export_txt') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'txt', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">TXT</a></li>{% endif %}
{% if craue_setting('export_xml') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'xml', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">XML</a></li>{% endif %}
2024-11-12 14:21:23 +00:00
{% if craue_setting('export_md') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'md', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">Markdown</a></li>{% endif %}
</ul>
</div>
2015-08-12 19:55:44 +00:00
<!-- Filters -->
2024-03-23 14:34:02 +00:00
{% if form is not null and is_granted('LIST_ENTRIES') %}
<div id="filters" class="side-nav right-aligned">
<form action="{{ path('all') }}">
2015-08-12 19:55:44 +00:00
<h4 class="center">{{ 'entry.filters.title'|trans }}</h4>
2015-08-12 19:55:44 +00:00
<div class="row">
{% if current_route != 'untagged' %}
<div class="col s12 center-align">
<a href="{{ path('untagged') }}">{{ 'tag.list.see_untagged_entries'|trans }}</a>
</div>
{% endif %}
2015-09-20 20:36:51 +00:00
<div class="col s12">
<label>{{ 'entry.filters.status_label'|trans }}</label>
2015-09-20 20:36:51 +00:00
</div>
<div class="input-field col s6 with-checkbox">
{{ form_widget(form.isArchived) }}
{{ form_label(form.isArchived) }}
2015-09-20 20:36:51 +00:00
</div>
2015-08-12 19:55:44 +00:00
2015-09-20 20:36:51 +00:00
<div class="input-field col s6 with-checkbox">
{{ form_widget(form.isStarred) }}
{{ form_label(form.isStarred) }}
2015-09-20 20:36:51 +00:00
</div>
<div class="input-field col s12 with-checkbox">
manage assets through npm first draft remote assetic totally work nearly there use at least nodejs > 0.12 use proper version of grunt bump nodejs version for travis update npm workaround for materialize install node 5.0 add grunt-cli baggy theme & cache node modules cache bower & npm make travis build assets on php7 only exclude installing node & npm if not needed & use bash clean & try to make icomoon work on baggy ready config for travis rebase make travis work more travis work impove travis & update deps add missing pixrem deps add module through oddly lost ui updates install latest nodejs add install_dev.sh, link local binaries for npm/bower/grunt ui improvements (mostly baggy) fix travis build no need to install on travis Add unread filter to entries pages Add the ability to filter for unread pages in the filters menu. Add unread filter test to EntryControllerTest Add a new test to the EntryControllerTest collection which checks that only entries which have not been archived (and are treated as "unread") are retrieved. Improve English translation Update FAQ -Fix grammar -Add notes about MTA, firewall, and SELinux Update installation instructions -Fix grammar -Add SELinux section add screenshots of android docu in English Fix the deletion of Tags/Entries relation when delete an entry Fix #2121 Move fixtures to the right place Display a message when saving an entry failed When saving an entry fail because of database error we previously just returned `false`. Now we got an error in the log and the displayed notice to the user is updated too. Change ManyToMany between entry & tag Following https://gist.github.com/Ocramius/3121916 Be sure to remove the related entity when removing an entity. Let say you have Entry -> EntryTag -> Tag. If you remove the entry: - before that commit, the EntryTag will stay (at least using SQLite). - with that commit, the related entity is removed Prepare wallabag 2.0.5 enforce older materialize version
2016-03-08 16:02:34 +00:00
{{ form_widget(form.isUnread) }}
{{ form_label(form.isUnread) }}
</div>
2021-08-30 13:34:34 +00:00
<div class="input-field col s12 with-checkbox">
2021-08-02 14:57:42 +00:00
{{ form_widget(form.isAnnotated) }}
{{ form_label(form.isAnnotated) }}
</div>
<div class="input-field col s12 with-checkbox">
{{ form_widget(form.isNotParsed) }}
{{ form_label(form.isNotParsed) }}
</div>
<div class="col s12">
<label>{{ 'entry.filters.preview_picture_help'|trans }}</label>
</div>
2015-09-12 15:08:12 +00:00
2015-09-20 20:36:51 +00:00
<div class="input-field col s12 with-checkbox">
2015-09-12 15:08:12 +00:00
{{ form_widget(form.previewPicture) }}
{{ form_label(form.previewPicture) }}
2015-09-12 15:08:12 +00:00
</div>
2017-06-10 13:00:52 +00:00
<div class="col s12">
<label>{{ 'entry.filters.is_public_help'|trans }}</label>
</div>
<div class="input-field col s12 with-checkbox">
{{ form_widget(form.isPublic) }}
{{ form_label(form.isPublic) }}
</div>
<div class="col s12">
{{ form_label(form.language) }}
</div>
<div class="input-field col s12">
{{ form_widget(form.language) }}
</div>
2016-11-18 14:09:21 +00:00
<div class="col s12">
{{ form_label(form.httpStatus) }}
</div>
<div class="input-field col s12">
{{ form_widget(form.httpStatus) }}
</div>
2015-08-12 19:55:44 +00:00
<div class="col s12">
{{ form_label(form.readingTime) }}
2015-08-12 19:55:44 +00:00
</div>
2017-06-10 13:00:52 +00:00
2015-08-12 19:55:44 +00:00
<div class="input-field col s6">
2015-08-12 20:52:40 +00:00
{{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
<label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
2015-08-12 19:55:44 +00:00
</div>
2017-06-10 13:00:52 +00:00
2015-08-12 19:55:44 +00:00
<div class="input-field col s6">
2015-08-12 20:52:40 +00:00
{{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
<label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
2015-08-12 19:55:44 +00:00
</div>
2015-08-25 22:24:33 +00:00
<div class="input-field col s12">
2022-05-03 21:28:20 +00:00
{{ form_widget(form.domainName, {'type': 'text', 'attr': {'placeholder': 'website.com'}}) }}
{{ form_label(form.domainName) }}
2015-08-19 12:55:39 +00:00
</div>
<div class="col s12">
{{ form_label(form.createdAt) }}
2015-08-17 00:12:14 +00:00
</div>
2015-08-18 13:26:45 +00:00
<div class="input-field col s6">
2022-05-03 21:28:20 +00:00
{{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value}}) }}
<label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
2015-08-18 13:26:45 +00:00
</div>
<div class="input-field col s6">
2022-05-03 21:28:20 +00:00
{{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value}}) }}
<label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
2015-08-18 13:26:45 +00:00
</div>
2015-08-12 19:55:44 +00:00
<div class="col s6">
<a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
2015-08-12 19:55:44 +00:00
</div>
<div class="col s6">
<button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
2015-08-12 19:55:44 +00:00
</div>
</div>
</form>
</div>
2016-04-14 13:03:22 +00:00
{% endif %}
2015-08-04 14:18:15 +00:00
{% endblock %}