forked from wallabag/wallabag
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
This commit is contained in:
@ -41,10 +41,6 @@
|
||||
{% block css %}
|
||||
{% endblock %}
|
||||
{% block scripts %}
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/_global/js/jquery-2.0.3.min.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/_global/js/jquery.cookie.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/_global/js/bookmarklet.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/_global/js/annotator.min.js') }}"></script>
|
||||
{% endblock %}
|
||||
|
||||
<title>wallabag - {% block title %}{% endblock %}</title>
|
||||
|
||||
@ -204,6 +204,90 @@
|
||||
|
||||
{{ form_rest(form.new_tagging_rule) }}
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<h4>{{ 'config.form_rules.faq.title'|trans }}</h4>
|
||||
|
||||
<h5>{{ 'config.form_rules.faq.tagging_rules_definition_title'|trans }}</h5>
|
||||
<p class="help">{{ 'config.form_rules.faq.tagging_rules_definition_description'|trans|raw }}</p>
|
||||
|
||||
<h5>{{ 'config.form_rules.faq.how_to_use_them_title'|trans }}</h5>
|
||||
<p class="help">{{ 'config.form_rules.faq.how_to_use_them_description'|trans|raw }}</p>
|
||||
|
||||
<h5>{{ 'config.form_rules.faq.variables_available_title'|trans }}</h5>
|
||||
<p class="help">
|
||||
{{ 'config.form_rules.faq.variables_available_description'|trans }}
|
||||
|
||||
<table class="bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ 'config.form_rules.faq.variable_description.label'|trans }}</th>
|
||||
<th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
|
||||
<th>{{ 'config.form_rules.faq.operator_description.label'|trans }}</th>
|
||||
<th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>title</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.title'|trans }}</td>
|
||||
<td><=</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.less_than'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>url</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.url'|trans }}</td>
|
||||
<td><</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.strictly_less_than'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>isArchived</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.isArchived'|trans }}</td>
|
||||
<td>=></td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.greater_than'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>isStarred</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.isStarred'|trans }}</td>
|
||||
<td>></td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.strictly_greater_than'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.content'|trans }}</td>
|
||||
<td>=</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.equal_to'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>language</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.language'|trans }}</td>
|
||||
<td>!=</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.not_equal_to'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mimetype</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.mimetype'|trans }}</td>
|
||||
<td>OR</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.or'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>readingTime</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.readingTime'|trans }}</td>
|
||||
<td>AND</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.and'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>domainName</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.domainName'|trans }}</td>
|
||||
<td>matches</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.matches'|trans|raw }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
|
||||
@ -34,7 +34,27 @@
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<aside id="filter-form" class="">
|
||||
|
||||
<!-- Export -->
|
||||
<aside id="download-form">
|
||||
{% set currentRoute = app.request.attributes.get('_route') %}
|
||||
{% if currentRoute == 'homepage' %}
|
||||
{% set currentRoute = 'unread' %}
|
||||
{% endif %}
|
||||
<h2>{{ 'entry.list.export_title'|trans }}</h2>
|
||||
<a href="javascript: void(null);" id="download-form-close" class="close-button--popup close-button">×</a>
|
||||
<ul>
|
||||
{% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'epub' }) }}">EPUB</a></li>{% endif %}
|
||||
{% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'mobi' }) }}">MOBI</a></li>{% endif %}
|
||||
{% if craue_setting('export_pdf') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'pdf' }) }}">PDF</a></li>{% endif %}
|
||||
{% if craue_setting('export_csv') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'json' }) }}">JSON</a></li>{% endif %}
|
||||
{% if craue_setting('export_json') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'csv' }) }}">CSV</a></li>{% endif %}
|
||||
{% if craue_setting('export_txt') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'txt' }) }}">TXT</a></li>{% endif %}
|
||||
{% if craue_setting('export_xml') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'xml' }) }}">XML</a></li>{% endif %}
|
||||
</ul>
|
||||
</aside>
|
||||
<!-- Filter -->
|
||||
<aside id="filter-form">
|
||||
<form method="get" action="{{ path('all') }}">
|
||||
<h2>{{ 'entry.filters.title'|trans }}</h2>
|
||||
<a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">×</a>
|
||||
@ -53,6 +73,11 @@
|
||||
{{ form_label(form.isStarred) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field">
|
||||
{{ form_widget(form.isUnread) }}
|
||||
{{ form_label(form.isUnread) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field">
|
||||
{{ form_widget(form.previewPicture) }}
|
||||
{{ form_label(form.previewPicture) }}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
{% 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|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" class="nostyle" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
|
||||
</header>
|
||||
|
||||
<div id="article_toolbar">
|
||||
@ -30,10 +30,10 @@
|
||||
</ul>
|
||||
</div>
|
||||
{% set nbAnnotations = entry.annotations | length %}
|
||||
<span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
|
||||
<span class="tool link"><i class="material-icons link">comment</i> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
|
||||
<aside class="tags">
|
||||
{% for tag in entry.tags %}
|
||||
<span class="mdi-action-label-outline">{{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i>✘</i></a>
|
||||
<span class="label-outline"><i class="material-icons">label_outline</i> {{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"class="nostyle"><i>✘</i></a>
|
||||
{% endfor %}
|
||||
<div class="input-field nav-panel-add-tag" style="display: none">
|
||||
{{ render(controller( "WallabagCoreBundle:Tag:addTagForm", { 'id': entry.id } )) }}
|
||||
@ -46,87 +46,16 @@
|
||||
{{ entry.content | raw }}
|
||||
</article>
|
||||
</div>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/_global/js/restoreScroll.js')}}"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
// toggle read property of current article
|
||||
/* $('#markAsRead').click(function(){
|
||||
$("body").css("cursor", "wait");
|
||||
$.ajax( { url: '{{ path('archive_entry', { 'id': entry.id }) }}' }).done(
|
||||
function( data ) {
|
||||
if ( data == '1' ) {
|
||||
if ( $('#markAsRead').hasClass("archive-off") ) {
|
||||
$('#markAsRead').removeClass("archive-off");
|
||||
$('#markAsRead').addClass("archive");
|
||||
}
|
||||
else {
|
||||
$('#markAsRead').removeClass("archive");
|
||||
$('#markAsRead').addClass("archive-off");
|
||||
}
|
||||
}
|
||||
else {
|
||||
alert('Error! Pls check if you are logged in.');
|
||||
}
|
||||
});
|
||||
$("body").css("cursor", "auto");
|
||||
});*/
|
||||
|
||||
// toggle favorite property of current article
|
||||
/* $('#setFav').click(function(){
|
||||
$("body").css("cursor", "wait");
|
||||
$.ajax( { url: '{{ path('star_entry', { 'id': entry.id }) }}' }).done(
|
||||
function( data ) {
|
||||
if ( data == '1' ) {
|
||||
if ( $('#setFav').hasClass("fav-off") ) {
|
||||
$('#setFav').removeClass("fav-off");
|
||||
$('#setFav').addClass("fav");
|
||||
}
|
||||
else {
|
||||
$('#setFav').removeClass("fav");
|
||||
$('#setFav').addClass("fav-off");
|
||||
}
|
||||
}
|
||||
else {
|
||||
alert('Error! Pls check if you are logged in.');
|
||||
}
|
||||
});
|
||||
$("body").css("cursor", "auto");
|
||||
});*/
|
||||
|
||||
$(window).scroll(function(e){
|
||||
var scrollTop = $(window).scrollTop();
|
||||
var docHeight = $(document).height();
|
||||
var scrollPercent = (scrollTop) / (docHeight);
|
||||
var scrollPercentRounded = Math.round(scrollPercent*100)/100;
|
||||
savePercent({{ entry.id }}, scrollPercentRounded);
|
||||
});
|
||||
|
||||
retrievePercent({{ entry.id }});
|
||||
|
||||
$(window).resize(function(){
|
||||
retrievePercent({{ entry.id }});
|
||||
});
|
||||
});
|
||||
|
||||
var app = new annotator.App();
|
||||
app.include(annotator.ui.main, {
|
||||
element: document.querySelector('article')
|
||||
});
|
||||
app.include(annotator.storage.http, {
|
||||
prefix: '',
|
||||
urls: {
|
||||
create: '{{ path('annotations_post_annotation', { 'entry': entry.id }) }}',
|
||||
update: '{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}',
|
||||
destroy: '{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}',
|
||||
search: '{{ path('annotations_get_annotations', { 'entry': entry.id }) }}'
|
||||
}
|
||||
});
|
||||
app
|
||||
.start()
|
||||
.then(function () {
|
||||
app.annotations.load({entry: {{ entry.id }}});
|
||||
});
|
||||
<script id="annotationroutes" type="application/json">
|
||||
{
|
||||
"prefix": "",
|
||||
"urls": {
|
||||
"create": "{{ path('annotations_post_annotation', { 'entry': entry.id }) }}",
|
||||
"update": "{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}",
|
||||
"destroy": "{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}",
|
||||
"search": "{{ path('annotations_get_annotations', { 'entry': entry.id }) }}"
|
||||
},
|
||||
"entryId": "{{ entry.id }}"
|
||||
}
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@ -2,7 +2,8 @@
|
||||
<div class="results">
|
||||
<div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
|
||||
<div class="pagination">
|
||||
<a href="#" id="filter">{{ 'entry.filters.title'|trans }}</a>
|
||||
<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>
|
||||
{% if entries.getNbPages > 1 %}
|
||||
{{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }}
|
||||
{% endif %}
|
||||
|
||||
@ -37,7 +37,6 @@
|
||||
<p>{{ 'about.helping.description'|trans }}</p>
|
||||
|
||||
<dl>
|
||||
<dt>{{ 'about.helping.description'|trans }}</dt>
|
||||
<dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd>
|
||||
<dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd>
|
||||
</dl>
|
||||
|
||||
@ -2,29 +2,19 @@
|
||||
|
||||
{% block css %}
|
||||
{{ parent() }}
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/ratatouille.css') }}" media="all">
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/font.css') }}" media="all">
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/main.css') }}" media="all">
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/messages.css') }}" media="all">
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/print.css') }}" media="print">
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/style.min.css') }}" media="screen,projection,print"/>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ parent() }}
|
||||
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/baggy/js/init.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/baggy/js/closeMessage.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/baggy/js/autoClose.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/baggy/js/saveLink.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/baggy/js/popupForm.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/baggy/js/baggy.min.js') }}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block header %}
|
||||
<header class="w600p center mbm">
|
||||
<h1 class="logo">
|
||||
{% block logo %}
|
||||
<img width="100" height="100" src="{{ asset('bundles/wallabagcore/themes/baggy/img/logo-w.png') }}" alt="wallabag logo" />
|
||||
<img width="100" height="100" src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-w.png') }}" alt="wallabag logo" />
|
||||
{% endblock %}
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
@ -206,7 +206,7 @@
|
||||
{{ 'config.form_rules.then_tag_as_label'|trans }}
|
||||
« {{ tagging_rule.tags|join(', ') }} »
|
||||
<a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}">
|
||||
<i class="tool grey-text delete mdi-action-delete"></i>
|
||||
<i class="tool grey-text delete material-icons">delete</i>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
<div class="card-content">
|
||||
{% if not entry.previewPicture is null %}
|
||||
<i class="card-title grey-text text-darken-4 activator mdi-navigation-more-horiz right"></i>
|
||||
<i class="card-title grey-text text-darken-4 activator material-icons right">more_vert</i>
|
||||
{% endif %}
|
||||
|
||||
<span class="card-title"><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|raw }}">{{ entry.title|striptags|slice(0, 42)|raw }}</a></span>
|
||||
@ -56,7 +56,7 @@
|
||||
|
||||
{% if not entry.previewPicture is null %}
|
||||
<div class="card-reveal">
|
||||
<i class="card-title grey-text text-darken-4 mdi-card-close right"></i>
|
||||
<i class="card-title grey-text text-darken-4 material-icons right">clear</i>
|
||||
<span class="card-title"><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></span>
|
||||
|
||||
<div class="estimatedTime grey-text">
|
||||
@ -74,11 +74,11 @@
|
||||
<a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.list.original_article'|trans }}: {{ entry.title|e }} - {{ entry.domainName|removeWww }}" class="tool original grey-text"><span>{{ entry.domainName|removeWww|truncate(18) }}</span></a>
|
||||
</bold>
|
||||
|
||||
<ul class="tools links right">
|
||||
<ul class="tools right">
|
||||
<li>
|
||||
<a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text {% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"></a>
|
||||
<a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool grey-text {% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"></a>
|
||||
<a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a>
|
||||
<a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text" href="{{ path('archive_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}</i></a>
|
||||
<a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool grey-text" href="{{ path('star_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isStarred == 0 %}favorite_border{% else %}favorite{% endif %}</i></a>
|
||||
<a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete" href="{{ path('delete_entry', { 'id': entry.id }) }}"><i class="material-icons">delete</i></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -126,6 +126,11 @@
|
||||
{{ form_label(form.isStarred) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field col s6 with-checkbox">
|
||||
{{ form_widget(form.isUnread) }}
|
||||
{{ form_label(form.isUnread) }}
|
||||
</div>
|
||||
|
||||
<div class="col s12">
|
||||
<label>{{ 'entry.filters.preview_picture_help'|trans }}</label>
|
||||
</div>
|
||||
|
||||
@ -13,24 +13,24 @@
|
||||
<ul>
|
||||
<li>
|
||||
<a class="waves-effect" href="{{ path('homepage') }}">
|
||||
<i class="mdi-action-exit-to-app"></i>
|
||||
<i class="material-icons">exit_to_app</i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="right">
|
||||
<li>
|
||||
<a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
|
||||
<i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
|
||||
<i class="material-icons small">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}"</i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
|
||||
<i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
|
||||
<i class="material-icons small">{% if entry.isStarred == 0 %}favorite_outline{% else %}favorite{% endif %}</i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-activates="slide-out" class="button-collapse right">
|
||||
<i class="mdi-navigation-menu"></i>
|
||||
<i class="material-icons">navigation_menu</i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@ -39,7 +39,7 @@
|
||||
<ul id="slide-out" class="collapsible side-nav fixed reader-mode" data-collapsible="accordion">
|
||||
<li class="bold border-bottom hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" href="{{ path('homepage') }}">
|
||||
<i class="mdi-action-exit-to-app small"></i>
|
||||
<i class="material-icons small">exit_to_app</i>
|
||||
<span>{{ 'entry.view.left_menu.back_to_homepage'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
@ -47,7 +47,7 @@
|
||||
|
||||
<li class="bold border-bottom hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" href="{{ entry.url|e }}">
|
||||
<i class="mdi-content-link small"></i>
|
||||
<i class="material-icons small">link</i>
|
||||
<span>{{ 'entry.view.left_menu.view_original_article'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
@ -55,7 +55,7 @@
|
||||
|
||||
<li class="bold hide-on-med-and-down">
|
||||
<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="mdi-action-autorenew small"></i>
|
||||
<i class="material-icons small">autorenew</i>
|
||||
<span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
@ -63,7 +63,7 @@
|
||||
|
||||
<li class="bold hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
|
||||
<i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
|
||||
<i class="material-icons small">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}</i>
|
||||
<span>{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
@ -71,14 +71,14 @@
|
||||
|
||||
<li class="bold hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
|
||||
<i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
|
||||
<i class="material-icons spall">{% if entry.isStarred == 0 %}favorite_outline{% else %}favorite{% endif %}</i>
|
||||
<span>{{ 'entry.view.left_menu.set_as_favorite'|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 }) }}">
|
||||
<i class="mdi-action-delete small"></i>
|
||||
<i class="material-icons small">delete</i>
|
||||
<span>{{ 'entry.view.left_menu.delete'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
@ -86,7 +86,7 @@
|
||||
|
||||
<li class="bold border-bottom hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" id="nav-btn-add-tag">
|
||||
<i class="mdi-action-label-outline small"></i>
|
||||
<i class="material-icons small">label_outline</i>
|
||||
<span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
@ -94,7 +94,7 @@
|
||||
|
||||
<li class="bold">
|
||||
<a class="waves-effect collapsible-header">
|
||||
<i class="mdi-social-share small"></i>
|
||||
<i class="material-icons small">share</i>
|
||||
<span>{{ 'entry.view.left_menu.share_content'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body">
|
||||
@ -129,7 +129,8 @@
|
||||
{% 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="{{ 'entry.view.left_menu.share_email_label'|trans }}">
|
||||
<a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" title="{{ 'entry.view.left_menu.share_email_label'|trans }}">
|
||||
<i class="material-icons">email</i>
|
||||
<span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@ -141,7 +142,7 @@
|
||||
{% if craue_setting('show_printlink') %}
|
||||
<li class="bold border-bottom hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.print'|trans }}" href="javascript: window.print();">
|
||||
<i class="mdi-action-print small"></i>
|
||||
<i class="material-icons small">print</i>
|
||||
<span>{{ 'entry.view.left_menu.print'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
@ -151,7 +152,7 @@
|
||||
|
||||
<li class="bold">
|
||||
<a class="waves-effect collapsible-header">
|
||||
<i class="mdi-file-file-download small"></i>
|
||||
<i class="material-icons small">file_download</i>
|
||||
<span>{{ 'entry.view.left_menu.download'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body">
|
||||
@ -169,7 +170,7 @@
|
||||
|
||||
<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="mdi-action-delete small"></i>
|
||||
<i class="material-icons small">delete</i>
|
||||
<span>{{ 'entry.view.left_menu.delete'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
@ -177,7 +178,7 @@
|
||||
|
||||
<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="mdi-alert-error small"></i>
|
||||
<i class="material-icons small">error</i>
|
||||
<span>{{ 'entry.view.left_menu.problem.label'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
@ -193,12 +194,13 @@
|
||||
<h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
|
||||
</header>
|
||||
<aside>
|
||||
<a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link mdi-content-link"> <span>{{ entry.domainName|removeWww }}</span></a>
|
||||
<span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
|
||||
<a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool">
|
||||
<span class="link"><i class="material-icons link">link</i> {{ entry.domainName|removeWww }}</span></a>
|
||||
<span class="tool link"><i class="material-icons link">comment</i> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
|
||||
<div id="list">
|
||||
{% for tag in entry.tags %}
|
||||
<div class="chip">
|
||||
{{ tag.label }} <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i class="mdi-action-delete"></i></a>
|
||||
{{ tag.label }} <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i class="material-icons">delete</i></a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
@ -217,27 +219,17 @@
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var app = new annotator.App();
|
||||
app.include(annotator.ui.main, {
|
||||
element: document.querySelector('article')
|
||||
});
|
||||
app.include(annotator.storage.http, {
|
||||
prefix: '',
|
||||
urls: {
|
||||
create: '{{ path('annotations_post_annotation', { 'entry': entry.id }) }}',
|
||||
update: '{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}',
|
||||
destroy: '{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}',
|
||||
search: '{{ path('annotations_get_annotations', { 'entry': entry.id }) }}'
|
||||
}
|
||||
});
|
||||
app
|
||||
.start()
|
||||
.then(function () {
|
||||
app.annotations.load({entry: {{ entry.id }}});
|
||||
});
|
||||
</script>
|
||||
<script id="annotationroutes" type="application/json">
|
||||
{
|
||||
"prefix": "",
|
||||
"urls": {
|
||||
"create": "{{ path('annotations_post_annotation', { 'entry': entry.id }) }}",
|
||||
"update": "{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}",
|
||||
"destroy": "{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}",
|
||||
"search": "{{ path('annotations_get_annotations', { 'entry': entry.id }) }}"
|
||||
},
|
||||
"entryId": "{{ entry.id }}"
|
||||
}</script>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
@ -2,17 +2,12 @@
|
||||
|
||||
{% block css %}
|
||||
{{ parent() }}
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/materialize.min.css') }}" media="screen,projection"/>
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/main.css') }}" media="all">
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/print.css') }}" media="print">
|
||||
<link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/style.min.css') }}" media="screen,projection,print"/>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ parent() }}
|
||||
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/material/js/materialize.min.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/material/js/init.js') }}"></script>
|
||||
<script src="{{ asset('bundles/wallabagcore/themes/material/js/material.min.js') }}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block header %}
|
||||
@ -31,8 +26,8 @@
|
||||
<ul id="slide-out" class="side-nav fixed">
|
||||
{% block logo %}
|
||||
<li class="logo border-bottom">
|
||||
<a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}">
|
||||
<img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-square.png') }}" alt="wallabag logo" />
|
||||
<a title="{% trans %}Back to unread articles{% endtrans %}" href="{{ path('unread') }}">
|
||||
<img src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-square.png') }}" alt="wallabag logo" />
|
||||
</a>
|
||||
</li>
|
||||
{% endblock %}
|
||||
@ -76,7 +71,7 @@
|
||||
</li>
|
||||
</ul>
|
||||
<div class="nav-wrapper nav-panels">
|
||||
<a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="mdi-navigation-menu"></i></a>
|
||||
<a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="material-icons">menu</i></a>
|
||||
<div class="left action">
|
||||
{% block title %}
|
||||
{% endblock %}
|
||||
@ -85,22 +80,22 @@
|
||||
<ul>
|
||||
<li class="bold">
|
||||
<a title="{{ 'menu.top.add_new_entry'|trans }}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add">
|
||||
<i class="mdi-content-add"></i>
|
||||
<i class="material-icons">add</i>
|
||||
</a>
|
||||
</li>
|
||||
<!--<li>
|
||||
<a title="{{ 'menu.top.search'|trans }}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search">
|
||||
<i class="mdi-action-search"></i>
|
||||
<i class="material-icons">search</i>
|
||||
</a>
|
||||
</li>-->
|
||||
<li id="button_filters">
|
||||
<a title="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right">
|
||||
<i class="mdi-content-filter-list"></i>
|
||||
<i class="material-icons">filter_list</i>
|
||||
</a>
|
||||
</li>
|
||||
<li id="button_export">
|
||||
<a title="{{ 'menu.top.export'|trans }}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export" class="nav-panel-menu button-collapse-right">
|
||||
<i class="mdi-file-file-download"></i>
|
||||
<a title="{{ 'menu.top.export'|trans }}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export">
|
||||
<i class="material-icons">file_download</i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@ -108,14 +103,14 @@
|
||||
<form method="get" action="index.php">
|
||||
<div class="input-field nav-panel-search" style="display: none">
|
||||
<input name="search" id="searchfield" type="search" required placeholder="{{ 'menu.search_form.input_label'|trans }}">
|
||||
<label for="search"><i class="mdi-action-search"></i></label>
|
||||
<i class="mdi-navigation-close"></i>
|
||||
<label for="search"><i class="material-icons search">search</i></label>
|
||||
<i class="material-icons close">clear</i>
|
||||
</div>
|
||||
</form>
|
||||
<div class="input-field nav-panel-add" style="display: none">
|
||||
{{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }}
|
||||
<label for="add" class="active"><i class="mdi-content-add"></i></label>
|
||||
<i class="mdi-navigation-close"></i>
|
||||
<label for="add" class="active"><i class="material-icons add">add</i></label>
|
||||
<i class="material-icons close">clear</i>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
Reference in New Issue
Block a user