aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag
diff options
context:
space:
mode:
authorJeremy Benoist <jeremy.benoist@gmail.com>2016-03-09 08:59:08 +0100
committerJeremy Benoist <jeremy.benoist@gmail.com>2016-03-20 21:12:22 +0100
commit0d42217e4e8210dd2cf86f35ba9662ca02c8a2dc (patch)
tree4cf8b97ed3c06def270e9172c7b17c5c86048585 /src/Wallabag
parentd2b4f01d7435e8a8f99b15a2487916427c04e58d (diff)
downloadwallabag-0d42217e4e8210dd2cf86f35ba9662ca02c8a2dc.tar.gz
wallabag-0d42217e4e8210dd2cf86f35ba9662ca02c8a2dc.tar.zst
wallabag-0d42217e4e8210dd2cf86f35ba9662ca02c8a2dc.zip
Convert english translation file
- convert english translation to translate key - remove baggy template for login (never used since user isn't logged in and it'll use the default theme: material) - fix tests about text in response (now checking translation key instead of translated text) - remove all ugly `<div class="hidden">{{ form_rest(form) }}</div>`
Diffstat (limited to 'src/Wallabag')
-rw-r--r--src/Wallabag/CoreBundle/Entity/Config.php4
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php16
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/ConfigType.php11
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/EditEntryType.php19
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php16
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/NewEntryType.php7
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/NewTagType.php2
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/NewUserType.php22
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/RssType.php8
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php13
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/UserInformationType.php17
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.en.yml334
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml19
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig53
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig105
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig32
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig52
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig26
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig83
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig3
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig18
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig36
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig163
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig16
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig65
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig57
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig50
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig36
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig79
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig119
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php28
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php16
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php70
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php2
-rw-r--r--src/Wallabag/ImportBundle/Controller/PocketController.php10
-rw-r--r--src/Wallabag/ImportBundle/Form/Type/UploadImportType.php10
-rw-r--r--src/Wallabag/ImportBundle/Import/PocketImport.php4
-rw-r--r--src/Wallabag/ImportBundle/Import/WallabagV1Import.php2
-rw-r--r--src/Wallabag/ImportBundle/Import/WallabagV2Import.php2
-rw-r--r--src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig7
-rw-r--r--src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig27
-rw-r--r--src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig20
-rw-r--r--src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig3
-rw-r--r--src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php11
-rw-r--r--src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php8
-rw-r--r--src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php2
-rw-r--r--src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php2
-rw-r--r--src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php2
-rw-r--r--src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml16
-rw-r--r--src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml16
-rw-r--r--src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml16
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Authentication/form.html.twig)2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/ChangePassword/changePassword_content.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/ChangePassword/changePassword_content.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Registration/checkEmail.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Registration/checkEmail.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Registration/confirmed.html.twig)2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Registration/register_content.html.twig)2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Resetting/checkEmail.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/checkEmail.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Resetting/passwordAlreadyRequested.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/passwordAlreadyRequested.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/request_content.html.twig)8
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/reset_content.html.twig)0
-rw-r--r--src/Wallabag/UserBundle/Resources/views/Security/login.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/Security/login.html.twig)12
-rw-r--r--src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/layout.html.twig (renamed from src/Wallabag/UserBundle/Resources/views/themes/material/layout.html.twig)2
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig32
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig20
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig37
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig17
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig20
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig17
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig33
-rw-r--r--src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig16
80 files changed, 1141 insertions, 864 deletions
diff --git a/src/Wallabag/CoreBundle/Entity/Config.php b/src/Wallabag/CoreBundle/Entity/Config.php
index e18b543b..a25656d3 100644
--- a/src/Wallabag/CoreBundle/Entity/Config.php
+++ b/src/Wallabag/CoreBundle/Entity/Config.php
@@ -40,7 +40,7 @@ class Config
40 * @Assert\Range( 40 * @Assert\Range(
41 * min = 1, 41 * min = 1,
42 * max = 100000, 42 * max = 100000,
43 * maxMessage = "This will certainly kill the app" 43 * maxMessage = "validator.item_per_page_too_high"
44 * ) 44 * )
45 * @ORM\Column(name="items_per_page", type="integer", nullable=false) 45 * @ORM\Column(name="items_per_page", type="integer", nullable=false)
46 */ 46 */
@@ -68,7 +68,7 @@ class Config
68 * @Assert\Range( 68 * @Assert\Range(
69 * min = 1, 69 * min = 1,
70 * max = 100000, 70 * max = 100000,
71 * maxMessage = "This will certainly kill the app" 71 * maxMessage = "validator.rss_limit_too_hight"
72 * ) 72 * )
73 */ 73 */
74 private $rssLimit; 74 private $rssLimit;
diff --git a/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php b/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php
index 7d05a5d8..841af51e 100644
--- a/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/ChangePasswordType.php
@@ -16,23 +16,27 @@ class ChangePasswordType extends AbstractType
16 { 16 {
17 $builder 17 $builder
18 ->add('old_password', PasswordType::class, array( 18 ->add('old_password', PasswordType::class, array(
19 'constraints' => new UserPassword(array('message' => 'Wrong value for your current password')), 19 'constraints' => new UserPassword(array('message' => 'validator.password_wrong_value')),
20 'label' => 'config.form_password.old_password_label',
20 )) 21 ))
21 ->add('new_password', RepeatedType::class, array( 22 ->add('new_password', RepeatedType::class, array(
22 'type' => PasswordType::class, 23 'type' => PasswordType::class,
23 'invalid_message' => 'The password fields must match.', 24 'invalid_message' => 'validator.password_must_match',
24 'required' => true, 25 'required' => true,
25 'first_options' => array('label' => 'New password'), 26 'first_options' => array('label' => 'config.form_password.new_password_label'),
26 'second_options' => array('label' => 'Repeat new password'), 27 'second_options' => array('label' => 'config.form_password.repeat_new_password_label'),
27 'constraints' => array( 28 'constraints' => array(
28 new Constraints\Length(array( 29 new Constraints\Length(array(
29 'min' => 8, 30 'min' => 8,
30 'minMessage' => 'Password should by at least 8 chars long', 31 'minMessage' => 'validator.password_too_short',
31 )), 32 )),
32 new Constraints\NotBlank(), 33 new Constraints\NotBlank(),
33 ), 34 ),
35 'label' => 'config.form_password.new_password_label',
36 ))
37 ->add('save', SubmitType::class, array(
38 'label' => 'config.form.save',
34 )) 39 ))
35 ->add('save', SubmitType::class)
36 ; 40 ;
37 } 41 }
38 42
diff --git a/src/Wallabag/CoreBundle/Form/Type/ConfigType.php b/src/Wallabag/CoreBundle/Form/Type/ConfigType.php
index 0a5ea6cc..25ea9efa 100644
--- a/src/Wallabag/CoreBundle/Form/Type/ConfigType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/ConfigType.php
@@ -33,9 +33,13 @@ class ConfigType extends AbstractType
33 ->add('theme', ChoiceType::class, array( 33 ->add('theme', ChoiceType::class, array(
34 'choices' => array_flip($this->themes), 34 'choices' => array_flip($this->themes),
35 'choices_as_values' => true, 35 'choices_as_values' => true,
36 'label' => 'config.form_settings.theme_label',
37 ))
38 ->add('items_per_page', null, array(
39 'label' => 'config.form_settings.items_per_page_label',
36 )) 40 ))
37 ->add('items_per_page')
38 ->add('reading_speed', ChoiceType::class, array( 41 ->add('reading_speed', ChoiceType::class, array(
42 'label' => 'config.form_settings.reading_speed',
39 'choices' => array( 43 'choices' => array(
40 'I read ~100 words per minute' => '0.5', 44 'I read ~100 words per minute' => '0.5',
41 'I read ~200 words per minute' => '1', 45 'I read ~200 words per minute' => '1',
@@ -46,8 +50,11 @@ class ConfigType extends AbstractType
46 ->add('language', ChoiceType::class, array( 50 ->add('language', ChoiceType::class, array(
47 'choices' => array_flip($this->languages), 51 'choices' => array_flip($this->languages),
48 'choices_as_values' => true, 52 'choices_as_values' => true,
53 'label' => 'config.form_settings.language_label',
54 ))
55 ->add('save', SubmitType::class, array(
56 'label' => 'config.form.save',
49 )) 57 ))
50 ->add('save', SubmitType::class)
51 ; 58 ;
52 } 59 }
53 60
diff --git a/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php b/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php
index 2b1e1ef4..23d7b239 100644
--- a/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/EditEntryType.php
@@ -14,9 +14,22 @@ class EditEntryType extends AbstractType
14 public function buildForm(FormBuilderInterface $builder, array $options) 14 public function buildForm(FormBuilderInterface $builder, array $options)
15 { 15 {
16 $builder 16 $builder
17 ->add('title', TextType::class, array('required' => true)) 17 ->add('title', TextType::class, array(
18 ->add('is_public', CheckboxType::class, array('required' => false)) 18 'required' => true,
19 ->add('save', SubmitType::class) 19 'label' => 'entry.edit.title_label',
20 ))
21 ->add('is_public', CheckboxType::class, array(
22 'required' => false,
23 'label' => 'entry.edit.is_public_label',
24 ))
25 ->add('url', TextType::class, array(
26 'disabled' => true,
27 'required' => false,
28 'label' => 'entry.edit.url_label',
29 ))
30 ->add('save', SubmitType::class, array(
31 'label' => 'entry.edit.save_label',
32 ))
20 ; 33 ;
21 } 34 }
22 35
diff --git a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
index ee10bc8b..ec36503b 100644
--- a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
@@ -34,7 +34,9 @@ class EntryFilterType extends AbstractType
34 public function buildForm(FormBuilderInterface $builder, array $options) 34 public function buildForm(FormBuilderInterface $builder, array $options)
35 { 35 {
36 $builder 36 $builder
37 ->add('readingTime', NumberRangeFilterType::class) 37 ->add('readingTime', NumberRangeFilterType::class, array(
38 'label' => 'entry.filters.reading_time.label',
39 ))
38 ->add('createdAt', DateRangeFilterType::class, array( 40 ->add('createdAt', DateRangeFilterType::class, array(
39 'left_date_options' => array( 41 'left_date_options' => array(
40 'attr' => array( 42 'attr' => array(
@@ -50,6 +52,7 @@ class EntryFilterType extends AbstractType
50 'format' => 'dd/MM/yyyy', 52 'format' => 'dd/MM/yyyy',
51 'widget' => 'single_text', 53 'widget' => 'single_text',
52 ), 54 ),
55 'label' => 'entry.filters.created_at.label',
53 ) 56 )
54 ) 57 )
55 ->add('domainName', TextFilterType::class, array( 58 ->add('domainName', TextFilterType::class, array(
@@ -62,9 +65,14 @@ class EntryFilterType extends AbstractType
62 65
63 return $filterQuery->createCondition($expression); 66 return $filterQuery->createCondition($expression);
64 }, 67 },
68 'label' => 'entry.filters.domain_label',
69 ))
70 ->add('isArchived', CheckboxFilterType::class, array(
71 'label' => 'entry.filters.archived_label',
72 ))
73 ->add('isStarred', CheckboxFilterType::class, array(
74 'label' => 'entry.filters.starred_label',
65 )) 75 ))
66 ->add('isArchived', CheckboxFilterType::class)
67 ->add('isStarred', CheckboxFilterType::class)
68 ->add('previewPicture', CheckboxFilterType::class, array( 76 ->add('previewPicture', CheckboxFilterType::class, array(
69 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { 77 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
70 if (false === $values['value']) { 78 if (false === $values['value']) {
@@ -75,10 +83,12 @@ class EntryFilterType extends AbstractType
75 83
76 return $filterQuery->createCondition($expression); 84 return $filterQuery->createCondition($expression);
77 }, 85 },
86 'label' => 'entry.filters.preview_picture_label',
78 )) 87 ))
79 ->add('language', ChoiceFilterType::class, array( 88 ->add('language', ChoiceFilterType::class, array(
80 'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())), 89 'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())),
81 'choices_as_values' => true, 90 'choices_as_values' => true,
91 'label' => 'entry.filters.language_label',
82 )) 92 ))
83 ; 93 ;
84 } 94 }
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php b/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php
index fbce13f1..69fab6fb 100644
--- a/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/NewEntryType.php
@@ -3,7 +3,6 @@
3namespace Wallabag\CoreBundle\Form\Type; 3namespace Wallabag\CoreBundle\Form\Type;
4 4
5use Symfony\Component\Form\AbstractType; 5use Symfony\Component\Form\AbstractType;
6use Symfony\Component\Form\Extension\Core\Type\SubmitType;
7use Symfony\Component\Form\Extension\Core\Type\UrlType; 6use Symfony\Component\Form\Extension\Core\Type\UrlType;
8use Symfony\Component\Form\FormBuilderInterface; 7use Symfony\Component\Form\FormBuilderInterface;
9use Symfony\Component\OptionsResolver\OptionsResolver; 8use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -13,8 +12,10 @@ class NewEntryType extends AbstractType
13 public function buildForm(FormBuilderInterface $builder, array $options) 12 public function buildForm(FormBuilderInterface $builder, array $options)
14 { 13 {
15 $builder 14 $builder
16 ->add('url', UrlType::class, array('required' => true)) 15 ->add('url', UrlType::class, array(
17 ->add('save', SubmitType::class) 16 'required' => true,
17 'label' => 'entry.new.form_new.url_label',
18 ))
18 ; 19 ;
19 } 20 }
20 21
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewTagType.php b/src/Wallabag/CoreBundle/Form/Type/NewTagType.php
index 0f559031..c7568de7 100644
--- a/src/Wallabag/CoreBundle/Form/Type/NewTagType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/NewTagType.php
@@ -3,7 +3,6 @@
3namespace Wallabag\CoreBundle\Form\Type; 3namespace Wallabag\CoreBundle\Form\Type;
4 4
5use Symfony\Component\Form\AbstractType; 5use Symfony\Component\Form\AbstractType;
6use Symfony\Component\Form\Extension\Core\Type\SubmitType;
7use Symfony\Component\Form\Extension\Core\Type\TextType; 6use Symfony\Component\Form\Extension\Core\Type\TextType;
8use Symfony\Component\Form\FormBuilderInterface; 7use Symfony\Component\Form\FormBuilderInterface;
9use Symfony\Component\OptionsResolver\OptionsResolver; 8use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -14,7 +13,6 @@ class NewTagType extends AbstractType
14 { 13 {
15 $builder 14 $builder
16 ->add('label', TextType::class, array('required' => true)) 15 ->add('label', TextType::class, array('required' => true))
17 ->add('save', SubmitType::class)
18 ; 16 ;
19 } 17 }
20 18
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewUserType.php b/src/Wallabag/CoreBundle/Form/Type/NewUserType.php
index 6eb0e63f..60fcc20c 100644
--- a/src/Wallabag/CoreBundle/Form/Type/NewUserType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/NewUserType.php
@@ -17,22 +17,30 @@ class NewUserType extends AbstractType
17 public function buildForm(FormBuilderInterface $builder, array $options) 17 public function buildForm(FormBuilderInterface $builder, array $options)
18 { 18 {
19 $builder 19 $builder
20 ->add('username', TextType::class, array('required' => true)) 20 ->add('username', TextType::class, array(
21 'required' => true,
22 'label' => 'config.form_new_user.username_label',
23 ))
21 ->add('plainPassword', RepeatedType::class, array( 24 ->add('plainPassword', RepeatedType::class, array(
22 'type' => PasswordType::class, 25 'type' => PasswordType::class,
23 'invalid_message' => 'The password fields must match', 26 'invalid_message' => 'validator.password_must_match',
24 'first_options' => array('label' => 'Password'), 27 'first_options' => array('label' => 'config.form_new_user.password_label'),
25 'second_options' => array('label' => 'Repeat new password'), 28 'second_options' => array('label' => 'config.form_new_user.repeat_new_password_label'),
26 'constraints' => array( 29 'constraints' => array(
27 new Constraints\Length(array( 30 new Constraints\Length(array(
28 'min' => 8, 31 'min' => 8,
29 'minMessage' => 'Password should by at least 8 chars long', 32 'minMessage' => 'validator.password_too_short',
30 )), 33 )),
31 new Constraints\NotBlank(), 34 new Constraints\NotBlank(),
32 ), 35 ),
36 'label' => 'config.form_new_user.plain_password_label',
37 ))
38 ->add('email', EmailType::class, array(
39 'label' => 'config.form_new_user.email_label',
40 ))
41 ->add('save', SubmitType::class, array(
42 'label' => 'config.form.save',
33 )) 43 ))
34 ->add('email', EmailType::class)
35 ->add('save', SubmitType::class)
36 ; 44 ;
37 } 45 }
38 46
diff --git a/src/Wallabag/CoreBundle/Form/Type/RssType.php b/src/Wallabag/CoreBundle/Form/Type/RssType.php
index def8782c..a9f68e54 100644
--- a/src/Wallabag/CoreBundle/Form/Type/RssType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/RssType.php
@@ -12,8 +12,12 @@ class RssType extends AbstractType
12 public function buildForm(FormBuilderInterface $builder, array $options) 12 public function buildForm(FormBuilderInterface $builder, array $options)
13 { 13 {
14 $builder 14 $builder
15 ->add('rss_limit') 15 ->add('rss_limit', null, array(
16 ->add('save', SubmitType::class) 16 'label' => 'config.form_rss.rss_limit',
17 ))
18 ->add('save', SubmitType::class, array(
19 'label' => 'config.form.save',
20 ))
17 ; 21 ;
18 } 22 }
19 23
diff --git a/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php b/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php
index 5815b8c6..cfee21f1 100644
--- a/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php
@@ -14,12 +14,19 @@ class TaggingRuleType extends AbstractType
14 public function buildForm(FormBuilderInterface $builder, array $options) 14 public function buildForm(FormBuilderInterface $builder, array $options)
15 { 15 {
16 $builder 16 $builder
17 ->add('rule', TextType::class, array('required' => true)) 17 ->add('rule', TextType::class, array(
18 ->add('save', SubmitType::class) 18 'required' => true,
19 'label' => 'config.form_rules.rule_label',
20 ))
21 ->add('save', SubmitType::class, array(
22 'label' => 'config.form.save',
23 ))
19 ; 24 ;
20 25
21 $tagsField = $builder 26 $tagsField = $builder
22 ->create('tags', TextType::class) 27 ->create('tags', TextType::class, array(
28 'label' => 'config.form_rules.tags_label',
29 ))
23 ->addModelTransformer(new StringToListTransformer(',')); 30 ->addModelTransformer(new StringToListTransformer(','));
24 31
25 $builder->add($tagsField); 32 $builder->add($tagsField);
diff --git a/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php b/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php
index f491b0ae..799ea39e 100644
--- a/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/UserInformationType.php
@@ -15,10 +15,19 @@ class UserInformationType extends AbstractType
15 public function buildForm(FormBuilderInterface $builder, array $options) 15 public function buildForm(FormBuilderInterface $builder, array $options)
16 { 16 {
17 $builder 17 $builder
18 ->add('name', TextType::class) 18 ->add('name', TextType::class, array(
19 ->add('email', EmailType::class) 19 'label' => 'config.form_user.name_label',
20 ->add('twoFactorAuthentication', CheckboxType::class, array('required' => false)) 20 ))
21 ->add('save', SubmitType::class) 21 ->add('email', EmailType::class, array(
22 'label' => 'config.form_user.email_label',
23 ))
24 ->add('twoFactorAuthentication', CheckboxType::class, array(
25 'required' => false,
26 'label' => 'config.form_user.twoFactorAuthentication_label',
27 ))
28 ->add('save', SubmitType::class, array(
29 'label' => 'config.form.save',
30 ))
22 ->remove('username') 31 ->remove('username')
23 ->remove('plainPassword') 32 ->remove('plainPassword')
24 ; 33 ;
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
new file mode 100644
index 00000000..22039de3
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
@@ -0,0 +1,334 @@
1security:
2 login:
3 page_title: 'Welcome to wallabag!'
4 keep_logged_in: 'Keep me logged in'
5 forgot_password: 'Forgot your password?'
6 submit: 'Login'
7 register: 'Register'
8 username: 'Username'
9 password: 'Password'
10 cancel: 'Cancel'
11 resetting:
12 description: "Enter your email address below and we'll send you password reset instructions."
13 register:
14 page_title: 'Create an account'
15 go_to_account: 'Go to your account'
16
17menu:
18 left:
19 unread: 'Unread'
20 starred: 'Starred'
21 archive: 'Archive'
22 all_articles: 'All entries'
23 config: 'Config'
24 tags: 'Tags'
25 internal_settings: 'Internal Settings'
26 import: 'Import'
27 howto: 'How to'
28 developer: 'Developer'
29 logout: 'Logout'
30 about: 'About'
31 search: 'Search'
32 save_link: 'Save a link'
33 back_to_unread: 'Back to unread articles'
34 top:
35 add_new_entry: 'Add a new entry'
36 search: 'Search'
37 filter_entries: 'Filter entries'
38 export: 'Export'
39 search_form:
40 input_label: 'Enter your search here'
41
42footer:
43 wallabag:
44 elsewhere: 'Take wallabag with you'
45 social: 'Social'
46 powered_by: 'powered by'
47 about: 'About'
48
49config:
50 page_title: Config
51 tab_menu:
52 settings: 'Settings'
53 rss: 'RSS'
54 user_info: 'User information'
55 password: 'Password'
56 rules: 'Tagging rules'
57 new_user: 'Add a user'
58 form:
59 save: 'Save'
60 form_settings:
61 theme_label: 'Theme'
62 items_per_page_label: 'Items per page'
63 language_label: 'Language'
64 form_rss:
65 description: 'RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.'
66 token_label: 'RSS token'
67 no_token: 'No token'
68 token_create: 'Create your token'
69 token_reset: 'Regenerate your token'
70 rss_links: 'RSS links'
71 rss_link:
72 unread: 'unread'
73 starred: 'starred'
74 archive: 'archived'
75 rss_limit: 'Number of items in the feed'
76 form_user:
77 two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion"
78 name_label: 'Name'
79 email_label: 'Email'
80 twoFactorAuthentication_label: 'Two factor authentication'
81 form_password:
82 old_password_label: 'Current password'
83 new_password_label: 'New password'
84 repeat_new_password_label: 'Repeat new password'
85 form_rules:
86 if_label: 'if'
87 then_tag_as_label: 'then tag as'
88 delete_rule_label: 'delete'
89 rule_label: 'Rule'
90 tags_label: 'Tags'
91 faq:
92 title: 'FAQ'
93 tagging_rules_definition_title: 'What does « tagging rules » mean?'
94 tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.'
95 how_to_use_them_title: 'How do I use them?'
96 how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />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> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />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> »'
97 variables_available_title: 'Which variables and operators can I use to write rules?'
98 variables_available_description: 'The following variables and operators can be used to create tagging rules:'
99 meaning: 'Meaning'
100 variable_description:
101 label: 'Variable'
102 title: 'Title of the entry'
103 url: 'URL of the entry'
104 isArchived: 'Whether the entry is archived or not'
105 isStarred: 'Whether the entry is starred or not'
106 content: "The entry's content"
107 language: "The entry's language"
108 mimetype: "The entry's mime-type"
109 readingTime: "The estimated entry's reading time, in minutes"
110 domainName: 'The domain name of the entry'
111 operator_description:
112 label: 'Operator'
113 less_than: 'Less than...'
114 strictly_less_than: 'Strictly less than...'
115 greater_than: 'Greater than...'
116 strictly_greater_than: 'Strictly greater than...'
117 equal_to: 'Equal to...'
118 not_equal_to: 'Not equal to...'
119 or: 'One rule OR another'
120 and: 'One rule AND another'
121 matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
122 form_new_user:
123 username_label: 'Username'
124 password_label: 'Password'
125 repeat_new_password_label: 'Repeat new password'
126 plain_password_label: '????'
127 email_label: 'Email'
128
129entry:
130 page_titles:
131 unread: 'Unread entries'
132 starred: 'Starred entries'
133 archive: 'Archived entries'
134 filtered: 'Filtered entries'
135 list:
136 number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
137 reading_time: 'estimated reading time'
138 reading_time_minutes: 'estimated reading time: %readingTime% min'
139 reading_time_less_one_minute: 'estimated reading time: <small class="inferieur">&lt;</small> 1 min'
140 original_article: 'original'
141 toogle_as_read: 'Toggle mark as read'
142 toogle_as_star: 'Toggle favorite'
143 delete: 'Delete'
144 export_title: 'Export'
145 filters:
146 title: 'Filters'
147 status_label: 'Status'
148 archived_label: 'Archived'
149 starred_label: 'Starred'
150 preview_picture_label: 'Has a preview picture'
151 preview_picture_help: 'Preview picture'
152 language_label: 'Language'
153 reading_time:
154 label: 'Reading time in minutes'
155 from: 'from'
156 to: 'to'
157 domain_label: 'Domain name'
158 created_at:
159 label: 'Creation date'
160 from: 'from'
161 to: 'to'
162 action:
163 clear: 'Clear'
164 filter: 'Filter'
165 view:
166 left_menu:
167 back_to_top: 'Back to top'
168 back_to_homepage: 'Back'
169 set_as_read: 'Mark as read'
170 set_as_unread: 'Mark as unread'
171 set_as_favorite: 'Favorite'
172 view_original_article: 'Orignal article'
173 re_fetch_content: 'Re-fetch content'
174 delete: 'Delete'
175 add_a_tag: 'Add a tag'
176 share_content: 'Share'
177 share_email_label: 'Email'
178 download: 'Download'
179 print: 'Print'
180 problem:
181 label: 'Problems?'
182 description: 'Does this article appear wrong?'
183 edit_title: 'Edit title'
184 original_article: 'original'
185 annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
186 new:
187 page_title: 'Save new entry'
188 placeholder: 'http://website.com'
189 form_new:
190 url_label: Url
191 edit:
192 page_title: 'Edit an entry'
193 title_label: 'Title'
194 url_label: 'Url'
195 is_public_label: 'Public'
196 save_label: 'Save'
197
198about:
199 page_title: 'About'
200 top_menu:
201 who_behind_wallabag: 'Who is behind wallabag'
202 getting_help: 'Getting help'
203 helping: 'Helping wallabag'
204 contributors: 'Contributors'
205 third_party: 'Third-party libraries'
206 who_behind_wallabag:
207 developped_by: 'Developed by'
208 website: 'website'
209 many_contributors: 'And many others contributors ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">on Github</a>'
210 on_github: 'on GitHub'
211 project_website: 'Project website'
212 license: 'License'
213 version: 'Version'
214 getting_help:
215 documentation: 'Documentation'
216 bug_reports: 'Bug reports'
217 support: '<a href="https://support.wallabag.org">On our support website</a> or <a href="https://github.com/wallabag/wallabag/issues">on GitHub</a>'
218 helping:
219 description: 'wallabag is free and opensource. You can help us:'
220 by_contributing: 'by contributing to the project:'
221 by_contributing_2: 'an issue lists all our needs'
222 by_paypal: 'via Paypal'
223 contributors:
224 description: 'Thank you to contributors on wallabag web application'
225 third_party:
226 description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
227 package: 'Package'
228 license: 'License'
229
230howto:
231 page_title: 'How to'
232 page_description: 'There are several ways to save an article:'
233 top_menu:
234 browser_addons: 'Browser addons'
235 mobile_apps: 'Mobile apps'
236 bookmarklet: 'Bookmarklet'
237 form:
238 description: 'Thanks to this form'
239 browser_addons:
240 firefox: 'Standard Firefox Add-On'
241 chrome: 'Chrome Extension'
242 mobile_apps:
243 android:
244 via_f_droid: 'via F-Droid'
245 via_google_play: 'via Google Play'
246 ios: 'on the iTunes Store'
247 windows: 'on the Microsoft Store'
248 bookmarklet:
249 description: 'Drag & drop this link to your bookmarks bar:'
250
251quickstart:
252 page_title: 'Quickstart'
253 intro:
254 title: 'Welcome to wallabag!'
255 paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interess you."
256 paragraph_2: 'Follow us!'
257 configure:
258 title: 'Configure the application'
259 language: 'Change language and design'
260 rss: 'Enable RSS feeds'
261 tagging_rules: 'Write rules to automatically tag your articles'
262 admin:
263 title: 'Administration'
264 description: 'As a administrator, you have privileges on wallabag. You can:'
265 new_user: 'Create a new user'
266 analytics: 'Configure analytics'
267 sharing: 'Enable some parameters about article sharing'
268 export: 'Configure export'
269 import: 'Configure import'
270 first_steps:
271 title: 'First steps'
272 new_article: 'Save your first article'
273 unread_articles: 'And classify it!'
274 migrate:
275 title: 'Migrate from an existing service'
276 description: "You're using an other service? We'll help you to retrieve your data on wallabag."
277 pocket: 'Migrate from Pocket'
278 wallabag_v1: 'Migrate from wallabag v1'
279 wallabag_v2: 'Migrate from wallabag v2'
280 developer:
281 title: 'Developers'
282 create_application: 'Create your third application'
283 docs:
284 title: 'Full documentation'
285 annotate: 'Annotate your article'
286 export: 'Convert your articles into ePUB or PDF'
287 search_filters: 'See how you can look for an article by using search engine and filters'
288 fetching_errors: 'What can I do if an article encounters errors during fetching?'
289 all_docs: 'And so many other articles!'
290 support:
291 title: 'Support'
292 description: 'If you need some help, we are here for you.'
293 github: 'On GitHub'
294 email: 'By email'
295 gitter: 'On Gitter'
296
297tag:
298 page_title: 'Tags'
299 list:
300 number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.'
301
302import:
303 page_title: 'Import'
304 page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.'
305 action:
306 import_contents: 'Import contents'
307 form:
308 mark_as_read_title: 'Mark all as read?'
309 mark_as_read_label: 'Mark all imported entries as read'
310 file_label: 'File'
311 save_label: 'Upload file'
312 pocket:
313 page_title: 'Import > Pocket'
314 description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag."
315 config_missing:
316 description: "Pocket import isn't configured."
317 admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
318 user_message: 'Your server admin needs to define an API Key for Pocket.'
319 authorize_message: 'You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.'
320 connect_to_pocket: 'Connect to Pocket and import data'
321 wallabag_v1:
322 page_title: 'Import > Wallabag v1'
323 description: 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.'
324 how_to: 'Please select your wallabag export and click on the below button to upload and import it.'
325 wallabag_v2:
326 page_title: 'Import > Wallabag v2'
327 description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
328
329validator:
330 password_must_match: 'The password fields must match.'
331 password_too_short: 'Password should by at least 8 chars long'
332 password_wrong_value: 'Wrong value for your current password'
333 item_per_page_too_high: 'This will certainly kill the app'
334 rss_limit_too_hight: 'This will certainly kill the app'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
index 7c6ad07e..ddc453d0 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
@@ -1,11 +1,14 @@
1#Login 1#Login
2Keep me logged in: 'Rester connecté' 2security:
3Forgot your password?: 'Mot de passe oublié ?' 3 login:
4Login: 'Se connecter' 4 keep_logged_in: 'Rester connecté'
5Back to login: 'Revenir au formulaire de connexion' 5 forgot_password: 'Mot de passe oublié ?'
6Send: 'Envoyer' 6 submit: 'Se connecter'
7"Enter your email address below and we'll send you password reset instructions.": "Saisissez votre adresse e-mail ci-dessous, nous vous enverrons les instructions pour réinitialiser votre mot de passe." 7 register: 'Créer un compte'
8Register: 'Créer un compte' 8 username: "Nom d'utilisateur"
9 password: 'Mot de passe'
10 resetting:
11 description: 'Saisissez votre adresse e-mail ci-dessous, nous vous enverrons les instructions pour réinitialiser votre mot de passe.'
9 12
10# Menu 13# Menu
11unread: 'Non lus' 14unread: 'Non lus'
@@ -33,7 +36,6 @@ Export: Exporter
33# Config screen 36# Config screen
34Settings: 'Paramètres' 37Settings: 'Paramètres'
35User information: 'Mon compte' 38User information: 'Mon compte'
36Password: 'Mot de passe'
37RSS: 'RSS' 39RSS: 'RSS'
38Add a user: 'Créer un compte' 40Add a user: 'Créer un compte'
39Theme: 'Thème' 41Theme: 'Thème'
@@ -54,7 +56,6 @@ RSS links: 'URL de vos flux RSS'
54Old password: 'Mot de passe actuel' 56Old password: 'Mot de passe actuel'
55New password: 'Nouveau mot de passe' 57New password: 'Nouveau mot de passe'
56Repeat new password: 'Confirmez votre nouveau mot de passe' 58Repeat new password: 'Confirmez votre nouveau mot de passe'
57Username: "Nom d'utilisateur"
58Two factor authentication: "Double authentification" 59Two factor authentication: "Double authentification"
59"Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion": "Activer l'authentification double-facteur veut dire que vous allez recevoir un code par email à chaque nouvelle connexion non approuvée." 60"Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion": "Activer l'authentification double-facteur veut dire que vous allez recevoir un code par email à chaque nouvelle connexion non approuvée."
60"I read ~100 words per minute": "Je lis environ 100 mots par minute" 61"I read ~100 words per minute": "Je lis environ 100 mots par minute"
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
index 54faa788..721948ef 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
@@ -1,9 +1,9 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Config{% endtrans %}{% endblock %} 3{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 <h2>{% trans %}Wallabag configuration{% endtrans %}</h2> 6 <h2>{{ 'config.tab_menu.settings'|trans }}</h2>
7 7
8 {{ form_start(form.config) }} 8 {{ form_start(form.config) }}
9 {{ form_errors(form.config) }} 9 {{ form_errors(form.config) }}
@@ -44,13 +44,13 @@
44 {{ form_rest(form.config) }} 44 {{ form_rest(form.config) }}
45 </form> 45 </form>
46 46
47 <h2>{% trans %}RSS configuration{% endtrans %}</h2> 47 <h2>{{ 'config.tab_menu.rss'|trans }}</h2>
48 48
49 {{ form_start(form.rss) }} 49 {{ form_start(form.rss) }}
50 {{ form_errors(form.rss) }} 50 {{ form_errors(form.rss) }}
51 51
52 <div class="row"> 52 <div class="row">
53 {% trans %}RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader.{% endtrans %} 53 {{ 'config.form_rss.description'|trans }}
54 </div> 54 </div>
55 55
56 <fieldset class="w500p inline"> 56 <fieldset class="w500p inline">
@@ -59,27 +59,31 @@
59 {% if rss.token %} 59 {% if rss.token %}
60 {{ rss.token }} 60 {{ rss.token }}
61 {% else %} 61 {% else %}
62 <em>No token</em> 62 <em>{{ 'config.form_rss.no_token'|trans }}</em>
63 {% endif %} 63 {% endif %}
64 – 64 –
65 <a href="{{ path('generate_token') }}">Regenerate ?</a> 65 <a href="{{ path('generate_token') }}">
66 {% if rss.token %}
67 {{ 'config.form_rss.token_reset'|trans }}
68 {% else %}
69 {{ 'config.form_rss.token_create'|trans }}
70 {% endif %}
71 </a>
66 </div> 72 </div>
67 </fieldset> 73 </fieldset>
68 74
75 {% if rss.token %}
69 <fieldset class="w500p inline"> 76 <fieldset class="w500p inline">
70 <div class="row"> 77 <div class="row">
71 <label>Rss links:</label> 78 <label>{{ 'config.form_rss.rss_links'|trans }}</label>
72 {% if rss.token %} 79 <ul>
73 <ul> 80 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">unread</a></li>
74 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">unread</a></li> 81 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">fav</a></li>
75 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">fav</a></li> 82 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">archives</a></li>
76 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">archives</a></li> 83 </ul>
77 </ul>
78 {% else %}
79 <strong>You need to generate a token first.</strong>
80 {% endif %}
81 </div> 84 </div>
82 </fieldset> 85 </fieldset>
86 {% endif %}
83 87
84 <fieldset class="w500p inline"> 88 <fieldset class="w500p inline">
85 <div class="row"> 89 <div class="row">
@@ -92,7 +96,7 @@
92 {{ form_rest(form.rss) }} 96 {{ form_rest(form.rss) }}
93 </form> 97 </form>
94 98
95 <h2>{% trans %}User information{% endtrans %}</h2> 99 <h2>{{ 'config.tab_menu.user_info'|trans }}</h2>
96 100
97 {{ form_start(form.user) }} 101 {{ form_start(form.user) }}
98 {{ form_errors(form.user) }} 102 {{ form_errors(form.user) }}
@@ -115,7 +119,7 @@
115 119
116 {% if twofactor_auth %} 120 {% if twofactor_auth %}
117 <div class="row"> 121 <div class="row">
118 {% trans %}Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion{% endtrans %} 122 {{ 'config.form_user.two_factor_description'|trans }}
119 </div> 123 </div>
120 124
121 <fieldset class="w500p inline"> 125 <fieldset class="w500p inline">
@@ -130,7 +134,7 @@
130 {{ form_rest(form.user) }} 134 {{ form_rest(form.user) }}
131 </form> 135 </form>
132 136
133 <h2>{% trans %}Change your password{% endtrans %}</h2> 137 <h2>{{ 'config.tab_menu.password'|trans }}</h2>
134 138
135 {{ form_start(form.pwd) }} 139 {{ form_start(form.pwd) }}
136 {{ form_errors(form.pwd) }} 140 {{ form_errors(form.pwd) }}
@@ -162,13 +166,16 @@
162 {{ form_rest(form.pwd) }} 166 {{ form_rest(form.pwd) }}
163 </form> 167 </form>
164 168
165 <h2>{% trans %}Tagging rules{% endtrans %}</h2> 169 <h2>{{ 'config.tab_menu.rules'|trans }}}</h2>
166 170
167 <ul> 171 <ul>
168 {% for tagging_rule in app.user.config.taggingRules %} 172 {% for tagging_rule in app.user.config.taggingRules %}
169 <li> 173 <li>
170 if « {{ tagging_rule.rule }} » then tag as « {{ tagging_rule.tags|join(', ') }} » 174 {{ 'config.form_rules.if_label'|trans }}
171 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{% trans %}Delete{% endtrans %}" class="tool delete icon-trash icon"></a> 175 « {{ tagging_rule.rule }} »
176 {{ 'config.form_rules.then_tag_as_label'|trans }}
177 « {{ tagging_rule.tags|join(', ') }} »
178 <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>
172 </li> 179 </li>
173 {% endfor %} 180 {% endfor %}
174 </ul> 181 </ul>
@@ -196,7 +203,7 @@
196 </form> 203 </form>
197 204
198 {% if is_granted('ROLE_SUPER_ADMIN') %} 205 {% if is_granted('ROLE_SUPER_ADMIN') %}
199 <h2>{% trans %}Add a user{% endtrans %}</h2> 206 <h2>{{ 'config.tab_menu.new_user'|trans }}</h2>
200 207
201 {{ form_start(form.new_user) }} 208 {{ form_start(form.new_user) }}
202 {{ form_errors(form.new_user) }} 209 {{ form_errors(form.new_user) }}
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
index 0d4d5ad2..e974fc69 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Edit an entry{% endtrans %}{% endblock %} 3{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {{ form(form) }} 6 {{ form(form) }}
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
index 7271bdaa..f718043b 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
@@ -1,13 +1,13 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title "Unread" %} 3{% block title %}{{ 'entry.page_titles.unread'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {% block pager %} 6 {% block pager %}
7 <div class="results"> 7 <div class="results">
8 <div class="nb-results">{{ entries.count }} {% trans %}entries{% endtrans %}</div> 8 <div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
9 <div class="pagination"> 9 <div class="pagination">
10 <a href="#" id="filter">{% trans %}Filter{% endtrans %}</a> 10 <a href="#" id="filter">{{ 'entry.filters.title'|trans }}</a>
11 {% if entries is not empty %} 11 {% if entries is not empty %}
12 – 12 –
13 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %} 13 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
@@ -20,68 +20,64 @@
20 </div> 20 </div>
21 {% endblock %} 21 {% endblock %}
22 22
23 {% if entries is empty %} 23 {% for entry in entries %}
24 <div class="messages warning"><p>{% trans %}No articles found.{% endtrans %}</p></div> 24 <div id="entry-{{ entry.id|e }}" class="entry">
25 {% else %} 25 <h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
26 {% for entry in entries %} 26 {% if entry.readingTime > 0 %}
27 <div id="entry-{{ entry.id|e }}" class="entry"> 27 <div class="estimatedTime">
28 <h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2> 28 <span class="tool reading-time">
29 {% if entry.readingTime > 0 %} 29 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
30 <div class="estimatedTime"> 30 </span>
31 <span class="tool reading-time"> 31 </div>
32 {% trans with {'%readingTime%': entry.readingTime } %}estimated reading time: %readingTime% min{% endtrans %} 32 {% else %}
33 </span> 33 <div class="estimatedTime">
34 </div> 34 <span class="tool reading-time">
35 {% else %} 35 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
36 <div class="estimatedTime"> 36 </span>
37 <span class="tool reading-time"> 37 </div>
38 {% trans with {'%inferior%': '<small class="inferieur">&lt;</small>'} %}estimated reading time: %inferior% 1 min{% endtrans %} 38 {% endif %}
39 </span> 39
40 </div> 40 <ul class="tools links">
41 {% endif %} 41 <li><a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool icon-check icon {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{{ 'entry.list.toogle_as_read'|trans }}</span></a></li>
42 42 <li><a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool icon-star icon {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.list.toogle_as_star'|trans }}</span></a></li>
43 <ul class="tools links"> 43 <li><a title="{{ 'entry.list.delete'|trans }}" class="tool delete icon-trash icon" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.list.delete'|trans }}</span></a></li>
44 <li><a title="{% trans %}Toggle mark as read{% endtrans %}" class="tool icon-check icon {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle mark as read{% endtrans %}</span></a></li> 44 <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.list.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon-link icon"><span>{{ entry.domainName|removeWww }}</span></a></li>
45 <li><a title="{% trans %}toggle favorite{% endtrans %}" class="tool icon-star icon {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}toggle favorite{% endtrans %}</span></a></li> 45 </ul>
46 <li><a title="{% trans %}delete{% endtrans %}" class="tool delete icon-trash icon" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{% trans %}delete{% endtrans %}</span></a></li> 46 {% if entry.previewPicture is null %}
47 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link icon-link icon"><span>{{ entry.domainName|removeWww }}</span></a></li> 47 <p>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p>
48 </ul> 48 {% else %}
49 {% if entry.previewPicture is null %} 49 <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" />
50 <p>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p> 50 {% endif %}
51 {% else %} 51 </div>
52 <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" /> 52 {% endfor %}
53 {% endif %}
54 </div>
55 {% endfor %}
56 {% endif %}
57 53
58 <aside id="filter-form" class=""> 54 <aside id="filter-form" class="">
59 <form method="get" action="{{ path('all') }}"> 55 <form method="get" action="{{ path('all') }}">
60 <h2>{% trans %}Filters{% endtrans %}</h2> 56 <h2>{{ 'entry.filters.title'|trans }}</h2>
61 <a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">&times;</a> 57 <a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">&times;</a>
62 58
63 <div id="filter-status" class="filter-group"> 59 <div id="filter-status" class="filter-group">
64 <div class=""> 60 <div class="">
65 <label>{% trans %}Status{% endtrans %}</label> 61 <label>{{ 'entry.filters.status_label'|trans }}</label>
66 </div> 62 </div>
67 <div class="input-field"> 63 <div class="input-field">
68 {{ form_widget(form.isArchived) }} 64 {{ form_widget(form.isArchived) }}
69 <label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label> 65 {{ form_label(form.isArchived) }}
70 </div> 66 </div>
71 67
72 <div class="input-field"> 68 <div class="input-field">
73 {{ form_widget(form.isStarred) }} 69 {{ form_widget(form.isStarred) }}
74 <label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label> 70 {{ form_label(form.isStarred) }}
75 </div> 71 </div>
76 72
77 <div class="input-field"> 73 <div class="input-field">
78 {{ form_widget(form.previewPicture) }} 74 {{ form_widget(form.previewPicture) }}
79 <label for="entry_filter_previewPicture">{% trans %}Has a preview picture{% endtrans %}</label> 75 {{ form_label(form.previewPicture) }}
80 </div> 76 </div>
81 </div> 77 </div>
82 78
83 <div id="filter-language" class="filter-group"> 79 <div id="filter-language" class="filter-group">
84 <label for="entry_filter_language">{% trans %}Language{% endtrans %}</label> 80 {{ form_label(form.language) }}
85 <div class="input-field "> 81 <div class="input-field ">
86 {{ form_widget(form.language) }} 82 {{ form_widget(form.language) }}
87 </div> 83 </div>
@@ -89,20 +85,20 @@
89 85
90 <div id="filter-reading-time" class="filter-group"> 86 <div id="filter-reading-time" class="filter-group">
91 <div class=""> 87 <div class="">
92 <label>{% trans %}Reading time in minutes{% endtrans %}</label> 88 {{ form_label(form.readingTime) }}
93 </div> 89 </div>
94 <div class="input-field "> 90 <div class="input-field ">
95 <label for="entry_filter_readingTime_left_number">{% trans %}from{% endtrans %}</label> 91 <label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
96 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }} 92 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
97 </div> 93 </div>
98 <div class="input-field "> 94 <div class="input-field ">
99 <label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label> 95 <label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
100 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }} 96 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
101 </div> 97 </div>
102 </div> 98 </div>
103 99
104 <div id="filter-domain-name" class="filter-group"> 100 <div id="filter-domain-name" class="filter-group">
105 <label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label> 101 {{ form_label(form.domainName) }}
106 <div class="input-field "> 102 <div class="input-field ">
107 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }} 103 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
108 </div> 104 </div>
@@ -110,26 +106,25 @@
110 106
111 <div id="filter-creation-date" class="filter-group"> 107 <div id="filter-creation-date" class="filter-group">
112 <div class=""> 108 <div class="">
113 <label>{% trans %}Creation date{% endtrans %}</label> 109 {{ form_label(form.createdAt) }}
114 </div> 110 </div>
115 <div class="input-field "> 111 <div class="input-field ">
116 <label for="entry_filter_createdAt_left_date" class="active">{% trans %}from{% endtrans %}</label> 112 <label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
117 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }} 113 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
118 </div> 114 </div>
119 <div class="input-field "> 115 <div class="input-field ">
120 <label for="entry_filter_createdAt_right_date" class="active">{% trans %}to{% endtrans %}</label> 116 <label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
121 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }} 117 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
122 </div> 118 </div>
123 </div> 119 </div>
124 <div id="filter-buttons" class="filter-group">
125 120
121 <div id="filter-buttons" class="filter-group">
126 <div class=""> 122 <div class="">
127 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{% trans %}Clear{% endtrans %}</a> 123 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
128 </div> 124 </div>
129 125
130 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{% trans %}Filters{% endtrans %}</button> 126 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
131 127 </div>
132 </div>
133 </form> 128 </form>
134 </aside> 129 </aside>
135 130
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig
index a39a8dc3..98f7194c 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig
@@ -18,9 +18,9 @@
18 <description> 18 <description>
19 <![CDATA[ 19 <![CDATA[
20 {%- if entry.readingTime > 0 -%} 20 {%- if entry.readingTime > 0 -%}
21 {% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min 21 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
22 {%- else -%} 22 {%- else -%}
23 {% trans %}estimated reading time :{% endtrans %} &lt; 1 min 23 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
24 {%- endif %} 24 {%- endif %}
25 25
26 {{ entry.content|raw -}} 26 {{ entry.content|raw -}}
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
index 9323e787..3cda3949 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
@@ -5,32 +5,32 @@
5{% block content %} 5{% block content %}
6 <div id="article"> 6 <div id="article">
7 <header class="mbm"> 7 <header class="mbm">
8 <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{% trans %}Edit title{% endtrans %}">✎</a></h1> 8 <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
9 </header> 9 </header>
10 10
11 <div id="article_toolbar"> 11 <div id="article_toolbar">
12 <ul class="links"> 12 <ul class="links">
13 <li class="topPosF"><a href="#top" title="{% trans %}Back to top{% endtrans %}" class="tool top icon icon-arrow-up-thick"><span>{% trans %}Back to top{% endtrans %}</span></a></li> 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" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.domainName|removeWww }}</span></a></li> 14 <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.domainName|removeWww }}</span></a></li>
15 <li><a title="{% trans %}Re-fetch content{% endtrans %}" class="tool icon icon-reload" href="{{ path('reload_entry', { 'id': entry.id }) }}"><span>{% trans %}Re-fetch content{% endtrans %}</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 <li><a title="{% if entry.isArchived == 0 %}{% trans %}Mark as read{% endtrans %}{% else %}{% trans %}Mark as unread{% endtrans %}{% endif %}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% if entry.isArchived == 0 %}{% trans %}Mark as read{% endtrans %}{% else %}{% trans %}Mark as unread{% endtrans %}{% endif %}</span></a></li> 16 <li><a title="{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}</span></a></li>
17 <li><a title="{% trans %}Favorite{% endtrans %}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle favorite{% endtrans %}</span></a></li> 17 <li><a title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_favorite'|trans }}</span></a></li>
18 <li><a id="nav-btn-add-tag" title="{% trans %}Add a tag{% endtrans %}"><span>{% trans %}Tag{% endtrans %}</span></a></li> 18 <li><a id="nav-btn-add-tag" title="{{ 'entry.view.left_menu.add_a_tag'|trans }}"><span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span></a></li>
19 <li><a title="{% trans %}Delete{% endtrans %}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{% trans %}Delete{% endtrans %}</span></a></li> 19 <li><a title="{{ 'entry.view.left_menu.delete'|trans }}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.delete'|trans }}</span></a></li>
20 {% if craue_setting('share_twitter') %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="{% trans %}Tweet{% endtrans %}"><span>{% trans %}Tweet{% endtrans %}</span></a></li>{% endif %} 20 {% if craue_setting('share_twitter') %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="Tweet"><span>Tweet</span></a></li>{% endif %}
21 {% 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="{% trans %}Email{% endtrans %}"><span>{% trans %}Email{% endtrans %}</span></a></li>{% endif %} 21 {% 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 %}
22 {% 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 }}" target="_blank" class="tool shaarli" title="{% trans %}shaarli{% endtrans %}"><span>{% trans %}shaarli{% endtrans %}</span></a></li>{% endif %} 22 {% 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 }}" target="_blank" class="tool shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %}
23 {% 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" class="tool diaspora icon-image icon-image--diaspora" title="{% trans %}diaspora{% endtrans %}"><span>{% trans %}diaspora{% endtrans %}</span></a></li>{% endif %} 23 {% 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" class="tool diaspora icon-image icon-image--diaspora" title="diaspora"><span>diaspora</span></a></li>{% endif %}
24 {% 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" title="{% trans %}carrot{% endtrans %}"><span>Carrot</span></a></li>{% endif %} 24 {% 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" title="carrot"><span>Carrot</span></a></li>{% endif %}
25 {% if craue_setting('show_printlink') %}<li><a title="{% trans %}Print{% endtrans %}" class="tool icon icon-print" href="javascript: window.print();"><span>{% trans %}Print{% endtrans %}</span></a></li>{% endif %} 25 {% 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.re_fetch_content'|trans }}</span></a></li>{% endif %}
26 {% if craue_setting('export_epub') %}<li><a href="?epub&amp;method=id&amp;value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %} 26 {% if craue_setting('export_epub') %}<li><a href="?epub&amp;method=id&amp;value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
27 {% if craue_setting('export_mobi') %}<li><a href="?mobi&amp;method=id&amp;value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %} 27 {% if craue_setting('export_mobi') %}<li><a href="?mobi&amp;method=id&amp;value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
28 {% if craue_setting('export_pdf') %}<li><a href="?pdf&amp;method=id&amp;value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %} 28 {% if craue_setting('export_pdf') %}<li><a href="?pdf&amp;method=id&amp;value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %}
29 <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans %}Does this article appear wrong?{% endtrans %}" class="tool bad-display icon icon-delete"><span>{% trans %}Does this article appear wrong?{% endtrans %}</span></a></li> 29 <li><a href="mailto:hello@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>
30 </ul> 30 </ul>
31 </div> 31 </div>
32 {% set nbAnnotations = entry.annotations | length %} 32 {% set nbAnnotations = entry.annotations | length %}
33 <span class="tool link mdi-communication-comment"> {% transchoice nbAnnotations %}{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations{% endtranschoice %}</span> 33 <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
34 <aside class="tags"> 34 <aside class="tags">
35 {% for tag in entry.tags %} 35 {% for tag in entry.tags %}
36 <span class="mdi-action-label-outline">{{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i>✘</i></a> 36 <span class="mdi-action-label-outline">{{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i>✘</i></a>
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
index 95ed0785..03768a3d 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Save new entry{% endtrans %}{% endblock %} 3{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }} 6 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }}
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
index fa0a9f53..8c129068 100644
--- 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
@@ -8,7 +8,7 @@
8 {% endif %} 8 {% endif %}
9 9
10 {{ form_label(form.url) }} 10 {{ form_label(form.url) }}
11 {{ form_widget(form.url) }} 11 {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
12 12
13 <div class="hidden">{{ form_rest(form) }}</div> 13 {{ form_rest(form) }}
14</form> 14</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig
index fdd12cf7..5c0046d1 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig
@@ -1,57 +1,57 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}About{% endtrans %}{% endblock %} 3{% block title %}{{ 'about.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 <h2>{% trans %}Who is behind wallabag{% endtrans %}</h2> 6 <h2>{{ 'about.top_menu.who_behind_wallabag'|trans }}</h2>
7 7
8 <dl> 8 <dl>
9 <dt>{% trans %}Developed by{% endtrans %}</dt> 9 <dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt>
10 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans %}website{% endtrans %}</a></dd> 10 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
11 <dd>Thomas Citharel — <a href="https://tcit.fr">{% trans %}website{% endtrans %}</a></dd> 11 <dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
12 <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{% trans %}website{% endtrans %}</a></dd> 12 <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
13 13
14 <dt>{% trans %}And many others contributors ♥{% endtrans %} <a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}on Github{% endtrans %}</a></dt> 14 <dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt>
15 15
16 <dt>{% trans %}Project website{% endtrans %}</dt> 16 <dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt>
17 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd> 17 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
18 18
19 <dt>{% trans %}License{% endtrans %}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt> 19 <dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
20 20
21 <dt>{% trans %}Version{% endtrans %}: {{ version }}</dt> 21 <dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt>
22 </dl> 22 </dl>
23 23
24 <h2>{% trans %}Getting help{% endtrans %}</h2> 24 <h2>{{ 'about.top_menu.getting_help'|trans }}</h2>
25 25
26 <dl> 26 <dl>
27 <dt>{% trans %}Documentation{% endtrans %}</dt> 27 <dt>{{ 'about.getting_help.documentation'|trans }}</dt>
28 <dd><a href="https://doc.wallabag.org/en">english</a></dd> 28 <dd><a href="https://doc.wallabag.org/en">english</a></dd>
29 <dd><a href="https://doc.wallabag.org/fr">français</a></dd> 29 <dd><a href="https://doc.wallabag.org/fr">français</a></dd>
30 <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd> 30 <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd>
31 31
32 <dt>{% trans %}Bug reports{% endtrans %}</dt> 32 <dt>{{ 'about.getting_help.bug_reports'|trans }}</dt>
33 <dd><a href="https://support.wallabag.org">{% trans %}On our support website{% endtrans %}</a> {% trans %}or{% endtrans %} <a href="https://github.com/wallabag/wallabag/issues">{% trans %}on Github{% endtrans %}</a></dd> 33 <dd>{{ 'about.getting_help.support'|trans|raw }}</dd>
34 </dl> 34 </dl>
35 35
36 <h2>{% trans %}Helping wallabag{% endtrans %}</h2> 36 <h2>{{ 'about.top_menu.helping'|trans }}</h2>
37 37
38 <p>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</p> 38 <p>{{ 'about.helping.description'|trans }}</p>
39 39
40 <dl> 40 <dl>
41 <dt>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</dt> 41 <dt>{{ 'about.helping.description'|trans }}</dt>
42 <dd>by contributing to the project: <a href="https://github.com/wallabag/wallabag/issues/1254">an issue lists all our needs</a></dd> 42 <dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd>
43 <dd><a href="{{ paypal_url }}">{% trans %}via Paypal{% endtrans %}</a></dd> 43 <dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd>
44 </dl> 44 </dl>
45 45
46 <h2>{% trans %}Contributors{% endtrans %}</h2> 46 <h2>{{ 'about.top_menu.contributors'|trans }}</h2>
47 <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}Thank you to contributors on wallabag web application{% endtrans %}</a></p> 47 <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p>
48 48
49 <h2>{% trans %}Third-party libraries{% endtrans %}</h2> 49 <h2>{{ 'about.top_menu.third_party'|trans }}</h2>
50 <p>{% trans %}Here are the list of third-party libraries used in wallabag (with their licenses):{% endtrans %}</p> 50 <p>{{ 'about.third_party.description'|trans }}</p>
51 <table> 51 <table class="striped">
52 <tr> 52 <tr>
53 <th>{% trans %}Package{% endtrans %}</th> 53 <th>{{ 'about.third_party.package'|trans }}</th>
54 <th>{% trans %}License{% endtrans %}</th> 54 <th>{{ 'about.third_party.license'|trans }}</th>
55 </tr> 55 </tr>
56 <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr> 56 <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr>
57 <tr><td>CraueConfigBundle</td><td>MIT</td></tr> 57 <tr><td>CraueConfigBundle</td><td>MIT</td></tr>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig
index e32264f3..8da1afa0 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig
@@ -1,28 +1,28 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Howto{% endtrans %}{% endblock %} 3{% block title %}{{ 'howto.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 <h2>{% trans %}Howto{% endtrans %}</h2> 6 <h2>{{ 'howto.page_title'|trans }}</h2>
7 7
8 <p>{% trans %}There are several ways to save an article:{% endtrans %}</p> 8 <p>{{ 'howto.page_description'|trans }}</p>
9 <ul> 9 <ul>
10 <li><a href="{{ path('new') }}">{% trans %}Thanks to this form{% endtrans %}</a></li> 10 <li><a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a></li>
11 </ul> 11 </ul>
12 <h3>{% trans %}Browser Addons{% endtrans %}</h3> 12 <h3>{{ 'howto.top_menu.browser_addons'|trans }}</h3>
13 <ul> 13 <ul>
14 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans %}Standard Firefox Add-On{% endtrans %}</a></li> 14 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li>
15 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans %}Chrome Extension{% endtrans %}</a></li> 15 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li>
16 </ul> 16 </ul>
17 <h3>{% trans %}Mobile Apps{% endtrans %}</h3> 17 <h3>{{ 'howto.top_menu.mobile_apps'|trans }}</h3>
18 <ul> 18 <ul>
19 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">via F-Droid</a> {% trans %} or {% endtrans %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">via Google Play</a></li> 19 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">{{ 'howto.mobile_apps.android.via_f_droid'|trans }}</a> / <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">{{ 'howto.mobile_apps.android.via_google_play'|trans }}</a></li>
20 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans %}download the application{% endtrans %}</a></li> 20 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li>
21 <li>Windows Phone: <a href="http://www.windowsphone.com/en-US/store/app/wallabag/d5226cf1-f422-4e00-996c-88e9c5233332" target="_blank">{% trans %}download the application{% endtrans %}</a></li> 21 <li>Windows Phone: <a href="http://www.windowsphone.com/en-US/store/app/wallabag/d5226cf1-f422-4e00-996c-88e9c5233332" target="_blank">{{ 'howto.mobile_apps.windows'|trans }}</a></li>
22 </ul> 22 </ul>
23 <h3>{% trans %}Bookmarklet{% endtrans %}</h3> 23 <h3>{{ 'howto.top_menu.bookmarklet'|trans }}</h3>
24 <p> 24 <p>
25 {% trans %}Drag &amp; drop this link to your bookmarks bar:{% endtrans %} 25 {{ 'howto.bookmarklet.description'|trans }}
26 {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %} 26 {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
27 27
28{% endblock %} 28{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig
index 6b008fca..5f65ce15 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig
@@ -1,55 +1,66 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Quickstart{% endtrans %}{% endblock %} 3{% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
7 <h3>{% trans %}Welcome to wallabag!{% endtrans %}</h3> 7 <h3>{{ 'quickstart.intro.title'|trans }}</h3>
8 <p>{% trans %}We'll accompany you to visit wallabag and show you some features which can interess you.{% endtrans %}</p> 8 <p>{{ 'quickstart.intro.paragraph_1'|trans }}</p>
9 <p>{% trans %}Follow us!{% endtrans %}</p> 9 <p>{{ 'quickstart.intro.paragraph_2'|trans }}</p>
10 <h4>{% trans %}Configure the application{% endtrans %}</h4> 10
11 <h4>{{ 'quickstart.configure.title'|trans }}</h4>
11 <ul> 12 <ul>
12 <li><a href="{{ path('config') }}">{% trans %}Change language and design{% endtrans %}</a></li> 13 <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
13 <li><a href="{{ path('config') }}#set2">{% trans %}Enable RSS feeds{% endtrans %}</a></li> 14 <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li>
14 <li><a href="{{ path('config') }}#set5">{% trans %}Write rules to automatically tag your articles{% endtrans %}</a></li> 15 <li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li>
15 </ul> 16 </ul>
17
16 {% if is_granted('ROLE_SUPER_ADMIN') %} 18 {% if is_granted('ROLE_SUPER_ADMIN') %}
17 <h4>{% trans %}Administration{% endtrans %}</h4> 19 <h4>{{ 'quickstart.admin.title'|trans }}</h4>
18 <p>{% trans %}As a administrator, you have privileges on wallabag. You can:{% endtrans %}</p> 20 <p>{{ 'quickstart.admin.description'|trans }}</p>
19 <ul> 21 <ul>
20 <li><a href="{{ path('config') }}#set6">{% trans %}Create a new user{% endtrans %}</a></li> 22 <li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li>
21 <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{% trans %}Configure analytics{% endtrans %}</a></li> 23 <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li>
22 <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{% trans %}Enable some parameters about article sharing{% endtrans %}</a></li> 24 <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li>
23 <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{% trans %}Configure export{% endtrans %}</a></li> 25 <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li>
24 <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{% trans %}Configure import{% endtrans %}</a></li> 26 <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li>
25 </ul> 27 </ul>
26 {% endif %} 28 {% endif %}
27 <h4>{% trans %}First steps{% endtrans %}</h4> 29
30 <h4>{{ 'quickstart.first_steps.title'|trans }}</h4>
28 <ul> 31 <ul>
29 <li><a href="{{ path('new') }}">{% trans %}Save your first article{% endtrans %}</a></li> 32 <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li>
30 <li><a href="{{ path('unread') }}">{% trans %}And classify it!{% endtrans %}</a></li> 33 <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li>
31 </ul> 34 </ul>
32 <h4>{% trans %}Migrate from an existing service{% endtrans %}</h4> 35
33 <p>{% trans %}You're using an other service? We'll help you to retrieve your data on wallabag.{% endtrans %}</p> 36 <h4>{{ 'quickstart.migrate.title'|trans }}</h4>
37 <p>{{ 'quickstart.migrate.description'|trans }}</p>
34 <ul> 38 <ul>
35 <li><a href="{{ path('import_pocket') }}">{% trans %}Migrate from Pocket{% endtrans %}</a></li> 39 <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li>
36 <li><a href="{{ path('import_wallabag_v1') }}">{% trans %}Migrate from wallabag v1{% endtrans %}</a></li> 40 <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li>
37 <li><a href="{{ path('import_wallabag_v2') }}">{% trans %}Migrate from wallabag v2{% endtrans %}</a></li> 41 <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li>
38 </ul> 42 </ul>
39 <h4>{% trans %}Full documentation{% endtrans %}</h4> 43
44 <h4>{{ 'quickstart.developer.title'|trans }}</h4>
40 <ul> 45 <ul>
41 <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{% trans %}Annotate your article{% endtrans %}</a></li> 46 <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li>
42 <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{% trans %}Convert your articles into ePUB or PDF{% endtrans %}</a></li>
43 <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{% trans %}See how you can look for an article by using search engine and filters{% endtrans %}</a></li>
44 <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{% trans %}What can I do if an article encounters errors during fetching?{% endtrans %}</a></li>
45 <li><a href="http://doc.wallabag.org/">{% trans %}And so many other articles!{% endtrans %}</a></li>
46 </ul> 47 </ul>
47 <h4>{% trans %}Support{% endtrans %}</h4> 48
48 <p>{% trans %}If you need some help, we are here for you.{% endtrans %}</p> 49 <h4>{{ 'quickstart.docs.title'|trans }}</h4>
50 <ul>
51 <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li>
52 <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li>
53 <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li>
54 <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li>
55 <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li>
56 </ul>
57
58 <h4>{{ 'quickstart.support.title'|trans }}</h4>
59 <p>{{ 'quickstart.support.description'|trans }}</p>
49 <ul> 60 <ul>
50 <li><a href="https://github.com/wallabag/wallabag/issues/">{% trans %}On GitHub{% endtrans %}</a></li> 61 <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li>
51 <li><a href="mailto:hello@wallabag.org">{% trans %}By email{% endtrans %}</a></li> 62 <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li>
52 <li><a href="https://gitter.im/wallabag/wallabag">{% trans %}On Gitter{% endtrans %}</a></li> 63 <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li>
53 </ul> 64 </ul>
54 65
55{% endblock %} 66{% 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
index ade7f56d..6e552560 100644
--- 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
@@ -8,7 +8,6 @@
8 {% endif %} 8 {% endif %}
9 9
10 {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }} 10 {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
11 {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'}, 'label': 'add tag' }) }}
12 11
13 <div class="hidden">{{ form_rest(form) }}</div> 12 {{ form_rest(form) }}
14</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
index c2a461b8..dfc61751 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
@@ -1,13 +1,15 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title "Tags" %} 3{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {% if tags is empty %} 6 <div class="results">
7 <div class="messages warning"><p>{% trans %}No tags found.{% endtrans %}</p></div> 7 <div class="nb-results">{{ 'tag.list.number_on_the_page'|transchoice(tags.count) }}</div>
8 {% else %} 8 </div>
9 {% for tag in tags %} 9
10 {{tag.label}} 10 <ul>
11 {% endfor %} 11 {% for tag in tags %}
12 {% endif %} 12 <li id="tag-{{ tag.id|e }}">{{tag.label}} ({{ tag.entries.getValues | length }})</li>
13 {% endfor %}
14 </ul>
13{% endblock %} 15{% 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
index 7f098066..0ce06962 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
@@ -33,32 +33,32 @@
33{% block menu %} 33{% block menu %}
34 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button> 34 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
35 <ul id="links" class="links"> 35 <ul id="links" class="links">
36 <li><a href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li> 36 <li><a href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a></li>
37 <li><a href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li> 37 <li><a href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a></li>
38 <li><a href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li> 38 <li><a href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a></li>
39 <li><a href="{{ path('all') }}">{% trans %}all{% endtrans %}</a></li> 39 <li><a href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a></li>
40 <li><a href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li> 40 <li><a href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a></li>
41 <li><a href="{{ path('new') }}">{% trans %}save a link{% endtrans %}</a></li> 41 <li><a href="{{ path('new') }}">{{ 'menu.left.save_link'|trans }}</a></li>
42 <li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans %}search{% endtrans %}</a> 42 <li style="position: relative;"><a href="javascript: void(null);" id="search">{{ 'menu.left.search'|trans }}</a>
43 <div id="search-form" class="messages info popup-form"> 43 <div id="search-form" class="messages info popup-form">
44 <form method="get" action="index.php"> 44 <form method="get" action="index.php">
45 <h2>{% trans %}Search{% endtrans %}</h2> 45 <h2>{{ 'menu.left.search'|trans }}</h2>
46 <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a> 46 <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a>
47 <input type="hidden" name="view" value="search"> 47 <input type="hidden" name="view" value="search">
48 <input required placeholder="{% trans %}Enter your search here{% endtrans %}" type="text" name="search" id="searchfield"><br> 48 <input required placeholder="{{ 'menu.search_form.input_label'|trans }}" type="text" name="search" id="searchfield"><br>
49 <input id="submit-search" type="submit" value="{% trans %}Search{% endtrans %}"> 49 <input id="submit-search" type="submit" value="{{ 'menu.left.search'|trans }}">
50 </form> 50 </form>
51 </div> 51 </div>
52 </li> 52 </li>
53 <li><a href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li> 53 <li><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li>
54 {% if is_granted('ROLE_SUPER_ADMIN') %} 54 {% if is_granted('ROLE_SUPER_ADMIN') %}
55 <li><a href="{{ path('craue_config_settings_modify') }}">{% trans %}internal settings{% endtrans %}</a></li> 55 <li><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li>
56 {% endif %} 56 {% endif %}
57 <li><a href="{{ path('import') }}">{% trans %}import{% endtrans %}</a></li> 57 <li><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li>
58 <li><a href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li> 58 <li><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li>
59 <li><a href="{{ path('developer') }}">{% trans %}Developer{% endtrans %}</a></li> 59 <li><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li>
60 <li><a href="{{ path('about') }}">{% trans %}about{% endtrans %}</a></li> 60 <li><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li>
61 <li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li> 61 <li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li>
62 </ul> 62 </ul>
63{% endblock %} 63{% endblock %}
64 64
@@ -73,6 +73,6 @@
73 73
74{% block footer %} 74{% block footer %}
75 <footer class="w600p center mt3 mb3 smaller txtright"> 75 <footer class="w600p center mt3 mb3 smaller txtright">
76 <p>{% trans %}powered by{% endtrans %} <a href="http://wallabag.org">wallabag</a></p> 76 <p>{{ 'footer.wallabag.powered_by'|trans }} <a href="http://wallabag.org">wallabag</a></p>
77 </footer> 77 </footer>
78{% endblock %} 78{% endblock %}
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 2b0b0828..698219b9 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
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}config{% endtrans %}{% endblock %} 3{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
@@ -11,13 +11,13 @@
11 <div class="row"> 11 <div class="row">
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 s3"><a class="active" href="#set1">{% trans %}Settings{% endtrans %}</a></li> 14 <li class="tab col s3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li>
15 <li class="tab col s3"><a href="#set2">{% trans %}RSS{% endtrans %}</a></li> 15 <li class="tab col s3"><a href="#set2">{{ 'config.tab_menu.rss'|trans }}</a></li>
16 <li class="tab col s3"><a href="#set3">{% trans %}User information{% endtrans %}</a></li> 16 <li class="tab col s3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li>
17 <li class="tab col s3"><a href="#set4">{% trans %}Password{% endtrans %}</a></li> 17 <li class="tab col s3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li>
18 <li class="tab col s3"><a href="#set5">{% trans %}Tagging rules{% endtrans %}</a></li> 18 <li class="tab col s3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li>
19 {% if is_granted('ROLE_SUPER_ADMIN') %} 19 {% if is_granted('ROLE_SUPER_ADMIN') %}
20 <li class="tab col s3"><a href="#set6">{% trans %}Add a user{% endtrans %}</a></li> 20 <li class="tab col s3"><a href="#set6">{{ 'config.tab_menu.new_user'|trans }}</a></li>
21 {% endif %} 21 {% endif %}
22 </ul> 22 </ul>
23 </div> 23 </div>
@@ -28,9 +28,9 @@
28 28
29 <div class="row"> 29 <div class="row">
30 <div class="input-field col s12"> 30 <div class="input-field col s12">
31 {{ form_label(form.config.theme) }}
31 {{ form_errors(form.config.theme) }} 32 {{ form_errors(form.config.theme) }}
32 {{ form_widget(form.config.theme) }} 33 {{ form_widget(form.config.theme) }}
33 <label class="required">{% trans %}Theme{% endtrans %}</label>
34 </div> 34 </div>
35 </div> 35 </div>
36 36
@@ -59,10 +59,8 @@
59 </div> 59 </div>
60 </div> 60 </div>
61 61
62 <div class="hidden">{{ form_rest(form.config) }}</div> 62 {{ form_widget(form.config.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
63 <button class="btn waves-effect waves-light" type="submit" name="action"> 63 {{ form_rest(form.config) }}
64 {% trans %}Save{% endtrans %}
65 </button>
66 </form> 64 </form>
67 </div> 65 </div>
68 66
@@ -72,33 +70,37 @@
72 70
73 <div class="row"> 71 <div class="row">
74 <div class="input-field col s12"> 72 <div class="input-field col s12">
75 {% 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 %} 73 {{ 'config.form_rss.description'|trans }}
76 </div> 74 </div>
77 </div> 75 </div>
78 76
79 <div class="row"> 77 <div class="row">
80 <div class="input-field col s12"> 78 <div class="input-field col s12">
81 <label>{% trans %}RSS token{% endtrans %}</label> 79 <label>{{ 'config.form_rss.token_label'|trans }}</label>
82 <div> 80 <div>
83 {% if rss.token %} 81 {% if rss.token %}
84 {{ rss.token }} 82 {{ rss.token }}
85 {% else %} 83 {% else %}
86 <em>{% trans %}No token{% endtrans %}</em> 84 <em>{{ 'config.form_rss.no_token'|trans }}</em>
87 {% endif %} 85 {% endif %}
88 – <a href="{{ path('generate_token') }}">{% if rss.token %}{% trans %}Reset your token{% endtrans %}{% else %}{% trans %}Create your token{% endtrans %}{% endif %}</a> 86 – <a href="{{ path('generate_token') }}">
87 {% if rss.token %}
88 {{ 'config.form_rss.token_reset'|trans }}
89 {% else %}
90 {{ 'config.form_rss.token_create'|trans }}
91 {% endif %}</a>
89 </div> 92 </div>
90 </div> 93 </div>
91 </div> 94 </div>
92 {% if rss.token %} 95 {% if rss.token %}
93 <div class="row"> 96 <div class="row">
94 <div class="input-field col s12"> 97 <div class="input-field col s12">
95 <label>{% trans %}RSS links{% endtrans %}</label> 98 <label>{{ 'config.form_rss.rss_links'|trans }}</label>
96 <ul> 99 <ul>
97 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}unread{% endtrans %}</a></li> 100 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li>
98 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}starred{% endtrans %}</a></li> 101 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li>
99 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}archive{% endtrans %}</a></li> 102 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li>
100 </ul> 103 </ul>
101
102 </div> 104 </div>
103 </div> 105 </div>
104 {% endif %} 106 {% endif %}
@@ -111,11 +113,8 @@
111 </div> 113 </div>
112 </div> 114 </div>
113 115
114 <div class="hidden">{{ form_rest(form.rss) }}</div> 116 {{ form_widget(form.rss.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
115 <button class="btn waves-effect waves-light" type="submit" name="action"> 117 {{ form_rest(form.rss) }}
116 {% trans %}Save{% endtrans %}
117 </button>
118
119 </form> 118 </form>
120 </div> 119 </div>
121 120
@@ -142,7 +141,7 @@
142 {% if twofactor_auth %} 141 {% if twofactor_auth %}
143 <div class="row"> 142 <div class="row">
144 <div class="input-field col s12"> 143 <div class="input-field col s12">
145 {% trans %}Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion{% endtrans %} 144 {{ 'config.form_user.two_factor_description'|trans }}
146 </div> 145 </div>
147 </div> 146 </div>
148 147
@@ -155,11 +154,8 @@
155 </div> 154 </div>
156 {% endif %} 155 {% endif %}
157 156
158 <div class="hidden">{{ form_rest(form.user) }}</div> 157 {{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
159 <button class="btn waves-effect waves-light" type="submit" name="action"> 158 {{ form_rest(form.user) }}
160 {% trans %}Save{% endtrans %}
161 </button>
162
163 </form> 159 </form>
164 </div> 160 </div>
165 161
@@ -191,11 +187,8 @@
191 </div> 187 </div>
192 </div> 188 </div>
193 189
194 <div class="hidden">{{ form_rest(form.pwd) }}</div> 190 {{ form_widget(form.pwd.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
195 <button class="btn waves-effect waves-light" type="submit" name="action"> 191 {{ form_rest(form.pwd) }}
196 {% trans %}Save{% endtrans %}
197 </button>
198
199 </form> 192 </form>
200 </div> 193 </div>
201 194
@@ -205,8 +198,11 @@
205 <ul> 198 <ul>
206 {% for tagging_rule in app.user.config.taggingRules %} 199 {% for tagging_rule in app.user.config.taggingRules %}
207 <li> 200 <li>
208 if « {{ tagging_rule.rule }} » then tag as « {{ tagging_rule.tags|join(', ') }} » 201 {{ 'config.form_rules.if_label'|trans }}
209 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{% trans %}Delete{% endtrans %}"> 202 « {{ tagging_rule.rule }} »
203 {{ 'config.form_rules.then_tag_as_label'|trans }}
204 « {{ tagging_rule.tags|join(', ') }} »
205 <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}">
210 <i class="tool grey-text delete mdi-action-delete"></i> 206 <i class="tool grey-text delete mdi-action-delete"></i>
211 </a> 207 </a>
212 </li> 208 </li>
@@ -234,102 +230,88 @@
234 </div> 230 </div>
235 </div> 231 </div>
236 232
237 <div class="hidden">{{ form_rest(form.new_tagging_rule) }}</div> 233 {{ form_widget(form.new_tagging_rule.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
238 <button class="btn waves-effect waves-light" type="submit" name="action"> 234 {{ form_rest(form.new_tagging_rule) }}
239 {% trans %}Save{% endtrans %}
240 </button>
241 </form> 235 </form>
242 236
243 <div class="row"> 237 <div class="row">
244 <div class="input-field col s12"> 238 <div class="input-field col s12">
245 <h4>{% trans %}FAQ{% endtrans %}</h4> 239 <h4>{{ 'config.form_rules.faq.title'|trans }}</h4>
246 240
247 <h5>{% trans %}What does « tagging rules » mean?{% endtrans %}</h5> 241 <h5>{{ 'config.form_rules.faq.tagging_rules_definition_title'|trans }}</h5>
248 <p class="help"> 242 <p class="help">{{ 'config.form_rules.faq.tagging_rules_definition_description'|trans|raw }}</p>
249 {% trans %}
250 They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.
251 {% endtrans %}
252 </p>
253 243
254 <h5>{% trans %}How do I use them?{% endtrans %}</h5> 244 <h5>{{ 'config.form_rules.faq.how_to_use_them_title'|trans }}</h5>
255 <p class="help"> 245 <p class="help">{{ 'config.form_rules.faq.how_to_use_them_description'|trans|raw }}</p>
256 {% trans %}
257 Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />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> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />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> »
258 {% endtrans %}
259 </p>
260 246
261 <h5>{% trans %}Which variables and operators can I use to write rules?{% endtrans %}</h5> 247 <h5>{{ 'config.form_rules.faq.variables_available_title'|trans }}</h5>
262 <p class="help"> 248 <p class="help">
263 {% trans %}The following variables and operators can be used to create tagging rules:{% endtrans %} 249 {{ 'config.form_rules.faq.variables_available_description'|trans }}
264 250
265 <table> 251 <table class="bordered">
266 <thead> 252 <thead>
267 <tr> 253 <tr>
268 <th>{% trans %}Variable{% endtrans %}</th> 254 <th>{{ 'config.form_rules.faq.variable_description.label'|trans }}</th>
269 <th>{% trans %}Meaning{% endtrans %}</th> 255 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
270 <th>{% trans %}Operator{% endtrans %}</th> 256 <th>{{ 'config.form_rules.faq.operator_description.label'|trans }}</th>
271 <th>{% trans %}Meaning{% endtrans %}</th> 257 <th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
272 </tr> 258 </tr>
273 </thead> 259 </thead>
274 260
275 <tbody> 261 <tbody>
276 <tr> 262 <tr>
277 <td>title</td> 263 <td>title</td>
278 <td>{% trans %}Title of the entry{% endtrans %}</td> 264 <td>{{ 'config.form_rules.faq.variable_description.title'|trans }}</td>
279 <td>&lt;=</td> 265 <td>&lt;=</td>
280 <td>{% trans %}Less than…{% endtrans %}</td> 266 <td>{{ 'config.form_rules.faq.operator_description.less_than'|trans }}</td>
281 </tr> 267 </tr>
282 <tr> 268 <tr>
283 <td>url</td> 269 <td>url</td>
284 <td>{% trans %}URL of the entry{% endtrans %}</td> 270 <td>{{ 'config.form_rules.faq.variable_description.url'|trans }}</td>
285 <td>&lt;</td> 271 <td>&lt;</td>
286 <td>{% trans %}Strictly less than…{% endtrans %}</td> 272 <td>{{ 'config.form_rules.faq.operator_description.strictly_less_than'|trans }}</td>
287 </tr> 273 </tr>
288 <tr> 274 <tr>
289 <td>isArchived</td> 275 <td>isArchived</td>
290 <td>{% trans %}Whether the entry is archived or not{% endtrans %}</td> 276 <td>{{ 'config.form_rules.faq.variable_description.isArchived'|trans }}</td>
291 <td>=&gt;</td> 277 <td>=&gt;</td>
292 <td>{% trans %}Greater than…{% endtrans %}</td> 278 <td>{{ 'config.form_rules.faq.operator_description.greater_than'|trans }}</td>
293 </tr> 279 </tr>
294 <tr> 280 <tr>
295 <td>isStarred</td> 281 <td>isStarred</td>
296 <td>{% trans %}Whether the entry is starred or not{% endtrans %}</td> 282 <td>{{ 'config.form_rules.faq.variable_description.isStarred'|trans }}</td>
297 <td>&gt;</td> 283 <td>&gt;</td>
298 <td>{% trans %}Strictly greater than…{% endtrans %}</td> 284 <td>{{ 'config.form_rules.faq.operator_description.strictly_greater_than'|trans }}</td>
299 </tr> 285 </tr>
300 <tr> 286 <tr>
301 <td>content</td> 287 <td>content</td>
302 <td>{% trans %}The entry's content{% endtrans %}</td> 288 <td>{{ 'config.form_rules.faq.variable_description.content'|trans }}</td>
303 <td>=</td> 289 <td>=</td>
304 <td>{% trans %}Equal to…{% endtrans %}</td> 290 <td>{{ 'config.form_rules.faq.operator_description.equal_to'|trans }}</td>
305 </tr> 291 </tr>
306 <tr> 292 <tr>
307 <td>language</td> 293 <td>language</td>
308 <td>{% trans %}The entry's language{% endtrans %}</td> 294 <td>{{ 'config.form_rules.faq.variable_description.language'|trans }}</td>
309 <td>!=</td> 295 <td>!=</td>
310 <td>{% trans %}Not equal to…{% endtrans %}</td> 296 <td>{{ 'config.form_rules.faq.operator_description.not_equal_to'|trans }}</td>
311 </tr> 297 </tr>
312 <tr> 298 <tr>
313 <td>mimetype</td> 299 <td>mimetype</td>
314 <td>{% trans %}The entry's mime-type{% endtrans %}</td> 300 <td>{{ 'config.form_rules.faq.variable_description.mimetype'|trans }}</td>
315 <td>OR</td> 301 <td>OR</td>
316 <td>{% trans %}One rule or another{% endtrans %}</td> 302 <td>{{ 'config.form_rules.faq.operator_description.or'|trans }}</td>
317 </tr> 303 </tr>
318 <tr> 304 <tr>
319 <td>readingTime</td> 305 <td>readingTime</td>
320 <td>{% trans %}The estimated entry's reading time, in minutes{% endtrans %}</td> 306 <td>{{ 'config.form_rules.faq.variable_description.readingTime'|trans }}</td>
321 <td>AND</td> 307 <td>AND</td>
322 <td>{% trans %}One rule and another{% endtrans %}</td> 308 <td>{{ 'config.form_rules.faq.operator_description.and'|trans }}</td>
323 </tr> 309 </tr>
324 <tr> 310 <tr>
325 <td>domainName</td> 311 <td>domainName</td>
326 <td>{% trans %}The domain name of the entry{% endtrans %}</td> 312 <td>{{ 'config.form_rules.faq.variable_description.domainName'|trans }}</td>
327 <td>matches</td> 313 <td>matches</td>
328 <td> 314 <td>{{ 'config.form_rules.faq.operator_description.matches'|trans|raw }}</td>
329 {% trans %}
330 Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>
331 {% endtrans %}
332 </td>
333 </tr> 315 </tr>
334 </tbody> 316 </tbody>
335 </table> 317 </table>
@@ -375,11 +357,8 @@
375 </div> 357 </div>
376 </div> 358 </div>
377 359
378 <div class="hidden">{{ form_rest(form.new_user) }}</div> 360 {{ form_widget(form.new_user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
379 <button class="btn waves-effect waves-light" type="submit" name="action"> 361 {{ form_rest(form.new_user) }}
380 {% trans %}Add a user{% endtrans %}
381 </button>
382
383 </form> 362 </form>
384 </div> 363 </div>
385 {% endif %} 364 {% endif %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig
index c002c4c3..1c5e2aab 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/edit.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Edit an entry{% endtrans %}{% endblock %} 3{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
@@ -10,7 +10,6 @@
10 10
11 <form name="entry" method="post" action=""> 11 <form name="entry" method="post" action="">
12 <div class="card-content"> 12 <div class="card-content">
13
14 {% if form_errors(form) %} 13 {% if form_errors(form) %}
15 <span class="black-text">{{ form_errors(form) }}</span> 14 <span class="black-text">{{ form_errors(form) }}</span>
16 {% endif %} 15 {% endif %}
@@ -25,16 +24,19 @@
25 </div> 24 </div>
26 25
27 <div class="input-field s12"> 26 <div class="input-field s12">
27 {{ form_label(form.url) }}
28 {{ form_widget(form.url) }}
29 </div>
30
31 <div class="input-field s12">
28 {{ form_widget(form.is_public) }} 32 {{ form_widget(form.is_public) }}
29 {{ form_label(form.is_public) }} 33 {{ form_label(form.is_public) }}
30 </div> 34 </div>
31 <br> 35 <br>
32 <button class="btn waves-effect waves-light" type="submit" name="entry[save]"> 36
33 {% trans %}Save{% endtrans %} 37 {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
34 <i class="mdi-content-send right"></i>
35 </button>
36 </div> 38 </div>
37 <div class="hidden">{{ form_rest(form) }}</div> 39 {{ form_rest(form) }}
38 </form> 40 </form>
39 41
40 </div> 42 </div>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
index 371992df..433b1cae 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
@@ -4,13 +4,13 @@
4 {% set currentRoute = app.request.attributes.get('_route') %} 4 {% set currentRoute = app.request.attributes.get('_route') %}
5 5
6 {% if currentRoute == 'starred' %} 6 {% if currentRoute == 'starred' %}
7 {% trans %}starred{% endtrans %} 7 {{ 'entry.page_titles.starred'|trans }}
8 {% elseif currentRoute == 'archive' %} 8 {% elseif currentRoute == 'archive' %}
9 {% trans %}archive{% endtrans %} 9 {{ 'entry.page_titles.archived'|trans }}
10 {% elseif currentRoute == 'all' %} 10 {% elseif currentRoute == 'all' %}
11 {% trans %}Filtered{% endtrans %} 11 {{ 'entry.page_titles.filtered'|trans }}
12 {% else %} 12 {% else %}
13 {% trans %}unread{% endtrans %} 13 {{ 'entry.page_titles.unread'|trans }}
14 {% endif %} 14 {% endif %}
15 15
16{% endblock %} 16{% endblock %}
@@ -18,7 +18,9 @@
18{% block content %} 18{% block content %}
19 {% block pager %} 19 {% block pager %}
20 <div class="results clearfix"> 20 <div class="results clearfix">
21 <div class="nb-results left">{% transchoice entries.count %}{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.{% endtranschoice %}</div> 21 <div class="nb-results left">
22 {{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}
23 </div>
22 <ul class="pagination right"> 24 <ul class="pagination right">
23 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %} 25 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
24 <li class="{{ currentPage == p ? 'active':'waves-effect'}}"> 26 <li class="{{ currentPage == p ? 'active':'waves-effect'}}">
@@ -52,9 +54,9 @@
52 <span class="tool reading-time"> 54 <span class="tool reading-time">
53 {% set readingTime = entry.readingTime / app.user.config.readingSpeed %} 55 {% set readingTime = entry.readingTime / app.user.config.readingSpeed %}
54 {% if readingTime > 0 %} 56 {% if readingTime > 0 %}
55 {% trans with {'%readingTime%': readingTime } %}estimated reading time: %readingTime% min{% endtrans %} 57 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': readingTime}) }}
56 {% else %} 58 {% else %}
57 {% trans with {'%inferior%': '<small class="inferieur">&lt;</small>'} %}estimated reading time: %inferior% 1 min{% endtrans %} 59 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
58 {% endif %} 60 {% endif %}
59 </span> 61 </span>
60 </div> 62 </div>
@@ -72,7 +74,7 @@
72 74
73 <div class="estimatedTime grey-text"> 75 <div class="estimatedTime grey-text">
74 <span class="tool reading-time"> 76 <span class="tool reading-time">
75 {% trans %}estimated reading time{% endtrans %}: 77 {{ 'entry.list.reading_time'|trans }}
76 {% if entry.readingTime > 0 %}{{ entry.readingTime }}{% else %}<small class="inferieur">&lt;</small> 1{% endif %} min 78 {% if entry.readingTime > 0 %}{{ entry.readingTime }}{% else %}<small class="inferieur">&lt;</small> 1{% endif %} min
77 </span> 79 </span>
78 </div> 80 </div>
@@ -82,13 +84,15 @@
82 {% endif %} 84 {% endif %}
83 85
84 <div class="card-action"> 86 <div class="card-action">
85 <span class="bold"><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %}: {{ entry.title|e }} - {{ entry.domainName|removeWww }}" class="tool original grey-text"><span>{{ entry.domainName|removeWww|truncate(18) }}</span></a></bold> 87 <span class="bold">
88 <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.list.original_article'|trans }}: {{ entry.title|e }} - {{ entry.domainName|removeWww }}" class="tool original grey-text"><span>{{ entry.domainName|removeWww|truncate(18) }}</span></a>
89 </bold>
86 90
87 <ul class="tools links right"> 91 <ul class="tools links right">
88 <li> 92 <li>
89 <a title="{% trans %}Toggle mark as read{% endtrans %}" class="tool grey-text {% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"></a> 93 <a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text {% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"></a>
90 <a title="{% trans %}Toggle favorite{% endtrans %}" class="tool grey-text {% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"></a> 94 <a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool grey-text {% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"></a>
91 <a title="{% trans %}Delete{% endtrans %}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a> 95 <a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a>
92 </li> 96 </li>
93 </ul> 97 </ul>
94 </div> 98 </div>
@@ -103,7 +107,7 @@
103 {% if currentRoute == 'homepage' %} 107 {% if currentRoute == 'homepage' %}
104 {% set currentRoute = 'unread' %} 108 {% set currentRoute = 'unread' %}
105 {% endif %} 109 {% endif %}
106 <h4 class="center">{% trans %}Export{% endtrans %}</h4> 110 <h4 class="center">{{ 'entry.list.export_title'|trans }}</h4>
107 <ul> 111 <ul>
108 {% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'epub' }) }}">EPUB</a></li>{% endif %} 112 {% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'epub' }) }}">EPUB</a></li>{% endif %}
109 {% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'mobi' }) }}">MOBI</a></li>{% endif %} 113 {% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'mobi' }) }}">MOBI</a></li>{% endif %}
@@ -119,34 +123,34 @@
119 <div id="filters" class="side-nav fixed right-aligned"> 123 <div id="filters" class="side-nav fixed right-aligned">
120 <form action="{{ path('all') }}"> 124 <form action="{{ path('all') }}">
121 125
122 <h4 class="center">{% trans %}Filters{% endtrans %}</h4> 126 <h4 class="center">{{ 'entry.filters.title'|trans }}</h4>
123 127
124 <div class="row"> 128 <div class="row">
125 <div class="col s12"> 129 <div class="col s12">
126 <label>{% trans %}Status{% endtrans %}</label> 130 <label>{{ 'entry.filters.status_label'|trans }}</label>
127 </div> 131 </div>
128 132
129 <div class="input-field col s6 with-checkbox"> 133 <div class="input-field col s6 with-checkbox">
130 {{ form_widget(form.isArchived) }} 134 {{ form_widget(form.isArchived) }}
131 <label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label> 135 {{ form_label(form.isArchived) }}
132 </div> 136 </div>
133 137
134 <div class="input-field col s6 with-checkbox"> 138 <div class="input-field col s6 with-checkbox">
135 {{ form_widget(form.isStarred) }} 139 {{ form_widget(form.isStarred) }}
136 <label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label> 140 {{ form_label(form.isStarred) }}
137 </div> 141 </div>
138 142
139 <div class="col s12"> 143 <div class="col s12">
140 <label>{% trans %}Preview picture{% endtrans %}</label> 144 <label>{{ 'entry.filters.preview_picture_help'|trans }}</label>
141 </div> 145 </div>
142 146
143 <div class="input-field col s12 with-checkbox"> 147 <div class="input-field col s12 with-checkbox">
144 {{ form_widget(form.previewPicture) }} 148 {{ form_widget(form.previewPicture) }}
145 <label for="entry_filter_previewPicture">{% trans %}Has a preview picture{% endtrans %}</label> 149 {{ form_label(form.previewPicture) }}
146 </div> 150 </div>
147 151
148 <div class="col s12"> 152 <div class="col s12">
149 <label>{% trans %}Language{% endtrans %}</label> 153 {{ form_label(form.language) }}
150 </div> 154 </div>
151 155
152 <div class="input-field col s12"> 156 <div class="input-field col s12">
@@ -154,43 +158,42 @@
154 </div> 158 </div>
155 159
156 <div class="col s12"> 160 <div class="col s12">
157 <label>{% trans %}Reading time in minutes{% endtrans %}</label> 161 {{ form_label(form.readingTime) }}
158 </div> 162 </div>
159 <div class="input-field col s6"> 163 <div class="input-field col s6">
160 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }} 164 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
161 <label for="entry_filter_readingTime_left_number">{% trans %}from{% endtrans %}</label> 165 <label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
162 </div> 166 </div>
163 <div class="input-field col s6"> 167 <div class="input-field col s6">
164 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }} 168 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
165 <label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label> 169 <label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
166 </div> 170 </div>
167 171
168 <div class="input-field col s12"> 172 <div class="input-field col s12">
169 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com' | trans} }) }} 173 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
170 <label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label> 174 {{ form_label(form.domainName) }}
171 </div> 175 </div>
172 176
173 <div class="col s12"> 177 <div class="col s12">
174 <label>{% trans %}Creation date{% endtrans %}</label> 178 {{ form_label(form.createdAt) }}
175 </div> 179 </div>
176 180
177 <div class="input-field col s6"> 181 <div class="input-field col s6">
178 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }} 182 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
179 <label for="entry_filter_createdAt_left_date" class="active">{% trans %}from{% endtrans %}</label> 183 <label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
180 </div> 184 </div>
181 <div class="input-field col s6"> 185 <div class="input-field col s6">
182 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }} 186 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
183 <label for="entry_filter_createdAt_right_date" class="active">{% trans %}to{% endtrans %}</label> 187 <label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
184 </div> 188 </div>
185 189
186 <div class="col s6"> 190 <div class="col s6">
187 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{% trans %}Clear{% endtrans %}</a> 191 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
188 </div> 192 </div>
189 193
190 <div class="col s6"> 194 <div class="col s6">
191 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{% trans %}Filter{% endtrans %}</button> 195 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
192 </div> 196 </div>
193
194 </div> 197 </div>
195 198
196 </form> 199 </form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig
index a39a8dc3..98f7194c 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig
@@ -18,9 +18,9 @@
18 <description> 18 <description>
19 <![CDATA[ 19 <![CDATA[
20 {%- if entry.readingTime > 0 -%} 20 {%- if entry.readingTime > 0 -%}
21 {% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min 21 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
22 {%- else -%} 22 {%- else -%}
23 {% trans %}estimated reading time :{% endtrans %} &lt; 1 min 23 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
24 {%- endif %} 24 {%- endif %}
25 25
26 {{ entry.content|raw -}} 26 {{ entry.content|raw -}}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
index 6f33da23..4eebf18f 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
@@ -2,6 +2,8 @@
2 2
3{% block title %}{{ entry.title|raw }} ({{ entry.domainName|removeWww }}){% endblock %} 3{% block title %}{{ entry.title|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
4 4
5{% block body_class %}entry{% endblock %}
6
5{% block menu %} 7{% block menu %}
6 <div class="progress"> 8 <div class="progress">
7 <div class="determinate"></div> 9 <div class="determinate"></div>
@@ -17,12 +19,12 @@
17 </ul> 19 </ul>
18 <ul class="right"> 20 <ul class="right">
19 <li> 21 <li>
20 <a class="waves-effect" title="{% trans %}Mark as read{% endtrans %}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead"> 22 <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
21 <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i> 23 <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
22 </a> 24 </a>
23 </li> 25 </li>
24 <li> 26 <li>
25 <a class="waves-effect" title="{% trans %}Favorite{% endtrans %}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav"> 27 <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
26 <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i> 28 <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
27 </a> 29 </a>
28 </li> 30 </li>
@@ -38,7 +40,7 @@
38 <li class="bold border-bottom hide-on-med-and-down"> 40 <li class="bold border-bottom hide-on-med-and-down">
39 <a class="waves-effect collapsible-header" href="{{ path('homepage') }}"> 41 <a class="waves-effect collapsible-header" href="{{ path('homepage') }}">
40 <i class="mdi-action-exit-to-app small"></i> 42 <i class="mdi-action-exit-to-app small"></i>
41 <span>{% trans %}back{% endtrans %}</span> 43 <span>{{ 'entry.view.left_menu.back_to_homepage'|trans }}</span>
42 </a> 44 </a>
43 <div class="collapsible-body"></div> 45 <div class="collapsible-body"></div>
44 </li> 46 </li>
@@ -46,38 +48,38 @@
46 <li class="bold border-bottom hide-on-med-and-down"> 48 <li class="bold border-bottom hide-on-med-and-down">
47 <a class="waves-effect collapsible-header" href="{{ entry.url|e }}"> 49 <a class="waves-effect collapsible-header" href="{{ entry.url|e }}">
48 <i class="mdi-content-link small"></i> 50 <i class="mdi-content-link small"></i>
49 <span>{% trans %}original article{% endtrans %}</span> 51 <span>{{ 'entry.view.left_menu.view_original_article'|trans }}</span>
50 </a> 52 </a>
51 <div class="collapsible-body"></div> 53 <div class="collapsible-body"></div>
52 </li> 54 </li>
53 55
54 <li class="bold hide-on-med-and-down"> 56 <li class="bold hide-on-med-and-down">
55 <a class="waves-effect collapsible-header" title="{% trans %}Re-fetch content{% endtrans %}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload"> 57 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload">
56 <i class="mdi-action-autorenew small"></i> 58 <i class="mdi-action-autorenew small"></i>
57 <span>{% trans %}Re-fetch content{% endtrans %}</span> 59 <span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span>
58 </a> 60 </a>
59 <div class="collapsible-body"></div> 61 <div class="collapsible-body"></div>
60 </li> 62 </li>
61 63
62 <li class="bold hide-on-med-and-down"> 64 <li class="bold hide-on-med-and-down">
63 <a class="waves-effect collapsible-header" title="{% trans %}Mark as read{% endtrans %}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead"> 65 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
64 <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i> 66 <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
65 <span>{% if entry.isArchived == 0 %}{% trans %}Mark as read{% endtrans %}{% else %}{% trans %}Mark as unread{% endtrans %}{% endif %}</span> 67 <span>{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}</span>
66 </a> 68 </a>
67 <div class="collapsible-body"></div> 69 <div class="collapsible-body"></div>
68 </li> 70 </li>
69 71
70 <li class="bold hide-on-med-and-down"> 72 <li class="bold hide-on-med-and-down">
71 <a class="waves-effect collapsible-header" title="{% trans %}Favorite{% endtrans %}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav"> 73 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
72 <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i> 74 <i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
73 <span>{% trans %}Favorite{% endtrans %}</span> 75 <span>{{ 'entry.view.left_menu.set_as_favorite'|trans }}</span>
74 </a> 76 </a>
75 <div class="collapsible-body"></div> 77 <div class="collapsible-body"></div>
76 </li> 78 </li>
77 <li class="bold border-bottom hide-on-med-and-down"> 79 <li class="bold border-bottom hide-on-med-and-down">
78 <a class="waves-effect collapsible-header" title="{% trans %}Delete{% endtrans %}" href="{{ path('delete_entry', { 'id': entry.id }) }}"> 80 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
79 <i class="mdi-action-delete small"></i> 81 <i class="mdi-action-delete small"></i>
80 <span>{% trans %}Delete{% endtrans %}</span> 82 <span>{{ 'entry.view.left_menu.delete'|trans }}</span>
81 </a> 83 </a>
82 <div class="collapsible-body"></div> 84 <div class="collapsible-body"></div>
83 </li> 85 </li>
@@ -85,7 +87,7 @@
85 <li class="bold border-bottom hide-on-med-and-down"> 87 <li class="bold border-bottom hide-on-med-and-down">
86 <a class="waves-effect collapsible-header" id="nav-btn-add-tag"> 88 <a class="waves-effect collapsible-header" id="nav-btn-add-tag">
87 <i class="mdi-action-label-outline small"></i> 89 <i class="mdi-action-label-outline small"></i>
88 <span>{% trans %}Add a tag{% endtrans %}</span> 90 <span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span>
89 </a> 91 </a>
90 <div class="collapsible-body"></div> 92 <div class="collapsible-body"></div>
91 </li> 93 </li>
@@ -93,7 +95,7 @@
93 <li class="bold"> 95 <li class="bold">
94 <a class="waves-effect collapsible-header"> 96 <a class="waves-effect collapsible-header">
95 <i class="mdi-social-share small"></i> 97 <i class="mdi-social-share small"></i>
96 <span>{% trans %}Share{% endtrans %}</span> 98 <span>{{ 'entry.view.left_menu.share_content'|trans }}</span>
97 </a> 99 </a>
98 <div class="collapsible-body"> 100 <div class="collapsible-body">
99 <ul> 101 <ul>
@@ -127,8 +129,8 @@
127 {% endif %} 129 {% endif %}
128 {% if craue_setting('share_mail') %} 130 {% if craue_setting('share_mail') %}
129 <li> 131 <li>
130 <a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans %}Email{% endtrans %}"> 132 <a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{{ 'entry.view.left_menu.share_email_label'|trans }}">
131 <span>{% trans %}Email{% endtrans %}</span> 133 <span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span>
132 </a> 134 </a>
133 </li> 135 </li>
134 {% endif %} 136 {% endif %}
@@ -139,7 +141,7 @@
139 <li class="bold"> 141 <li class="bold">
140 <a class="waves-effect collapsible-header"> 142 <a class="waves-effect collapsible-header">
141 <i class="mdi-file-file-download small"></i> 143 <i class="mdi-file-file-download small"></i>
142 <span>{% trans %}Download{% endtrans %}</span> 144 <span>{{ 'entry.view.left_menu.download'|trans }}</span>
143 </a> 145 </a>
144 <div class="collapsible-body"> 146 <div class="collapsible-body">
145 <ul> 147 <ul>
@@ -155,40 +157,33 @@
155 </li> 157 </li>
156 158
157 <li class="bold hide-on-large-only"> 159 <li class="bold hide-on-large-only">
158 <a class="waves-effect collapsible-header" title="{% trans %}Delete{% endtrans %}" href="{{ path('delete_entry', { 'id': entry.id }) }}"> 160 <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
159 <i class="mdi-action-delete small"></i> 161 <i class="mdi-action-delete small"></i>
160 <span>{% trans %}Delete{% endtrans %}</span> 162 <span>{{ 'entry.view.left_menu.delete'|trans }}</span>
161 </a> 163 </a>
162 <div class="collapsible-body"></div> 164 <div class="collapsible-body"></div>
163 </li> 165 </li>
164 166
165 <li class="bold"> 167 <li class="bold">
166 <a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans %}Does this article appear wrong?{% endtrans %}"> 168 <a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.description'|trans }}">
167 <i class="mdi-alert-error small"></i> 169 <i class="mdi-alert-error small"></i>
168 <span>{% trans %}Problems?{% endtrans %}</span> 170 <span>{{ 'entry.view.left_menu.problem.label'|trans }}</span>
169 </a> 171 </a>
170 <div class="collapsible-body"></div> 172 <div class="collapsible-body"></div>
171 </li> 173 </li>
172 174
173 </ul> 175 </ul>
174 176
175<style>
176main {
177 padding: 0;
178}
179</style>
180
181{% endblock %} 177{% endblock %}
182 178
183{% block content %} 179{% block content %}
184 <div id="article"> 180 <div id="article">
185 <header class="mbm"> 181 <header class="mbm">
186 <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{% trans %}Edit title{% endtrans %}">✎</a></h1> 182 <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
187 </header> 183 </header>
188 <aside> 184 <aside>
189 <a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link mdi-content-link"> <span>{{ entry.domainName|removeWww }}</span></a> 185 <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link mdi-content-link"> <span>{{ entry.domainName|removeWww }}</span></a>
190 {% set nbAnnotations = entry.annotations | length %} 186 <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
191 <span class="tool link mdi-communication-comment"> {% transchoice nbAnnotations %}{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations{% endtranschoice %}</span>
192 <div id="list"> 187 <div id="list">
193 {% for tag in entry.tags %} 188 {% for tag in entry.tags %}
194 <div class="chip"> 189 <div class="chip">
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig
index 95ed0785..03768a3d 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Save new entry{% endtrans %}{% endblock %} 3{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }} 6 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig
index f1e56412..0cf4fb74 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig
@@ -7,7 +7,7 @@
7 <span class="black-text">{{ form_errors(form.url) }}</span> 7 <span class="black-text">{{ form_errors(form.url) }}</span>
8 {% endif %} 8 {% endif %}
9 9
10 {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'http://website'} }) }} 10 {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
11 11
12 <div class="hidden">{{ form_rest(form) }}</div> 12 {{ form_rest(form) }}
13</form> 13</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig
index 1368bb09..a294b74d 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}About{% endtrans %}{% endblock %} 3{% block title %}{{ 'about.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
@@ -11,56 +11,56 @@
11 <div class="row"> 11 <div class="row">
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 s3"><a class="active" href="#set1">{% trans %}Who is behind wallabag{% endtrans %}</a></li> 14 <li class="tab col s3"><a class="active" href="#set1">{{ 'about.top_menu.who_behind_wallabag'|trans }}</a></li>
15 <li class="tab col s3"><a href="#set2">{% trans %}Getting help{% endtrans %}</a></li> 15 <li class="tab col s3"><a href="#set2">{{ 'about.top_menu.getting_help'|trans }}</a></li>
16 <li class="tab col s3"><a href="#set3">{% trans %}Helping wallabag{% endtrans %}</a></li> 16 <li class="tab col s3"><a href="#set3">{{ 'about.top_menu.helping'|trans }}</a></li>
17 <li class="tab col s3"><a href="#set4">{% trans %}Contributors{% endtrans %}</a></li> 17 <li class="tab col s3"><a href="#set4">{{ 'about.top_menu.contributors'|trans }}</a></li>
18 <li class="tab col s3"><a href="#set5">{% trans %}Third-party libraries{% endtrans %}</a></li> 18 <li class="tab col s3"><a href="#set5">{{ 'about.top_menu.third_party'|trans }}</a></li>
19 </ul> 19 </ul>
20 </div> 20 </div>
21 21
22 <div id="set1" class="col s12"> 22 <div id="set1" class="col s12">
23 <dt>{% trans %}Developed by{% endtrans %}</dt> 23 <dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt>
24 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans %}website{% endtrans %}</a></dd> 24 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
25 <dd>Thomas Citharel — <a href="https://tcit.fr">{% trans %}website{% endtrans %}</a></dd> 25 <dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
26 <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{% trans %}website{% endtrans %}</a></dd> 26 <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
27 <dt>{% trans %}And many others contributors ♥{% endtrans %} <a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}on GitHub{% endtrans %}</a></dt> 27 <dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt>
28 <dt>{% trans %}Project website{% endtrans %}</dt> 28 <dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt>
29 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd> 29 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
30 <dt>{% trans %}License{% endtrans %}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt> 30 <dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="https://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
31 <dt>{% trans %}Version{% endtrans %}: {{ version }}</dt> 31 <dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt>
32 </div> 32 </div>
33 33
34 <div id="set2" class="col s12"> 34 <div id="set2" class="col s12">
35 <dl> 35 <dl>
36 <dt>{% trans %}Documentation{% endtrans %}</dt> 36 <dt>{{ 'about.getting_help.documentation'|trans }}</dt>
37 <dd><a href="https://doc.wallabag.org/en">english</a></dd> 37 <dd><a href="https://doc.wallabag.org/en">english</a></dd>
38 <dd><a href="https://doc.wallabag.org/fr">français</a></dd> 38 <dd><a href="https://doc.wallabag.org/fr">français</a></dd>
39 <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd> 39 <dd><a href="https://doc.wallabag.org/de">deutsch</a></dd>
40 40
41 <dt>{% trans %}Bug reports{% endtrans %}</dt> 41 <dt>{{ 'about.getting_help.bug_reports'|trans }}</dt>
42 <dd><a href="https://support.wallabag.org">{% trans %}On our support website{% endtrans %}</a> {% trans %}or{% endtrans %} <a href="https://github.com/wallabag/wallabag/issues">{% trans %}on GitHub{% endtrans %}</a></dd> 42 <dd>{{ 'about.getting_help.support'|trans|raw }}</dd>
43 </dl> 43 </dl>
44 </div> 44 </div>
45 45
46 <div id="set3" class="col s12"> 46 <div id="set3" class="col s12">
47 <dl> 47 <dl>
48 <dt>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</dt> 48 <dt>{{ 'about.helping.description'|trans }}</dt>
49 <dd>{% trans %}by contributing to the project:{% endtrans %} <a href="https://github.com/wallabag/wallabag/issues/1254">{% trans %}an issue lists all our needs{% endtrans %}</a></dd> 49 <dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd>
50 <dd><a href="{{ paypal_url }}">{% trans %}via Paypal{% endtrans %}</a></dd> 50 <dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd>
51 </dl> 51 </dl>
52 </div> 52 </div>
53 53
54 <div id="set4" class="col s12"> 54 <div id="set4" class="col s12">
55 <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}Thank you to contributors on wallabag web application{% endtrans %}</a></p> 55 <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p>
56 </div> 56 </div>
57 57
58 <div id="set5" class="col s12"> 58 <div id="set5" class="col s12">
59 <p>{% trans %}Here are the list of third-party libraries used in wallabag (with their licenses):{% endtrans %}</p> 59 <p>{{ 'about.third_party.description'|trans }}</p>
60 <table> 60 <table class="striped">
61 <tr> 61 <tr>
62 <th>{% trans %}Package{% endtrans %}</th> 62 <th>{{ 'about.third_party.package'|trans }}</th>
63 <th>{% trans %}License{% endtrans %}</th> 63 <th>{{ 'about.third_party.license'|trans }}</th>
64 </tr> 64 </tr>
65 <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr> 65 <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr>
66 <tr><td>CraueConfigBundle</td><td>MIT</td></tr> 66 <tr><td>CraueConfigBundle</td><td>MIT</td></tr>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig
index e2795409..15b548d8 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig
@@ -1,44 +1,40 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}howto{% endtrans %}{% endblock %} 3{% block title %}{{ 'howto.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
7 <div class="row"> 7 <div class="row">
8 <div class="col s12"> 8 <div class="col s12">
9 <div class="card-panel settings"> 9 <div class="card-panel settings">
10 <p>{{ 'howto.page_description'|trans }}</p>
10 11
11 <div class="row"> 12 <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 %}Form{% endtrans %}</a></li>
15 <li class="tab col s3"><a href="#set2">{% trans %}Browser addons{% endtrans %}</a></li>
16 <li class="tab col s3"><a href="#set3">{% trans %}Mobile apps{% endtrans %}</a></li>
17 <li class="tab col s3"><a href="#set4">{% trans %}Bookmarklet{% endtrans %}</a></li>
18 </ul>
19 </div>
20 13
21 <div id="set1" class="col s12"> 14 <div class="col s12">
22 <a href="{{ path('new') }}">{% trans %}Thanks to this form{% endtrans %}</a> 15 <a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a>
23 </div> 16 </div>
24 17
25 <div id="set2" class="col s12"> 18 <div class="col s12">
19 <h5>{{ 'howto.top_menu.browser_addons'|trans }}</h5>
26 <ul> 20 <ul>
27 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans %}Standard Firefox Add-On{% endtrans %}</a></li> 21 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li>
28 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans %}Chrome Extension{% endtrans %}</a></li> 22 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li>
29 </ul> 23 </ul>
30 </div> 24 </div>
31 25
32 <div id="set3" class="col s12"> 26 <div class="col s12">
27 <h5>{{ 'howto.top_menu.mobile_apps'|trans }}</h5>
33 <ul> 28 <ul>
34 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">via F-Droid</a> {% trans %} or {% endtrans %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">via Google Play</a></li> 29 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">{{ 'howto.mobile_apps.android.via_f_droid'|trans }}</a> / <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">{{ 'howto.mobile_apps.android.via_google_play'|trans }}</a></li>
35 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans %}download the application{% endtrans %}</a></li> 30 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li>
36 <li>Windows Phone: <a href="http://www.windowsphone.com/en-US/store/app/wallabag/d5226cf1-f422-4e00-996c-88e9c5233332" target="_blank">{% trans %}download the application{% endtrans %}</a></li> 31 <li>Windows Phone: <a href="http://www.windowsphone.com/en-US/store/app/wallabag/d5226cf1-f422-4e00-996c-88e9c5233332" target="_blank">{{ 'howto.mobile_apps.windows'|trans }}</a></li>
37 </ul> 32 </ul>
38 </div> 33 </div>
39 34
40 <div id="set4" class="col s12"> 35 <div class="col s12">
41 {% trans %}Drag &amp; drop this link to your bookmarks bar:{% endtrans %} 36 <h5>{{ 'howto.top_menu.bookmarklet'|trans }}</h5>
37 {{ 'howto.bookmarklet.description'|trans }}
42 {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %} 38 {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
43 </div> 39 </div>
44 40
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig
index 03754d38..706c4a79 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Quickstart{% endtrans %}{% endblock %} 3{% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 6
@@ -9,56 +9,63 @@
9 <div class="card-panel settings"> 9 <div class="card-panel settings">
10 10
11 <div class="row"> 11 <div class="row">
12 <h3>{% trans %}Welcome to wallabag!{% endtrans %}</h3> 12 <h3>{{ 'quickstart.intro.title'|trans }}</h3>
13 <p>{% trans %}We'll accompany you to visit wallabag and show you some features which can interess you.{% endtrans %}</p> 13 <p>{{ 'quickstart.intro.paragraph_1'|trans }}</p>
14 <p>{% trans %}Follow us!{% endtrans %}</p> 14 <p>{{ 'quickstart.intro.paragraph_2'|trans }}</p>
15 <h4>{% trans %}Configure the application{% endtrans %}</h4> 15
16 <h4>{{ 'quickstart.configure.title'|trans }}</h4>
16 <ul> 17 <ul>
17 <li><a href="{{ path('config') }}">{% trans %}Change language and design{% endtrans %}</a></li> 18 <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
18 <li><a href="{{ path('config') }}#set2">{% trans %}Enable RSS feeds{% endtrans %}</a></li> 19 <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li>
19 <li><a href="{{ path('config') }}#set5">{% trans %}Write rules to automatically tag your articles{% endtrans %}</a></li> 20 <li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li>
20 </ul> 21 </ul>
22
21 {% if is_granted('ROLE_SUPER_ADMIN') %} 23 {% if is_granted('ROLE_SUPER_ADMIN') %}
22 <h4>{% trans %}Administration{% endtrans %}</h4> 24 <h4>{{ 'quickstart.admin.title'|trans }}</h4>
23 <p>{% trans %}As a administrator, you have privileges on wallabag. You can:{% endtrans %}</p> 25 <p>{{ 'quickstart.admin.description'|trans }}</p>
24 <ul> 26 <ul>
25 <li><a href="{{ path('config') }}#set6">{% trans %}Create a new user{% endtrans %}</a></li> 27 <li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li>
26 <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{% trans %}Configure analytics{% endtrans %}</a></li> 28 <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li>
27 <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{% trans %}Enable some parameters about article sharing{% endtrans %}</a></li> 29 <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li>
28 <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{% trans %}Configure export{% endtrans %}</a></li> 30 <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li>
29 <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{% trans %}Configure import{% endtrans %}</a></li> 31 <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li>
30 </ul> 32 </ul>
31 {% endif %} 33 {% endif %}
32 <h4>{% trans %}First steps{% endtrans %}</h4> 34
35 <h4>{{ 'quickstart.first_steps.title'|trans }}</h4>
33 <ul> 36 <ul>
34 <li><a href="{{ path('new') }}">{% trans %}Save your first article{% endtrans %}</a></li> 37 <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li>
35 <li><a href="{{ path('unread') }}">{% trans %}And classify it!{% endtrans %}</a></li> 38 <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li>
36 </ul> 39 </ul>
37 <h4>{% trans %}Migrate from an existing service{% endtrans %}</h4> 40
38 <p>{% trans %}You're using an other service? We'll help you to retrieve your data on wallabag.{% endtrans %}</p> 41 <h4>{{ 'quickstart.migrate.title'|trans }}</h4>
42 <p>{{ 'quickstart.migrate.description'|trans }}</p>
39 <ul> 43 <ul>
40 <li><a href="{{ path('import_pocket') }}">{% trans %}Migrate from Pocket{% endtrans %}</a></li> 44 <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li>
41 <li><a href="{{ path('import_wallabag_v1') }}">{% trans %}Migrate from wallabag v1{% endtrans %}</a></li> 45 <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li>
42 <li><a href="{{ path('import_wallabag_v2') }}">{% trans %}Migrate from wallabag v2{% endtrans %}</a></li> 46 <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li>
43 </ul> 47 </ul>
44 <h4>{% trans %}Developers{% endtrans %}</h4> 48
49 <h4>{{ 'quickstart.developer.title'|trans }}</h4>
45 <ul> 50 <ul>
46 <li><a href="{{ path('developer') }}">{% trans %}Create your third application{% endtrans %}</a></li> 51 <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li>
47 </ul> 52 </ul>
48 <h4>{% trans %}Full documentation{% endtrans %}</h4> 53
54 <h4>{{ 'quickstart.docs.title'|trans }}</h4>
49 <ul> 55 <ul>
50 <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{% trans %}Annotate your article{% endtrans %}</a></li> 56 <li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li>
51 <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{% trans %}Convert your articles into ePUB or PDF{% endtrans %}</a></li> 57 <li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li>
52 <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{% trans %}See how you can look for an article by using search engine and filters{% endtrans %}</a></li> 58 <li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li>
53 <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{% trans %}What can I do if an article encounters errors during fetching?{% endtrans %}</a></li> 59 <li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li>
54 <li><a href="http://doc.wallabag.org/">{% trans %}And so many other articles!{% endtrans %}</a></li> 60 <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li>
55 </ul> 61 </ul>
56 <h4>{% trans %}Support{% endtrans %}</h4> 62
57 <p>{% trans %}If you need some help, we are here for you.{% endtrans %}</p> 63 <h4>{{ 'quickstart.support.title'|trans }}</h4>
64 <p>{{ 'quickstart.support.description'|trans }}</p>
58 <ul> 65 <ul>
59 <li><a href="https://github.com/wallabag/wallabag/issues/">{% trans %}On GitHub{% endtrans %}</a></li> 66 <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li>
60 <li><a href="mailto:hello@wallabag.org">{% trans %}By email{% endtrans %}</a></li> 67 <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li>
61 <li><a href="https://gitter.im/wallabag/wallabag">{% trans %}On Gitter{% endtrans %}</a></li> 68 <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li>
62 </ul> 69 </ul>
63 </div> 70 </div>
64 71
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig
index 79310307..6e552560 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/new_form.html.twig
@@ -9,5 +9,5 @@
9 9
10 {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }} 10 {{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
11 11
12 <div class="hidden">{{ form_rest(form) }}</div> 12 {{ form_rest(form) }}
13</form> 13</form>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig
index 19754d41..6b583689 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig
@@ -1,10 +1,10 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title "Tags" %} 3{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
4 4
5{% block content %} 5{% block content %}
6 <div class="results clearfix"> 6 <div class="results clearfix">
7 <div class="nb-results left">{% transchoice tags.count %}{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.{% endtranschoice %}</div> 7 <div class="nb-results left">{{ 'tag.list.number_on_the_page'|transchoice(tags.count) }}</div>
8 </div> 8 </div>
9 <br /> 9 <br />
10 <ul class="row data"> 10 <ul class="row data">
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
index f5d03084..48eaca81 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
@@ -31,7 +31,7 @@
31 <ul id="slide-out" class="side-nav fixed"> 31 <ul id="slide-out" class="side-nav fixed">
32 {% block logo %} 32 {% block logo %}
33 <li class="logo border-bottom"> 33 <li class="logo border-bottom">
34 <a title="{% trans %}Back to unread articles{% endtrans %}" href="{{ path('unread') }}"> 34 <a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}">
35 <img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-square.png') }}" alt="wallabag logo" /> 35 <img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-square.png') }}" alt="wallabag logo" />
36 </a> 36 </a>
37 </li> 37 </li>
@@ -39,19 +39,41 @@
39 39
40 {% set currentRoute = app.request.attributes.get('_route') %} 40 {% set currentRoute = app.request.attributes.get('_route') %}
41 41
42 <li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}"><a class="waves-effect" href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li> 42 <li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}">
43 <li class="bold {% if currentRoute == 'starred' %}active{% endif %}"><a class="waves-effect" href="{{ path('starred') }}">{% trans %}starred{% endtrans %}</a></li> 43 <a class="waves-effect" href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a>
44 <li class="bold {% if currentRoute == 'archive' %}active{% endif %}"><a class="waves-effect" href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li> 44 </li>
45 <li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}"><a class="waves-effect" href="{{ path('all') }}">{% trans %}all{% endtrans %}</a></li> 45 <li class="bold {% if currentRoute == 'starred' %}active{% endif %}">
46 <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"><a class="waves-effect" href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li> 46 <a class="waves-effect" href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a>
47 <li class="bold {% if currentRoute == 'config' %}active{% endif %}"><a class="waves-effect" href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li> 47 </li>
48 <li class="bold {% if currentRoute == 'archive' %}active{% endif %}">
49 <a class="waves-effect" href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a>
50 </li>
51 <li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}">
52 <a class="waves-effect" href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a>
53 </li>
54 <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}">
55 <a class="waves-effect" href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a>
56 </li>
57 <li class="bold {% if currentRoute == 'config' %}active{% endif %}">
58 <a class="waves-effect" href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a>
59 </li>
48 {% if is_granted('ROLE_SUPER_ADMIN') %} 60 {% if is_granted('ROLE_SUPER_ADMIN') %}
49 <li class="bold border-bottom {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}"><a class="waves-effect" href="{{ path('craue_config_settings_modify') }}">{% trans %}internal settings{% endtrans %}</a></li> 61 <li class="bold border-bottom {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}">
62 <a class="waves-effect" href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a>
63 </li>
50 {% endif %} 64 {% endif %}
51 <li class="bold {% if currentRoute == 'import' %}active{% endif %}"><a class="waves-effect" href="{{ path('import') }}">{% trans %}import{% endtrans %}</a></li> 65 <li class="bold {% if currentRoute == 'import' %}active{% endif %}">
52 <li class="bold {% if currentRoute == 'howto' %}active{% endif %}"><a class="waves-effect" href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li> 66 <a class="waves-effect" href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a>
53 <li class="bold {% if currentRoute == 'developer' %}active{% endif %}"><a class="waves-effect" href="{{ path('developer') }}">{% trans %}Developer{% endtrans %}</a></li> 67 </li>
54 <li class="bold"><a class="waves-effect" class="icon icon-power" href="{{ path('fos_user_security_logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li> 68 <li class="bold {% if currentRoute == 'developer' %}active{% endif %}">
69 <a class="waves-effect" href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a>
70 </li>
71 <li class="bold {% if currentRoute == 'howto' %}active{% endif %}">
72 <a class="waves-effect" href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a>
73 </li>
74 <li class="bold">
75 <a class="waves-effect" class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a>
76 </li>
55 </ul> 77 </ul>
56 <div class="nav-wrapper nav-panels"> 78 <div class="nav-wrapper nav-panels">
57 <a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="mdi-navigation-menu"></i></a> 79 <a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="mdi-navigation-menu"></i></a>
@@ -61,21 +83,37 @@
61 </div> 83 </div>
62 <div class="input-field nav-panel-buttom"> 84 <div class="input-field nav-panel-buttom">
63 <ul> 85 <ul>
64 <li class="bold"><a title="{% trans %}Add a new entry{% endtrans %}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add"><i class="mdi-content-add"></i></a></li> 86 <li class="bold">
65 <li><a title="{% trans %}Search{% endtrans %}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search"><i class="mdi-action-search"></i></a> 87 <a title="{{ 'menu.top.add_new_entry'|trans }}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add">
66 <li id="button_filters"><a title="{% trans %}Filter entries{% endtrans %}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right"><i class="mdi-content-filter-list"></i></a></li> 88 <i class="mdi-content-add"></i>
67 <li id="button_export"><a title="{% trans %}Export{% endtrans %}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export" class="nav-panel-menu button-collapse-right"><i class="mdi-file-file-download"></i></a></li> 89 </a>
90 </li>
91 <li>
92 <a title="{{ 'menu.top.search'|trans }}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search">
93 <i class="mdi-action-search"></i>
94 </a>
95 </li>
96 <li id="button_filters">
97 <a title="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right">
98 <i class="mdi-content-filter-list"></i>
99 </a>
100 </li>
101 <li id="button_export">
102 <a title="{{ 'menu.top.export'|trans }}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export" class="nav-panel-menu button-collapse-right">
103 <i class="mdi-file-file-download"></i>
104 </a>
105 </li>
68 </ul> 106 </ul>
69 </div> 107 </div>
70 <form method="get" action="index.php"> 108 <form method="get" action="index.php">
71 <div class="input-field nav-panel-search" style="display: none"> 109 <div class="input-field nav-panel-search" style="display: none">
72 <input name="search" id="searchfield" type="search" required placeholder="{% trans %}Enter your search here{% endtrans %}"> 110 <input name="search" id="searchfield" type="search" required placeholder="{{ 'menu.search_form.input_label'|trans }}">
73 <label for="search"><i class="mdi-action-search"></i></label> 111 <label for="search"><i class="mdi-action-search"></i></label>
74 <i class="mdi-navigation-close"></i> 112 <i class="mdi-navigation-close"></i>
75 </div> 113 </div>
76 </form> 114 </form>
77 <div class="input-field nav-panel-add" style="display: none"> 115 <div class="input-field nav-panel-add" style="display: none">
78 {{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }} 116 {{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }}
79 <label for="add" class="active"><i class="mdi-content-add"></i></label> 117 <label for="add" class="active"><i class="mdi-content-add"></i></label>
80 <i class="mdi-navigation-close"></i> 118 <i class="mdi-navigation-close"></i>
81 </div> 119 </div>
@@ -88,35 +126,40 @@
88 <div class="container"> 126 <div class="container">
89 <div class="row"> 127 <div class="row">
90 <div class="col l6 s12"> 128 <div class="col l6 s12">
91 <h5 class="white-text">{% trans %}Take wallabag with you{% endtrans %}</h5> 129 <h5 class="white-text">{{ 'footer.wallabag.elsewhere'|trans }}</h5>
92 <p class="grey-text text-lighten-4"> 130 <p class="grey-text text-lighten-4">
93 131 <a target="_blank" class="grey-text text-lighten-3" href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" title="Android">
94 <a target="_blank" class="grey-text text-lighten-3" href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" title="android"><span class="icon-android"></span></a> 132 <span class="icon-android"></span>
95 133 </a>
96 <a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS"><span class="icon-apple"></a> 134 <a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS">
97 135 <span class="icon-apple"></span>
98 <a target="_blank" class="grey-text text-lighten-3" href="https://addons.mozilla.org/ru/firefox/addon/wallabag/" title="Firefox"><span class="icon-firefox"></span></a> 136 </a>
99 137 <a target="_blank" class="grey-text text-lighten-3" href="https://addons.mozilla.org/ru/firefox/addon/wallabag/" title="Firefox">
100 <a target="_blank" class="grey-text text-lighten-3" href="https://chrome.google.com/webstore/detail/wallabagit/peehlcgckcnclnjlndmoddifcicdnabm" title="Chrome"><span class="icon-chrome"></a> 138 <span class="icon-firefox"></span>
101 139 </a>
140 <a target="_blank" class="grey-text text-lighten-3" href="https://chrome.google.com/webstore/detail/wallabagit/peehlcgckcnclnjlndmoddifcicdnabm" title="Chrome">
141 <span class="icon-chrome"></span>
142 </a>
102 </p> 143 </p>
103 </div> 144 </div>
104 <div class="col l4 offset-l2 s12"> 145 <div class="col l4 offset-l2 s12">
105 <h5 class="white-text">{% trans %}Social{% endtrans %}</h5> 146 <h5 class="white-text">{{ 'footer.wallabag.social'|trans }}</h5>
106 147 <a target="_blank" class="grey-text text-lighten-3" href="https://twitter.com/wallabagapp" title="Twitter">
107 <a target="_blank" class="grey-text text-lighten-3" href="https://twitter.com/wallabagapp" title="Twitter"><span class="icon-twitter"></span></a> 148 <span class="icon-twitter"></span>
108 149 </a>
109 <a target="_blank" class="grey-text text-lighten-3" href="https://plus.google.com/+WallabagOrg/posts" title="Google+"><span class="icon-google-plus2"></span></a> 150 <a target="_blank" class="grey-text text-lighten-3" href="https://plus.google.com/+WallabagOrg/posts" title="Google+">
110 151 <span class="icon-google-plus2"></span>
111 <a target="_blank" class="grey-text text-lighten-3" href="https://facebook.com/Wallabag" title="Facebook"><span class="icon-facebook2"></span></a> 152 </a>
112 153 <a target="_blank" class="grey-text text-lighten-3" href="https://facebook.com/Wallabag" title="Facebook">
154 <span class="icon-facebook2"></span>
155 </a>
113 </div> 156 </div>
114 </div> 157 </div>
115 </div> 158 </div>
116 <div class="footer-copyright"> 159 <div class="footer-copyright">
117 <div class="container"> 160 <div class="container">
118 <p>{% trans %}powered by{% endtrans %} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p> 161 <p>{{ 'footer.wallabag.powered_by'|trans }} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p>
119 <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{% trans %}About{% endtrans %}</a> 162 <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a>
120 </div> 163 </div>
121 </div> 164 </div>
122 </footer> 165 </footer>
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
index 51425fe1..bf455f32 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
@@ -102,7 +102,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
102 'change_passwd[new_password][first]' => '', 102 'change_passwd[new_password][first]' => '',
103 'change_passwd[new_password][second]' => '', 103 'change_passwd[new_password][second]' => '',
104 ), 104 ),
105 'Wrong value for your current password', 105 'validator.password_wrong_value',
106 ), 106 ),
107 array( 107 array(
108 array( 108 array(
@@ -118,7 +118,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
118 'change_passwd[new_password][first]' => 'hop', 118 'change_passwd[new_password][first]' => 'hop',
119 'change_passwd[new_password][second]' => '', 119 'change_passwd[new_password][second]' => '',
120 ), 120 ),
121 'The password fields must match', 121 'validator.password_must_match',
122 ), 122 ),
123 array( 123 array(
124 array( 124 array(
@@ -126,7 +126,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
126 'change_passwd[new_password][first]' => 'hop', 126 'change_passwd[new_password][first]' => 'hop',
127 'change_passwd[new_password][second]' => 'hop', 127 'change_passwd[new_password][second]' => 'hop',
128 ), 128 ),
129 'Password should by at least', 129 'validator.password_too_short',
130 ), 130 ),
131 ); 131 );
132 } 132 }
@@ -188,14 +188,14 @@ class ConfigControllerTest extends WallabagCoreTestCase
188 'update_user[name]' => '', 188 'update_user[name]' => '',
189 'update_user[email]' => '', 189 'update_user[email]' => '',
190 ), 190 ),
191 'Please enter an email', 191 'fos_user.email.blank',
192 ), 192 ),
193 array( 193 array(
194 array( 194 array(
195 'update_user[name]' => '', 195 'update_user[name]' => '',
196 'update_user[email]' => 'test', 196 'update_user[email]' => 'test',
197 ), 197 ),
198 'The email is not valid', 198 'fos_user.email.invalid',
199 ), 199 ),
200 ); 200 );
201 } 201 }
@@ -244,7 +244,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
244 244
245 $crawler = $client->followRedirect(); 245 $crawler = $client->followRedirect();
246 246
247 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 247 $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text')));
248 $this->assertContains('Information updated', $alert[0]); 248 $this->assertContains('Information updated', $alert[0]);
249 } 249 }
250 250
@@ -258,7 +258,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
258 'new_user[plainPassword][second]' => '', 258 'new_user[plainPassword][second]' => '',
259 'new_user[email]' => '', 259 'new_user[email]' => '',
260 ), 260 ),
261 'Please enter a username', 261 'fos_user.username.blank',
262 ), 262 ),
263 array( 263 array(
264 array( 264 array(
@@ -267,7 +267,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
267 'new_user[plainPassword][second]' => 'mypassword', 267 'new_user[plainPassword][second]' => 'mypassword',
268 'new_user[email]' => '', 268 'new_user[email]' => '',
269 ), 269 ),
270 'The username is too short', 270 'fos_user.username.short',
271 ), 271 ),
272 array( 272 array(
273 array( 273 array(
@@ -276,7 +276,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
276 'new_user[plainPassword][second]' => 'mypassword', 276 'new_user[plainPassword][second]' => 'mypassword',
277 'new_user[email]' => 'test', 277 'new_user[email]' => 'test',
278 ), 278 ),
279 'The email is not valid', 279 'fos_user.email.invalid',
280 ), 280 ),
281 array( 281 array(
282 array( 282 array(
@@ -285,7 +285,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
285 'new_user[plainPassword][second]' => 'wallacewallace', 285 'new_user[plainPassword][second]' => 'wallacewallace',
286 'new_user[email]' => 'wallace@wallace.me', 286 'new_user[email]' => 'wallace@wallace.me',
287 ), 287 ),
288 'The username is already used', 288 'fos_user.username.already_used',
289 ), 289 ),
290 array( 290 array(
291 array( 291 array(
@@ -294,7 +294,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
294 'new_user[plainPassword][second]' => 'mypassword2', 294 'new_user[plainPassword][second]' => 'mypassword2',
295 'new_user[email]' => 'wallace@wallace.me', 295 'new_user[email]' => 'wallace@wallace.me',
296 ), 296 ),
297 'The password fields must match', 297 'validator.password_must_match',
298 ), 298 ),
299 ); 299 );
300 } 300 }
@@ -382,7 +382,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
382 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 382 $this->assertEquals(200, $client->getResponse()->getStatusCode());
383 383
384 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text'))); 384 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
385 $this->assertContains('You need to generate a token first.', $body[0]); 385 $this->assertContains('config.form_rss.no_token', $body[0]);
386 386
387 $client->request('GET', '/generate-token'); 387 $client->request('GET', '/generate-token');
388 $this->assertEquals(302, $client->getResponse()->getStatusCode()); 388 $this->assertEquals(302, $client->getResponse()->getStatusCode());
@@ -390,7 +390,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
390 $crawler = $client->followRedirect(); 390 $crawler = $client->followRedirect();
391 391
392 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text'))); 392 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
393 $this->assertNotContains('You need to generate a token first.', $body[0]); 393 $this->assertNotContains('config.form_rss.no_token', $body[0]);
394 } 394 }
395 395
396 public function testGenerateTokenAjax() 396 public function testGenerateTokenAjax()
@@ -454,7 +454,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
454 array( 454 array(
455 'rss_config[rss_limit]' => 1000000000000, 455 'rss_config[rss_limit]' => 1000000000000,
456 ), 456 ),
457 'This will certainly kill the app', 457 'validator.rss_limit_too_hight',
458 ), 458 ),
459 ); 459 );
460 } 460 }
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
index 5512d6e1..0fcf323c 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
@@ -28,14 +28,14 @@ class EntryControllerTest extends WallabagCoreTestCase
28 $client->followRedirect(); 28 $client->followRedirect();
29 29
30 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 30 $this->assertEquals(200, $client->getResponse()->getStatusCode());
31 $this->assertContains('We\'ll accompany you to visit wallabag', $client->getResponse()->getContent()); 31 $this->assertContains('quickstart.intro.paragraph_1', $client->getResponse()->getContent());
32 32
33 // Test if quickstart is disabled when user has 1 entry 33 // Test if quickstart is disabled when user has 1 entry
34 $crawler = $client->request('GET', '/new'); 34 $crawler = $client->request('GET', '/new');
35 35
36 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 36 $this->assertEquals(200, $client->getResponse()->getStatusCode());
37 37
38 $form = $crawler->filter('button[type=submit]')->form(); 38 $form = $crawler->filter('form[name=entry]')->form();
39 39
40 $data = array( 40 $data = array(
41 'entry[url]' => $this->url, 41 'entry[url]' => $this->url,
@@ -46,7 +46,7 @@ class EntryControllerTest extends WallabagCoreTestCase
46 $client->followRedirect(); 46 $client->followRedirect();
47 47
48 $client->request('GET', '/unread/list'); 48 $client->request('GET', '/unread/list');
49 $this->assertContains('There is one entry.', $client->getResponse()->getContent()); 49 $this->assertContains('entry.list.number_on_the_page', $client->getResponse()->getContent());
50 } 50 }
51 51
52 public function testGetNew() 52 public function testGetNew()
@@ -59,7 +59,7 @@ class EntryControllerTest extends WallabagCoreTestCase
59 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 59 $this->assertEquals(200, $client->getResponse()->getStatusCode());
60 60
61 $this->assertCount(1, $crawler->filter('input[type=url]')); 61 $this->assertCount(1, $crawler->filter('input[type=url]'));
62 $this->assertCount(1, $crawler->filter('button[type=submit]')); 62 $this->assertCount(1, $crawler->filter('form[name=entry]'));
63 } 63 }
64 64
65 public function testPostNewViaBookmarklet() 65 public function testPostNewViaBookmarklet()
@@ -96,7 +96,7 @@ class EntryControllerTest extends WallabagCoreTestCase
96 96
97 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 97 $this->assertEquals(200, $client->getResponse()->getStatusCode());
98 98
99 $form = $crawler->filter('button[type=submit]')->form(); 99 $form = $crawler->filter('form[name=entry]')->form();
100 100
101 $crawler = $client->submit($form); 101 $crawler = $client->submit($form);
102 102
@@ -117,7 +117,7 @@ class EntryControllerTest extends WallabagCoreTestCase
117 117
118 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 118 $this->assertEquals(200, $client->getResponse()->getStatusCode());
119 119
120 $form = $crawler->filter('button[type=submit]')->form(); 120 $form = $crawler->filter('form[name=entry]')->form();
121 121
122 $data = array( 122 $data = array(
123 'entry[url]' => $this->url, 123 'entry[url]' => $this->url,
@@ -146,7 +146,7 @@ class EntryControllerTest extends WallabagCoreTestCase
146 146
147 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 147 $this->assertEquals(200, $client->getResponse()->getStatusCode());
148 148
149 $form = $crawler->filter('button[type=submit]')->form(); 149 $form = $crawler->filter('form[name=entry]')->form();
150 150
151 $data = array( 151 $data = array(
152 'entry[url]' => $this->url, 152 'entry[url]' => $this->url,
@@ -170,7 +170,7 @@ class EntryControllerTest extends WallabagCoreTestCase
170 170
171 $this->assertEquals(200, $client->getResponse()->getStatusCode()); 171 $this->assertEquals(200, $client->getResponse()->getStatusCode());
172 172
173 $form = $crawler->filter('button[type=submit]')->form(); 173 $form = $crawler->filter('form[name=entry]')->form();
174 174
175 $data = array( 175 $data = array(
176 'entry[url]' => $url = 'https://github.com/wallabag/wallabag', 176 'entry[url]' => $url = 'https://github.com/wallabag/wallabag',
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
index b9f5d835..5c098cc2 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
@@ -12,53 +12,59 @@ class SecurityControllerTest extends WallabagCoreTestCase
12 $client = $this->getClient(); 12 $client = $this->getClient();
13 $client->followRedirects(); 13 $client->followRedirects();
14 14
15 $client->request('GET', '/config'); 15 $crawler = $client->request('GET', '/config');
16 $this->assertContains('RSS', $client->getResponse()->getContent()); 16 $this->assertContains('config.form_rss.description', $crawler->filter('body')->extract(array('_text'))[0]);
17 } 17 }
18 18
19 public function testLoginWith2Factor() 19 public function testLoginWith2Factor()
20 { 20 {
21 $client = $this->getClient(); 21 $client = $this->getClient();
22 22
23 if ($client->getContainer()->getParameter('twofactor_auth')) { 23 if (!$client->getContainer()->getParameter('twofactor_auth')) {
24 $client->followRedirects(); 24 $this->markTestSkipped('twofactor_auth is not enabled.');
25 return;
26 }
25 27
26 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 28 $client->followRedirects();
27 $user = $em
28 ->getRepository('WallabagUserBundle:User')
29 ->findOneByUsername('admin');
30 $user->setTwoFactorAuthentication(true);
31 $em->persist($user);
32 $em->flush();
33 29
34 $this->logInAs('admin'); 30 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
35 $client->request('GET', '/config'); 31 $user = $em
36 $this->assertContains('trusted computer', $client->getResponse()->getContent()); 32 ->getRepository('WallabagUserBundle:User')
33 ->findOneByUsername('admin');
34 $user->setTwoFactorAuthentication(true);
35 $em->persist($user);
36 $em->flush();
37 37
38 // restore user 38 $this->logInAs('admin');
39 $user = $em 39 $crawler = $client->request('GET', '/config');
40 ->getRepository('WallabagUserBundle:User') 40 $this->assertContains('scheb_two_factor.trusted', $crawler->filter('body')->extract(array('_text'))[0]);
41 ->findOneByUsername('admin'); 41
42 $user->setTwoFactorAuthentication(false); 42 // restore user
43 $em->persist($user); 43 $user = $em
44 $em->flush(); 44 ->getRepository('WallabagUserBundle:User')
45 } 45 ->findOneByUsername('admin');
46 $user->setTwoFactorAuthentication(false);
47 $em->persist($user);
48 $em->flush();
46 } 49 }
47 50
48 public function testTrustedComputer() 51 public function testTrustedComputer()
49 { 52 {
50 $client = $this->getClient(); 53 $client = $this->getClient();
51 54
52 if ($client->getContainer()->getParameter('twofactor_auth')) { 55 if (!$client->getContainer()->getParameter('twofactor_auth')) {
53 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 56 $this->markTestSkipped('twofactor_auth is not enabled.');
54 $user = $em 57 return;
55 ->getRepository('WallabagUserBundle:User')
56 ->findOneByUsername('admin');
57
58 $date = new \DateTime();
59 $user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M')));
60 $this->assertTrue($user->isTrustedComputer('ABCDEF'));
61 $this->assertFalse($user->isTrustedComputer('FEDCBA'));
62 } 58 }
59
60 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
61 $user = $em
62 ->getRepository('WallabagUserBundle:User')
63 ->findOneByUsername('admin');
64
65 $date = new \DateTime();
66 $user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M')));
67 $this->assertTrue($user->isTrustedComputer('ABCDEF'));
68 $this->assertFalse($user->isTrustedComputer('FEDCBA'));
63 } 69 }
64} 70}
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php
index d6391282..338121e7 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php
@@ -30,7 +30,7 @@ class TagControllerTest extends WallabagCoreTestCase
30 30
31 $crawler = $client->request('GET', '/view/'.$entry->getId()); 31 $crawler = $client->request('GET', '/view/'.$entry->getId());
32 32
33 $form = $crawler->filter('button[id=tag_save]')->form(); 33 $form = $crawler->filter('form[name=tag]')->form();
34 34
35 $data = array( 35 $data = array(
36 'tag[label]' => $this->tagName, 36 'tag[label]' => $this->tagName,
diff --git a/src/Wallabag/ImportBundle/Controller/PocketController.php b/src/Wallabag/ImportBundle/Controller/PocketController.php
index c88e115e..7a35514b 100644
--- a/src/Wallabag/ImportBundle/Controller/PocketController.php
+++ b/src/Wallabag/ImportBundle/Controller/PocketController.php
@@ -17,8 +17,8 @@ class PocketController extends Controller
17 { 17 {
18 $pocket = $this->get('wallabag_import.pocket.import'); 18 $pocket = $this->get('wallabag_import.pocket.import');
19 $form = $this->createFormBuilder($pocket) 19 $form = $this->createFormBuilder($pocket)
20 ->add('read', CheckboxType::class, array( 20 ->add('mark_as_read', CheckboxType::class, array(
21 'label' => 'Mark all as read', 21 'label' => 'import.form.mark_as_read_label',
22 'required' => false, 22 'required' => false,
23 )) 23 ))
24 ->getForm(); 24 ->getForm();
@@ -39,7 +39,7 @@ class PocketController extends Controller
39 ->getRequestToken($this->generateUrl('import', array(), UrlGeneratorInterface::ABSOLUTE_URL)); 39 ->getRequestToken($this->generateUrl('import', array(), UrlGeneratorInterface::ABSOLUTE_URL));
40 40
41 $this->get('session')->set('import.pocket.code', $requestToken); 41 $this->get('session')->set('import.pocket.code', $requestToken);
42 $this->get('session')->set('read', $request->request->get('form')['read']); 42 $this->get('session')->set('mark_as_read', $request->request->get('form')['mark_as_read']);
43 43
44 return $this->redirect( 44 return $this->redirect(
45 'https://getpocket.com/auth/authorize?request_token='.$requestToken.'&redirect_uri='.$this->generateUrl('import_pocket_callback', array(), UrlGeneratorInterface::ABSOLUTE_URL), 45 'https://getpocket.com/auth/authorize?request_token='.$requestToken.'&redirect_uri='.$this->generateUrl('import_pocket_callback', array(), UrlGeneratorInterface::ABSOLUTE_URL),
@@ -54,8 +54,8 @@ class PocketController extends Controller
54 { 54 {
55 $message = 'Import failed, please try again.'; 55 $message = 'Import failed, please try again.';
56 $pocket = $this->get('wallabag_import.pocket.import'); 56 $pocket = $this->get('wallabag_import.pocket.import');
57 $markAsRead = $this->get('session')->get('read'); 57 $markAsRead = $this->get('session')->get('mark_as_read');
58 $this->get('session')->remove('read'); 58 $this->get('session')->remove('mark_as_read');
59 59
60 // something bad happend on pocket side 60 // something bad happend on pocket side
61 if (false === $pocket->authorize($this->get('session')->get('import.pocket.code'))) { 61 if (false === $pocket->authorize($this->get('session')->get('import.pocket.code'))) {
diff --git a/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php b/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php
index 38670379..e0a44c36 100644
--- a/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php
+++ b/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php
@@ -13,12 +13,16 @@ class UploadImportType extends AbstractType
13 public function buildForm(FormBuilderInterface $builder, array $options) 13 public function buildForm(FormBuilderInterface $builder, array $options)
14 { 14 {
15 $builder 15 $builder
16 ->add('file', FileType::class) 16 ->add('file', FileType::class, array(
17 'label' => 'import.form.file_label',
18 ))
17 ->add('mark_as_read', CheckboxType::class, array( 19 ->add('mark_as_read', CheckboxType::class, array(
18 'label' => 'Mark all as read', 20 'label' => 'import.form.mark_as_read_label',
19 'required' => false, 21 'required' => false,
20 )) 22 ))
21 ->add('save', SubmitType::class) 23 ->add('save', SubmitType::class, array(
24 'label' => 'import.form.save_label',
25 ))
22 ; 26 ;
23 } 27 }
24 28
diff --git a/src/Wallabag/ImportBundle/Import/PocketImport.php b/src/Wallabag/ImportBundle/Import/PocketImport.php
index 238ddbd1..4499ce69 100644
--- a/src/Wallabag/ImportBundle/Import/PocketImport.php
+++ b/src/Wallabag/ImportBundle/Import/PocketImport.php
@@ -60,7 +60,7 @@ class PocketImport implements ImportInterface
60 */ 60 */
61 public function getDescription() 61 public function getDescription()
62 { 62 {
63 return 'This importer will import all your Pocket data. Pocket doesn\'t allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag.'; 63 return 'import.pocket.description';
64 } 64 }
65 65
66 /** 66 /**
@@ -139,7 +139,7 @@ class PocketImport implements ImportInterface
139 /** 139 /**
140 * Get whether articles must be all marked as read. 140 * Get whether articles must be all marked as read.
141 */ 141 */
142 public function getRead() 142 public function getMarkAsRead()
143 { 143 {
144 return $this->markAsRead; 144 return $this->markAsRead;
145 } 145 }
diff --git a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php
index 1d773d3b..173a587f 100644
--- a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php
+++ b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php
@@ -67,7 +67,7 @@ class WallabagV1Import implements ImportInterface
67 */ 67 */
68 public function getDescription() 68 public function getDescription()
69 { 69 {
70 return 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.'; 70 return 'import.wallabag_v1.description';
71 } 71 }
72 72
73 /** 73 /**
diff --git a/src/Wallabag/ImportBundle/Import/WallabagV2Import.php b/src/Wallabag/ImportBundle/Import/WallabagV2Import.php
index c4bac561..0a32864e 100644
--- a/src/Wallabag/ImportBundle/Import/WallabagV2Import.php
+++ b/src/Wallabag/ImportBundle/Import/WallabagV2Import.php
@@ -27,7 +27,7 @@ class WallabagV2Import extends WallabagV1Import implements ImportInterface
27 */ 27 */
28 public function getDescription() 28 public function getDescription()
29 { 29 {
30 return 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'; 30 return 'import.wallabag_v2.description';
31 } 31 }
32 32
33 /** 33 /**
diff --git a/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig
index 8c300624..aebbfa20 100644
--- a/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig
+++ b/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig
@@ -1,17 +1,18 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2{% block title %}{% trans %}Import{% endtrans %}{% endblock %} 2
3{% block title %}{{ 'import.page_title'|trans }}{% endblock %}
3 4
4{% block content %} 5{% block content %}
5<div class="row"> 6<div class="row">
6 <div class="col s12"> 7 <div class="col s12">
7 <div class="card-panel settings"> 8 <div class="card-panel settings">
8 {% trans %}Welcome to wallabag importer. Please select your previous service that you want to migrate.{% endtrans %} 9 {{ 'import.page_description'|trans }}
9 <ul> 10 <ul>
10 {% for import in imports %} 11 {% for import in imports %}
11 <li> 12 <li>
12 <h5>{{ import.name }}</h5> 13 <h5>{{ import.name }}</h5>
13 <blockquote>{{ import.description|trans }}</blockquote> 14 <blockquote>{{ import.description|trans }}</blockquote>
14 <p><a class="waves-effect waves-light btn" href="{{ path(import.url) }}">{% trans %}Import contents{% endtrans %}</a></p> 15 <p><a class="waves-effect waves-light btn" href="{{ path(import.url) }}">{{ 'import.action.import_contents'|trans }}</a></p>
15 </li> 16 </li>
16 {% endfor %} 17 {% endfor %}
17 </ul> 18 </ul>
diff --git a/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig
index 3365fc6a..401dbd33 100644
--- a/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig
+++ b/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig
@@ -1,5 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2{% block title %}{% trans %}Import > Pocket{% endtrans %}{% endblock %} 2
3{% block title %}{{ 'import.pocket.page_title'|trans }}{% endblock %}
3 4
4{% block content %} 5{% block content %}
5<div class="row"> 6<div class="row">
@@ -7,27 +8,29 @@
7 <div class="card-panel settings"> 8 <div class="card-panel settings">
8 {% if not has_consumer_key %} 9 {% if not has_consumer_key %}
9 <div class="card-panel red darken-1"> 10 <div class="card-panel red darken-1">
10 {% trans %}Pocket import isn't configured.{% endtrans %} 11 {{ 'import.pocket.config_missing.description'|trans }}
12
11 {% if is_granted('ROLE_SUPER_ADMIN') %} 13 {% if is_granted('ROLE_SUPER_ADMIN') %}
12 {% trans with {'%keyurls%': '<a href="' ~ path('craue_config_settings_modify') ~ '#set-import">', '%keyurle%':'</a>'} %}You need to define %keyurls% a pocket_consumer_key %keyurle%.{% endtrans %} 14 {{ 'import.pocket.config_missing.admin_message'|trans({'%keyurls%': '<a href="' ~ path('craue_config_settings_modify') ~ '#set-import">', '%keyurle%':'</a>'})|raw }}
13 {% else %} 15 {% else %}
14 {% trans %}Your server admin needs to define an API Key for Pocket.{% endtrans %} 16 {{ 'import.pocket.config_missing.user_message'|trans }}
15 {% endif %} 17 {% endif %}
16 </div> 18 </div>
17 {% endif %} 19 {% endif %}
18 20
19 <blockquote>{{ import.description|trans }}</blockquote> 21 <blockquote>{{ import.description|trans }}</blockquote>
20 <p>{% trans %}You can import your data from your Pocket account. You just have to click on the below button and authorize the application to connect to getpocket.com.{% endtrans %}</p> 22 <p>{{ 'import.pocket.authorize_message'|trans }}</p>
23
21 <form method="post" action="{{ path('import_pocket_auth') }}"> 24 <form method="post" action="{{ path('import_pocket_auth') }}">
22 <div class="row"> 25 <div class="row">
23 <div class="input-field col s6 with-checkbox"> 26 <div class="input-field col s6 with-checkbox">
24 <h6>{% trans %}Mark all as read ?{% endtrans %}</h6> 27 <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6>
25 {{ form_widget(form.read) }} 28 {{ form_widget(form.mark_as_read) }}
26 <label for="form_read">{% trans %}Mark all imported entries as read{% endtrans %}</label> 29 {{ form_label(form.mark_as_read) }}
30 </div>
27 </div> 31 </div>
28 </div>
29 <button class="btn waves-effect waves-light" type="submit" name="action"> 32 <button class="btn waves-effect waves-light" type="submit" name="action">
30 {% trans %}Connect to Pocket and import data{% endtrans %} 33 {{ 'import.pocket.connect_to_pocket'|trans }}
31 </button> 34 </button>
32 </form> 35 </form>
33 </div> 36 </div>
diff --git a/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig
index a418ed1c..13e24c8c 100644
--- a/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig
+++ b/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig
@@ -1,5 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2{% block title %}{% trans %}Import > Wallabag v1{% endtrans %}{% endblock %} 2
3{% block title %}{{ 'import.wallabag_v1.page_title'|trans }}{% endblock %}
3 4
4{% block content %} 5{% block content %}
5<div class="row"> 6<div class="row">
@@ -7,7 +8,8 @@
7 <div class="card-panel settings"> 8 <div class="card-panel settings">
8 <div class="row"> 9 <div class="row">
9 <blockquote>{{ import.description|trans }}</blockquote> 10 <blockquote>{{ import.description|trans }}</blockquote>
10 <p>{% trans %}Please select your wallabag export and click on the below button to upload and import it.{% endtrans %}</p> 11 <p>{{ 'import.wallabag_v1.how_to'|trans }}</p>
12
11 <div class="col s12"> 13 <div class="col s12">
12 {{ form_start(form, {'method': 'POST'}) }} 14 {{ form_start(form, {'method': 'POST'}) }}
13 {{ form_errors(form) }} 15 {{ form_errors(form) }}
@@ -15,7 +17,7 @@
15 <div class="file-field input-field col s12"> 17 <div class="file-field input-field col s12">
16 {{ form_errors(form.file) }} 18 {{ form_errors(form.file) }}
17 <div class="btn"> 19 <div class="btn">
18 <span>{% trans %}File{% endtrans %}</span> 20 <span>{{ form.file.vars.label|trans }}</span>
19 {{ form_widget(form.file) }} 21 {{ form_widget(form.file) }}
20 </div> 22 </div>
21 <div class="file-path-wrapper"> 23 <div class="file-path-wrapper">
@@ -23,15 +25,15 @@
23 </div> 25 </div>
24 </div> 26 </div>
25 <div class="input-field col s6 with-checkbox"> 27 <div class="input-field col s6 with-checkbox">
26 <h6>{% trans %}Mark all as read ?{% endtrans %}</h6> 28 <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6>
27 {{ form_widget(form.mark_as_read) }} 29 {{ form_widget(form.mark_as_read) }}
28 <label for="upload_import_file_mark_as_read">{% trans %}Mark all imported entries as read{% endtrans %}</label> 30 {{ form_label(form.mark_as_read) }}
29 </div> 31 </div>
30 </div> 32 </div>
31 <div class="hidden">{{ form_rest(form) }}</div> 33
32 <button class="btn waves-effect waves-light" type="submit" name="action"> 34 {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'} }) }}
33 {% trans %}Upload file{% endtrans %} 35
34 </button> 36 {{ form_rest(form) }}
35 </form> 37 </form>
36 </div> 38 </div>
37 </div> 39 </div>
diff --git a/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig
index 78fe67e4..c2905fc6 100644
--- a/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig
+++ b/src/Wallabag/ImportBundle/Resources/views/WallabagV2/index.html.twig
@@ -1,2 +1,3 @@
1{% extends "WallabagImportBundle:WallabagV1:index.html.twig" %} 1{% extends "WallabagImportBundle:WallabagV1:index.html.twig" %}
2{% block title %}{% trans %}Import > Wallabag v2{% endtrans %}{% endblock %} 2
3{% block title %}{{ 'import.wallabag_v2.page_title'|trans }}{% endblock %}
diff --git a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php
index 7f97b0f5..6c876b3b 100644
--- a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV1ControllerTest.php
@@ -54,8 +54,8 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
54 54
55 $this->assertTrue($content->getTags()->contains($tag)); 55 $this->assertTrue($content->getTags()->contains($tag));
56 56
57 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 57 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
58 $this->assertContains('Import summary', $alert[0]); 58 $this->assertContains('Import summary', $body[0]);
59 } 59 }
60 60
61 public function testImportWallabagWithFileAndMarkAllAsRead() 61 public function testImportWallabagWithFileAndMarkAllAsRead()
@@ -99,7 +99,8 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
99 99
100 $this->assertTrue($content2->isArchived()); 100 $this->assertTrue($content2->isArchived());
101 101
102 $this->assertContains('Import summary', $client->getResponse()->getContent()); 102 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
103 $this->assertContains('Import summary', $body[0]);
103 } 104 }
104 105
105 public function testImportWallabagWithEmptyFile() 106 public function testImportWallabagWithEmptyFile()
@@ -122,7 +123,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
122 123
123 $crawler = $client->followRedirect(); 124 $crawler = $client->followRedirect();
124 125
125 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 126 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
126 $this->assertContains('Import failed, please try again', $alert[0]); 127 $this->assertContains('Import failed, please try again', $body[0]);
127 } 128 }
128} 129}
diff --git a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php
index 617c0517..58baa836 100644
--- a/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Controller/WallabagV2ControllerTest.php
@@ -39,8 +39,8 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase
39 39
40 $crawler = $client->followRedirect(); 40 $crawler = $client->followRedirect();
41 41
42 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 42 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
43 $this->assertContains('Import summary', $alert[0]); 43 $this->assertContains('Import summary', $body[0]);
44 44
45 $content = $client->getContainer() 45 $content = $client->getContainer()
46 ->get('doctrine.orm.entity_manager') 46 ->get('doctrine.orm.entity_manager')
@@ -87,7 +87,7 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase
87 87
88 $crawler = $client->followRedirect(); 88 $crawler = $client->followRedirect();
89 89
90 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); 90 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
91 $this->assertContains('Import failed, please try again', $alert[0]); 91 $this->assertContains('Import failed, please try again', $body[0]);
92 } 92 }
93} 93}
diff --git a/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php b/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php
index 450cdc95..43b60ec3 100644
--- a/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Import/PocketImportTest.php
@@ -85,7 +85,7 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase
85 85
86 $this->assertEquals('Pocket', $pocketImport->getName()); 86 $this->assertEquals('Pocket', $pocketImport->getName());
87 $this->assertNotEmpty($pocketImport->getUrl()); 87 $this->assertNotEmpty($pocketImport->getUrl());
88 $this->assertContains('This importer will import all your Pocket data.', $pocketImport->getDescription()); 88 $this->assertEquals('import.pocket.description', $pocketImport->getDescription());
89 } 89 }
90 90
91 public function testOAuthRequest() 91 public function testOAuthRequest()
diff --git a/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php b/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php
index 8ab7e830..496cf2d3 100644
--- a/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Import/WallabagV1ImportTest.php
@@ -45,7 +45,7 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase
45 45
46 $this->assertEquals('wallabag v1', $wallabagV1Import->getName()); 46 $this->assertEquals('wallabag v1', $wallabagV1Import->getName());
47 $this->assertNotEmpty($wallabagV1Import->getUrl()); 47 $this->assertNotEmpty($wallabagV1Import->getUrl());
48 $this->assertContains('This importer will import all your wallabag v1 articles.', $wallabagV1Import->getDescription()); 48 $this->assertEquals('import.wallabag_v1.description', $wallabagV1Import->getDescription());
49 } 49 }
50 50
51 public function testImport() 51 public function testImport()
diff --git a/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php b/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php
index 2b642d27..341b1076 100644
--- a/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php
+++ b/src/Wallabag/ImportBundle/Tests/Import/WallabagV2ImportTest.php
@@ -45,7 +45,7 @@ class WallabagV2ImportTest extends \PHPUnit_Framework_TestCase
45 45
46 $this->assertEquals('wallabag v2', $wallabagV2Import->getName()); 46 $this->assertEquals('wallabag v2', $wallabagV2Import->getName());
47 $this->assertNotEmpty($wallabagV2Import->getUrl()); 47 $this->assertNotEmpty($wallabagV2Import->getUrl());
48 $this->assertContains('This importer will import all your wallabag v2 articles.', $wallabagV2Import->getDescription()); 48 $this->assertEquals('import.wallabag_v2.description', $wallabagV2Import->getDescription());
49 } 49 }
50 50
51 public function testImport() 51 public function testImport()
diff --git a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml
index 4da6075f..85f2ea9c 100644
--- a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml
+++ b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.en.yml
@@ -1,7 +1,11 @@
1# Two factor mail 1# Two factor mail
2auth_code.mailer.subject: 'Wallabag authentication Code' 2auth_code:
3auth_code.mailer.body.hello: "Hi %user%," 3 on: 'on'
4auth_code.mailer.body.first_para: "Since you enable two factor authentication on your wallabag account and you just logged in from a new device (computer, phone, etc.), we send you a code to validate your connection." 4 mailer:
5auth_code.mailer.body.second_para: "Here is the code:" 5 subject: 'Wallabag authentication Code'
6auth_code.mailer.body.support: "Please don't hesitate to contact us if you have any problems:" 6 body:
7auth_code.mailer.body.signature: "The wallabag team" 7 hello: "Hi %user%,"
8 first_para: "Since you enable two factor authentication on your wallabag account and you just logged in from a new device (computer, phone, etc.), we send you a code to validate your connection."
9 second_para: "Here is the code:"
10 support: "Please don't hesitate to contact us if you have any problems:"
11 signature: "The wallabag team"
diff --git a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml
index b4448d3a..30ab5dd9 100644
--- a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml
+++ b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.fr.yml
@@ -1,7 +1,11 @@
1# Two factor mail 1# Two factor mail
2auth_code.mailer.subject: "Code d'authentification wallabag" 2auth_code:
3auth_code.mailer.body.hello: "Bonjour %user%," 3 on: 'sur'
4auth_code.mailer.body.first_para: "Comme vous avez activé la double authentification sur votre compte wallabag et que vous venez de vous connecter depuis un nouvel appareil (ordinateur, téléphone, etc.), nous vous envoyons un code pour valider votre connexion." 4 mailer:
5auth_code.mailer.body.second_para: "Voici le code à renseigner :" 5 subject: "Code d'authentification wallabag"
6auth_code.mailer.body.support: "Si vous avez un problème de connexion, n'hésitez pas à contacter le support :" 6 body:
7auth_code.mailer.body.signature: "L'équipe wallabag" 7 hello: "Bonjour %user%,"
8 first_para: "Comme vous avez activé la double authentification sur votre compte wallabag et que vous venez de vous connecter depuis un nouvel appareil (ordinateur, téléphone, etc.), nous vous envoyons un code pour valider votre connexion."
9 second_para: "Voici le code à renseigner :"
10 support: "Si vous avez un problème de connexion, n'hésitez pas à contacter le support :"
11 signature: "L'équipe wallabag"
diff --git a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml
index d1fcb0e0..70646355 100644
--- a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml
+++ b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.tr.yml
@@ -1,7 +1,11 @@
1# Two factor mail 1# Two factor mail
2auth_code.mailer.subject: 'Wallabag DoÄŸrulama Kodu' 2auth_code:
3auth_code.mailer.body.hello: "Merhaba %user%," 3 on: 'on'
4auth_code.mailer.body.first_para: "wallabag hesabınızda iki adımlı doğrulamayı etkinleştirdiğinizde ve bu yeni cihaz olduğunda (bilgisayar, telefon, vs.), biz size bu işlemi doğrulamak için bir kod göndeririz." 4 mailer:
5auth_code.mailer.body.second_para: "Bu işlem için doğrulama kodunuz:" 5 subject: 'Wallabag Doğrulama Kodu'
6auth_code.mailer.body.support: "Eğer herhangi bir soru/sorununuz varsa, bizimle iletişime geçmekten çekinmeyin:" 6 body:
7auth_code.mailer.body.signature: "wallabag ekibi" 7 hello: "Merhaba %user%,"
8 first_para: "wallabag hesabınızda iki adımlı doğrulamayı etkinleştirdiğinizde ve bu yeni cihaz olduğunda (bilgisayar, telefon, vs.), biz size bu işlemi doğrulamak için bir kod göndeririz."
9 second_para: "Bu işlem için doğrulama kodunuz:"
10 support: "Eğer herhangi bir soru/sorununuz varsa, bizimle iletişime geçmekten çekinmeyin:"
11 signature: "wallabag ekibi"
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Authentication/form.html.twig b/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig
index fa0e3dc1..acf69196 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Authentication/form.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig
@@ -23,7 +23,7 @@
23 </div> 23 </div>
24 </div> 24 </div>
25 <div class="card-action center"> 25 <div class="card-action center">
26 <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Cancel{% endtrans %}</a> 26 <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {{ 'security.login.cancel'|trans }}</a>
27 <button class="btn waves-effect waves-light" type="submit" name="send"> 27 <button class="btn waves-effect waves-light" type="submit" name="send">
28 {{ "scheb_two_factor.login"|trans }} 28 {{ "scheb_two_factor.login"|trans }}
29 <i class="mdi-content-send right"></i> 29 <i class="mdi-content-send right"></i>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/ChangePassword/changePassword_content.html.twig b/src/Wallabag/UserBundle/Resources/views/ChangePassword/changePassword_content.html.twig
index abb68421..abb68421 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/ChangePassword/changePassword_content.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/ChangePassword/changePassword_content.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/checkEmail.html.twig b/src/Wallabag/UserBundle/Resources/views/Registration/checkEmail.html.twig
index 50937276..50937276 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/checkEmail.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Registration/checkEmail.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/confirmed.html.twig b/src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig
index c6d4d3d2..674eb217 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/confirmed.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig
@@ -11,7 +11,7 @@
11 {% endif %} 11 {% endif %}
12 </div> 12 </div>
13 <div class="card-action center"> 13 <div class="card-action center">
14 <a href="{{ path('homepage') }}" class="waves-effect waves-light btn"><i class="material-icons left"></i> {% trans %}Go to your account{% endtrans %}</a> 14 <a href="{{ path('homepage') }}" class="waves-effect waves-light btn"><i class="material-icons left"></i> {{ 'security.register.go_to_account'|trans }}</a>
15 </div> 15 </div>
16</div> 16</div>
17{% endblock fos_user_content %} 17{% endblock fos_user_content %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/register_content.html.twig b/src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig
index e92b515e..7d2b45d4 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Registration/register_content.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig
@@ -36,7 +36,7 @@
36 </div> 36 </div>
37 </div> 37 </div>
38 <div class="card-action center"> 38 <div class="card-action center">
39 <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Login{% endtrans %}</a> 39 <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {{ 'security.login.submit'|trans }}</a>
40 <button class="btn waves-effect waves-light" type="submit" name="send"> 40 <button class="btn waves-effect waves-light" type="submit" name="send">
41 {{ 'registration.submit'|trans({}, 'FOSUserBundle') }} 41 {{ 'registration.submit'|trans({}, 'FOSUserBundle') }}
42 <i class="mdi-content-send right"></i> 42 <i class="mdi-content-send right"></i>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/checkEmail.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/checkEmail.html.twig
index 66cbdc28..66cbdc28 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/checkEmail.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Resetting/checkEmail.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/passwordAlreadyRequested.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/passwordAlreadyRequested.html.twig
index 1e245372..1e245372 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/passwordAlreadyRequested.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Resetting/passwordAlreadyRequested.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/request_content.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig
index e871d7be..7a5ac838 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/request_content.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig
@@ -1,8 +1,10 @@
1{% trans_default_domain 'FOSUserBundle' %} 1{% trans_default_domain 'FOSUserBundle' %}
2
2<form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="fos_user_resetting_request"> 3<form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="fos_user_resetting_request">
3 <div class="card-content"> 4 <div class="card-content">
4 <div class="row"> 5 <div class="row">
5 <p>{% trans %}Enter your email address below and we'll send you password reset instructions.{% endtrans %}</p> 6 <p>{{ 'security.resetting.description'|trans({}, "messages") }}</p>
7
6 {% for flashMessage in app.session.flashbag.get('notice') %} 8 {% for flashMessage in app.session.flashbag.get('notice') %}
7 <span class="black-text"><p>{{ flashMessage }}</p></span> 9 <span class="black-text"><p>{{ flashMessage }}</p></span>
8 {% endfor %} 10 {% endfor %}
@@ -18,7 +20,9 @@
18 </div> 20 </div>
19 </div> 21 </div>
20 <div class="card-action center"> 22 <div class="card-action center">
21 <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Login{% endtrans %}</a> 23 <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn">
24 <i class="material-icons left"></i> {{ 'security.login.submit'|trans({}, "messages") }}
25 </a>
22 <button class="btn waves-effect waves-light" type="submit" name="send"> 26 <button class="btn waves-effect waves-light" type="submit" name="send">
23 {{ 'resetting.request.submit'|trans }} 27 {{ 'resetting.request.submit'|trans }}
24 </button> 28 </button>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/reset_content.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig
index 9d0a061c..9d0a061c 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Resetting/reset_content.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/Security/login.html.twig b/src/Wallabag/UserBundle/Resources/views/Security/login.html.twig
index 6bf99bf8..982a33b2 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/Security/login.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/Security/login.html.twig
@@ -15,32 +15,32 @@
15 <div class="row"> 15 <div class="row">
16 16
17 <div class="input-field col s12"> 17 <div class="input-field col s12">
18 <label for="username">{% trans %}Username{% endtrans %}</label> 18 <label for="username">{{ 'security.login.username'|trans }}</label>
19 <input type="text" id="username" name="_username" value="{{ last_username }}" /> 19 <input type="text" id="username" name="_username" value="{{ last_username }}" />
20 </div> 20 </div>
21 21
22 <div class="input-field col s12"> 22 <div class="input-field col s12">
23 <label for="password">{% trans %}Password{% endtrans %}</label> 23 <label for="password">{{ 'security.login.password'|trans }}</label>
24 <input type="password" id="password" name="_password" /> 24 <input type="password" id="password" name="_password" />
25 </div> 25 </div>
26 26
27 <div class="input-field col s12"> 27 <div class="input-field col s12">
28 <input type="checkbox" id="remember_me" name="_remember_me" checked /> 28 <input type="checkbox" id="remember_me" name="_remember_me" checked />
29 <label for="remember_me">{% trans %}Keep me logged in{% endtrans %}</label> 29 <label for="remember_me">{{ 'security.login.keep_logged_in'|trans }}</label>
30 </div> 30 </div>
31 31
32 </div> 32 </div>
33 </div> 33 </div>
34 <div class="card-action center"> 34 <div class="card-action center">
35 <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" /> 35 <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
36 <a href="{{ path('fos_user_registration_register') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Register{% endtrans %}</a> 36 <a href="{{ path('fos_user_registration_register') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {{ 'security.login.register'|trans }}</a>
37 <button class="btn waves-effect waves-light" type="submit" name="send"> 37 <button class="btn waves-effect waves-light" type="submit" name="send">
38 {% trans %}Login{% endtrans %} 38 {{ 'security.login.submit'|trans }}
39 <i class="mdi-content-send right"></i> 39 <i class="mdi-content-send right"></i>
40 </button> 40 </button>
41 </div> 41 </div>
42 <div class="center"> 42 <div class="center">
43 <a href="{{ path('fos_user_resetting_request') }}">{% trans %}Forgot your password?{% endtrans %}</a> 43 <a href="{{ path('fos_user_resetting_request') }}">{{ 'security.login.forgot_password'|trans }}</a>
44 </div> 44 </div>
45</form> 45</form>
46{% endblock fos_user_content %} 46{% endblock fos_user_content %}
diff --git a/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig b/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig
index 69d23160..c44fcfb7 100644
--- a/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig
@@ -77,7 +77,7 @@
77 <td style="padding: 20px;" width="96px" valign="top"><img class="image_fix" src="{{ wallabag_url }}/themes/material/img/logo-other_themes.png" alt="logo" title="{{ wallabag_url }}" style="width: 96px; height: 96px;" /></td> 77 <td style="padding: 20px;" width="96px" valign="top"><img class="image_fix" src="{{ wallabag_url }}/themes/material/img/logo-other_themes.png" alt="logo" title="{{ wallabag_url }}" style="width: 96px; height: 96px;" /></td>
78 <td style="padding: 20px; padding-left: 0;" valign="top" id="cell_desc"> 78 <td style="padding: 20px; padding-left: 0;" valign="top" id="cell_desc">
79 <h1>wallabag</h1> 79 <h1>wallabag</h1>
80 <h5>{% trans %}on{% endtrans %} {{ wallabag_url }}</h5> 80 <h5>{{ "auth_code.on"|trans({}, 'wallabag_user') }} {{ wallabag_url }}</h5>
81 </td> 81 </td>
82 </tr> 82 </tr>
83 <tr><td colspan="2" style="padding: 0;"><div style="height: 0; border-top: 1px solid #c5c5c5;">&nbsp;</div></td></tr> 83 <tr><td colspan="2" style="padding: 0;"><div style="height: 0; border-top: 1px solid #c5c5c5;">&nbsp;</div></td></tr>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/UserBundle/Resources/views/layout.html.twig
index cbdc1da2..1d0189ca 100644
--- a/src/Wallabag/UserBundle/Resources/views/themes/material/layout.html.twig
+++ b/src/Wallabag/UserBundle/Resources/views/layout.html.twig
@@ -1,6 +1,6 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %} 1{% extends "WallabagCoreBundle::layout.html.twig" %}
2 2
3{% block title %}{% trans %}Welcome to wallabag!{% endtrans %}{% endblock %} 3{% block title %}{{ 'security.login.page_title'|trans }}{% endblock %}
4 4
5{% block body_class %}login{% endblock %} 5{% block body_class %}login{% endblock %}
6 6
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig
deleted file mode 100644
index 5bb91081..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Authentication/form.html.twig
+++ /dev/null
@@ -1,32 +0,0 @@
1{% extends "WallabagUserBundle::layout.html.twig" %}
2
3{% block fos_user_content %}
4<form class="form" action="" method="post">
5 <fieldset class="w500p center">
6 {% for flashMessage in app.session.flashbag.get("two_factor") %}
7 <p class="error">{{ flashMessage|trans }}</p>
8 {% endfor %}
9
10 <div class="row">
11 <label for="_auth_code">{{ "scheb_two_factor.auth_code"|trans }}</label>
12 <input id="_auth_code" type="text" autocomplete="off" name="_auth_code" />
13 </div>
14
15 {% if useTrustedOption %}
16 <div class="row">
17 <input id="_trusted" type="checkbox" name="_trusted" />
18 <label for="_trusted">{{ "scheb_two_factor.trusted"|trans }}</label>
19 </div>
20 {% endif %}
21
22 <div class="row mts txtcenter">
23 <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {% trans %}Cancel{% endtrans %}</a>
24 <button type="submit" name="send">
25 {{ "scheb_two_factor.login"|trans }}
26 <i class="mdi-content-send right"></i>
27 </button>
28 </div>
29 </fieldset>
30
31</form>
32{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig
deleted file mode 100644
index 2713bf45..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register.html.twig
+++ /dev/null
@@ -1,20 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{% trans %}create an account{% endtrans %}{% endblock %}
4
5{% block body_class %}login{% endblock %}
6
7{% block menu %}{% endblock %}
8{% block messages %}{% endblock %}
9
10{% block content %}
11 {{ form_start(form) }}
12 <fieldset class="w500p center">
13 <h2 class="mbs txtcenter">{% trans %}create an account{% endtrans %}</h2>
14 {% include "FOSUserBundle:Registration:register_content.html.twig" %}
15 </fieldset>
16 </form>
17{% endblock %}
18
19{% block footer %}
20{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig
deleted file mode 100644
index 41f94006..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Registration/register_content.html.twig
+++ /dev/null
@@ -1,37 +0,0 @@
1{% trans_default_domain 'FOSUserBundle' %}
2
3{{ form_widget(form._token) }}
4
5{% for flashMessage in app.session.flashbag.get('notice') %}
6 <span><p>{{ flashMessage }}</p></span>
7{% endfor %}
8
9<div class="row">
10 {{ form_errors(form.email) }}
11 {{ form_label(form.email) }}
12 {{ form_widget(form.email) }}
13</div>
14
15<div class="row">
16 {{ form_errors(form.username) }}
17 {{ form_label(form.username) }}
18 {{ form_widget(form.username) }}
19</div>
20
21<div class="row">
22 {{ form_errors(form.plainPassword.first) }}
23 {{ form_label(form.plainPassword.first) }}
24 {{ form_widget(form.plainPassword.first) }}
25</div>
26
27<div class="row">
28 {{ form_errors(form.plainPassword.second) }}
29 {{ form_label(form.plainPassword.second) }}
30 {{ form_widget(form.plainPassword.second) }}
31</div>
32
33
34<div class="row mts txtcenter">
35 <button type="submit">{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}</button>
36 <a href="{{ path('fos_user_security_login') }}" class="button">{% trans %}Login{% endtrans %}</a>
37</div>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig
deleted file mode 100644
index 056d65b5..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/checkEmail.html.twig
+++ /dev/null
@@ -1,17 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{% trans %}Forgot password{% endtrans %}{% endblock %}
4
5{% block body_class %}login{% endblock %}
6
7{% block menu %}{% endblock %}
8
9{% block content %}
10 <form>
11 <fieldset class="w500p center">
12 <h2 class="mbs txtcenter">{% trans %}Forgot password{% endtrans %}</h2>
13
14 <p>{{ 'An email has been sent to %email%. It contains a link you must click to reset your password.'|trans({'%email%': email}) }}</p>
15 </fieldset>
16 </form>
17{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig
deleted file mode 100644
index 10094e83..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request.html.twig
+++ /dev/null
@@ -1,20 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{% trans %}Forgot password{% endtrans %}{% endblock %}
4
5{% block body_class %}login{% endblock %}
6
7{% block menu %}{% endblock %}
8{% block messages %}{% endblock %}
9
10{% block content %}
11 <form action="{{ path('fos_user_resetting_send_email') }}" method="post" name="forgotPasswordform">
12 <fieldset class="w500p center">
13 <h2 class="mbs txtcenter">{% trans %}Forgot password{% endtrans %}</h2>
14 {% include "FOSUserBundle:Resetting:request_content.html.twig" %}
15 </fieldset>
16 </form>
17{% endblock %}
18
19{% block footer %}
20{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig
deleted file mode 100644
index 1f8da8d7..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Resetting/request_content.html.twig
+++ /dev/null
@@ -1,17 +0,0 @@
1{% trans_default_domain 'FOSUserBundle' %}
2
3{% trans %}Enter your email address below and we'll send you password reset instructions.{% endtrans %}
4
5{% if invalid_username is defined %}
6 <p>{{ 'resetting.request.invalid_username'|trans({'%username%': invalid_username}) }}</p>
7{% endif %}
8
9<div class="row">
10 <label for="username">{{ 'resetting.request.username'|trans }}</label>
11 <input type="text" id="username" name="username" required="required" />
12</div>
13
14<div class="row mts txtcenter">
15 <button type="submit">{{ 'resetting.request.submit'|trans }}</button>
16 <a href="{{ path('fos_user_security_login') }}" class="button">{% trans %}Login{% endtrans %}</a>
17</div>
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig
deleted file mode 100644
index d52c3662..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/Security/login.html.twig
+++ /dev/null
@@ -1,33 +0,0 @@
1{% extends "FOSUserBundle::layout.html.twig" %}
2
3{% block fos_user_content %}
4 <form action="{{ path('fos_user_security_check') }}" method="post" name="loginform">
5 <fieldset class="w500p center">
6 <h2 class="mbs txtcenter">{% trans %}Login to wallabag{% endtrans %}</h2>
7 {% if error %}
8 <div>{{ error.message }}</div>
9 {% endif %}
10
11 {% for flashMessage in app.session.flashbag.get('notice') %}
12 <p>{{ flashMessage }}</p>
13 {% endfor %}
14
15 <div class="row">
16 <label class="col w150p" for="username">{% trans %}Username{% endtrans %}</label>
17 <input type="text" id="username" name="_username" value="{{ last_username }}" />
18 </div>
19
20 <div class="row">
21 <label class="col w150p" for="password">{% trans %}Password{% endtrans %}</label>
22 <input type="password" id="password" name="_password" />
23 </div>
24
25 <div class="row mts txtcenter">
26 <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
27 <button type="submit">Login</button>
28 <a href="{{ path('fos_user_registration_register') }}" class="button">{% trans %}Register{% endtrans %}</a>
29 <a href="{{ path('fos_user_resetting_request') }}" class="small">Forgot your password?</a>
30 </div>
31 </fieldset>
32 </form>
33{% endblock %}
diff --git a/src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig
deleted file mode 100644
index 60b321bf..00000000
--- a/src/Wallabag/UserBundle/Resources/views/themes/baggy/layout.html.twig
+++ /dev/null
@@ -1,16 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title %}{% trans %}Welcome to wallabag!{% endtrans %}{% endblock %}
4
5{% block body_class %}login{% endblock %}
6
7{% block menu %}{% endblock %}
8{% block messages %}{% endblock %}
9
10{% block content %}
11 {% block fos_user_content %}
12 {% endblock fos_user_content %}
13{% endblock %}
14
15{% block footer %}
16{% endblock %}