]> git.immae.eu Git - github/wallabag/wallabag.git/blame - src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
Add backup codes
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Resources / views / themes / baggy / Config / index.html.twig
CommitLineData
4d85d7e9
J
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
0d42217e 3{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
4d85d7e9 4
4d85d7e9 5{% block content %}
0d42217e 6 <h2>{{ 'config.tab_menu.settings'|trans }}</h2>
4d85d7e9 7
33fe61f9 8 {{ form_start(form.config) }}
0c83fd59 9 {{ form_errors(form.config) }}
4d85d7e9
J
10
11 <fieldset class="w500p inline">
12 <div class="row">
0c83fd59
J
13 {{ form_label(form.config.theme) }}
14 {{ form_errors(form.config.theme) }}
15 {{ form_widget(form.config.theme) }}
4d85d7e9 16 </div>
c894d76e
NL
17 <a href="#" title="{{ 'config.form_settings.help_theme'|trans }}">
18 <i class="material-icons">live_help</i>
19 </a>
4d85d7e9
J
20 </fieldset>
21
22 <fieldset class="w500p inline">
23 <div class="row">
0c83fd59
J
24 {{ form_label(form.config.items_per_page) }}
25 {{ form_errors(form.config.items_per_page) }}
26 {{ form_widget(form.config.items_per_page) }}
4d85d7e9 27 </div>
c894d76e
NL
28 <a href="#" title="{{ 'config.form_settings.help_items_per_page'|trans }}">
29 <i class="material-icons">live_help</i>
30 </a>
4d85d7e9
J
31 </fieldset>
32
db1d4b1e
NL
33 <fieldset class="w500p inline">
34 <div class="row">
35 {{ form_label(form.config.reading_speed) }}
36 {{ form_errors(form.config.reading_speed) }}
37 {{ form_widget(form.config.reading_speed) }}
f3e49264
JB
38 <p>
39 {{ 'config.form_settings.reading_speed.help_message'|trans }}
40 <a href="http://www.myreadspeed.com/calculate/">myreadspeed</a>
41 </p>
db1d4b1e 42 </div>
c894d76e
NL
43 <a href="#" title="{{ 'config.form_settings.help_reading_speed'|trans }}">
44 <i class="material-icons">live_help</i>
45 </a>
db1d4b1e
NL
46 </fieldset>
47
a42f38d9
NL
48 <fieldset class="w500p inline">
49 <div class="row">
50 {{ form_label(form.config.action_mark_as_read) }}
51 {{ form_errors(form.config.action_mark_as_read) }}
52 {{ form_widget(form.config.action_mark_as_read) }}
53 </div>
54 </fieldset>
55
4d85d7e9
J
56 <fieldset class="w500p inline">
57 <div class="row">
0c83fd59
J
58 {{ form_label(form.config.language) }}
59 {{ form_errors(form.config.language) }}
60 {{ form_widget(form.config.language) }}
4d85d7e9 61 </div>
c894d76e
NL
62 <a href="#" title="{{ 'config.form_settings.help_language'|trans }}">
63 <i class="material-icons">live_help</i>
64 </a>
4d85d7e9
J
65 </fieldset>
66
ebe0787e
JB
67 <fieldset class="w500p inline">
68 <div class="row">
69 {{ form_label(form.config.pocket_consumer_key) }}
70 {{ form_errors(form.config.pocket_consumer_key) }}
71 {{ form_widget(form.config.pocket_consumer_key) }}
72 <p>
73 &raquo;
74 <a href="https://getpocket.com/developer/docs/authentication">https://getpocket.com/developer/docs/authentication</a>
75 </p>
76 </div>
c894d76e
NL
77 <a href="#" title="{{ 'config.form_settings.help_pocket_consumer_key'|trans }}">
78 <i class="material-icons">live_help</i>
79 </a>
ebe0787e 80 </fieldset>
3b812126 81
68003139 82 <fieldset class="w500p inline">
3b812126 83 <div class="row">
68e0efff 84 <h3>{{ 'config.form_settings.android_configuration'|trans }}</h3>
e2a038d6 85 <a href="wallabag://{{ app.user.username }}@{{ wallabag_url }}">{{ 'config.form_settings.android_instruction' | trans }}</a>
68003139 86 <br/>
68e0efff
NL
87 <img id="androidQrcode" />
88 <script>
2dfbe9e5 89 document.getElementById('androidQrcode').src = jrQrcode.getQrBase64('wallabag://{{ app.user.username }}@{{ wallabag_url }}');
68e0efff 90 </script>
3b812126 91 </div>
ebe0787e
JB
92 </fieldset>
93
0c83fd59
J
94 {{ form_rest(form.config) }}
95 </form>
96
0d42217e 97 <h2>{{ 'config.tab_menu.rss'|trans }}</h2>
0c83fd59 98
8687bcd0 99 {{ form_start(form.rss) }}
0c83fd59
J
100 {{ form_errors(form.rss) }}
101
23ff8d36 102 <div class="row">
0d42217e 103 {{ 'config.form_rss.description'|trans }}
23ff8d36
JB
104 </div>
105
0c83fd59
J
106 <fieldset class="w500p inline">
107 <div class="row">
bd40f1af 108 <label>{{ 'config.form_rss.token_label'|trans }}</label>
0c83fd59
J
109 {% if rss.token %}
110 {{ rss.token }}
111 {% else %}
0d42217e 112 <em>{{ 'config.form_rss.no_token'|trans }}</em>
0c83fd59
J
113 {% endif %}
114
0d42217e
JB
115 <a href="{{ path('generate_token') }}">
116 {% if rss.token %}
117 {{ 'config.form_rss.token_reset'|trans }}
118 {% else %}
119 {{ 'config.form_rss.token_create'|trans }}
120 {% endif %}
121 </a>
0c83fd59
J
122 </div>
123 </fieldset>
124
0d42217e 125 {% if rss.token %}
0c83fd59
J
126 <fieldset class="w500p inline">
127 <div class="row">
0d42217e
JB
128 <label>{{ 'config.form_rss.rss_links'|trans }}</label>
129 <ul>
bd40f1af
TC
130 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li>
131 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li>
132 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li>
133 <li><a href="{{ path('all_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.all'|trans }}</a></li>
0d42217e 134 </ul>
0c83fd59
J
135 </div>
136 </fieldset>
0d42217e 137 {% endif %}
0c83fd59
J
138
139 <fieldset class="w500p inline">
140 <div class="row">
141 {{ form_label(form.rss.rss_limit) }}
142 {{ form_errors(form.rss.rss_limit) }}
143 {{ form_widget(form.rss.rss_limit) }}
144 </div>
145 </fieldset>
146
147 {{ form_rest(form.rss) }}
d9085c63
J
148 </form>
149
0d42217e 150 <h2>{{ 'config.tab_menu.user_info'|trans }}</h2>
c0d9eba0 151
33fe61f9 152 {{ form_start(form.user) }}
0c83fd59 153 {{ form_errors(form.user) }}
c0d9eba0 154
c0d9eba0
J
155 <fieldset class="w500p inline">
156 <div class="row">
0c83fd59
J
157 {{ form_label(form.user.name) }}
158 {{ form_errors(form.user.name) }}
159 {{ form_widget(form.user.name) }}
c0d9eba0
J
160 </div>
161 </fieldset>
162
163 <fieldset class="w500p inline">
164 <div class="row">
0c83fd59
J
165 {{ form_label(form.user.email) }}
166 {{ form_errors(form.user.email) }}
167 {{ form_widget(form.user.email) }}
c0d9eba0
J
168 </div>
169 </fieldset>
170
18cf594f 171 {% if twofactor_auth %}
23ff8d36 172 <div class="row">
0d42217e 173 {{ 'config.form_user.two_factor_description'|trans }}
23ff8d36
JB
174 </div>
175
2db616b5
NL
176 <fieldset class="w500p inline">
177 <div class="row">
a6b242a1
JB
178 {{ form_label(form.user.emailTwoFactor) }}
179 {{ form_errors(form.user.emailTwoFactor) }}
180 {{ form_widget(form.user.emailTwoFactor) }}
2db616b5 181 </div>
a6b242a1
JB
182 <br/>
183 <div class="row">
184 {{ form_label(form.user.googleTwoFactor) }}
185 {{ form_widget(form.user.googleTwoFactor) }}
186 {{ form_errors(form.user.googleTwoFactor) }}
187 </div>
2dfbe9e5 188 {% for OtpQrCode in app.session.flashbag.get('OtpQrCode') %}
a6b242a1 189 <div class="row">
dfd0a7bc 190 {{ 'config.form_user.two_factor_code_description_1'|trans }}
a6b242a1 191 <br/>
dfd0a7bc 192 {{ 'config.form_user.two_factor_code_description_2'|trans }}
a6b242a1 193 <br/><br/>
a6b242a1 194 <img id="2faQrcode" class="hide-on-med-and-down" />
a6b242a1 195 <script>
dfd0a7bc 196 document.getElementById('2faQrcode').src = jrQrcode.getQrBase64('{{ OtpQrCode }}');
a6b242a1 197 </script>
dfd0a7bc
JB
198 <br/><br/>
199 {{ 'config.form_user.two_factor_code_description_3'|trans }}
200 <br/><br/>
201 <strong>{{ app.user.getGoogleAuthenticatorSecret }}</strong>
202 <br/><br/>
203 {{ 'config.form_user.two_factor_code_description_4'|trans }}
204 <br/><br/>
205 <strong>{{ app.user.getBackupCodes|join("\n")|nl2br }}</strong>
a6b242a1
JB
206 </div>
207 {% endfor %}
2db616b5 208 </fieldset>
18cf594f 209 {% endif %}
2db616b5 210
e49c62fa
NL
211 {{ form_widget(form.user._token) }}
212 {{ form_widget(form.user.save) }}
c0d9eba0
J
213 </form>
214
876d77a6
JB
215 {% if enabled_users > 1 %}
216 <h2>{{ 'config.form_user.delete.title'|trans }}</h2>
217
218 <p>{{ 'config.form_user.delete.description'|trans }}</p>
219 <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">
220 {{ 'config.form_user.delete.button'|trans }}
221 </a>
222 {% endif %}
223
0d42217e 224 <h2>{{ 'config.tab_menu.password'|trans }}</h2>
d9085c63 225
33fe61f9 226 {{ form_start(form.pwd) }}
0c83fd59 227 {{ form_errors(form.pwd) }}
d9085c63 228
540a9bc4
NL
229 <div class="row">
230 {{ 'config.form_password.description'|trans }}
231 </div>
232
d9085c63
J
233 <fieldset class="w500p inline">
234 <div class="row">
0c83fd59
J
235 {{ form_label(form.pwd.old_password) }}
236 {{ form_errors(form.pwd.old_password) }}
237 {{ form_widget(form.pwd.old_password) }}
d9085c63
J
238 </div>
239 </fieldset>
240
241 <fieldset class="w500p inline">
242 <div class="row">
0c83fd59
J
243 {{ form_label(form.pwd.new_password.first) }}
244 {{ form_errors(form.pwd.new_password.first) }}
245 {{ form_widget(form.pwd.new_password.first) }}
d9085c63
J
246 </div>
247 </fieldset>
248
249 <fieldset class="w500p inline">
250 <div class="row">
0c83fd59
J
251 {{ form_label(form.pwd.new_password.second) }}
252 {{ form_errors(form.pwd.new_password.second) }}
253 {{ form_widget(form.pwd.new_password.second) }}
d9085c63
J
254 </div>
255 </fieldset>
256
0c83fd59 257 {{ form_rest(form.pwd) }}
4d85d7e9 258 </form>
e4977b8a 259
8687bcd0 260 <h2>{{ 'config.tab_menu.rules'|trans }}</h2>
9b88658c
KG
261
262 <ul>
263 {% for tagging_rule in app.user.config.taggingRules %}
264 <li>
0d42217e
JB
265 {{ 'config.form_rules.if_label'|trans }}
266 « {{ tagging_rule.rule }} »
267 {{ 'config.form_rules.then_tag_as_label'|trans }}
268 « {{ tagging_rule.tags|join(', ') }} »
bf3dc999 269 <a href="{{ path('edit_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}" class="tool mode_edit">✎</a>
0d42217e 270 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}" class="tool delete icon-trash icon"></a>
9b88658c
KG
271 </li>
272 {% endfor %}
273 </ul>
274
a6b242a1 275 {{ form_start(form.new_tagging_rule) }}
9b88658c
KG
276 {{ form_errors(form.new_tagging_rule) }}
277
278 <fieldset class="w500p inline">
279 <div class="row">
280 {{ form_label(form.new_tagging_rule.rule) }}
281 {{ form_errors(form.new_tagging_rule.rule) }}
282 {{ form_widget(form.new_tagging_rule.rule) }}
283 </div>
284 </fieldset>
285
286 <fieldset class="w500p inline">
287 <div class="row">
288 {{ form_label(form.new_tagging_rule.tags) }}
289 {{ form_errors(form.new_tagging_rule.tags) }}
290 {{ form_widget(form.new_tagging_rule.tags) }}
291 </div>
292 </fieldset>
293
294 {{ form_rest(form.new_tagging_rule) }}
295 </form>
8687bcd0
NL
296 <div class="row">
297 <div class="input-field col s12">
298 <h3>{{ 'config.form_rules.faq.title'|trans }}</h3>
299
300 <h4>{{ 'config.form_rules.faq.tagging_rules_definition_title'|trans }}</h4>
301 <p class="help">{{ 'config.form_rules.faq.tagging_rules_definition_description'|trans|raw }}</p>
302
303 <h4>{{ 'config.form_rules.faq.how_to_use_them_title'|trans }}</h4>
304 <p class="help">{{ 'config.form_rules.faq.how_to_use_them_description'|trans|raw }}</p>
305
306 <h4>{{ 'config.form_rules.faq.variables_available_title'|trans }}</h4>
307 <p class="help">
308 {{ 'config.form_rules.faq.variables_available_description'|trans }}
309 </p>
310
311 <table class="bordered">
312 <thead>
313 <tr>
314 <th>{{ 'config.form_rules.faq.variable_description.label'|trans }}</th>
315 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
316 <th>{{ 'config.form_rules.faq.operator_description.label'|trans }}</th>
317 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
318 </tr>
319 </thead>
320
321 <tbody>
322 <tr>
323 <td>title</td>
324 <td>{{ 'config.form_rules.faq.variable_description.title'|trans }}</td>
325 <td>&lt;=</td>
326 <td>{{ 'config.form_rules.faq.operator_description.less_than'|trans }}</td>
327 </tr>
328 <tr>
329 <td>url</td>
330 <td>{{ 'config.form_rules.faq.variable_description.url'|trans }}</td>
331 <td>&lt;</td>
332 <td>{{ 'config.form_rules.faq.operator_description.strictly_less_than'|trans }}</td>
333 </tr>
334 <tr>
335 <td>isArchived</td>
336 <td>{{ 'config.form_rules.faq.variable_description.isArchived'|trans }}</td>
7a2157b8 337 <td>&gt;=</td>
8687bcd0
NL
338 <td>{{ 'config.form_rules.faq.operator_description.greater_than'|trans }}</td>
339 </tr>
340 <tr>
341 <td>isStarred</td>
342 <td>{{ 'config.form_rules.faq.variable_description.isStarred'|trans }}</td>
343 <td>&gt;</td>
344 <td>{{ 'config.form_rules.faq.operator_description.strictly_greater_than'|trans }}</td>
345 </tr>
346 <tr>
347 <td>content</td>
348 <td>{{ 'config.form_rules.faq.variable_description.content'|trans }}</td>
349 <td>=</td>
350 <td>{{ 'config.form_rules.faq.operator_description.equal_to'|trans }}</td>
351 </tr>
352 <tr>
353 <td>language</td>
354 <td>{{ 'config.form_rules.faq.variable_description.language'|trans }}</td>
355 <td>!=</td>
356 <td>{{ 'config.form_rules.faq.operator_description.not_equal_to'|trans }}</td>
357 </tr>
358 <tr>
359 <td>mimetype</td>
360 <td>{{ 'config.form_rules.faq.variable_description.mimetype'|trans }}</td>
361 <td>OR</td>
362 <td>{{ 'config.form_rules.faq.operator_description.or'|trans }}</td>
363 </tr>
364 <tr>
365 <td>readingTime</td>
366 <td>{{ 'config.form_rules.faq.variable_description.readingTime'|trans }}</td>
367 <td>AND</td>
368 <td>{{ 'config.form_rules.faq.operator_description.and'|trans }}</td>
369 </tr>
370 <tr>
371 <td>domainName</td>
372 <td>{{ 'config.form_rules.faq.variable_description.domainName'|trans }}</td>
373 <td>matches</td>
374 <td>{{ 'config.form_rules.faq.operator_description.matches'|trans|raw }}</td>
375 </tr>
376 </tbody>
377 </table>
378 </div>
379 </div>
a6b242a1
JB
380
381 <h2>{{ 'config.reset.title'|trans }}</h2>
382 <fieldset class="w500p inline">
383 <p>{{ 'config.reset.description'|trans }}</p>
384 <ul>
385 <li>
386 <a href="{{ path('config_reset', { type: 'annotations'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
387 {{ 'config.reset.annotations'|trans }}
388 </a>
389 </li>
390 <li>
391 <a href="{{ path('config_reset', { type: 'tags'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
392 {{ 'config.reset.tags'|trans }}
393 </a>
394 </li>
395 <li>
396 <a href="{{ path('config_reset', { type: 'archived'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
397 {{ 'config.reset.archived'|trans }}
398 </a>
399 </li>
400 <li>
401 <a href="{{ path('config_reset', { type: 'entries'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
402 {{ 'config.reset.entries'|trans }}
403 </a>
404 </li>
405 </ul>
406 </fieldset>
4d85d7e9 407{% endblock %}