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