1 {% extends "WallabagCoreBundle::layout.html.twig" %}
3 {% block title %}{{ 'config.page_title'|trans }}{% endblock %}
9 <div class="card-panel settings">
12 <div class="div_tabs col s12">
14 <li class="tab col s12 m6 l3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li>
15 <li class="tab col s12 m6 l3"><a href="#set2">{{ 'config.tab_menu.rss'|trans }}</a></li>
16 <li class="tab col s12 m6 l3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li>
17 <li class="tab col s12 m6 l3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li>
18 <li class="tab col s12 m6 l3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li>
19 <li class="tab col s12 m6 l3"><a href="#set6">{{ 'config.tab_menu.reset'|trans }}</a></li>
23 <div id="set1" class="col s12">
24 {{ form_start(form.config) }}
25 {{ form_errors(form.config) }}
28 <div class="input-field col s11">
29 {{ form_errors(form.config.theme) }}
30 {{ form_widget(form.config.theme) }}
31 {{ form_label(form.config.theme) }}
33 <div class="input-field col s1">
34 <a href="#" class="tooltipped" data-position="left" data-delay="50" data-tooltip="{{ 'config.form_settings.help_theme'|trans }}">
35 <i class="material-icons">live_help</i>
41 <div class="input-field col s11">
42 {{ form_errors(form.config.items_per_page) }}
43 {{ form_widget(form.config.items_per_page) }}
44 {{ form_label(form.config.items_per_page) }}
46 <div class="input-field col s1">
47 <a href="#" class="tooltipped" data-position="left" data-delay="50" data-tooltip="{{ 'config.form_settings.help_items_per_page'|trans }}">
48 <i class="material-icons">live_help</i>
54 <div class="input-field col s11">
55 {{ form_errors(form.config.reading_speed) }}
56 {{ form_widget(form.config.reading_speed) }}
57 {{ form_label(form.config.reading_speed) }}
59 {{ 'config.form_settings.reading_speed.help_message'|trans }}
60 <a href="http://www.myreadspeed.com/calculate/">myreadspeed</a>
63 <div class="input-field col s1">
64 <a href="#" class="tooltipped" data-position="left" data-delay="50" data-tooltip="{{ 'config.form_settings.help_reading_speed'|trans }}">
65 <i class="material-icons">live_help</i>
71 <div class="input-field col s12">
72 {{ form_errors(form.config.action_mark_as_read) }}
73 {{ form_widget(form.config.action_mark_as_read) }}
74 {{ form_label(form.config.action_mark_as_read) }}
79 <div class="input-field col s11">
80 {{ form_errors(form.config.language) }}
81 {{ form_widget(form.config.language) }}
82 {{ form_label(form.config.language) }}
84 <div class="input-field col s1">
85 <a href="#" class="tooltipped" data-position="left" data-delay="50" data-tooltip="{{ 'config.form_settings.help_language'|trans }}">
86 <i class="material-icons">live_help</i>
92 <div class="input-field col s11">
93 {{ form_errors(form.config.pocket_consumer_key) }}
94 {{ form_widget(form.config.pocket_consumer_key) }}
95 {{ form_label(form.config.pocket_consumer_key) }}
98 <a href="https://getpocket.com/developer/docs/authentication">https://getpocket.com/developer/docs/authentication</a>
101 <div class="input-field col s1">
102 <a href="#" class="tooltipped" data-position="left" data-delay="50" data-tooltip="{{ 'config.form_settings.help_pocket_consumer_key'|trans }}">
103 <i class="material-icons">live_help</i>
109 <div class="input-field col s12">
110 <h5>{{ 'config.form_settings.android_configuration'|trans }}</h5>
111 <a href="wallabag://{{ app.user.username }}@{{ wallabag_url }}" class="waves-effect waves-light btn hide-on-large-only">{{ 'config.form_settings.android_instruction' | trans }}</a>
112 <img id="androidQrcode" class="hide-on-med-and-down" />
115 document.getElementById('androidQrcode').src = jrQrcode.getQrBase64('wallabag://{{ app.user.username }}@{{ wallabag_url }}');;
119 {{ form_widget(form.config.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
120 {{ form_rest(form.config) }}
124 <div id="set2" class="col s12">
125 {{ form_start(form.rss) }}
126 {{ form_errors(form.rss) }}
129 <div class="input-field col s12">
130 {{ 'config.form_rss.description'|trans }}
135 <div class="col s12">
136 <h6 class="grey-text">{{ 'config.form_rss.token_label'|trans }}</h6>
141 <em>{{ 'config.form_rss.no_token'|trans }}</em>
143 – <a href="{{ path('generate_token') }}">
145 {{ 'config.form_rss.token_reset'|trans }}
147 {{ 'config.form_rss.token_create'|trans }}
154 <div class="col s12">
155 <h6 class="grey-text">{{ 'config.form_rss.rss_links'|trans }}</h6>
157 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li>
158 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li>
159 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li>
160 <li><a href="{{ path('all_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.all'|trans }}</a></li>
167 <div class="input-field col s12">
168 {{ form_label(form.rss.rss_limit) }}
169 {{ form_errors(form.rss.rss_limit) }}
170 {{ form_widget(form.rss.rss_limit) }}
174 {{ form_widget(form.rss.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
175 {{ form_rest(form.rss) }}
179 <div id="set3" class="col s12">
180 {{ form_start(form.user) }}
181 {{ form_errors(form.user) }}
184 <div class="input-field col s12">
185 {{ form_label(form.user.name) }}
186 {{ form_errors(form.user.name) }}
187 {{ form_widget(form.user.name) }}
192 <div class="input-field col s12">
193 {{ form_label(form.user.email) }}
194 {{ form_errors(form.user.email) }}
195 {{ form_widget(form.user.email) }}
199 {% if twofactor_auth %}
201 {{ 'config.form_user.two_factor_description'|trans }}
203 <div class="input-field col s11">
204 {{ form_widget(form.user.emailTwoFactor) }}
205 {{ form_label(form.user.emailTwoFactor) }}
206 {{ form_errors(form.user.emailTwoFactor) }}
208 <div class="input-field col s11">
209 {{ form_widget(form.user.googleTwoFactor) }}
210 {{ form_label(form.user.googleTwoFactor) }}
211 {{ form_errors(form.user.googleTwoFactor) }}
215 {% for OtpQrCode in app.session.flashbag.get('OtpQrCode') %}
216 <div class="card-panel yellow darken-1 black-text">
217 {{ 'config.form_user.two_factor_code_description_1'|trans }}
219 {{ 'config.form_user.two_factor_code_description_2'|trans }}
221 <img id="2faQrcode" class="hide-on-med-and-down" />
223 document.getElementById('2faQrcode').src = jrQrcode.getQrBase64('{{ OtpQrCode }}');;
226 {{ 'config.form_user.two_factor_code_description_3'|trans }}
228 <strong>{{ app.user.getGoogleAuthenticatorSecret }}</strong>
233 {{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
234 {{ form_widget(form.user._token) }}
238 <div id="set4" class="col s12">
239 {{ form_start(form.pwd) }}
240 {{ form_errors(form.pwd) }}
243 <div class="input-field col s12">
244 {{ 'config.form_password.description'|trans }}
249 <div class="input-field col s12">
250 {{ form_label(form.pwd.old_password) }}
251 {{ form_errors(form.pwd.old_password) }}
252 {{ form_widget(form.pwd.old_password) }}
257 <div class="input-field col s12">
258 {{ form_label(form.pwd.new_password.first) }}
259 {{ form_errors(form.pwd.new_password.first) }}
260 {{ form_widget(form.pwd.new_password.first) }}
265 <div class="input-field col s12">
266 {{ form_label(form.pwd.new_password.second) }}
267 {{ form_errors(form.pwd.new_password.second) }}
268 {{ form_widget(form.pwd.new_password.second) }}
272 {{ form_widget(form.pwd.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
273 {{ form_rest(form.pwd) }}
277 <div id="set5" class="col s12">
278 {% if app.user.config.taggingRules is not empty %}
280 <div class="input-field col s12">
282 {% for tagging_rule in app.user.config.taggingRules %}
284 {{ 'config.form_rules.if_label'|trans }}
285 « {{ tagging_rule.rule }} »
286 {{ 'config.form_rules.then_tag_as_label'|trans }}
287 « {{ tagging_rule.tags|join(', ') }} »
288 <a href="{{ path('edit_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}">
289 <i class="tool grey-text mode_edit material-icons">mode_edit</i>
291 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}">
292 <i class="tool grey-text delete material-icons">delete</i>
301 {{ form_start(form.new_tagging_rule) }}
302 {{ form_errors(form.new_tagging_rule) }}
305 <div class="input-field col s12">
306 {{ form_label(form.new_tagging_rule.rule) }}
307 {{ form_errors(form.new_tagging_rule.rule) }}
308 {{ form_widget(form.new_tagging_rule.rule) }}
313 <div class="input-field col s12">
314 {{ form_label(form.new_tagging_rule.tags) }}
315 {{ form_errors(form.new_tagging_rule.tags) }}
316 {{ form_widget(form.new_tagging_rule.tags) }}
320 {{ form_widget(form.new_tagging_rule.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
321 {{ form_rest(form.new_tagging_rule) }}
325 <div class="input-field col s12">
326 <h4>{{ 'config.form_rules.faq.title'|trans }}</h4>
328 <h5>{{ 'config.form_rules.faq.tagging_rules_definition_title'|trans }}</h5>
329 <p class="help">{{ 'config.form_rules.faq.tagging_rules_definition_description'|trans|raw }}</p>
331 <h5>{{ 'config.form_rules.faq.how_to_use_them_title'|trans }}</h5>
332 <p class="help">{{ 'config.form_rules.faq.how_to_use_them_description'|trans|raw }}</p>
334 <h5>{{ 'config.form_rules.faq.variables_available_title'|trans }}</h5>
336 {{ 'config.form_rules.faq.variables_available_description'|trans }}
339 <table class="bordered">
342 <th>{{ 'config.form_rules.faq.variable_description.label'|trans }}</th>
343 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
344 <th>{{ 'config.form_rules.faq.operator_description.label'|trans }}</th>
345 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
352 <td>{{ 'config.form_rules.faq.variable_description.title'|trans }}</td>
354 <td>{{ 'config.form_rules.faq.operator_description.less_than'|trans }}</td>
358 <td>{{ 'config.form_rules.faq.variable_description.url'|trans }}</td>
360 <td>{{ 'config.form_rules.faq.operator_description.strictly_less_than'|trans }}</td>
364 <td>{{ 'config.form_rules.faq.variable_description.isArchived'|trans }}</td>
366 <td>{{ 'config.form_rules.faq.operator_description.greater_than'|trans }}</td>
370 <td>{{ 'config.form_rules.faq.variable_description.isStarred'|trans }}</td>
372 <td>{{ 'config.form_rules.faq.operator_description.strictly_greater_than'|trans }}</td>
376 <td>{{ 'config.form_rules.faq.variable_description.content'|trans }}</td>
378 <td>{{ 'config.form_rules.faq.operator_description.equal_to'|trans }}</td>
382 <td>{{ 'config.form_rules.faq.variable_description.language'|trans }}</td>
384 <td>{{ 'config.form_rules.faq.operator_description.not_equal_to'|trans }}</td>
388 <td>{{ 'config.form_rules.faq.variable_description.mimetype'|trans }}</td>
390 <td>{{ 'config.form_rules.faq.operator_description.or'|trans }}</td>
394 <td>{{ 'config.form_rules.faq.variable_description.readingTime'|trans }}</td>
396 <td>{{ 'config.form_rules.faq.operator_description.and'|trans }}</td>
400 <td>{{ 'config.form_rules.faq.variable_description.domainName'|trans }}</td>
401 <td>matches<br />notmaches</td>
402 <td>{{ 'config.form_rules.faq.operator_description.matches'|trans|raw }}<br />{{ 'config.form_rules.faq.operator_description.notmatches'|trans|raw }}</td>
410 <div id="set6" class="col s12">
412 <h5>{{ 'config.reset.title'|trans }}</h5>
413 <p>{{ 'config.reset.description'|trans }}</p>
414 <a href="{{ path('config_reset', { type: 'annotations'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
415 {{ 'config.reset.annotations'|trans }}
417 <a href="{{ path('config_reset', { type: 'tags'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
418 {{ 'config.reset.tags'|trans }}
420 <a href="{{ path('config_reset', { type: 'archived'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
421 {{ 'config.reset.archived'|trans }}
423 <a href="{{ path('config_reset', { type: 'entries'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
424 {{ 'config.reset.entries'|trans }}
428 {% if enabled_users > 1 %}
432 <h5>{{ 'config.form_user.delete.title'|trans }}</h5>
433 <p>{{ 'config.form_user.delete.description'|trans }}</p>
434 <a href="{{ path('delete_account') }}" onclick="return confirm('{{ 'config.form_user.delete.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red delete-account">
435 {{ 'config.form_user.delete.button'|trans }}