aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Wallabag/CoreBundle/Helper/DetectActiveTheme.php9
-rw-r--r--src/Wallabag/CoreBundle/Resources/config/services.yml1
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig433
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/otp_app.html.twig55
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig7
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig219
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig116
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig7
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig14
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/search_form.html.twig17
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Exception/error.html.twig24
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Mail/forgotPassword.txt.twig6
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/README.md3
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/edit.html.twig60
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/index.html.twig42
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/new.html.twig53
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig13
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig40
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig71
-rwxr-xr-xsrc/Wallabag/CoreBundle/Resources/views/themes/baggy/screenshot.jpgbin256315 -> 0 bytes
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig4
21 files changed, 11 insertions, 1183 deletions
diff --git a/src/Wallabag/CoreBundle/Helper/DetectActiveTheme.php b/src/Wallabag/CoreBundle/Helper/DetectActiveTheme.php
index 9f90ee3e..f1d5fdea 100644
--- a/src/Wallabag/CoreBundle/Helper/DetectActiveTheme.php
+++ b/src/Wallabag/CoreBundle/Helper/DetectActiveTheme.php
@@ -16,15 +16,18 @@ class DetectActiveTheme implements DeviceDetectionInterface
16{ 16{
17 protected $tokenStorage; 17 protected $tokenStorage;
18 protected $defaultTheme; 18 protected $defaultTheme;
19 protected $themes;
19 20
20 /** 21 /**
21 * @param TokenStorageInterface $tokenStorage Needed to retrieve the current user 22 * @param TokenStorageInterface $tokenStorage Needed to retrieve the current user
22 * @param string $defaultTheme Default theme when user isn't logged in 23 * @param string $defaultTheme Default theme when user isn't logged in
24 * @param array $themes Themes come from the LiipThemeBundle (liip_theme.themes)
23 */ 25 */
24 public function __construct(TokenStorageInterface $tokenStorage, $defaultTheme) 26 public function __construct(TokenStorageInterface $tokenStorage, $defaultTheme, $themes)
25 { 27 {
26 $this->tokenStorage = $tokenStorage; 28 $this->tokenStorage = $tokenStorage;
27 $this->defaultTheme = $defaultTheme; 29 $this->defaultTheme = $defaultTheme;
30 $this->themes = $themes;
28 } 31 }
29 32
30 public function setUserAgent($userAgent) 33 public function setUserAgent($userAgent)
@@ -60,6 +63,10 @@ class DetectActiveTheme implements DeviceDetectionInterface
60 return $this->defaultTheme; 63 return $this->defaultTheme;
61 } 64 }
62 65
66 if (!in_array($config->getTheme(), $this->themes)) {
67 return $this->defaultTheme;
68 }
69
63 return $config->getTheme(); 70 return $config->getTheme();
64 } 71 }
65} 72}
diff --git a/src/Wallabag/CoreBundle/Resources/config/services.yml b/src/Wallabag/CoreBundle/Resources/config/services.yml
index 3f3d4de7..bbf2a7a0 100644
--- a/src/Wallabag/CoreBundle/Resources/config/services.yml
+++ b/src/Wallabag/CoreBundle/Resources/config/services.yml
@@ -4,6 +4,7 @@ services:
4 arguments: 4 arguments:
5 - "@security.token_storage" 5 - "@security.token_storage"
6 - "%wallabag_core.theme%" 6 - "%wallabag_core.theme%"
7 - "%liip_theme.themes%"
7 8
8 # custom form type 9 # custom form type
9 wallabag_core.form.type.config: 10 wallabag_core.form.type.config:
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
deleted file mode 100644
index f719bea2..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
+++ /dev/null
@@ -1,433 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
4
5{% block content %}
6 <h2>{{ 'config.tab_menu.settings'|trans }}</h2>
7
8 {{ form_start(form.config) }}
9 {{ form_errors(form.config) }}
10
11 <fieldset class="w500p inline">
12 <div class="row">
13 {{ form_label(form.config.theme) }}
14 {{ form_errors(form.config.theme) }}
15 {{ form_widget(form.config.theme) }}
16 </div>
17 <a href="#" title="{{ 'config.form_settings.help_theme'|trans }}">
18 <i class="material-icons">live_help</i>
19 </a>
20 </fieldset>
21
22 <fieldset class="w500p inline">
23 <div class="row">
24 {{ form_label(form.config.items_per_page) }}
25 {{ form_errors(form.config.items_per_page) }}
26 {{ form_widget(form.config.items_per_page) }}
27 </div>
28 <a href="#" title="{{ 'config.form_settings.help_items_per_page'|trans }}">
29 <i class="material-icons">live_help</i>
30 </a>
31 </fieldset>
32
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) }}
38 <p>
39 {{ 'config.form_settings.reading_speed.help_message'|trans }}
40 <a href="http://www.myreadspeed.com/calculate/">myreadspeed</a>
41 </p>
42 </div>
43 <a href="#" title="{{ 'config.form_settings.help_reading_speed'|trans }}">
44 <i class="material-icons">live_help</i>
45 </a>
46 </fieldset>
47
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
56 <fieldset class="w500p inline">
57 <div class="row">
58 {{ form_label(form.config.language) }}
59 {{ form_errors(form.config.language) }}
60 {{ form_widget(form.config.language) }}
61 </div>
62 <a href="#" title="{{ 'config.form_settings.help_language'|trans }}">
63 <i class="material-icons">live_help</i>
64 </a>
65 </fieldset>
66
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>
77 <a href="#" title="{{ 'config.form_settings.help_pocket_consumer_key'|trans }}">
78 <i class="material-icons">live_help</i>
79 </a>
80 </fieldset>
81
82 <fieldset class="w500p inline">
83 <div class="row">
84 <h3>{{ 'config.form_settings.android_configuration'|trans }}</h3>
85 <a href="wallabag://{{ app.user.username }}@{{ wallabag_url }}">{{ 'config.form_settings.android_instruction' | trans }}</a>
86 <br/>
87 <img id="androidQrcode" />
88 <script>
89 document.getElementById('androidQrcode').src = jrQrcode.getQrBase64('wallabag://{{ app.user.username }}@{{ wallabag_url }}');
90 </script>
91 </div>
92 </fieldset>
93
94 {{ form_rest(form.config) }}
95 </form>
96
97 <h2>{{ 'config.tab_menu.feed'|trans }}</h2>
98
99 {{ form_start(form.feed) }}
100 {{ form_errors(form.feed) }}
101
102 <div class="row">
103 {{ 'config.form_feed.description'|trans }}
104 </div>
105
106 <fieldset class="w500p inline">
107 <div class="row">
108 <label>{{ 'config.form_feed.token_label'|trans }}</label>
109 {% if feed.token %}
110 {{ feed.token }}
111 {% else %}
112 <em>{{ 'config.form_feed.no_token'|trans }}</em>
113 {% endif %}
114
115 {% if feed.token %}
116 – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_reset'|trans }}</a>
117 – <a href="{{ path('revoke_token') }}">{{ 'config.form_feed.token_revoke'|trans }}</a>
118 {% else %}
119 – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_create'|trans }}</a>
120 {% endif %}
121 </div>
122 </fieldset>
123
124 {% if feed.token %}
125 <fieldset class="w500p inline">
126 <div class="row">
127 <label>{{ 'config.form_feed.feed_links'|trans }}</label>
128 <ul>
129 <li><a href="{{ path('unread_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.unread'|trans }}</a></li>
130 <li><a href="{{ path('starred_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.starred'|trans }}</a></li>
131 <li><a href="{{ path('archive_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.archive'|trans }}</a></li>
132 <li><a href="{{ path('all_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.all'|trans }}</a></li>
133 </ul>
134 </div>
135 </fieldset>
136 {% endif %}
137
138 <fieldset class="w500p inline">
139 <div class="row">
140 {{ form_label(form.feed.feed_limit) }}
141 {{ form_errors(form.feed.feed_limit) }}
142 {{ form_widget(form.feed.feed_limit) }}
143 </div>
144 </fieldset>
145
146 {{ form_rest(form.feed) }}
147 </form>
148
149 <h2>{{ 'config.tab_menu.user_info'|trans }}</h2>
150
151 {{ form_start(form.user) }}
152 {{ form_errors(form.user) }}
153 <fieldset class="w500p inline">
154 <div class="row">
155 <label>{{ 'config.form_user.login_label'|trans }}</label>
156 {{ app.user.username }}
157 </div>
158 </fieldset>
159
160 <fieldset class="w500p inline">
161 <div class="row">
162 {{ form_label(form.user.name) }}
163 {{ form_errors(form.user.name) }}
164 {{ form_widget(form.user.name) }}
165 </div>
166 </fieldset>
167
168 <fieldset class="w500p inline">
169 <div class="row">
170 {{ form_label(form.user.email) }}
171 {{ form_errors(form.user.email) }}
172 {{ form_widget(form.user.email) }}
173 </div>
174 </fieldset>
175
176 {{ form_widget(form.user.save) }}
177
178 {% if twofactor_auth %}
179 <h5>{{ 'config.otp.page_title'|trans }}</h5>
180
181 <div class="row">
182 {{ 'config.form_user.two_factor_description'|trans }}
183 </div>
184
185 <table>
186 <thead>
187 <tr>
188 <th>{{ 'config.form_user.two_factor.table_method'|trans }}</th>
189 <th>{{ 'config.form_user.two_factor.table_state'|trans }}</th>
190 <th>{{ 'config.form_user.two_factor.table_action'|trans }}</th>
191 </tr>
192 </thead>
193
194 <tbody>
195 <tr>
196 <td>{{ 'config.form_user.two_factor.emailTwoFactor_label'|trans }}</td>
197 <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>
198 <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>
199 </tr>
200 <tr>
201 <td>{{ 'config.form_user.two_factor.googleTwoFactor_label'|trans }}</td>
202 <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>
203 <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>
204 </tr>
205 </tbody>
206 </table>
207
208 {% endif %}
209
210 {{ form_widget(form.user._token) }}
211 </form>
212
213 {% if enabled_users > 1 %}
214 <h2>{{ 'config.form_user.delete.title'|trans }}</h2>
215
216 <p>{{ 'config.form_user.delete.description'|trans }}</p>
217 <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">
218 {{ 'config.form_user.delete.button'|trans }}
219 </a>
220 {% endif %}
221
222 <h2>{{ 'config.tab_menu.password'|trans }}</h2>
223
224 {{ form_start(form.pwd) }}
225 {{ form_errors(form.pwd) }}
226
227 <div class="row">
228 {{ 'config.form_password.description'|trans }}
229 </div>
230
231 <fieldset class="w500p inline">
232 <div class="row">
233 {{ form_label(form.pwd.old_password) }}
234 {{ form_errors(form.pwd.old_password) }}
235 {{ form_widget(form.pwd.old_password) }}
236 </div>
237 </fieldset>
238
239 <fieldset class="w500p inline">
240 <div class="row">
241 {{ form_label(form.pwd.new_password.first) }}
242 {{ form_errors(form.pwd.new_password.first) }}
243 {{ form_widget(form.pwd.new_password.first) }}
244 </div>
245 </fieldset>
246
247 <fieldset class="w500p inline">
248 <div class="row">
249 {{ form_label(form.pwd.new_password.second) }}
250 {{ form_errors(form.pwd.new_password.second) }}
251 {{ form_widget(form.pwd.new_password.second) }}
252 </div>
253 </fieldset>
254
255 {{ form_rest(form.pwd) }}
256 </form>
257
258 <h2>{{ 'config.tab_menu.rules'|trans }}</h2>
259
260 <ul>
261 {% for tagging_rule in app.user.config.taggingRules %}
262 <li>
263 {{ 'config.form_rules.if_label'|trans }}
264 « {{ tagging_rule.rule }} »
265 {{ 'config.form_rules.then_tag_as_label'|trans }}
266 « {{ tagging_rule.tags|join(', ') }} »
267 <a href="{{ path('edit_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}" class="tool mode_edit">✎</a>
268 <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>
269 </li>
270 {% endfor %}
271 </ul>
272
273 {{ form_start(form.new_tagging_rule) }}
274 {{ form_errors(form.new_tagging_rule) }}
275
276 <fieldset class="w500p inline">
277 <div class="row">
278 {{ form_label(form.new_tagging_rule.rule) }}
279 {{ form_errors(form.new_tagging_rule.rule) }}
280 {{ form_widget(form.new_tagging_rule.rule) }}
281 </div>
282 </fieldset>
283
284 <fieldset class="w500p inline">
285 <div class="row">
286 {{ form_label(form.new_tagging_rule.tags) }}
287 {{ form_errors(form.new_tagging_rule.tags) }}
288 {{ form_widget(form.new_tagging_rule.tags) }}
289 </div>
290 </fieldset>
291
292 {{ form_rest(form.new_tagging_rule) }}
293 </form>
294
295 <div class="row">
296 <h3>{{ 'config.form_rules.card.import_tagging_rules'|trans }}</h3>
297 <p>{{ 'config.form_rules.card.import_tagging_rules_detail'|trans }}</p>
298 </div>
299
300 {{ form_start(form.import_tagging_rule) }}
301 {{ form_errors(form.import_tagging_rule) }}
302
303 <fieldset class="w500p inline">
304 <div class="row">
305 {{ form_label(form.import_tagging_rule.file) }}
306 {{ form_errors(form.import_tagging_rule.file) }}
307 {{ form_widget(form.import_tagging_rule.file) }}
308 </div>
309 </fieldset>
310
311 {{ form_rest(form.import_tagging_rule) }}
312 </form>
313
314 {% if app.user.config.taggingRules is not empty %}
315 <div class="row">
316 <h3>{{ 'config.form_rules.card.export_tagging_rules'|trans }}</h3>
317 <p>{{ 'config.form_rules.card.export_tagging_rules_detail'|trans }}</p>
318 <p><a href="{{ path('export_tagging_rule') }}" class="waves-effect waves-light btn">{{ 'config.form_rules.export'|trans }}</a></p>
319 </div>
320 {% endif %}
321
322 <div class="row">
323 <div class="input-field col s12">
324 <h3>{{ 'config.form_rules.faq.title'|trans }}</h3>
325
326 <h4>{{ 'config.form_rules.faq.tagging_rules_definition_title'|trans }}</h4>
327 <p class="help">{{ 'config.form_rules.faq.tagging_rules_definition_description'|trans|raw }}</p>
328
329 <h4>{{ 'config.form_rules.faq.how_to_use_them_title'|trans }}</h4>
330 <p class="help">{{ 'config.form_rules.faq.how_to_use_them_description'|trans|raw }}</p>
331
332 <h4>{{ 'config.form_rules.faq.variables_available_title'|trans }}</h4>
333 <p class="help">
334 {{ 'config.form_rules.faq.variables_available_description'|trans }}
335 </p>
336
337 <table class="bordered">
338 <thead>
339 <tr>
340 <th>{{ 'config.form_rules.faq.variable_description.label'|trans }}</th>
341 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
342 <th>{{ 'config.form_rules.faq.operator_description.label'|trans }}</th>
343 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
344 </tr>
345 </thead>
346
347 <tbody>
348 <tr>
349 <td>title</td>
350 <td>{{ 'config.form_rules.faq.variable_description.title'|trans }}</td>
351 <td>&lt;=</td>
352 <td>{{ 'config.form_rules.faq.operator_description.less_than'|trans }}</td>
353 </tr>
354 <tr>
355 <td>url</td>
356 <td>{{ 'config.form_rules.faq.variable_description.url'|trans }}</td>
357 <td>&lt;</td>
358 <td>{{ 'config.form_rules.faq.operator_description.strictly_less_than'|trans }}</td>
359 </tr>
360 <tr>
361 <td>isArchived</td>
362 <td>{{ 'config.form_rules.faq.variable_description.isArchived'|trans }}</td>
363 <td>&gt;=</td>
364 <td>{{ 'config.form_rules.faq.operator_description.greater_than'|trans }}</td>
365 </tr>
366 <tr>
367 <td>isStarred</td>
368 <td>{{ 'config.form_rules.faq.variable_description.isStarred'|trans }}</td>
369 <td>&gt;</td>
370 <td>{{ 'config.form_rules.faq.operator_description.strictly_greater_than'|trans }}</td>
371 </tr>
372 <tr>
373 <td>content</td>
374 <td>{{ 'config.form_rules.faq.variable_description.content'|trans }}</td>
375 <td>=</td>
376 <td>{{ 'config.form_rules.faq.operator_description.equal_to'|trans }}</td>
377 </tr>
378 <tr>
379 <td>language</td>
380 <td>{{ 'config.form_rules.faq.variable_description.language'|trans }}</td>
381 <td>!=</td>
382 <td>{{ 'config.form_rules.faq.operator_description.not_equal_to'|trans }}</td>
383 </tr>
384 <tr>
385 <td>mimetype</td>
386 <td>{{ 'config.form_rules.faq.variable_description.mimetype'|trans }}</td>
387 <td>OR</td>
388 <td>{{ 'config.form_rules.faq.operator_description.or'|trans }}</td>
389 </tr>
390 <tr>
391 <td>readingTime</td>
392 <td>{{ 'config.form_rules.faq.variable_description.readingTime'|trans }}</td>
393 <td>AND</td>
394 <td>{{ 'config.form_rules.faq.operator_description.and'|trans }}</td>
395 </tr>
396 <tr>
397 <td>domainName</td>
398 <td>{{ 'config.form_rules.faq.variable_description.domainName'|trans }}</td>
399 <td>matches</td>
400 <td>{{ 'config.form_rules.faq.operator_description.matches'|trans|raw }}</td>
401 </tr>
402 </tbody>
403 </table>
404 </div>
405 </div>
406
407 <h2>{{ 'config.reset.title'|trans }}</h2>
408 <fieldset class="w500p inline">
409 <p>{{ 'config.reset.description'|trans }}</p>
410 <ul>
411 <li>
412 <a href="{{ path('config_reset', { type: 'annotations'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
413 {{ 'config.reset.annotations'|trans }}
414 </a>
415 </li>
416 <li>
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 }}
419 </a>
420 </li>
421 <li>
422 <a href="{{ path('config_reset', { type: 'archived'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
423 {{ 'config.reset.archived'|trans }}
424 </a>
425 </li>
426 <li>
427 <a href="{{ path('config_reset', { type: 'entries'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
428 {{ 'config.reset.entries'|trans }}
429 </a>
430 </li>
431 </ul>
432 </fieldset>
433{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/otp_app.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/otp_app.html.twig
deleted file mode 100644
index 1d3685ae..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/otp_app.html.twig
+++ /dev/null
@@ -1,55 +0,0 @@
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 <h5>{{ 'config.otp.page_title'|trans }}</h5>
7
8 <ol>
9 <li>
10 <p>{{ 'config.otp.app.two_factor_code_description_1'|trans }}</p>
11 <p>{{ 'config.otp.app.two_factor_code_description_2'|trans }}</p>
12
13 <p>
14 <img id="2faQrcode" class="hide-on-med-and-down" />
15 <script>
16 document.getElementById('2faQrcode').src = jrQrcode.getQrBase64('{{ qr_code }}');
17 </script>
18 </p>
19 </li>
20 <li>
21 <p>{{ 'config.otp.app.two_factor_code_description_3'|trans }}</p>
22
23 <p><strong>{{ backupCodes|join("\n")|nl2br }}</strong></p>
24 </li>
25 <li>
26 <p>{{ 'config.otp.app.two_factor_code_description_4'|trans }}</p>
27
28 {% for flashMessage in app.session.flashbag.get("two_factor") %}
29 <div class="card-panel red darken-1 black-text">
30 {{ flashMessage|trans }}
31 </div>
32 {% endfor %}
33
34 <form class="form" action="{{ path("config_otp_app_check") }}" method="post">
35 <div class="card-content">
36 <div class="row">
37 <div class="input-field col s12">
38 <label for="_auth_code">{{ "auth_code"|trans({}, 'SchebTwoFactorBundle') }}</label>
39 <input id="_auth_code" type="text" autocomplete="off" name="_auth_code" />
40 </div>
41 </div>
42 </div>
43 <div class="card-action">
44 <a href="{{ path('config_otp_app_cancel') }}" class="waves-effect waves-light grey btn">
45 {{ 'config.otp.app.cancel'|trans }}
46 </a>
47 <button class="btn waves-effect waves-light" type="submit" name="send">
48 {{ 'config.otp.app.enable'|trans }}
49 <i class="material-icons right">send</i>
50 </button>
51 </div>
52 </form>
53 </li>
54 </ol>
55{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig
deleted file mode 100644
index e974fc69..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig
+++ /dev/null
@@ -1,7 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
4
5{% block content %}
6 {{ form(form) }}
7{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
deleted file mode 100644
index 4182628f..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
+++ /dev/null
@@ -1,219 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block head %}
4 {{ parent() }}
5 {% if tag is defined and app.user.config.feedToken %}
6 <link rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" />
7 {% endif %}
8{% endblock %}
9
10{% block title %}
11 {% set filter = '' %}
12 {% if tag is defined %}
13 {% set filter = tag %}
14 {% endif %}
15 {% if searchTerm is defined and searchTerm is not empty %}
16 {% set filter = searchTerm %}
17 {% endif %}
18 {% include "@WallabagCore/themes/common/Entry/_title.html.twig" with {'filter': filter} %}
19{% endblock %}
20
21{% block content %}
22 {% set currentRoute = app.request.attributes.get('_route') %}
23 {% if currentRoute == 'homepage' %}
24 {% set currentRoute = 'unread' %}
25 {% endif %}
26 {% set listMode = app.user.config.listMode %}
27 <div class="results">
28 <div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
29 <div class="pagination">
30 <a href="{{ path('switch_view_mode') }}"><i class="listMode-btn material-icons md-24">{% if listMode == 0 %}list{% else %}view_module{% endif %}</i></a>
31 {% if app.user.config.feedToken %}
32 {% include "@WallabagCore/themes/common/Entry/_feed_link.html.twig" %}
33 {% endif %}
34 {% if currentRoute in ['unread', 'starred', 'archive', 'untagged', 'all'] %}
35 <a href="{{ path('random_entry', { 'type': currentRoute }) }}"><i class="btn-clickable material-icons md-24 js-random-action">casino</i></a>
36 {% endif %}
37 <i class="btn-clickable download-btn material-icons md-24 js-export-action">file_download</i>
38 <i class="btn-clickable filter-btn material-icons md-24 js-filters-action">filter_list</i>
39 {% if entries.getNbPages > 1 %}
40 {{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }}
41 {% endif %}
42 </div>
43 </div>
44
45 {% for entry in entries %}
46 <div id="entry-{{ entry.id|e }}" class="{% if listMode == 0 %}entry{% else %}listmode entry{% endif %}">
47 <h2><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|e|raw }}">{{ entry.title | striptags | truncate(80, true, '…') | default('entry.default_title'|trans) | raw }}</a></h2>
48
49 {% set readingTime = entry.readingTime / app.user.config.readingSpeed * 200 %}
50 <div class="estimatedTime">
51 <span class="tool reading-time">
52 {% if readingTime > 0 %}
53 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': readingTime|round}) }}
54 {% else %}
55 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
56 {% endif %}
57 </span>
58 <span class="tool created-at">
59 <i class="tool icon icon-calendar" title="{{ 'entry.view.created_at'|trans }}">
60 {{ entry.createdAt|date('Y-m-d') }}
61 </i>
62 </span>
63 </div>
64
65 <ul class="tools links">
66 <li><a href="{{ entry.url|e }}" target="_blank" rel="noopener" title="{{ 'entry.list.original_article'|trans }} : {{ entry.title|e }}"><span>{{ entry.domainName|removeWww }}</span></a></li>
67 <li><a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool icon {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><i class="material-icons md-24 vertical-align-middle">check</i><span>{{ 'entry.list.toogle_as_read'|trans }}</span></a></li>
68 <li><a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool icon {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><i class="material-icons md-24 vertical-align-middle">star_rate</i><span>{{ 'entry.list.toogle_as_star'|trans }}</span></a></li>
69 <li><a title="{{ 'entry.list.delete'|trans }}" class="tool icon" onclick="return confirm('{{ 'entry.confirm.delete'|trans|escape('js') }}')" href="{{ path('delete_entry', { 'id': entry.id }) }}"><i class="material-icons md-24 vertical-align-middle">delete</i><span>{{ 'entry.list.delete'|trans }}</span></a></li>
70 </ul>
71 {% if (entry.previewPicture is null or listMode == 1) %}
72 <ul class="card-entry-tags">
73 {% for tag in entry.tags %}
74 <li><a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{ tag.label }}</a></li>
75 {% endfor %}
76 </ul>
77 <p {% if listMode == 1 %}class="hide"{% endif %}>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p>
78 {% else %}
79 <ul class="card-entry-labels">
80 {% for tag in entry.tags | slice(0, 3) %}
81 <li><a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{ tag.label }}</a></li>
82 {% endfor %}
83 </ul>
84 <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|e|raw }}" />
85 {% endif %}
86 </div>
87 {% endfor %}
88
89 {% if entries.getNbPages > 1 %}
90 {{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }}
91 {% endif %}
92
93 <!-- Export -->
94 <aside id="download-form">
95 {% set currentTag = null %}
96 {% if tag is defined %}
97 {% set currentTag = tag %}
98 {% endif %}
99 {% set exportSearchTerm = null %}
100 {% if searchTerm is defined %}
101 {% set exportSearchTerm = searchTerm %}
102 {% endif %}
103 {% set previousRoute = app.request.attributes.get('currentRoute') %}
104 <h2>{{ 'entry.list.export_title'|trans }}</h2>
105 <a href="javascript: void(null);" id="download-form-close" class="close-button--popup close-button">&times;</a>
106 <ul>
107 {% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'epub', 'tag' : currentTag, 'search_entry[term]' : exportSearchTerm, 'currentRoute' : previousRoute }) }}">EPUB</a></li>{% endif %}
108 {% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'mobi', 'tag' : currentTag, 'search_entry[term]' : exportSearchTerm, 'currentRoute' : previousRoute }) }}">MOBI</a></li>{% endif %}
109 {% if craue_setting('export_pdf') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'pdf', 'tag' : currentTag, 'search_entry[term]' : exportSearchTerm, 'currentRoute' : previousRoute }) }}">PDF</a></li>{% endif %}
110 {% if craue_setting('export_json') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'json', 'tag' : currentTag, 'search_entry[term]' : exportSearchTerm, 'currentRoute' : previousRoute }) }}">JSON</a></li>{% endif %}
111 {% if craue_setting('export_csv') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'csv', 'tag' : currentTag, 'search_entry[term]' : exportSearchTerm, 'currentRoute' : previousRoute }) }}">CSV</a></li>{% endif %}
112 {% if craue_setting('export_txt') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'txt', 'tag' : currentTag, 'search_entry[term]' : exportSearchTerm, 'currentRoute' : previousRoute }) }}">TXT</a></li>{% endif %}
113 {% if craue_setting('export_xml') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'xml', 'tag' : currentTag, 'search_entry[term]' : exportSearchTerm, 'currentRoute' : previousRoute }) }}">XML</a></li>{% endif %}
114 </ul>
115 </aside>
116
117 <!-- Filter -->
118 {% if form is not null %}
119 <div id="filters">
120 <form method="get" action="{{ path('all') }}">
121 <h2>{{ 'entry.filters.title'|trans }}</h2>
122 <a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">&times;</a>
123
124 <div id="filter-status" class="filter-group">
125 {% if currentRoute != 'untagged' and nbEntriesUntagged != 0 %}
126 <div class="">
127 <a href="{{ path('untagged') }}">{{ 'tag.list.see_untagged_entries'|trans }} ({{nbEntriesUntagged}})</a>
128 </div>
129 {% endif %}
130
131 <div class="">
132 <label>{{ 'entry.filters.status_label'|trans }}</label>
133 </div>
134 <div class="input-field">
135 {{ form_widget(form.isArchived) }}
136 {{ form_label(form.isArchived) }}
137 </div>
138
139 <div class="input-field">
140 {{ form_widget(form.isStarred) }}
141 {{ form_label(form.isStarred) }}
142 </div>
143
144 <div class="input-field">
145 {{ form_widget(form.isUnread) }}
146 {{ form_label(form.isUnread) }}
147 </div>
148
149 <div class="input-field">
150 {{ form_widget(form.previewPicture) }}
151 {{ form_label(form.previewPicture) }}
152 </div>
153
154 <div class="input-field">
155 {{ form_widget(form.isPublic) }}
156 {{ form_label(form.isPublic) }}
157 </div>
158 </div>
159
160 <div id="filter-language" class="filter-group">
161 {{ form_label(form.language) }}
162 <div class="input-field ">
163 {{ form_widget(form.language) }}
164 </div>
165 </div>
166
167 <div id="filter-http-status" class="filter-group">
168 {{ form_label(form.httpStatus) }}
169 <div class="input-field ">
170 {{ form_widget(form.httpStatus) }}
171 </div>
172 </div>
173
174 <div id="filter-reading-time" class="filter-group">
175 <div class="">
176 {{ form_label(form.readingTime) }}
177 </div>
178 <div class="input-field ">
179 <label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
180 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
181 </div>
182 <div class="input-field ">
183 <label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
184 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
185 </div>
186 </div>
187
188 <div id="filter-domain-name" class="filter-group">
189 {{ form_label(form.domainName) }}
190 <div class="input-field ">
191 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
192 </div>
193 </div>
194
195 <div id="filter-creation-date" class="filter-group">
196 <div class="">
197 {{ form_label(form.createdAt) }}
198 </div>
199 <div class="input-field ">
200 <label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
201 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
202 </div>
203 <div class="input-field ">
204 <label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
205 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
206 </div>
207 </div>
208
209 <div id="filter-buttons" class="filter-group">
210 <div class="">
211 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
212 </div>
213
214 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
215 </div>
216 </form>
217 </div>
218 {% endif %}
219{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
deleted file mode 100644
index c2e69a27..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
+++ /dev/null
@@ -1,116 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ entry.title|e|default('entry.default_title'|trans)|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
4
5{% block content %}
6 <div id="article">
7 <header class="mbm">
8 <h1><span{% if entry.language is defined and entry.language is not null %} lang="{{ entry.getHTMLLanguage() }}"{% endif %}>{{ entry.title|e|default('entry.default_title'|trans)|raw }}</span> <a href="{{ path('edit', { 'id': entry.id }) }}" class="nostyle" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
9 </header>
10
11 <div id="article_toolbar">
12 <ul class="links">
13 <li class="topPosF"><a href="#top" title="{{ 'entry.view.left_menu.back_to_top'|trans }}" class="tool top icon icon-arrow-up-thick"><span>{{ 'entry.view.left_menu.set_as_read'|trans }}</span></a></li>
14 <li><a href="{{ entry.url|e }}" target="_blank" rel="noopener" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link original"><span>{{ entry.domainName|removeWww }}</span></a></li>
15 <li><a title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" class="tool icon icon-reload" href="{{ path('reload_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span></a></li>
16
17 {% set markAsReadLabel = 'entry.view.left_menu.set_as_unread' %}
18 {% if entry.isArchived == 0 %}
19 {% set markAsReadLabel = 'entry.view.left_menu.set_as_read' %}
20 {% endif %}
21
22 <li><a title="{{ markAsReadLabel|trans }}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %} markasread" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{{ markAsReadLabel|trans }}</span></a></li>
23 <li><a title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %} favorite" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span></a></li>
24 <li><a id="nav-btn-add-tag" class="tool icon icon-price-tags" title="{{ 'entry.view.left_menu.add_a_tag'|trans }}"><span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span></a></li>
25 <li><a title="{{ 'entry.view.left_menu.delete'|trans }}" onclick="return confirm('{{ 'entry.confirm.delete'|trans|escape('js') }}')" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.delete'|trans }}</span></a></li>
26 {% if craue_setting('share_public') %}
27 <li><a href="{{ path('share', {'id': entry.id }) }}" target="_blank" class="tool icon icon-eye" title="{{ 'entry.view.left_menu.public_link'|trans }}"><span>{{ 'entry.view.left_menu.public_link'|trans }}</span></a></li>
28 <li><a href="{{ path('delete_share', {'id': entry.id }) }}" class="tool icon icon-no-eye" title="{{ 'entry.view.left_menu.delete_public_link'|trans }}"><span>{{ 'entry.view.left_menu.delete_public_link'|trans }}</span></a></li>
29 {% endif %}
30 {% if craue_setting('share_twitter') %}<li><a href="https://twitter.com/share?text={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" rel="noopener" class="tool twitter icon icon-twitter" title="Tweet"><span>Tweet</span></a></li>{% endif %}
31 {% if craue_setting('share_mail') %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="Email"><span>Email</span></a></li>{% endif %}
32 {% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}&amp;tags={{ entry.tags|join(',')|url_encode }}{% if craue_setting('shaarli_share_origin_url') %}&amp;original_url={{ entry.originUrl|url_encode }}{% endif %}" target="_blank" rel="noopener" class="tool icon-image icon-image--shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %}
33 {% if craue_setting('share_scuttle') %}<li><a href="{{ craue_setting('scuttle_url') }}/bookmarks.php?action=add&amp;address={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}&amp;tags={{ entry.tags|join(',')|url_encode }}" target="_blank" rel="noopener" class="tool icon-image icon-image--scuttle" title="scuttle"><span>scuttle</span></a></li>{% endif %}
34 {% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" rel="noopener" class="tool diaspora icon-image icon-image--diaspora" title="diaspora"><span>diaspora</span></a></li>{% endif %}
35 {% if craue_setting('share_unmark') %}<li><a href="{{ craue_setting('unmark_url') }}/mark/add?url={{ entry.url|url_encode }}&amp;title={{entry.title|url_encode}}&amp;v=6" target="_blank" rel="noopener" class="tool unmark icon-image icon-image--unmark" title="unmark"><span>unmark.it</span></a></li>{% endif %}
36 {% if craue_setting('carrot') %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" rel="noopener" title="carrot"><span>Carrot</span></a></li>{% endif %}
37 {% if craue_setting('show_printlink') %}<li><a title="{{ 'entry.view.left_menu.print'|trans }}" class="tool icon icon-print" href="javascript: window.print();"><span>{{ 'entry.view.left_menu.print'|trans }}</span></a></li>{% endif %}
38 {% if craue_setting('export_epub') %}<li><a href="{{ path('export_entry', { 'id': entry.id, 'format': 'epub' }) }}" title="Generate ePub file">EPUB</a></li>{% endif %}
39 {% if craue_setting('export_mobi') %}<li><a href="{{ path('export_entry', { 'id': entry.id, 'format': 'mobi' }) }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
40 {% if craue_setting('export_pdf') %}<li><a href="{{ path('export_entry', { 'id': entry.id, 'format': 'pdf' }) }}" title="Generate PDF file">PDF</a></li>{% endif %}
41 <li><a href="mailto:siteconfig@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.label'|trans }}" class="tool bad-display icon icon-delete"><span>{{ 'entry.view.left_menu.problem.label'|trans }}</span></a></li>
42 </ul>
43 </div>
44
45 <div id="article-informations">
46 <i class="tool icon icon-calendar" title="{{ 'entry.view.created_at'|trans }}">
47 {{ entry.createdAt|date('Y-m-d H:i') }}
48 </i>
49
50 {% if entry.publishedAt is not null %}
51 <i class="tool icon icon-pencil2" title="{{ 'entry.view.published_at'|trans }}">
52 {{ entry.publishedAt|date('Y-m-d H:i') }}
53 </i>
54 {% endif %}
55
56 {% if entry.publishedBy is not empty %}
57 <i class="tool icon icon-users" title="{{ 'entry.view.published_by'|trans }}">
58 {% for author in entry.publishedBy %}
59 {{ author }}{% if not loop.last %}, {% endif %}
60 {% endfor %}
61 </i>
62 {% endif %}
63
64 <i class="tool icon icon-time">
65 {% set readingTime = entry.readingTime / app.user.config.readingSpeed * 200 %}
66 {% if readingTime > 0 %}
67 {{ 'entry.list.reading_time_minutes_short'|trans({'%readingTime%': readingTime|round}) }}
68 {% else %}
69 {{ 'entry.list.reading_time_less_one_minute_short'|trans|raw }}
70 {% endif %}
71 </i>
72
73 <span class="tool link"><i class="material-icons">comment</i> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
74
75 {% if entry.originUrl is not empty %}
76 <i class="material-icons" title="{{ 'entry.view.provided_by'|trans }}">launch</i>
77 <a href="{{ entry.originUrl|e }}" target="_blank" rel="noopener" class="tool">
78 {{ entry.originUrl|striptags|removeSchemeAndWww|truncate(32) }}
79 </a>
80 {% endif %}
81
82 <aside class="tags">
83 <div class="card-entry-tags">
84 {% for tag in entry.tags %}
85 <span class="label-outline">
86 <i class="material-icons">label_outline</i>
87 <a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{ tag.label }}</a>
88 <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}" onclick="return confirm('{{ 'entry.confirm.delete_tag'|trans|escape('js') }}')" class="nostyle">
89 <i>✘</i>
90 </a>
91 </span>
92 {% endfor %}
93 </div>
94 <div class="input-field baggy-add-tag" style="display: none">
95 {{ render(controller( "WallabagCoreBundle:Tag:addTagForm", { 'id': entry.id } )) }}
96 </div>
97 </aside>
98 </div>
99 <article{% if entry.language is defined and entry.language is not null %} lang="{{ entry.getHTMLLanguage() }}"{% endif %}>
100 {{ entry.content | raw }}
101 </article>
102 </div>
103
104 <script id="annotationroutes" type="application/json">
105 {
106 "prefix": "",
107 "urls": {
108 "create": "{{ path('annotations_post_annotation', { 'entry': entry.id }) }}",
109 "update": "{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}",
110 "destroy": "{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}",
111 "search": "{{ path('annotations_get_annotations', { 'entry': entry.id }) }}"
112 },
113 "entryId": "{{ entry.id }}"
114 }
115 </script>
116{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig
deleted file mode 100644
index 03768a3d..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig
+++ /dev/null
@@ -1,7 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
4
5{% block content %}
6 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }}
7{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig
deleted file mode 100644
index 8c129068..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig
+++ /dev/null
@@ -1,14 +0,0 @@
1<form name="entry" method="post" action="{{ path('new_entry')}}">
2 {% if form_errors(form) %}
3 <span class="black-text">{{ form_errors(form) }}</span>
4 {% endif %}
5
6 {% if form_errors(form.url) %}
7 <span class="black-text">{{ form_errors(form.url) }}</span>
8 {% endif %}
9
10 {{ form_label(form.url) }}
11 {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
12
13 {{ form_rest(form) }}
14</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/search_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/search_form.html.twig
deleted file mode 100644
index 20821b6d..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/search_form.html.twig
+++ /dev/null
@@ -1,17 +0,0 @@
1<form name="search" method="GET" action="{{ path('search')}}">
2 <h2>{{ 'menu.left.search'|trans }}</h2>
3 <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a>
4 {% if form_errors(form) %}
5 <span class="black-text">{{ form_errors(form) }}</span>
6 {% endif %}
7
8 {% if form_errors(form.term) %}
9 <span class="black-text">{{ form_errors(form.term) }}</span>
10 {% endif %}
11
12 <input type="hidden" name="currentRoute" value="{{ currentRoute }}" />
13
14 {{ form_widget(form.term, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.search.placeholder'} }) }}
15
16 {{ form_rest(form) }}
17</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Exception/error.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Exception/error.html.twig
deleted file mode 100644
index 9959cc3d..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Exception/error.html.twig
+++ /dev/null
@@ -1,24 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ 'error.page_title'|trans }}{% endblock %}
4
5{% block body_class %}login{% endblock %}
6
7{% block menu %}{% endblock %}
8{% block messages %}{% endblock %}
9{% block header %}{% endblock %}
10
11{% block content %}
12<main class="valign-wrapper">
13 <div class="valign row">
14 <div class="card sw">
15 <div class="center"><img src="{{ asset('wallassets/themes/_global/img/logo-w.png') }}" alt="wallabag logo" /></div>
16 <h2>{{ status_code }}: {{ status_text }}</h2>
17 <p>{{ exception.message }}</p>
18 </div>
19 </div>
20</main>
21{% endblock %}
22
23{% block footer %}
24{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Mail/forgotPassword.txt.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Mail/forgotPassword.txt.twig
deleted file mode 100644
index 631bcb88..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Mail/forgotPassword.txt.twig
+++ /dev/null
@@ -1,6 +0,0 @@
1Hello {{username}}!
2
3To reset your password - please visit {{confirmationUrl}}
4
5Regards,
6Wallabag bot
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/README.md b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/README.md
deleted file mode 100644
index 3db07873..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
1# Baggy Theme
2
3theme created by Thomas LEBEAU alias Courgette http://thomaslebeau.fr/
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/edit.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/edit.html.twig
deleted file mode 100644
index 882be430..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/edit.html.twig
+++ /dev/null
@@ -1,60 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ 'site_credential.page_title'|trans }}{% endblock %}
4
5{% block content %}
6
7 <div class="row">
8 <div class="col s12">
9 <div class="card-panel">
10 <div class="row">
11 <div class="input-field col s12">
12 <h4>{{ 'site_credential.edit_site_credential'|trans }}</h4>
13
14 <div id="set6" class="col s12">
15 {{ form_start(edit_form) }}
16 {{ form_errors(edit_form) }}
17
18 <div class="row">
19 <div class="input-field col s12">
20 {{ form_label(edit_form.host) }}
21 {{ form_errors(edit_form.host) }}
22 {{ form_widget(edit_form.host) }}
23 </div>
24 </div>
25
26 <div class="row">
27 <div class="input-field col s12">
28 {{ form_label(edit_form.username) }}
29 {{ form_errors(edit_form.username) }}
30 {{ form_widget(edit_form.username) }}
31 </div>
32 </div>
33
34 <div class="row">
35 <div class="input-field col s12">
36 {{ form_label(edit_form.password) }}
37 {{ form_errors(edit_form.password) }}
38 {{ form_widget(edit_form.password) }}
39 </div>
40 </div>
41
42 <br/>
43
44 {{ form_widget(edit_form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
45 {{ form_widget(edit_form._token) }}
46 </form>
47 <p>
48 {{ form_start(delete_form) }}
49 <button onclick="return confirm('{{ 'site_credential.form.delete_confirm'|trans|escape('js') }}')" type="submit" class="btn waves-effect waves-light red">{{ 'site_credential.form.delete'|trans }}</button>
50 {{ form_end(delete_form) }}
51 </p>
52 <p><a class="waves-effect waves-light btn blue-grey" href="{{ path('site_credentials_index') }}">{{ 'site_credential.form.back_to_list'|trans }}</a></p>
53 </div>
54 </div>
55 </div>
56 </div>
57 </div>
58 </div>
59
60{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/index.html.twig
deleted file mode 100644
index 324854ad..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/index.html.twig
+++ /dev/null
@@ -1,42 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ 'site_credential.page_title'|trans }}{% endblock %}
4
5{% block content %}
6
7 <div class="row">
8 <div class="col s12">
9 <div class="card-panel">
10 <div class="row">
11 <div class="input-field col s12">
12 <p class="help">{{ 'site_credential.description'|trans|raw }}</p>
13
14 <table class="bordered">
15 <thead>
16 <tr>
17 <th>{{ 'site_credential.form.host_label'|trans }}</th>
18 <th>{{ 'site_credential.list.actions'|trans }}</th>
19 </tr>
20 </thead>
21 <tbody>
22 {% for credential in credentials %}
23 <tr>
24 <td>{{ credential.host }}</td>
25 <td>
26 <a href="{{ path('site_credentials_edit', { 'id': credential.id }) }}">{{ 'site_credential.list.edit_action'|trans }}</a>
27 </td>
28 </tr>
29 {% endfor %}
30 </tbody>
31 </table>
32 <br />
33 <p>
34 <a href="{{ path('site_credentials_new') }}" class="waves-effect waves-light btn">{{ 'site_credential.list.create_new_one'|trans }}</a>
35 </p>
36 </div>
37 </div>
38 </div>
39 </div>
40 </div>
41
42{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/new.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/new.html.twig
deleted file mode 100644
index 3c008cde..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/new.html.twig
+++ /dev/null
@@ -1,53 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ 'site_credential.page_title'|trans }}{% endblock %}
4
5{% block content %}
6
7 <div class="row">
8 <div class="col s12">
9 <div class="card-panel">
10 <div class="row">
11 <div class="input-field col s12">
12 <h4>{{ 'site_credential.new_site_credential'|trans }}</h4>
13
14 <div id="set6" class="col s12">
15 {{ form_start(form) }}
16 {{ form_errors(form) }}
17
18 <div class="row">
19 <div class="input-field col s12">
20 {{ form_label(form.host) }}
21 {{ form_errors(form.host) }}
22 {{ form_widget(form.host) }}
23 </div>
24 </div>
25
26 <div class="row">
27 <div class="input-field col s12">
28 {{ form_label(form.username) }}
29 {{ form_errors(form.username) }}
30 {{ form_widget(form.username) }}
31 </div>
32 </div>
33
34 <div class="row">
35 <div class="input-field col s12">
36 {{ form_label(form.password) }}
37 {{ form_errors(form.password) }}
38 {{ form_widget(form.password) }}
39 </div>
40 </div>
41
42 {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
43 {{ form_rest(form) }}
44 </form>
45 <p><a class="waves-effect waves-light btn blue-grey" href="{{ path('site_credentials_index') }}">{{ 'site_credential.form.back_to_list'|trans }}</a></p>
46 </div>
47 </div>
48 </div>
49 </div>
50 </div>
51 </div>
52
53{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig
deleted file mode 100644
index 6e552560..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig
+++ /dev/null
@@ -1,13 +0,0 @@
1<form name="tag" method="post" action="{{ path('new_tag', { 'entry': entry.id })}}">
2 {% if form_errors(form) %}
3 <span class="black-text">{{ form_errors(form) }}</span>
4 {% endif %}
5
6 {% if form_errors(form.label) %}
7 <span class="black-text">{{ form_errors(form.label) }}</span>
8 {% endif %}
9
10 {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
11
12 {{ form_rest(form) }}
13</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
deleted file mode 100644
index aa17b842..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
+++ /dev/null
@@ -1,40 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
4
5{% block content %}
6 <div class="results">
7 <div class="nb-results">{{ 'tag.list.number_on_the_page'|transchoice(tags|length) }}</div>
8 </div>
9
10 <ul>
11 {% for tag in tags %}
12 <li id="tag-{{ tag.id|e }}">
13 <a href="{{ path('tag_entries', {'slug': tag.slug}) }}" data-handle="tag-link">{{ tag.label }}&nbsp;({{ tag.nbEntries }})</a>
14
15 {% if renameForms is defined and renameForms[tag.id] is defined %}
16 <form class="card-tag-form hidden" data-handle="tag-rename-form" action="{{ path('tag_rename', {'slug': tag.slug})}}" method="POST">
17 {{ form_widget(renameForms[tag.id].label, {'attr': {'value': tag.label}}) }}
18 {{ form_rest(renameForms[tag.id]) }}
19 </form>
20 <a class="card-tag-rename" data-handler="tag-rename" href="javascript:void(0);">
21 <i class="material-icons">mode_edit</i>
22 </a>
23 {% endif %}
24 {% if app.user.config.feedToken %}
25 <a rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" class="right">
26 <i class="material-icons md-24">rss_feed</i>
27 </a>
28 {% endif %}
29 </li>
30 {% endfor %}
31 </ul>
32
33 <div>
34 {% if nbEntriesUntagged == 0 %}
35 {{ 'tag.list.no_untagged_entries'|trans }}
36 {% else %}
37 <a href="{{ path('untagged') }}">{{ 'tag.list.see_untagged_entries'|trans }} ({{nbEntriesUntagged}})</a>
38 {% endif %}
39 </div>
40{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
deleted file mode 100644
index 6b1e2bd7..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
+++ /dev/null
@@ -1,71 +0,0 @@
1{% extends "WallabagCoreBundle::base.html.twig" %}
2
3{% block css %}
4 {{ parent() }}
5 {% if not app.debug %}
6 <link rel="stylesheet" href="{{ asset('wallassets/baggy.css') }}">
7 {% endif %}
8{% endblock %}
9
10{% block scripts %}
11 {{ parent() }}
12 <script src="{{ asset('wallassets/baggy' ~ (app.debug ? '.dev' : '') ~ '.js') }}"></script>
13{% endblock %}
14
15{% block header %}
16 <header class="w600p center mbm">
17 <h1 class="logo">
18 {% block logo %}
19 <a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}">
20 <img width="100" height="100" src="{{ asset('wallassets/themes/_global/img/logo-w.png') }}" alt="wallabag logo" />
21 </a>
22 {% endblock %}
23 </h1>
24 </header>
25{% endblock %}
26
27{% block menu %}
28 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
29 <ul id="links" class="links">
30 <li class="menu unread"><a href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a></li>
31 <li class="menu starred"><a href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a></li>
32 <li class="menu archive"><a href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a></li>
33 <li class="menu all"><a href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a></li>
34 <li class="menu tag"><a href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a></li>
35 <li class="menu new"><a href="{{ path('new') }}">{{ 'menu.left.save_link'|trans }}</a></li>
36 <li style="position: relative;"><a href="javascript: void(null);" id="search">{{ 'menu.left.search'|trans }}</a>
37 <div id="search-form" class="messages info popup-form">
38 {{ render(controller("WallabagCoreBundle:Entry:searchForm", {'currentRoute': app.request.attributes.get('_route')})) }}
39 </div>
40 </li>
41 {% if craue_setting('restricted_access') %}
42 <li class="menu site_credentials"><a href="{{ path('site_credentials_index') }}">{{ 'menu.left.site_credentials'|trans }}</a></li>
43 {% endif %}
44 <li class="menu config"><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li>
45 {% if is_granted('ROLE_SUPER_ADMIN') %}
46 <li class="menu users"><a href="{{ path('user_index') }}">{{ 'menu.left.users_management'|trans }}</a></li>
47 <li class="menu internal"><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li>
48 {% endif %}
49 <li class="menu import"><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li>
50 <li class="menu howto"><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li>
51 <li class="menu developer"><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li>
52 <li class="menu about"><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li>
53 <li class="menu quickstart"><a href="{{ path('quickstart') }}">{{ 'menu.left.quickstart'|trans }}</a></li>
54 <li class="menu logout"><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li>
55 </ul>
56{% endblock %}
57
58{% block messages %}
59 {% for flashMessage in app.session.flashbag.get('notice') %}
60 <div class="messages success">
61 <a href="#" class="closeMessage">×</a>
62 <p>{{ flashMessage|trans }}</p>
63 </div>
64 {% endfor %}
65{% endblock %}
66
67{% block footer %}
68 <footer class="w600p center mt3 mb3 smaller txtright">
69 <p>{{ 'footer.wallabag.powered_by'|trans }} <a href="http://wallabag.org">wallabag</a></p>
70 </footer>
71{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/screenshot.jpg b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/screenshot.jpg
deleted file mode 100755
index 19cd24bb..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/screenshot.jpg
+++ /dev/null
Binary files differ
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 d8e9694d..212e08a9 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
@@ -294,10 +294,10 @@
294 « {{ tagging_rule.rule }} » 294 « {{ tagging_rule.rule }} »
295 {{ 'config.form_rules.then_tag_as_label'|trans }} 295 {{ 'config.form_rules.then_tag_as_label'|trans }}
296 « {{ tagging_rule.tags|join(', ') }} » 296 « {{ tagging_rule.tags|join(', ') }} »
297 <a href="{{ path('edit_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}"> 297 <a class="edit-rule" href="{{ path('edit_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}">
298 <i class="tool grey-text mode_edit material-icons">mode_edit</i> 298 <i class="tool grey-text mode_edit material-icons">mode_edit</i>
299 </a> 299 </a>
300 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}"> 300 <a class="delete-rule" href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}">
301 <i class="tool grey-text delete material-icons">delete</i> 301 <i class="tool grey-text delete material-icons">delete</i>
302 </a> 302 </a>
303 </li> 303 </li>