]> git.immae.eu Git - github/wallabag/wallabag.git/blob - src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
Merge pull request #1545 from wallabag/v2-user-tag
[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 %}{% trans %}config{% endtrans %}{% 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 s3"><a class="active" href="#set1">{% trans %}Settings{% endtrans %}</a></li>
15 <li class="tab col s3"><a href="#set2">{% trans %}RSS{% endtrans %}</a></li>
16 <li class="tab col s3"><a href="#set3">{% trans %}User information{% endtrans %}</a></li>
17 <li class="tab col s3"><a href="#set4">{% trans %}Password{% endtrans %}</a></li>
18 <li class="tab col s3"><a href="#set5">{% trans %}Tagging rules{% endtrans %}</a></li>
19 {% if is_granted('ROLE_SUPER_ADMIN') %}
20 <li class="tab col s3"><a href="#set6">{% trans %}Add a user{% endtrans %}</a></li>
21 {% endif %}
22 </ul>
23 </div>
24
25 <div id="set1" class="col s12">
26 {{ form_start(form.config) }}
27 {{ form_errors(form.config) }}
28
29 <div class="row">
30 <div class="input-field col s12">
31 {{ form_errors(form.config.theme) }}
32 {{ form_widget(form.config.theme) }}
33 <label class="required">{% trans %}Theme{% endtrans %}</label>
34 </div>
35 </div>
36
37 <div class="row">
38 <div class="input-field col s12">
39 {{ form_label(form.config.items_per_page) }}
40 {{ form_errors(form.config.items_per_page) }}
41 {{ form_widget(form.config.items_per_page) }}
42 </div>
43 </div>
44
45 <div class="row">
46 <div class="input-field col s12">
47 {{ form_label(form.config.language) }}
48 {{ form_errors(form.config.language) }}
49 {{ form_widget(form.config.language) }}
50 </div>
51 </div>
52
53 <div class="hidden">{{ form_rest(form.config) }}</div>
54 <button class="btn waves-effect waves-light" type="submit" name="action">
55 {% trans %}Save{% endtrans %}
56 </button>
57 </form>
58 </div>
59
60 <div id="set2" class="col s12">
61 {{ form_start(form.rss) }}
62 {{ form_errors(form.rss) }}
63
64 <div class="row">
65 <div class="input-field col s12">
66 {% trans %}RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.{% endtrans %}
67 </div>
68 </div>
69
70 <div class="row">
71 <div class="input-field col s12">
72 <label>{% trans %}RSS token{% endtrans %}</label>
73 <div>
74 {% if rss.token %}
75 {{ rss.token }}
76 {% else %}
77 <em>{% trans %}No token{% endtrans %}</em>
78 {% endif %}
79 – <a href="{{ path('generate_token') }}">{% if rss.token %}{% trans %}Reset your token{% endtrans %}{% else %}{% trans %}Create your token{% endtrans %}{% endif %}</a>
80 </div>
81 </div>
82 </div>
83 {% if rss.token %}
84 <div class="row">
85 <div class="input-field col s12">
86 <label>{% trans %}RSS links{% endtrans %}</label>
87 <ul>
88 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}unread{% endtrans %}</a></li>
89 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}starred{% endtrans %}</a></li>
90 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}archive{% endtrans %}</a></li>
91 </ul>
92
93 </div>
94 </div>
95 {% endif %}
96
97 <div class="row">
98 <div class="input-field col s12">
99 {{ form_label(form.rss.rss_limit) }}
100 {{ form_errors(form.rss.rss_limit) }}
101 {{ form_widget(form.rss.rss_limit) }}
102 </div>
103 </div>
104
105 <div class="hidden">{{ form_rest(form.rss) }}</div>
106 <button class="btn waves-effect waves-light" type="submit" name="action">
107 {% trans %}Save{% endtrans %}
108 </button>
109
110 </form>
111 </div>
112
113 <div id="set3" class="col s12">
114 {{ form_start(form.user) }}
115 {{ form_errors(form.user) }}
116
117 <div class="row">
118 <div class="input-field col s12">
119 {{ form_label(form.user.name) }}
120 {{ form_errors(form.user.name) }}
121 {{ form_widget(form.user.name) }}
122 </div>
123 </div>
124
125 <div class="row">
126 <div class="input-field col s12">
127 {{ form_label(form.user.email) }}
128 {{ form_errors(form.user.email) }}
129 {{ form_widget(form.user.email) }}
130 </div>
131 </div>
132
133 {% if twofactor_auth %}
134 <div class="row">
135 <div class="input-field col s12">
136 {% trans %}Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion{% endtrans %}
137 </div>
138 </div>
139
140 <div class="row">
141 <div class="input-field col s12">
142 {{ form_widget(form.user.twoFactorAuthentication) }}
143 {{ form_label(form.user.twoFactorAuthentication) }}
144 {{ form_errors(form.user.twoFactorAuthentication) }}
145 </div>
146 </div>
147 {% endif %}
148
149 <div class="hidden">{{ form_rest(form.user) }}</div>
150 <button class="btn waves-effect waves-light" type="submit" name="action">
151 {% trans %}Save{% endtrans %}
152 </button>
153
154 </form>
155 </div>
156
157 <div id="set4" class="col s12">
158 {{ form_start(form.pwd) }}
159 {{ form_errors(form.pwd) }}
160
161 <div class="row">
162 <div class="input-field col s12">
163 {{ form_label(form.pwd.old_password) }}
164 {{ form_errors(form.pwd.old_password) }}
165 {{ form_widget(form.pwd.old_password) }}
166 </div>
167 </div>
168
169 <div class="row">
170 <div class="input-field col s12">
171 {{ form_label(form.pwd.new_password.first) }}
172 {{ form_errors(form.pwd.new_password.first) }}
173 {{ form_widget(form.pwd.new_password.first) }}
174 </div>
175 </div>
176
177 <div class="row">
178 <div class="input-field col s12">
179 {{ form_label(form.pwd.new_password.second) }}
180 {{ form_errors(form.pwd.new_password.second) }}
181 {{ form_widget(form.pwd.new_password.second) }}
182 </div>
183 </div>
184
185 <div class="hidden">{{ form_rest(form.pwd) }}</div>
186 <button class="btn waves-effect waves-light" type="submit" name="action">
187 {% trans %}Save{% endtrans %}
188 </button>
189
190 </form>
191 </div>
192
193 <div id="set5" class="col s12">
194 <div class="row">
195 <div class="input-field col s12">
196 <ul>
197 {% for tagging_rule in app.user.config.taggingRules %}
198 <li>
199 if « {{ tagging_rule.rule }} » then tag as « {{ tagging_rule.tags|join(', ') }} »
200 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{% trans %}Delete{% endtrans %}">
201 <i class="tool grey-text delete mdi-action-delete"></i>
202 </a>
203 </li>
204 {% endfor %}
205 </ul>
206 </div>
207 </div>
208
209 {{ form_start(form.new_tagging_rule) }}
210 {{ form_errors(form.new_tagging_rule) }}
211
212 <div class="row">
213 <div class="input-field col s12">
214 {{ form_label(form.new_tagging_rule.rule) }}
215 {{ form_errors(form.new_tagging_rule.rule) }}
216 {{ form_widget(form.new_tagging_rule.rule) }}
217 </div>
218 </div>
219
220 <div class="row">
221 <div class="input-field col s12">
222 {{ form_label(form.new_tagging_rule.tags) }}
223 {{ form_errors(form.new_tagging_rule.tags) }}
224 {{ form_widget(form.new_tagging_rule.tags) }}
225 </div>
226 </div>
227
228 <div class="hidden">{{ form_rest(form.new_tagging_rule) }}</div>
229 <button class="btn waves-effect waves-light" type="submit" name="action">
230 {% trans %}Save{% endtrans %}
231 </button>
232 </form>
233
234 <div class="row">
235 <div class="input-field col s12">
236 <h4>{% trans %}FAQ{% endtrans %}</h4>
237
238 <h5>{% trans %}What does « tagging rules » mean?{% endtrans %}</h5>
239 <p class="help">
240 {% trans %}
241 They are rules used by Wallabag to automatically tag new entries.<br />
242 Each time a new entry is added, all the tagging rules will be used to add
243 the tags you configured, thus saving you the trouble to manually classify
244 your entries.
245 {% endtrans %}
246 </p>
247
248 <h5>{% trans %}How do I use them?{% endtrans %}</h5>
249 <p class="help">
250 {% trans %}
251 Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />
252 In that case, you should put « readingTime &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i>
253 field.<br />
254 Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />
255 Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »
256 {% endtrans %}
257 </p>
258
259 <h5>{% trans %}Which variables and operators can I use to write rules?{% endtrans %}</h5>
260 <p class="help">
261 {% trans %}The following variables and operators can be used to create tagging rules:{% endtrans %}
262
263 <table>
264 <thead>
265 <tr>
266 <th>{% trans %}Variable{% endtrans %}</th>
267 <th>{% trans %}Meaning{% endtrans %}</th>
268 <th>{% trans %}Operator{% endtrans %}</th>
269 <th>{% trans %}Meaning{% endtrans %}</th>
270 </tr>
271 </thead>
272
273 <tbody>
274 <tr>
275 <td>title</td>
276 <td>{% trans %}Title of the entry{% endtrans %}</td>
277 <td>&lt;=</td>
278 <td>{% trans %}Less than…{% endtrans %}</td>
279 </tr>
280 <tr>
281 <td>url</td>
282 <td>{% trans %}URL of the entry{% endtrans %}</td>
283 <td>&lt;</td>
284 <td>{% trans %}Strictly less than…{% endtrans %}</td>
285 </tr>
286 <tr>
287 <td>isArchived</td>
288 <td>{% trans %}Whether the entry is archived or not{% endtrans %}</td>
289 <td>=&gt;</td>
290 <td>{% trans %}Greater than…{% endtrans %}</td>
291 </tr>
292 <tr>
293 <td>isStared</td>
294 <td>{% trans %}Whether the entry is starred or not{% endtrans %}</td>
295 <td>&gt;</td>
296 <td>{% trans %}Strictly greater than…{% endtrans %}</td>
297 </tr>
298 <tr>
299 <td>content</td>
300 <td>{% trans %}The entry's content{% endtrans %}</td>
301 <td>=</td>
302 <td>{% trans %}Equal to…{% endtrans %}</td>
303 </tr>
304 <tr>
305 <td>language</td>
306 <td>{% trans %}The entry's language{% endtrans %}</td>
307 <td>!=</td>
308 <td>{% trans %}Not equal to…{% endtrans %}</td>
309 </tr>
310 <tr>
311 <td>mimetype</td>
312 <td>{% trans %}The entry's mime-type{% endtrans %}</td>
313 <td>OR</td>
314 <td>{% trans %}One rule or another{% endtrans %}</td>
315 </tr>
316 <tr>
317 <td>readingTime</td>
318 <td>{% trans %}The estimated entry's reading time, in minutes{% endtrans %}</td>
319 <td>AND</td>
320 <td>{% trans %}One rule and another{% endtrans %}</td>
321 </tr>
322 <tr>
323 <td>domainName</td>
324 <td>{% trans %}The domain name of the entry{% endtrans %}</td>
325 <td>matches</td>
326 <td>
327 {% trans %}
328 Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />
329 Example: <code>title matches "football"</code>
330 {% endtrans %}
331 </td>
332 </tr>
333 </tbody>
334 </table>
335 </p>
336 </div>
337 </div>
338 </div>
339
340 {% if is_granted('ROLE_SUPER_ADMIN') %}
341 <div id="set6" class="col s12">
342 {{ form_start(form.new_user) }}
343 {{ form_errors(form.new_user) }}
344
345 <div class="row">
346 <div class="input-field col s12">
347 {{ form_label(form.new_user.username) }}
348 {{ form_errors(form.new_user.username) }}
349 {{ form_widget(form.new_user.username) }}
350 </div>
351 </div>
352
353 <div class="row">
354 <div class="input-field col s12">
355 {{ form_label(form.new_user.plainPassword.first) }}
356 {{ form_errors(form.new_user.plainPassword.first) }}
357 {{ form_widget(form.new_user.plainPassword.first) }}
358 </div>
359 </div>
360
361 <div class="row">
362 <div class="input-field col s12">
363 {{ form_label(form.new_user.plainPassword.second) }}
364 {{ form_errors(form.new_user.plainPassword.second) }}
365 {{ form_widget(form.new_user.plainPassword.second) }}
366 </div>
367 </div>
368
369 <div class="row">
370 <div class="input-field col s12">
371 {{ form_label(form.new_user.email) }}
372 {{ form_errors(form.new_user.email) }}
373 {{ form_widget(form.new_user.email) }}
374 </div>
375 </div>
376
377 <div class="hidden">{{ form_rest(form.new_user) }}</div>
378 <button class="btn waves-effect waves-light" type="submit" name="action">
379 {% trans %}Add a user{% endtrans %}
380 </button>
381
382 </form>
383 </div>
384 {% endif %}
385 </div>
386
387 </div>
388 </div>
389 </div>
390 {% endblock %}