assets: ~
wallabag_core:
- version: 2.1.5
+ version: 2.1.6
paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb"
languages:
en: 'English'
rss_limit: 50
reading_speed: 1
cache_lifetime: 10
+ action_mark_as_read: 1
+ list_mode: 1
fetching_error_message: |
wallabag can't retrieve contents for this article. Please <a href="http://doc.wallabag.org/en/master/user/errors_during_fetching.html#how-can-i-help-to-fix-that">troubleshoot this issue</a>.
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
- charset: UTF8
+ charset: "%database_charset%"
path: "%database_path%"
unix_socket: "%database_socket%"
server_version: 5.6
fos_rest:
param_fetcher_listener: true
body_listener: true
- format_listener: true
view:
+ mime_types:
+ csv:
+ - 'text/csv'
+ - 'text/plain'
+ pdf:
+ - 'application/pdf'
+ epub:
+ - 'application/epub+zip'
+ mobi:
+ - 'application/x-mobipocket-ebook'
view_response_listener: 'force'
formats:
xml: true
- json : true
+ json: true
+ txt: true
+ csv: true
+ pdf: true
+ epub: true
+ mobi: true
templating_formats:
html: true
force_redirects:
default_engine: twig
routing_loader:
default_format: json
+ format_listener:
+ enabled: true
+ rules:
+ - { path: "^/api/entries/([0-9]+)/export.(.*)", priorities: ['epub', 'mobi', 'pdf', 'txt', 'csv'], fallback_format: json, prefer_extension: false }
+ - { path: "^/api", priorities: ['json', 'xml'], fallback_format: json, prefer_extension: false }
+ - { path: "^/annotations", priorities: ['json', 'xml'], fallback_format: json, prefer_extension: false }
+ # for an unknown reason, EACH REQUEST goes to FOS\RestBundle\EventListener\FormatListener
+ # so we need to add custom rule for custom api export but also for all other routes of the application...
+ - { path: '^/', priorities: ['text/html', '*/*'], fallback_format: html, prefer_extension: false }
nelmio_api_doc:
sandbox:
enabled: false
+ cache:
+ enabled: true
name: wallabag API documentation
nelmio_cors:
from_email:
address: "%from_email%"
sender_name: wallabag
+
fos_oauth_server:
db_driver: orm
client_class: Wallabag\ApiBundle\Entity\Client
refresh_token_class: Wallabag\ApiBundle\Entity\RefreshToken
auth_code_class: Wallabag\ApiBundle\Entity\AuthCode
service:
- user_provider: fos_user.user_manager
+ user_provider: fos_user.user_provider.username_email
options:
refresh_token_lifetime: 1209600
executors:
doctrine: true
-lexik_maintenance:
- authorized:
- ips: ['127.0.0.1']
- driver:
- ttl: 3600
- class: 'Lexik\Bundle\MaintenanceBundle\Drivers\DatabaseDriver'
- response:
- code: 503
- status: "wallabag Service Temporarily Unavailable"
-
old_sound_rabbit_mq:
connections:
default:
exchange_options:
name: 'wallabag.import.readability'
type: topic
+ import_pinboard:
+ connection: default
+ exchange_options:
+ name: 'wallabag.import.pinboard'
+ type: topic
import_instapaper:
connection: default
exchange_options:
queue_options:
name: 'wallabag.import.pocket'
callback: wallabag_import.consumer.amqp.pocket
+ qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
import_readability:
connection: default
exchange_options:
queue_options:
name: 'wallabag.import.readability'
callback: wallabag_import.consumer.amqp.readability
+ qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
import_instapaper:
connection: default
exchange_options:
queue_options:
name: 'wallabag.import.instapaper'
callback: wallabag_import.consumer.amqp.instapaper
+ qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
+ import_pinboard:
+ connection: default
+ exchange_options:
+ name: 'wallabag.import.pinboard'
+ type: topic
+ queue_options:
+ name: 'wallabag.import.pinboard'
+ callback: wallabag_import.consumer.amqp.pinboard
+ qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
import_wallabag_v1:
connection: default
exchange_options:
queue_options:
name: 'wallabag.import.wallabag_v1'
callback: wallabag_import.consumer.amqp.wallabag_v1
+ qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
import_wallabag_v2:
connection: default
exchange_options:
queue_options:
name: 'wallabag.import.wallabag_v2'
callback: wallabag_import.consumer.amqp.wallabag_v2
+ qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
import_firefox:
connection: default
exchange_options:
queue_options:
name: 'wallabag.import.firefox'
callback: wallabag_import.consumer.amqp.firefox
+ qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
import_chrome:
connection: default
exchange_options:
queue_options:
name: 'wallabag.import.chrome'
callback: wallabag_import.consumer.amqp.chrome
+ qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
+
+fos_js_routing:
+ routes_to_expose:
+ - homepage
+ - starred
+ - archive
+ - all
+ - tag
+ - config
+ - import
+ - developer
+ - howto
+ - fos_user_security_logout
+ - new
{% extends "WallabagCoreBundle::layout.html.twig" %}
{% block title %}
- {% set currentTag = '' %}
+ {% set filter = '' %}
{% if tag is defined %}
- {% set currentTag = tag %}
+ {% set filter = tag %}
{% endif %}
- {% include "@WallabagCore/themes/common/Entry/_title.html.twig" with {'currentTag': currentTag} %}
+ {% if searchTerm is defined and searchTerm is not empty %}
+ {% set filter = searchTerm %}
+ {% endif %}
+ {% include "@WallabagCore/themes/common/Entry/_title.html.twig" with {'filter': filter} %}
{% endblock %}
{% block content %}
+ {% set listMode = app.user.config.listMode %}
<div class="results">
<div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
<div class="pagination">
- <i class="btn-clickable download-btn material-icons md-36">file_download</i>
- <i class="btn-clickable filter-btn material-icons md-36">filter_list</i>
+ <a href="{{ path('switch_view_mode') }}"><i class="listMode-btn material-icons md-36">{% if listMode == 0 %}list{% else %}view_module{% endif %}</i></a>
+ <i class="btn-clickable download-btn material-icons md-36 js-export-action">file_download</i>
+ <i class="btn-clickable filter-btn material-icons md-36 js-filters-action">filter_list</i>
{% if entries.getNbPages > 1 %}
{{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }}
{% endif %}
</div>
{% for entry in entries %}
- <div id="entry-{{ entry.id|e }}" class="entry">
+ <div id="entry-{{ entry.id|e }}" class="{% if listMode == 0 %}entry{% else %}listmode entry{% endif %}">
- <h2><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|raw }}">{{ entry.title|raw }}</a></h2>
+ <h2><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|e|raw }}">{{ entry.title|e|raw }}</a></h2>
{% set readingTime = entry.readingTime / app.user.config.readingSpeed %}
<div class="estimatedTime">
<li><a title="{{ 'entry.list.delete'|trans }}" class="tool delete icon-trash icon" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.list.delete'|trans }}</span></a></li>
<li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.list.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon-link icon"><span>{{ entry.domainName|removeWww }}</span></a></li>
</ul>
- {% if entry.previewPicture is null %}
+ {% if (entry.previewPicture is null or listMode == 1) %}
<ul class="card-entry-tags">
{% for tag in entry.tags %}
<li><a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{ tag.label }}</a></li>
{% endfor %}
</ul>
- <p>{{ entry.content|striptags|slice(0, 300) }}…</p>
+ <p {% if listMode == 1 %}class="hide"{% endif %}>{{ entry.content|striptags|slice(0, 300) }}…</p>
{% else %}
<ul class="card-entry-labels">
{% for tag in entry.tags | slice(0, 3) %}
<li><a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{ tag.label }}</a></li>
{% endfor %}
</ul>
- <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" />
+ <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|e|raw }}" />
{% endif %}
</div>
{% endfor %}
</div>
</div>
+ <div id="filter-http-status" class="filter-group">
+ {{ form_label(form.httpStatus) }}
+ <div class="input-field ">
+ {{ form_widget(form.httpStatus) }}
+ </div>
+ </div>
+
<div id="filter-reading-time" class="filter-group">
<div class="">
{{ form_label(form.readingTime) }}
{% extends "WallabagCoreBundle::layout.html.twig" %}
- {% block title %}{{ entry.title|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
+ {% block title %}{{ entry.title|e|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
{% block content %}
<div id="article">
<header class="mbm">
- <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" class="nostyle" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
+ <h1>{{ entry.title|e|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" class="nostyle" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
</header>
<div id="article_toolbar">
<ul class="links">
<li class="topPosF"><a href="#top" title="{{ 'entry.view.left_menu.back_to_top'|trans }}" class="tool top icon icon-arrow-up-thick"><span>{{ 'entry.view.left_menu.set_as_read'|trans }}</span></a></li>
- <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.domainName|removeWww }}</span></a></li>
+ <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link original"><span>{{ entry.domainName|removeWww }}</span></a></li>
<li><a title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" class="tool icon icon-reload" href="{{ path('reload_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span></a></li>
{% set markAsReadLabel = 'entry.view.left_menu.set_as_unread' %}
{% set markAsReadLabel = 'entry.view.left_menu.set_as_read' %}
{% endif %}
- <li><a title="{{ markAsReadLabel|trans }}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{{ markAsReadLabel|trans }}</span></a></li>
- <li><a title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span></a></li>
+ <li><a title="{{ markAsReadLabel|trans }}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %} markasread" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{{ markAsReadLabel|trans }}</span></a></li>
+ <li><a title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %} favorite" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span></a></li>
<li><a id="nav-btn-add-tag" class="tool icon icon-price-tags" title="{{ 'entry.view.left_menu.add_a_tag'|trans }}"><span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span></a></li>
<li><a title="{{ 'entry.view.left_menu.delete'|trans }}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.delete'|trans }}</span></a></li>
{% if craue_setting('share_public') %}
{% endif %}
{% if craue_setting('share_twitter') %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="Tweet"><span>Tweet</span></a></li>{% endif %}
{% if craue_setting('share_mail') %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="Email"><span>Email</span></a></li>{% endif %}
- {% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" target="_blank" class="tool icon-image icon-image--shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %}
+ {% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&tags={{ entry.tags|join(',')|url_encode }}" target="_blank" class="tool icon-image icon-image--shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %}
{% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}¬es=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="diaspora"><span>diaspora</span></a></li>{% endif %}
+ {% if craue_setting('share_unmark') %}<li><a href="{{ craue_setting('unmark_url') }}/mark/add?url={{ entry.url|url_encode }}&title={{entry.title|url_encode}}&v=6" target="_blank" class="tool unmark icon-image icon-image--unmark" title="unmark"><span>unmark.it</span></a></li>{% endif %}
{% if craue_setting('carrot') %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="carrot"><span>Carrot</span></a></li>{% endif %}
{% if craue_setting('show_printlink') %}<li><a title="{{ 'entry.view.left_menu.print'|trans }}" class="tool icon icon-print" href="javascript: window.print();"><span>{{ 'entry.view.left_menu.print'|trans }}</span></a></li>{% endif %}
{% if craue_setting('export_epub') %}<li><a href="?epub&method=id&value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
</aside>
</div>
{% if entry.previewPicture is not null %}
- <div><img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" /></div>
+ <div><img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|e|raw }}" /></div>
{% endif %}
<article>
{{ entry.content | raw }}
<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('unread') }}</link>
+ <link>{{ url(type) }}</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('D, d M Y H:i:s') }}</pubDate>
<generator>wallabag</generator>
<description>wallabag {{type}} elements</description>
{% for entry in entries %}
<item>
- <title><![CDATA[{{ entry.title }}]]></title>
+ <title><![CDATA[{{ entry.title|e }}]]></title>
<source url="{{ url('view', { 'id': entry.id }) }}">wallabag</source>
<link>{{ entry.url }}</link>
<guid>{{ entry.url }}</guid>
{% extends "WallabagCoreBundle::layout.html.twig" %}
- {% block title %}{{ entry.title|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
+ {% block title %}{{ entry.title|e|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
{% block body_class %}entry{% endblock %}
</li>
<li class="bold border-bottom hide-on-med-and-down">
- <a class="waves-effect collapsible-header" href="{{ entry.url|e }}">
+ <a class="waves-effect collapsible-header original" href="{{ entry.url|e }}" target="_blank">
<i class="material-icons small">link</i>
<span>{{ 'entry.view.left_menu.view_original_article'|trans }}</span>
</a>
<div class="collapsible-body"></div>
</li>
- <li class="bold hide-on-med-and-down">
+ <li class="bold">
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload">
<i class="material-icons small">autorenew</i>
<span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span>
{% endif %}
<li class="bold hide-on-med-and-down">
- <a class="waves-effect collapsible-header" title="{{ markAsReadLabel|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
+ <a class="waves-effect collapsible-header markasread" title="{{ markAsReadLabel|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
<i class="material-icons small">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}</i>
<span>{{ markAsReadLabel|trans }}</span>
</a>
</li>
<li class="bold hide-on-med-and-down">
- <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
+ <a class="waves-effect collapsible-header favorite" title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
<i class="material-icons spall">{% if entry.isStarred == 0 %}star_outline{% else %}star{% endif %}</i>
<span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span>
</a>
<div class="collapsible-body"></div>
</li>
- <li class="bold border-bottom hide-on-med-and-down">
- <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
+ <li class="bold border-bottom">
+ <a class="waves-effect collapsible-header delete" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
<i class="material-icons small">delete</i>
<span>{{ 'entry.view.left_menu.delete'|trans }}</span>
</a>
<div class="collapsible-body"></div>
</li>
- <li class="bold border-bottom hide-on-med-and-down">
+ <li class="bold border-bottom">
<a class="waves-effect collapsible-header" id="nav-btn-add-tag">
<i class="material-icons small">label_outline</i>
<span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span>
{% endif %}
{% if craue_setting('share_shaarli') %}
<li>
- <a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" target="_blank">
+ <a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&tags={{ entry.tags|join(',')|url_encode }}" target="_blank">
<i class="tool icon-image icon-image--shaarli" title="shaarli"></i>
<span>shaarli</span>
</a>
</a>
</li>
{% endif %}
+ {% if craue_setting('share_unmark') %}
+ <li>
+ <a href="{{ craue_setting('unmark_url') }}/mark/add?url={{ entry.url|url_encode }}&title={{entry.title|url_encode}}&v=6" target="_blank">
+ <i class="tool icon-image icon-image--unmark" title="unmark"></i>
+ <span>unmark.it</span>
+ </a>
+ </li>
+ {% endif %}
{% if craue_setting('carrot') %}
<li>
<a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" target="_blank" title="carrot">
</div>
</li>
- <li class="bold hide-on-large-only">
- <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
- <i class="material-icons small">delete</i>
- <span>{{ 'entry.view.left_menu.delete'|trans }}</span>
- </a>
- <div class="collapsible-body"></div>
- </li>
-
<li class="bold">
<a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.description'|trans }}">
<i class="material-icons small">error</i>
{% block content %}
<div id="article">
<header class="mbm">
- <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
+ <h1>{{ entry.title|e|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
</header>
<aside>
<ul class="tools">
<li>
- {% set readingTime = entry.readingTime / app.user.config.readingSpeed %}
- <i class="material-icons">timer</i>
- {% if readingTime > 0 %}
- {{ 'entry.list.reading_time_minutes_short'|trans({'%readingTime%': readingTime|round}) }}
- {% else %}
- {{ 'entry.list.reading_time_less_one_minute_short'|trans|raw }}
- {% endif %}
+ {% include "@WallabagCore/themes/material/Entry/_reading_time.html.twig" with {'entry': entry} only %}
</li>
<li>
<i class="material-icons" title="{{ 'entry.view.created_at'|trans }}">today</i>
<article>
{{ entry.content | raw }}
</article>
+
+ <div class="fixed-action-btn horizontal click-to-toggle hide-on-large-only">
+ <a class="btn-floating btn-large">
+ <i class="material-icons">menu</i>
+ </a>
+ <ul>
+ <li><a class="btn-floating" href="{{ path('archive_entry', { 'id': entry.id }) }}"><i class="material-icons">done</i></a></li>
+ <li><a class="btn-floating" href="{{ path('star_entry', { 'id': entry.id }) }}"><i class="material-icons">star_outline</i></a></li>
+ <li><a class="btn-floating" href="{{ path('delete_entry', { 'id': entry.id }) }}"><i class="material-icons">delete</i></a></li>
+ </ul>
+ </div>
</div>
<script id="annotationroutes" type="application/json">