aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Resources/views/themes/material/Config
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/CoreBundle/Resources/views/themes/material/Config')
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig261
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Config/otp_app.html.twig63
2 files changed, 230 insertions, 94 deletions
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
index f896fe2d..d8e9694d 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
@@ -12,10 +12,11 @@
12 <div class="div_tabs col s12"> 12 <div class="div_tabs col s12">
13 <ul class="tabs"> 13 <ul class="tabs">
14 <li class="tab col s12 m6 l3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li> 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> 15 <li class="tab col s12 m6 l3"><a href="#set2">{{ 'config.tab_menu.feed'|trans }}</a></li>
16 <li class="tab col s12 m6 l3"><a href="#set3">{{ 'config.tab_menu.user_info'|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> 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> 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>
19 </ul> 20 </ul>
20 </div> 21 </div>
21 22
@@ -111,8 +112,7 @@
111 <img id="androidQrcode" class="hide-on-med-and-down" /> 112 <img id="androidQrcode" class="hide-on-med-and-down" />
112 </div> 113 </div>
113 <script> 114 <script>
114 const imgBase64 = jrQrcode.getQrBase64('wallabag://{{ app.user.username }}@{{ wallabag_url }}'); 115 document.getElementById('androidQrcode').src = jrQrcode.getQrBase64('wallabag://{{ app.user.username }}@{{ wallabag_url }}');
115 document.getElementById('androidQrcode').src = imgBase64;
116 </script> 116 </script>
117 </div> 117 </div>
118 118
@@ -122,42 +122,43 @@
122 </div> 122 </div>
123 123
124 <div id="set2" class="col s12"> 124 <div id="set2" class="col s12">
125 {{ form_start(form.rss) }} 125 {{ form_start(form.feed) }}
126 {{ form_errors(form.rss) }} 126 {{ form_errors(form.feed) }}
127 127
128 <div class="row"> 128 <div class="row">
129 <div class="input-field col s12"> 129 <div class="input-field col s12">
130 {{ 'config.form_rss.description'|trans }} 130 {{ 'config.form_feed.description'|trans }}
131 </div> 131 </div>
132 </div> 132 </div>
133 133
134 <div class="row"> 134 <div class="row">
135 <div class="col s12"> 135 <div class="col s12">
136 <h6 class="grey-text">{{ 'config.form_rss.token_label'|trans }}</h6> 136 <h6 class="grey-text">{{ 'config.form_feed.token_label'|trans }}</h6>
137 <div> 137 <div>
138 {% if rss.token %} 138 {% if feed.token %}
139 {{ rss.token }} 139 {{ feed.token }}
140 {% else %} 140 {% else %}
141 <em>{{ 'config.form_rss.no_token'|trans }}</em> 141 <em>{{ 'config.form_feed.no_token'|trans }}</em>
142 {% endif %} 142 {% endif %}
143 – <a href="{{ path('generate_token') }}"> 143
144 {% if rss.token %} 144 {% if feed.token %}
145 {{ 'config.form_rss.token_reset'|trans }} 145 – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_reset'|trans }}</a>
146 – <a href="{{ path('revoke_token') }}">{{ 'config.form_feed.token_revoke'|trans }}</a>
146 {% else %} 147 {% else %}
147 {{ 'config.form_rss.token_create'|trans }} 148 – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_create'|trans }}</a>
148 {% endif %}</a> 149 {% endif %}
149 </div> 150 </div>
150 </div> 151 </div>
151 </div> 152 </div>
152 {% if rss.token %} 153 {% if feed.token %}
153 <div class="row"> 154 <div class="row">
154 <div class="col s12"> 155 <div class="col s12">
155 <h6 class="grey-text">{{ 'config.form_rss.rss_links'|trans }}</h6> 156 <h6 class="grey-text">{{ 'config.form_feed.feed_links'|trans }}</h6>
156 <ul> 157 <ul>
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('unread_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_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('starred_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_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('archive_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_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> 161 <li><a href="{{ path('all_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.all'|trans }}</a></li>
161 </ul> 162 </ul>
162 </div> 163 </div>
163 </div> 164 </div>
@@ -165,14 +166,14 @@
165 166
166 <div class="row"> 167 <div class="row">
167 <div class="input-field col s12"> 168 <div class="input-field col s12">
168 {{ form_label(form.rss.rss_limit) }} 169 {{ form_label(form.feed.feed_limit) }}
169 {{ form_errors(form.rss.rss_limit) }} 170 {{ form_errors(form.feed.feed_limit) }}
170 {{ form_widget(form.rss.rss_limit) }} 171 {{ form_widget(form.feed.feed_limit) }}
171 </div> 172 </div>
172 </div> 173 </div>
173 174
174 {{ form_widget(form.rss.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} 175 {{ form_widget(form.feed.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
175 {{ form_rest(form.rss) }} 176 {{ form_rest(form.feed) }}
176 </form> 177 </form>
177 </div> 178 </div>
178 179
@@ -181,6 +182,15 @@
181 {{ form_errors(form.user) }} 182 {{ form_errors(form.user) }}
182 183
183 <div class="row"> 184 <div class="row">
185 <div class="col s12">
186 <h6 class="grey-text">{{ 'config.form_user.login_label'|trans }}</h6>
187 <div>
188 {{ app.user.username }}
189 </div>
190 </div>
191 </div>
192
193 <div class="row">
184 <div class="input-field col s12"> 194 <div class="input-field col s12">
185 {{ form_label(form.user.name) }} 195 {{ form_label(form.user.name) }}
186 {{ form_errors(form.user.name) }} 196 {{ form_errors(form.user.name) }}
@@ -196,59 +206,42 @@
196 </div> 206 </div>
197 </div> 207 </div>
198 208
199 {% if twofactor_auth %} 209 {{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
200 <div class="row">
201 <div class="input-field col s11">
202 {{ 'config.form_user.two_factor_description'|trans }}
203
204 <br />
205 210
206 {{ form_widget(form.user.twoFactorAuthentication) }} 211 {% if twofactor_auth %}
207 {{ form_label(form.user.twoFactorAuthentication) }} 212 <br/>
208 {{ form_errors(form.user.twoFactorAuthentication) }} 213 <br/>
209 </div> 214 <div class="row">
210 <div class="input-field col s1"> 215 <h5>{{ 'config.otp.page_title'|trans }}</h5>
211 <a href="#" class="tooltipped" data-position="left" data-delay="50" data-tooltip="{{ 'config.form_user.help_twoFactorAuthentication'|trans }}"> 216
212 <i class="material-icons">live_help</i> 217 <p>{{ 'config.form_user.two_factor_description'|trans }}</p>
213 </a> 218
219 <table>
220 <thead>
221 <tr>
222 <th>{{ 'config.form_user.two_factor.table_method'|trans }}</th>
223 <th>{{ 'config.form_user.two_factor.table_state'|trans }}</th>
224 <th>{{ 'config.form_user.two_factor.table_action'|trans }}</th>
225 </tr>
226 </thead>
227
228 <tbody>
229 <tr>
230 <td>{{ 'config.form_user.two_factor.emailTwoFactor_label'|trans }}</td>
231 <td>{% if app.user.isEmailTwoFactor %}<b>{{ 'config.form_user.two_factor.state_enabled'|trans }}</b>{% else %}{{ 'config.form_user.two_factor.state_disabled'|trans }}{% endif %}</td>
232 <td><a href="{{ path('config_otp_email') }}" class="waves-effect waves-light btn{% if app.user.isEmailTwoFactor %} disabled{% endif %}">{{ 'config.form_user.two_factor.action_email'|trans }}</a></td>
233 </tr>
234 <tr>
235 <td>{{ 'config.form_user.two_factor.googleTwoFactor_label'|trans }}</td>
236 <td>{% if app.user.isGoogleTwoFactor %}<b>{{ 'config.form_user.two_factor.state_enabled'|trans }}</b>{% else %}{{ 'config.form_user.two_factor.state_disabled'|trans }}{% endif %}</td>
237 <td><a href="{{ path('config_otp_app') }}" class="waves-effect waves-light btn{% if app.user.isGoogleTwoFactor %} disabled{% endif %}">{{ 'config.form_user.two_factor.action_app'|trans }}</a></td>
238 </tr>
239 </tbody>
240 </table>
214 </div> 241 </div>
215 </div>
216 {% endif %} 242 {% endif %}
217
218 {{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
219 {{ form_widget(form.user._token) }} 243 {{ form_widget(form.user._token) }}
220 </form> 244 </form>
221
222 <br /><hr /><br />
223
224 <div class="row">
225 <h5>{{ 'config.reset.title'|trans }}</h5>
226 <p>{{ 'config.reset.description'|trans }}</p>
227 <a href="{{ path('config_reset', { type: 'annotations'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
228 {{ 'config.reset.annotations'|trans }}
229 </a>
230 <a href="{{ path('config_reset', { type: 'tags'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
231 {{ 'config.reset.tags'|trans }}
232 </a>
233 <a href="{{ path('config_reset', { type: 'archived'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
234 {{ 'config.reset.archived'|trans }}
235 </a>
236 <a href="{{ path('config_reset', { type: 'entries'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
237 {{ 'config.reset.entries'|trans }}
238 </a>
239 </div>
240
241 {% if enabled_users > 1 %}
242 <br /><hr /><br />
243
244 <div class="row">
245 <h5>{{ 'config.form_user.delete.title'|trans }}</h5>
246 <p>{{ 'config.form_user.delete.description'|trans }}</p>
247 <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">
248 {{ 'config.form_user.delete.button'|trans }}
249 </a>
250 </div>
251 {% endif %}
252 </div> 245 </div>
253 246
254 <div id="set4" class="col s12"> 247 <div id="set4" class="col s12">
@@ -314,28 +307,77 @@
314 </div> 307 </div>
315 {% endif %} 308 {% endif %}
316 309
317 {{ form_start(form.new_tagging_rule) }} 310 <ul class="row">
318 {{ form_errors(form.new_tagging_rule) }} 311 <li class="col l6 m6 s12">
319 312 <div class="card">
320 <div class="row"> 313 <div class="card-content">
321 <div class="input-field col s12"> 314 <span class="card-title">{{ 'config.form_rules.card.new_tagging_rule'|trans }}</span>
322 {{ form_label(form.new_tagging_rule.rule) }} 315
323 {{ form_errors(form.new_tagging_rule.rule) }} 316 {{ form_start(form.new_tagging_rule) }}
324 {{ form_widget(form.new_tagging_rule.rule) }} 317 {{ form_errors(form.new_tagging_rule) }}
318
319 <div class="row">
320 <div class="input-field col s12">
321 {{ form_label(form.new_tagging_rule.rule) }}
322 {{ form_errors(form.new_tagging_rule.rule) }}
323 {{ form_widget(form.new_tagging_rule.rule) }}
324 </div>
325 </div>
326
327 <div class="row">
328 <div class="input-field col s12">
329 {{ form_label(form.new_tagging_rule.tags) }}
330 {{ form_errors(form.new_tagging_rule.tags) }}
331 {{ form_widget(form.new_tagging_rule.tags) }}
332 </div>
333 </div>
334
335 {{ form_widget(form.new_tagging_rule.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
336 {{ form_rest(form.new_tagging_rule) }}
337 </form>
338 </div>
325 </div> 339 </div>
326 </div> 340 </li>
327 341 <li class="col l6 m6 s12">
328 <div class="row"> 342 <div class="card z-depth-1">
329 <div class="input-field col s12"> 343 <div class="card-content">
330 {{ form_label(form.new_tagging_rule.tags) }} 344 <span class="card-title">{{ 'config.form_rules.card.import_tagging_rules'|trans }}</span>
331 {{ form_errors(form.new_tagging_rule.tags) }} 345 <p>{{ 'config.form_rules.card.import_tagging_rules_detail'|trans }}</p>
332 {{ form_widget(form.new_tagging_rule.tags) }} 346 {{ form_start(form.import_tagging_rule) }}
347 {{ form_errors(form.import_tagging_rule) }}
348 <div class="row">
349 <div class="file-field input-field col s12">
350 {{ form_errors(form.import_tagging_rule.file) }}
351 <div class="btn">
352 <span>{{ form.import_tagging_rule.file.vars.label|trans }}</span>
353 {{ form_widget(form.import_tagging_rule.file) }}
354 </div>
355 <div class="file-path-wrapper">
356 <input class="file-path validate" type="text">
357 </div>
358 </div>
359 </div>
360
361 {{ form_widget(form.import_tagging_rule.import, { 'attr': {'class': 'btn waves-effect waves-light'} }) }}
362
363 {{ form_rest(form.import_tagging_rule) }}
364 </form>
365 </div>
333 </div> 366 </div>
334 </div> 367 </li>
335 368 {% if app.user.config.taggingRules is not empty %}
336 {{ form_widget(form.new_tagging_rule.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} 369 <li class="col l6 m6 s12">
337 {{ form_rest(form.new_tagging_rule) }} 370 <div class="card z-depth-1">
338 </form> 371 <div class="card-content">
372 <span class="card-title">{{ 'config.form_rules.card.export_tagging_rules'|trans }}</span>
373 <p>{{ 'config.form_rules.card.export_tagging_rules_detail'|trans }}</p>
374 <br/>
375 <p><a href="{{ path('export_tagging_rule') }}" class="waves-effect waves-light btn">{{ 'config.form_rules.export'|trans }}</a></p>
376 </div>
377 </div>
378 </li>
379 {% endif %}
380 </ul>
339 381
340 <div class="row"> 382 <div class="row">
341 <div class="input-field col s12"> 383 <div class="input-field col s12">
@@ -422,6 +464,37 @@
422 </div> 464 </div>
423 </div> 465 </div>
424 </div> 466 </div>
467
468 <div id="set6" class="col s12">
469 <div class="row">
470 <h5>{{ 'config.reset.title'|trans }}</h5>
471 <p>{{ 'config.reset.description'|trans }}</p>
472 <a href="{{ path('config_reset', { type: 'annotations'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
473 {{ 'config.reset.annotations'|trans }}
474 </a>
475 <a href="{{ path('config_reset', { type: 'tags'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
476 {{ 'config.reset.tags'|trans }}
477 </a>
478 <a href="{{ path('config_reset', { type: 'archived'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
479 {{ 'config.reset.archived'|trans }}
480 </a>
481 <a href="{{ path('config_reset', { type: 'entries'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
482 {{ 'config.reset.entries'|trans }}
483 </a>
484 </div>
485
486 {% if enabled_users > 1 %}
487 <br /><hr /><br />
488
489 <div class="row">
490 <h5>{{ 'config.form_user.delete.title'|trans }}</h5>
491 <p>{{ 'config.form_user.delete.description'|trans }}</p>
492 <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">
493 {{ 'config.form_user.delete.button'|trans }}
494 </a>
495 </div>
496 {% endif %}
497 </div>
425 </div> 498 </div>
426 499
427 </div> 500 </div>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/otp_app.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/otp_app.html.twig
new file mode 100644
index 00000000..6f405d7f
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/otp_app.html.twig
@@ -0,0 +1,63 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ 'config.page_title'|trans }} > {{ 'config.otp.page_title'|trans }}{% endblock %}
4
5{% block content %}
6 <div class="row">
7 <div class="col s12">
8 <div class="card-panel settings">
9 <div class="row">
10 <h5>{{ 'config.otp.page_title'|trans }}</h5>
11
12 <ol>
13 <li>
14 <p>{{ 'config.otp.app.two_factor_code_description_1'|trans }}</p>
15 <p>{{ 'config.otp.app.two_factor_code_description_2'|trans }}</p>
16
17 <p>
18 <img id="2faQrcode" class="hide-on-med-and-down" />
19 <script>
20 document.getElementById('2faQrcode').src = jrQrcode.getQrBase64('{{ qr_code }}');
21 </script>
22 </p>
23 </li>
24 <li>
25 <p>{{ 'config.otp.app.two_factor_code_description_3'|trans }}</p>
26
27 <p><strong>{{ backupCodes|join("\n")|nl2br }}</strong></p>
28 </li>
29 <li>
30 <p>{{ 'config.otp.app.two_factor_code_description_4'|trans }}</p>
31
32 {% for flashMessage in app.session.flashbag.get("two_factor") %}
33 <div class="card-panel red darken-1 black-text">
34 {{ flashMessage|trans }}
35 </div>
36 {% endfor %}
37
38 <form class="form" action="{{ path("config_otp_app_check") }}" method="post">
39 <div class="card-content">
40 <div class="row">
41 <div class="input-field col s12">
42 <label for="_auth_code">{{ "auth_code"|trans({}, 'SchebTwoFactorBundle') }}</label>
43 <input id="_auth_code" type="text" autocomplete="off" name="_auth_code" />
44 </div>
45 </div>
46 </div>
47 <div class="card-action">
48 <a href="{{ path('config_otp_app_cancel') }}" class="waves-effect waves-light grey btn">
49 {{ 'config.otp.app.cancel'|trans }}
50 </a>
51 <button class="btn waves-effect waves-light" type="submit" name="send">
52 {{ 'config.otp.app.enable'|trans }}
53 <i class="material-icons right">send</i>
54 </button>
55 </div>
56 </form>
57 </li>
58 </ol>
59 </div>
60 </div>
61 </div>
62 </div>
63{% endblock %}