mirror of
https://github.com/wallabag/wallabag.git
synced 2025-09-15 18:57:05 +00:00
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>`
This commit is contained in:
parent
d2b4f01d74
commit
0d42217e4e
80 changed files with 1145 additions and 868 deletions
|
@ -40,7 +40,7 @@ class Config
|
|||
* @Assert\Range(
|
||||
* min = 1,
|
||||
* max = 100000,
|
||||
* maxMessage = "This will certainly kill the app"
|
||||
* maxMessage = "validator.item_per_page_too_high"
|
||||
* )
|
||||
* @ORM\Column(name="items_per_page", type="integer", nullable=false)
|
||||
*/
|
||||
|
@ -68,7 +68,7 @@ class Config
|
|||
* @Assert\Range(
|
||||
* min = 1,
|
||||
* max = 100000,
|
||||
* maxMessage = "This will certainly kill the app"
|
||||
* maxMessage = "validator.rss_limit_too_hight"
|
||||
* )
|
||||
*/
|
||||
private $rssLimit;
|
||||
|
|
|
@ -16,23 +16,27 @@ class ChangePasswordType extends AbstractType
|
|||
{
|
||||
$builder
|
||||
->add('old_password', PasswordType::class, array(
|
||||
'constraints' => new UserPassword(array('message' => 'Wrong value for your current password')),
|
||||
'constraints' => new UserPassword(array('message' => 'validator.password_wrong_value')),
|
||||
'label' => 'config.form_password.old_password_label',
|
||||
))
|
||||
->add('new_password', RepeatedType::class, array(
|
||||
'type' => PasswordType::class,
|
||||
'invalid_message' => 'The password fields must match.',
|
||||
'invalid_message' => 'validator.password_must_match',
|
||||
'required' => true,
|
||||
'first_options' => array('label' => 'New password'),
|
||||
'second_options' => array('label' => 'Repeat new password'),
|
||||
'first_options' => array('label' => 'config.form_password.new_password_label'),
|
||||
'second_options' => array('label' => 'config.form_password.repeat_new_password_label'),
|
||||
'constraints' => array(
|
||||
new Constraints\Length(array(
|
||||
'min' => 8,
|
||||
'minMessage' => 'Password should by at least 8 chars long',
|
||||
'minMessage' => 'validator.password_too_short',
|
||||
)),
|
||||
new Constraints\NotBlank(),
|
||||
),
|
||||
'label' => 'config.form_password.new_password_label',
|
||||
))
|
||||
->add('save', SubmitType::class, array(
|
||||
'label' => 'config.form.save',
|
||||
))
|
||||
->add('save', SubmitType::class)
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,9 +33,13 @@ class ConfigType extends AbstractType
|
|||
->add('theme', ChoiceType::class, array(
|
||||
'choices' => array_flip($this->themes),
|
||||
'choices_as_values' => true,
|
||||
'label' => 'config.form_settings.theme_label',
|
||||
))
|
||||
->add('items_per_page', null, array(
|
||||
'label' => 'config.form_settings.items_per_page_label',
|
||||
))
|
||||
->add('items_per_page')
|
||||
->add('reading_speed', ChoiceType::class, array(
|
||||
'label' => 'config.form_settings.reading_speed',
|
||||
'choices' => array(
|
||||
'I read ~100 words per minute' => '0.5',
|
||||
'I read ~200 words per minute' => '1',
|
||||
|
@ -46,8 +50,11 @@ class ConfigType extends AbstractType
|
|||
->add('language', ChoiceType::class, array(
|
||||
'choices' => array_flip($this->languages),
|
||||
'choices_as_values' => true,
|
||||
'label' => 'config.form_settings.language_label',
|
||||
))
|
||||
->add('save', SubmitType::class, array(
|
||||
'label' => 'config.form.save',
|
||||
))
|
||||
->add('save', SubmitType::class)
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,9 +14,22 @@ class EditEntryType extends AbstractType
|
|||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('title', TextType::class, array('required' => true))
|
||||
->add('is_public', CheckboxType::class, array('required' => false))
|
||||
->add('save', SubmitType::class)
|
||||
->add('title', TextType::class, array(
|
||||
'required' => true,
|
||||
'label' => 'entry.edit.title_label',
|
||||
))
|
||||
->add('is_public', CheckboxType::class, array(
|
||||
'required' => false,
|
||||
'label' => 'entry.edit.is_public_label',
|
||||
))
|
||||
->add('url', TextType::class, array(
|
||||
'disabled' => true,
|
||||
'required' => false,
|
||||
'label' => 'entry.edit.url_label',
|
||||
))
|
||||
->add('save', SubmitType::class, array(
|
||||
'label' => 'entry.edit.save_label',
|
||||
))
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,9 @@ class EntryFilterType extends AbstractType
|
|||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('readingTime', NumberRangeFilterType::class)
|
||||
->add('readingTime', NumberRangeFilterType::class, array(
|
||||
'label' => 'entry.filters.reading_time.label',
|
||||
))
|
||||
->add('createdAt', DateRangeFilterType::class, array(
|
||||
'left_date_options' => array(
|
||||
'attr' => array(
|
||||
|
@ -50,6 +52,7 @@ class EntryFilterType extends AbstractType
|
|||
'format' => 'dd/MM/yyyy',
|
||||
'widget' => 'single_text',
|
||||
),
|
||||
'label' => 'entry.filters.created_at.label',
|
||||
)
|
||||
)
|
||||
->add('domainName', TextFilterType::class, array(
|
||||
|
@ -62,9 +65,14 @@ class EntryFilterType extends AbstractType
|
|||
|
||||
return $filterQuery->createCondition($expression);
|
||||
},
|
||||
'label' => 'entry.filters.domain_label',
|
||||
))
|
||||
->add('isArchived', CheckboxFilterType::class, array(
|
||||
'label' => 'entry.filters.archived_label',
|
||||
))
|
||||
->add('isStarred', CheckboxFilterType::class, array(
|
||||
'label' => 'entry.filters.starred_label',
|
||||
))
|
||||
->add('isArchived', CheckboxFilterType::class)
|
||||
->add('isStarred', CheckboxFilterType::class)
|
||||
->add('previewPicture', CheckboxFilterType::class, array(
|
||||
'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
|
||||
if (false === $values['value']) {
|
||||
|
@ -75,10 +83,12 @@ class EntryFilterType extends AbstractType
|
|||
|
||||
return $filterQuery->createCondition($expression);
|
||||
},
|
||||
'label' => 'entry.filters.preview_picture_label',
|
||||
))
|
||||
->add('language', ChoiceFilterType::class, array(
|
||||
'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())),
|
||||
'choices_as_values' => true,
|
||||
'label' => 'entry.filters.language_label',
|
||||
))
|
||||
;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
namespace Wallabag\CoreBundle\Form\Type;
|
||||
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\UrlType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
@ -13,8 +12,10 @@ class NewEntryType extends AbstractType
|
|||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('url', UrlType::class, array('required' => true))
|
||||
->add('save', SubmitType::class)
|
||||
->add('url', UrlType::class, array(
|
||||
'required' => true,
|
||||
'label' => 'entry.new.form_new.url_label',
|
||||
))
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
namespace Wallabag\CoreBundle\Form\Type;
|
||||
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
@ -14,7 +13,6 @@ class NewTagType extends AbstractType
|
|||
{
|
||||
$builder
|
||||
->add('label', TextType::class, array('required' => true))
|
||||
->add('save', SubmitType::class)
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,22 +17,30 @@ class NewUserType extends AbstractType
|
|||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('username', TextType::class, array('required' => true))
|
||||
->add('username', TextType::class, array(
|
||||
'required' => true,
|
||||
'label' => 'config.form_new_user.username_label',
|
||||
))
|
||||
->add('plainPassword', RepeatedType::class, array(
|
||||
'type' => PasswordType::class,
|
||||
'invalid_message' => 'The password fields must match',
|
||||
'first_options' => array('label' => 'Password'),
|
||||
'second_options' => array('label' => 'Repeat new password'),
|
||||
'invalid_message' => 'validator.password_must_match',
|
||||
'first_options' => array('label' => 'config.form_new_user.password_label'),
|
||||
'second_options' => array('label' => 'config.form_new_user.repeat_new_password_label'),
|
||||
'constraints' => array(
|
||||
new Constraints\Length(array(
|
||||
'min' => 8,
|
||||
'minMessage' => 'Password should by at least 8 chars long',
|
||||
'minMessage' => 'validator.password_too_short',
|
||||
)),
|
||||
new Constraints\NotBlank(),
|
||||
),
|
||||
'label' => 'config.form_new_user.plain_password_label',
|
||||
))
|
||||
->add('email', EmailType::class, array(
|
||||
'label' => 'config.form_new_user.email_label',
|
||||
))
|
||||
->add('save', SubmitType::class, array(
|
||||
'label' => 'config.form.save',
|
||||
))
|
||||
->add('email', EmailType::class)
|
||||
->add('save', SubmitType::class)
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,8 +12,12 @@ class RssType extends AbstractType
|
|||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('rss_limit')
|
||||
->add('save', SubmitType::class)
|
||||
->add('rss_limit', null, array(
|
||||
'label' => 'config.form_rss.rss_limit',
|
||||
))
|
||||
->add('save', SubmitType::class, array(
|
||||
'label' => 'config.form.save',
|
||||
))
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,12 +14,19 @@ class TaggingRuleType extends AbstractType
|
|||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('rule', TextType::class, array('required' => true))
|
||||
->add('save', SubmitType::class)
|
||||
->add('rule', TextType::class, array(
|
||||
'required' => true,
|
||||
'label' => 'config.form_rules.rule_label',
|
||||
))
|
||||
->add('save', SubmitType::class, array(
|
||||
'label' => 'config.form.save',
|
||||
))
|
||||
;
|
||||
|
||||
$tagsField = $builder
|
||||
->create('tags', TextType::class)
|
||||
->create('tags', TextType::class, array(
|
||||
'label' => 'config.form_rules.tags_label',
|
||||
))
|
||||
->addModelTransformer(new StringToListTransformer(','));
|
||||
|
||||
$builder->add($tagsField);
|
||||
|
|
|
@ -15,10 +15,19 @@ class UserInformationType extends AbstractType
|
|||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('name', TextType::class)
|
||||
->add('email', EmailType::class)
|
||||
->add('twoFactorAuthentication', CheckboxType::class, array('required' => false))
|
||||
->add('save', SubmitType::class)
|
||||
->add('name', TextType::class, array(
|
||||
'label' => 'config.form_user.name_label',
|
||||
))
|
||||
->add('email', EmailType::class, array(
|
||||
'label' => 'config.form_user.email_label',
|
||||
))
|
||||
->add('twoFactorAuthentication', CheckboxType::class, array(
|
||||
'required' => false,
|
||||
'label' => 'config.form_user.twoFactorAuthentication_label',
|
||||
))
|
||||
->add('save', SubmitType::class, array(
|
||||
'label' => 'config.form.save',
|
||||
))
|
||||
->remove('username')
|
||||
->remove('plainPassword')
|
||||
;
|
||||
|
|
334
src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
Normal file
334
src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
Normal file
|
@ -0,0 +1,334 @@
|
|||
security:
|
||||
login:
|
||||
page_title: 'Welcome to wallabag!'
|
||||
keep_logged_in: 'Keep me logged in'
|
||||
forgot_password: 'Forgot your password?'
|
||||
submit: 'Login'
|
||||
register: 'Register'
|
||||
username: 'Username'
|
||||
password: 'Password'
|
||||
cancel: 'Cancel'
|
||||
resetting:
|
||||
description: "Enter your email address below and we'll send you password reset instructions."
|
||||
register:
|
||||
page_title: 'Create an account'
|
||||
go_to_account: 'Go to your account'
|
||||
|
||||
menu:
|
||||
left:
|
||||
unread: 'Unread'
|
||||
starred: 'Starred'
|
||||
archive: 'Archive'
|
||||
all_articles: 'All entries'
|
||||
config: 'Config'
|
||||
tags: 'Tags'
|
||||
internal_settings: 'Internal Settings'
|
||||
import: 'Import'
|
||||
howto: 'How to'
|
||||
developer: 'Developer'
|
||||
logout: 'Logout'
|
||||
about: 'About'
|
||||
search: 'Search'
|
||||
save_link: 'Save a link'
|
||||
back_to_unread: 'Back to unread articles'
|
||||
top:
|
||||
add_new_entry: 'Add a new entry'
|
||||
search: 'Search'
|
||||
filter_entries: 'Filter entries'
|
||||
export: 'Export'
|
||||
search_form:
|
||||
input_label: 'Enter your search here'
|
||||
|
||||
footer:
|
||||
wallabag:
|
||||
elsewhere: 'Take wallabag with you'
|
||||
social: 'Social'
|
||||
powered_by: 'powered by'
|
||||
about: 'About'
|
||||
|
||||
config:
|
||||
page_title: Config
|
||||
tab_menu:
|
||||
settings: 'Settings'
|
||||
rss: 'RSS'
|
||||
user_info: 'User information'
|
||||
password: 'Password'
|
||||
rules: 'Tagging rules'
|
||||
new_user: 'Add a user'
|
||||
form:
|
||||
save: 'Save'
|
||||
form_settings:
|
||||
theme_label: 'Theme'
|
||||
items_per_page_label: 'Items per page'
|
||||
language_label: 'Language'
|
||||
form_rss:
|
||||
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.'
|
||||
token_label: 'RSS token'
|
||||
no_token: 'No token'
|
||||
token_create: 'Create your token'
|
||||
token_reset: 'Regenerate your token'
|
||||
rss_links: 'RSS links'
|
||||
rss_link:
|
||||
unread: 'unread'
|
||||
starred: 'starred'
|
||||
archive: 'archived'
|
||||
rss_limit: 'Number of items in the feed'
|
||||
form_user:
|
||||
two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion"
|
||||
name_label: 'Name'
|
||||
email_label: 'Email'
|
||||
twoFactorAuthentication_label: 'Two factor authentication'
|
||||
form_password:
|
||||
old_password_label: 'Current password'
|
||||
new_password_label: 'New password'
|
||||
repeat_new_password_label: 'Repeat new password'
|
||||
form_rules:
|
||||
if_label: 'if'
|
||||
then_tag_as_label: 'then tag as'
|
||||
delete_rule_label: 'delete'
|
||||
rule_label: 'Rule'
|
||||
tags_label: 'Tags'
|
||||
faq:
|
||||
title: 'FAQ'
|
||||
tagging_rules_definition_title: 'What does « tagging rules » mean?'
|
||||
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.'
|
||||
how_to_use_them_title: 'How do I use them?'
|
||||
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 <= 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 >= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
|
||||
variables_available_title: 'Which variables and operators can I use to write rules?'
|
||||
variables_available_description: 'The following variables and operators can be used to create tagging rules:'
|
||||
meaning: 'Meaning'
|
||||
variable_description:
|
||||
label: 'Variable'
|
||||
title: 'Title of the entry'
|
||||
url: 'URL of the entry'
|
||||
isArchived: 'Whether the entry is archived or not'
|
||||
isStarred: 'Whether the entry is starred or not'
|
||||
content: "The entry's content"
|
||||
language: "The entry's language"
|
||||
mimetype: "The entry's mime-type"
|
||||
readingTime: "The estimated entry's reading time, in minutes"
|
||||
domainName: 'The domain name of the entry'
|
||||
operator_description:
|
||||
label: 'Operator'
|
||||
less_than: 'Less than...'
|
||||
strictly_less_than: 'Strictly less than...'
|
||||
greater_than: 'Greater than...'
|
||||
strictly_greater_than: 'Strictly greater than...'
|
||||
equal_to: 'Equal to...'
|
||||
not_equal_to: 'Not equal to...'
|
||||
or: 'One rule OR another'
|
||||
and: 'One rule AND another'
|
||||
matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>'
|
||||
form_new_user:
|
||||
username_label: 'Username'
|
||||
password_label: 'Password'
|
||||
repeat_new_password_label: 'Repeat new password'
|
||||
plain_password_label: '????'
|
||||
email_label: 'Email'
|
||||
|
||||
entry:
|
||||
page_titles:
|
||||
unread: 'Unread entries'
|
||||
starred: 'Starred entries'
|
||||
archive: 'Archived entries'
|
||||
filtered: 'Filtered entries'
|
||||
list:
|
||||
number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.'
|
||||
reading_time: 'estimated reading time'
|
||||
reading_time_minutes: 'estimated reading time: %readingTime% min'
|
||||
reading_time_less_one_minute: 'estimated reading time: <small class="inferieur"><</small> 1 min'
|
||||
original_article: 'original'
|
||||
toogle_as_read: 'Toggle mark as read'
|
||||
toogle_as_star: 'Toggle favorite'
|
||||
delete: 'Delete'
|
||||
export_title: 'Export'
|
||||
filters:
|
||||
title: 'Filters'
|
||||
status_label: 'Status'
|
||||
archived_label: 'Archived'
|
||||
starred_label: 'Starred'
|
||||
preview_picture_label: 'Has a preview picture'
|
||||
preview_picture_help: 'Preview picture'
|
||||
language_label: 'Language'
|
||||
reading_time:
|
||||
label: 'Reading time in minutes'
|
||||
from: 'from'
|
||||
to: 'to'
|
||||
domain_label: 'Domain name'
|
||||
created_at:
|
||||
label: 'Creation date'
|
||||
from: 'from'
|
||||
to: 'to'
|
||||
action:
|
||||
clear: 'Clear'
|
||||
filter: 'Filter'
|
||||
view:
|
||||
left_menu:
|
||||
back_to_top: 'Back to top'
|
||||
back_to_homepage: 'Back'
|
||||
set_as_read: 'Mark as read'
|
||||
set_as_unread: 'Mark as unread'
|
||||
set_as_favorite: 'Favorite'
|
||||
view_original_article: 'Orignal article'
|
||||
re_fetch_content: 'Re-fetch content'
|
||||
delete: 'Delete'
|
||||
add_a_tag: 'Add a tag'
|
||||
share_content: 'Share'
|
||||
share_email_label: 'Email'
|
||||
download: 'Download'
|
||||
print: 'Print'
|
||||
problem:
|
||||
label: 'Problems?'
|
||||
description: 'Does this article appear wrong?'
|
||||
edit_title: 'Edit title'
|
||||
original_article: 'original'
|
||||
annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
|
||||
new:
|
||||
page_title: 'Save new entry'
|
||||
placeholder: 'http://website.com'
|
||||
form_new:
|
||||
url_label: Url
|
||||
edit:
|
||||
page_title: 'Edit an entry'
|
||||
title_label: 'Title'
|
||||
url_label: 'Url'
|
||||
is_public_label: 'Public'
|
||||
save_label: 'Save'
|
||||
|
||||
about:
|
||||
page_title: 'About'
|
||||
top_menu:
|
||||
who_behind_wallabag: 'Who is behind wallabag'
|
||||
getting_help: 'Getting help'
|
||||
helping: 'Helping wallabag'
|
||||
contributors: 'Contributors'
|
||||
third_party: 'Third-party libraries'
|
||||
who_behind_wallabag:
|
||||
developped_by: 'Developed by'
|
||||
website: 'website'
|
||||
many_contributors: 'And many others contributors ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">on Github</a>'
|
||||
on_github: 'on GitHub'
|
||||
project_website: 'Project website'
|
||||
license: 'License'
|
||||
version: 'Version'
|
||||
getting_help:
|
||||
documentation: 'Documentation'
|
||||
bug_reports: 'Bug reports'
|
||||
support: '<a href="https://support.wallabag.org">On our support website</a> or <a href="https://github.com/wallabag/wallabag/issues">on GitHub</a>'
|
||||
helping:
|
||||
description: 'wallabag is free and opensource. You can help us:'
|
||||
by_contributing: 'by contributing to the project:'
|
||||
by_contributing_2: 'an issue lists all our needs'
|
||||
by_paypal: 'via Paypal'
|
||||
contributors:
|
||||
description: 'Thank you to contributors on wallabag web application'
|
||||
third_party:
|
||||
description: 'Here are the list of third-party libraries used in wallabag (with their licenses):'
|
||||
package: 'Package'
|
||||
license: 'License'
|
||||
|
||||
howto:
|
||||
page_title: 'How to'
|
||||
page_description: 'There are several ways to save an article:'
|
||||
top_menu:
|
||||
browser_addons: 'Browser addons'
|
||||
mobile_apps: 'Mobile apps'
|
||||
bookmarklet: 'Bookmarklet'
|
||||
form:
|
||||
description: 'Thanks to this form'
|
||||
browser_addons:
|
||||
firefox: 'Standard Firefox Add-On'
|
||||
chrome: 'Chrome Extension'
|
||||
mobile_apps:
|
||||
android:
|
||||
via_f_droid: 'via F-Droid'
|
||||
via_google_play: 'via Google Play'
|
||||
ios: 'on the iTunes Store'
|
||||
windows: 'on the Microsoft Store'
|
||||
bookmarklet:
|
||||
description: 'Drag & drop this link to your bookmarks bar:'
|
||||
|
||||
quickstart:
|
||||
page_title: 'Quickstart'
|
||||
intro:
|
||||
title: 'Welcome to wallabag!'
|
||||
paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interess you."
|
||||
paragraph_2: 'Follow us!'
|
||||
configure:
|
||||
title: 'Configure the application'
|
||||
language: 'Change language and design'
|
||||
rss: 'Enable RSS feeds'
|
||||
tagging_rules: 'Write rules to automatically tag your articles'
|
||||
admin:
|
||||
title: 'Administration'
|
||||
description: 'As a administrator, you have privileges on wallabag. You can:'
|
||||
new_user: 'Create a new user'
|
||||
analytics: 'Configure analytics'
|
||||
sharing: 'Enable some parameters about article sharing'
|
||||
export: 'Configure export'
|
||||
import: 'Configure import'
|
||||
first_steps:
|
||||
title: 'First steps'
|
||||
new_article: 'Save your first article'
|
||||
unread_articles: 'And classify it!'
|
||||
migrate:
|
||||
title: 'Migrate from an existing service'
|
||||
description: "You're using an other service? We'll help you to retrieve your data on wallabag."
|
||||
pocket: 'Migrate from Pocket'
|
||||
wallabag_v1: 'Migrate from wallabag v1'
|
||||
wallabag_v2: 'Migrate from wallabag v2'
|
||||
developer:
|
||||
title: 'Developers'
|
||||
create_application: 'Create your third application'
|
||||
docs:
|
||||
title: 'Full documentation'
|
||||
annotate: 'Annotate your article'
|
||||
export: 'Convert your articles into ePUB or PDF'
|
||||
search_filters: 'See how you can look for an article by using search engine and filters'
|
||||
fetching_errors: 'What can I do if an article encounters errors during fetching?'
|
||||
all_docs: 'And so many other articles!'
|
||||
support:
|
||||
title: 'Support'
|
||||
description: 'If you need some help, we are here for you.'
|
||||
github: 'On GitHub'
|
||||
email: 'By email'
|
||||
gitter: 'On Gitter'
|
||||
|
||||
tag:
|
||||
page_title: 'Tags'
|
||||
list:
|
||||
number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.'
|
||||
|
||||
import:
|
||||
page_title: 'Import'
|
||||
page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.'
|
||||
action:
|
||||
import_contents: 'Import contents'
|
||||
form:
|
||||
mark_as_read_title: 'Mark all as read?'
|
||||
mark_as_read_label: 'Mark all imported entries as read'
|
||||
file_label: 'File'
|
||||
save_label: 'Upload file'
|
||||
pocket:
|
||||
page_title: 'Import > Pocket'
|
||||
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."
|
||||
config_missing:
|
||||
description: "Pocket import isn't configured."
|
||||
admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.'
|
||||
user_message: 'Your server admin needs to define an API Key for Pocket.'
|
||||
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.'
|
||||
connect_to_pocket: 'Connect to Pocket and import data'
|
||||
wallabag_v1:
|
||||
page_title: 'Import > Wallabag v1'
|
||||
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.'
|
||||
how_to: 'Please select your wallabag export and click on the below button to upload and import it.'
|
||||
wallabag_v2:
|
||||
page_title: 'Import > Wallabag v2'
|
||||
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.'
|
||||
|
||||
validator:
|
||||
password_must_match: 'The password fields must match.'
|
||||
password_too_short: 'Password should by at least 8 chars long'
|
||||
password_wrong_value: 'Wrong value for your current password'
|
||||
item_per_page_too_high: 'This will certainly kill the app'
|
||||
rss_limit_too_hight: 'This will certainly kill the app'
|
|
@ -1,11 +1,14 @@
|
|||
#Login
|
||||
Keep me logged in: 'Rester connecté'
|
||||
Forgot your password?: 'Mot de passe oublié ?'
|
||||
Login: 'Se connecter'
|
||||
Back to login: 'Revenir au formulaire de connexion'
|
||||
Send: 'Envoyer'
|
||||
"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."
|
||||
Register: 'Créer un compte'
|
||||
security:
|
||||
login:
|
||||
keep_logged_in: 'Rester connecté'
|
||||
forgot_password: 'Mot de passe oublié ?'
|
||||
submit: 'Se connecter'
|
||||
register: 'Créer un compte'
|
||||
username: "Nom d'utilisateur"
|
||||
password: 'Mot de passe'
|
||||
resetting:
|
||||
description: 'Saisissez votre adresse e-mail ci-dessous, nous vous enverrons les instructions pour réinitialiser votre mot de passe.'
|
||||
|
||||
# Menu
|
||||
unread: 'Non lus'
|
||||
|
@ -33,7 +36,6 @@ Export: Exporter
|
|||
# Config screen
|
||||
Settings: 'Paramètres'
|
||||
User information: 'Mon compte'
|
||||
Password: 'Mot de passe'
|
||||
RSS: 'RSS'
|
||||
Add a user: 'Créer un compte'
|
||||
Theme: 'Thème'
|
||||
|
@ -54,7 +56,6 @@ RSS links: 'URL de vos flux RSS'
|
|||
Old password: 'Mot de passe actuel'
|
||||
New password: 'Nouveau mot de passe'
|
||||
Repeat new password: 'Confirmez votre nouveau mot de passe'
|
||||
Username: "Nom d'utilisateur"
|
||||
Two factor authentication: "Double authentification"
|
||||
"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."
|
||||
"I read ~100 words per minute": "Je lis environ 100 mots par minute"
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}Config{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>{% trans %}Wallabag configuration{% endtrans %}</h2>
|
||||
<h2>{{ 'config.tab_menu.settings'|trans }}</h2>
|
||||
|
||||
{{ form_start(form.config) }}
|
||||
{{ form_errors(form.config) }}
|
||||
|
@ -44,13 +44,13 @@
|
|||
{{ form_rest(form.config) }}
|
||||
</form>
|
||||
|
||||
<h2>{% trans %}RSS configuration{% endtrans %}</h2>
|
||||
<h2>{{ 'config.tab_menu.rss'|trans }}</h2>
|
||||
|
||||
{{ form_start(form.rss) }}
|
||||
{{ form_errors(form.rss) }}
|
||||
|
||||
<div class="row">
|
||||
{% trans %}RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader.{% endtrans %}
|
||||
{{ 'config.form_rss.description'|trans }}
|
||||
</div>
|
||||
|
||||
<fieldset class="w500p inline">
|
||||
|
@ -59,27 +59,31 @@
|
|||
{% if rss.token %}
|
||||
{{ rss.token }}
|
||||
{% else %}
|
||||
<em>No token</em>
|
||||
<em>{{ 'config.form_rss.no_token'|trans }}</em>
|
||||
{% endif %}
|
||||
–
|
||||
<a href="{{ path('generate_token') }}">Regenerate ?</a>
|
||||
<a href="{{ path('generate_token') }}">
|
||||
{% if rss.token %}
|
||||
{{ 'config.form_rss.token_reset'|trans }}
|
||||
{% else %}
|
||||
{{ 'config.form_rss.token_create'|trans }}
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
{% if rss.token %}
|
||||
<fieldset class="w500p inline">
|
||||
<div class="row">
|
||||
<label>Rss links:</label>
|
||||
{% if rss.token %}
|
||||
<ul>
|
||||
<li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">unread</a></li>
|
||||
<li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">fav</a></li>
|
||||
<li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">archives</a></li>
|
||||
</ul>
|
||||
{% else %}
|
||||
<strong>You need to generate a token first.</strong>
|
||||
{% endif %}
|
||||
<label>{{ 'config.form_rss.rss_links'|trans }}</label>
|
||||
<ul>
|
||||
<li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">unread</a></li>
|
||||
<li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">fav</a></li>
|
||||
<li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">archives</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</fieldset>
|
||||
{% endif %}
|
||||
|
||||
<fieldset class="w500p inline">
|
||||
<div class="row">
|
||||
|
@ -92,7 +96,7 @@
|
|||
{{ form_rest(form.rss) }}
|
||||
</form>
|
||||
|
||||
<h2>{% trans %}User information{% endtrans %}</h2>
|
||||
<h2>{{ 'config.tab_menu.user_info'|trans }}</h2>
|
||||
|
||||
{{ form_start(form.user) }}
|
||||
{{ form_errors(form.user) }}
|
||||
|
@ -115,7 +119,7 @@
|
|||
|
||||
{% if twofactor_auth %}
|
||||
<div class="row">
|
||||
{% trans %}Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion{% endtrans %}
|
||||
{{ 'config.form_user.two_factor_description'|trans }}
|
||||
</div>
|
||||
|
||||
<fieldset class="w500p inline">
|
||||
|
@ -130,7 +134,7 @@
|
|||
{{ form_rest(form.user) }}
|
||||
</form>
|
||||
|
||||
<h2>{% trans %}Change your password{% endtrans %}</h2>
|
||||
<h2>{{ 'config.tab_menu.password'|trans }}</h2>
|
||||
|
||||
{{ form_start(form.pwd) }}
|
||||
{{ form_errors(form.pwd) }}
|
||||
|
@ -162,13 +166,16 @@
|
|||
{{ form_rest(form.pwd) }}
|
||||
</form>
|
||||
|
||||
<h2>{% trans %}Tagging rules{% endtrans %}</h2>
|
||||
<h2>{{ 'config.tab_menu.rules'|trans }}}</h2>
|
||||
|
||||
<ul>
|
||||
{% for tagging_rule in app.user.config.taggingRules %}
|
||||
<li>
|
||||
if « {{ tagging_rule.rule }} » then tag as « {{ tagging_rule.tags|join(', ') }} »
|
||||
<a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{% trans %}Delete{% endtrans %}" class="tool delete icon-trash icon"></a>
|
||||
{{ 'config.form_rules.if_label'|trans }}
|
||||
« {{ tagging_rule.rule }} »
|
||||
{{ 'config.form_rules.then_tag_as_label'|trans }}
|
||||
« {{ tagging_rule.tags|join(', ') }} »
|
||||
<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>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
@ -196,7 +203,7 @@
|
|||
</form>
|
||||
|
||||
{% if is_granted('ROLE_SUPER_ADMIN') %}
|
||||
<h2>{% trans %}Add a user{% endtrans %}</h2>
|
||||
<h2>{{ 'config.tab_menu.new_user'|trans }}</h2>
|
||||
|
||||
{{ form_start(form.new_user) }}
|
||||
{{ form_errors(form.new_user) }}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}Edit an entry{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ form(form) }}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title "Unread" %}
|
||||
{% block title %}{{ 'entry.page_titles.unread'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% block pager %}
|
||||
<div class="results">
|
||||
<div class="nb-results">{{ entries.count }} {% trans %}entries{% endtrans %}</div>
|
||||
<div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
|
||||
<div class="pagination">
|
||||
<a href="#" id="filter">{% trans %}Filter{% endtrans %}</a>
|
||||
<a href="#" id="filter">{{ 'entry.filters.title'|trans }}</a>
|
||||
{% if entries is not empty %}
|
||||
–
|
||||
{% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
|
||||
|
@ -20,68 +20,64 @@
|
|||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% if entries is empty %}
|
||||
<div class="messages warning"><p>{% trans %}No articles found.{% endtrans %}</p></div>
|
||||
{% else %}
|
||||
{% for entry in entries %}
|
||||
<div id="entry-{{ entry.id|e }}" class="entry">
|
||||
<h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
|
||||
{% if entry.readingTime > 0 %}
|
||||
<div class="estimatedTime">
|
||||
<span class="tool reading-time">
|
||||
{% trans with {'%readingTime%': entry.readingTime } %}estimated reading time: %readingTime% min{% endtrans %}
|
||||
</span>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="estimatedTime">
|
||||
<span class="tool reading-time">
|
||||
{% trans with {'%inferior%': '<small class="inferieur"><</small>'} %}estimated reading time: %inferior% 1 min{% endtrans %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% for entry in entries %}
|
||||
<div id="entry-{{ entry.id|e }}" class="entry">
|
||||
<h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
|
||||
{% if entry.readingTime > 0 %}
|
||||
<div class="estimatedTime">
|
||||
<span class="tool reading-time">
|
||||
{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
|
||||
</span>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="estimatedTime">
|
||||
<span class="tool reading-time">
|
||||
{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<ul class="tools links">
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</ul>
|
||||
{% if entry.previewPicture is null %}
|
||||
<p>{{ entry.content|striptags|slice(0, 300) }}…</p>
|
||||
{% else %}
|
||||
<img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" />
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<ul class="tools links">
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</ul>
|
||||
{% if entry.previewPicture is null %}
|
||||
<p>{{ entry.content|striptags|slice(0, 300) }}…</p>
|
||||
{% else %}
|
||||
<img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" />
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<aside id="filter-form" class="">
|
||||
<form method="get" action="{{ path('all') }}">
|
||||
<h2>{% trans %}Filters{% endtrans %}</h2>
|
||||
<h2>{{ 'entry.filters.title'|trans }}</h2>
|
||||
<a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">×</a>
|
||||
|
||||
<div id="filter-status" class="filter-group">
|
||||
<div class="">
|
||||
<label>{% trans %}Status{% endtrans %}</label>
|
||||
<label>{{ 'entry.filters.status_label'|trans }}</label>
|
||||
</div>
|
||||
<div class="input-field">
|
||||
{{ form_widget(form.isArchived) }}
|
||||
<label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label>
|
||||
{{ form_label(form.isArchived) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field">
|
||||
{{ form_widget(form.isStarred) }}
|
||||
<label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label>
|
||||
{{ form_label(form.isStarred) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field">
|
||||
{{ form_widget(form.previewPicture) }}
|
||||
<label for="entry_filter_previewPicture">{% trans %}Has a preview picture{% endtrans %}</label>
|
||||
{{ form_label(form.previewPicture) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="filter-language" class="filter-group">
|
||||
<label for="entry_filter_language">{% trans %}Language{% endtrans %}</label>
|
||||
{{ form_label(form.language) }}
|
||||
<div class="input-field ">
|
||||
{{ form_widget(form.language) }}
|
||||
</div>
|
||||
|
@ -89,20 +85,20 @@
|
|||
|
||||
<div id="filter-reading-time" class="filter-group">
|
||||
<div class="">
|
||||
<label>{% trans %}Reading time in minutes{% endtrans %}</label>
|
||||
{{ form_label(form.readingTime) }}
|
||||
</div>
|
||||
<div class="input-field ">
|
||||
<label for="entry_filter_readingTime_left_number">{% trans %}from{% endtrans %}</label>
|
||||
<label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
|
||||
{{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
|
||||
</div>
|
||||
<div class="input-field ">
|
||||
<label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label>
|
||||
<label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
|
||||
{{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="filter-domain-name" class="filter-group">
|
||||
<label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label>
|
||||
{{ form_label(form.domainName) }}
|
||||
<div class="input-field ">
|
||||
{{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
|
||||
</div>
|
||||
|
@ -110,26 +106,25 @@
|
|||
|
||||
<div id="filter-creation-date" class="filter-group">
|
||||
<div class="">
|
||||
<label>{% trans %}Creation date{% endtrans %}</label>
|
||||
{{ form_label(form.createdAt) }}
|
||||
</div>
|
||||
<div class="input-field ">
|
||||
<label for="entry_filter_createdAt_left_date" class="active">{% trans %}from{% endtrans %}</label>
|
||||
<label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
|
||||
{{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
|
||||
</div>
|
||||
<div class="input-field ">
|
||||
<label for="entry_filter_createdAt_right_date" class="active">{% trans %}to{% endtrans %}</label>
|
||||
<label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
|
||||
{{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="filter-buttons" class="filter-group">
|
||||
|
||||
<div class="">
|
||||
<a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{% trans %}Clear{% endtrans %}</a>
|
||||
<a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
|
||||
</div>
|
||||
|
||||
<button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{% trans %}Filters{% endtrans %}</button>
|
||||
|
||||
</div>
|
||||
<button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</aside>
|
||||
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
<description>
|
||||
<![CDATA[
|
||||
{%- if entry.readingTime > 0 -%}
|
||||
{% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min
|
||||
{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
|
||||
{%- else -%}
|
||||
{% trans %}estimated reading time :{% endtrans %} < 1 min
|
||||
{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
|
||||
{%- endif %}
|
||||
|
||||
{{ entry.content|raw -}}
|
||||
|
|
|
@ -5,32 +5,32 @@
|
|||
{% block content %}
|
||||
<div id="article">
|
||||
<header class="mbm">
|
||||
<h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{% trans %}Edit title{% endtrans %}">✎</a></h1>
|
||||
<h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
|
||||
</header>
|
||||
|
||||
<div id="article_toolbar">
|
||||
<ul class="links">
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<li><a id="nav-btn-add-tag" title="{% trans %}Add a tag{% endtrans %}"><span>{% trans %}Tag{% endtrans %}</span></a></li>
|
||||
<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>
|
||||
{% 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 %}
|
||||
{% if craue_setting('share_mail') %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&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 %}
|
||||
{% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans %}shaarli{% endtrans %}"><span>{% trans %}shaarli{% endtrans %}</span></a></li>{% endif %}
|
||||
{% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}¬es=&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 %}
|
||||
{% 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 %}
|
||||
{% 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 %}
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
{% 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 %}
|
||||
{% if craue_setting('share_mail') %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="Email"><span>Email</span></a></li>{% endif %}
|
||||
{% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %}
|
||||
{% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}¬es=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="diaspora"><span>diaspora</span></a></li>{% endif %}
|
||||
{% 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 %}
|
||||
{% 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 %}
|
||||
{% if craue_setting('export_epub') %}<li><a href="?epub&method=id&value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
|
||||
{% if craue_setting('export_mobi') %}<li><a href="?mobi&method=id&value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
|
||||
{% if craue_setting('export_pdf') %}<li><a href="?pdf&method=id&value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %}
|
||||
<li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&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>
|
||||
<li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&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>
|
||||
</ul>
|
||||
</div>
|
||||
{% set nbAnnotations = entry.annotations | length %}
|
||||
<span class="tool link mdi-communication-comment"> {% transchoice nbAnnotations %}{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations{% endtranschoice %}</span>
|
||||
<span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
|
||||
<aside class="tags">
|
||||
{% for tag in entry.tags %}
|
||||
<span class="mdi-action-label-outline">{{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i>✘</i></a>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}Save new entry{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
{% endif %}
|
||||
|
||||
{{ form_label(form.url) }}
|
||||
{{ form_widget(form.url) }}
|
||||
{{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
|
||||
|
||||
<div class="hidden">{{ form_rest(form) }}</div>
|
||||
{{ form_rest(form) }}
|
||||
</form>
|
||||
|
|
|
@ -1,57 +1,57 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}About{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'about.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>{% trans %}Who is behind wallabag{% endtrans %}</h2>
|
||||
<h2>{{ 'about.top_menu.who_behind_wallabag'|trans }}</h2>
|
||||
|
||||
<dl>
|
||||
<dt>{% trans %}Developed by{% endtrans %}</dt>
|
||||
<dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans %}website{% endtrans %}</a></dd>
|
||||
<dd>Thomas Citharel — <a href="https://tcit.fr">{% trans %}website{% endtrans %}</a></dd>
|
||||
<dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{% trans %}website{% endtrans %}</a></dd>
|
||||
<dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt>
|
||||
<dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
|
||||
<dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
|
||||
<dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
|
||||
|
||||
<dt>{% trans %}And many others contributors ♥{% endtrans %} <a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}on Github{% endtrans %}</a></dt>
|
||||
<dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt>
|
||||
|
||||
<dt>{% trans %}Project website{% endtrans %}</dt>
|
||||
<dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt>
|
||||
<dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
|
||||
|
||||
<dt>{% trans %}License{% endtrans %}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
|
||||
<dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
|
||||
|
||||
<dt>{% trans %}Version{% endtrans %}: {{ version }}</dt>
|
||||
<dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt>
|
||||
</dl>
|
||||
|
||||
<h2>{% trans %}Getting help{% endtrans %}</h2>
|
||||
<h2>{{ 'about.top_menu.getting_help'|trans }}</h2>
|
||||
|
||||
<dl>
|
||||
<dt>{% trans %}Documentation{% endtrans %}</dt>
|
||||
<dt>{{ 'about.getting_help.documentation'|trans }}</dt>
|
||||
<dd><a href="https://doc.wallabag.org/en">english</a></dd>
|
||||
<dd><a href="https://doc.wallabag.org/fr">français</a></dd>
|
||||
<dd><a href="https://doc.wallabag.org/de">deutsch</a></dd>
|
||||
|
||||
<dt>{% trans %}Bug reports{% endtrans %}</dt>
|
||||
<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>
|
||||
<dt>{{ 'about.getting_help.bug_reports'|trans }}</dt>
|
||||
<dd>{{ 'about.getting_help.support'|trans|raw }}</dd>
|
||||
</dl>
|
||||
|
||||
<h2>{% trans %}Helping wallabag{% endtrans %}</h2>
|
||||
<h2>{{ 'about.top_menu.helping'|trans }}</h2>
|
||||
|
||||
<p>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</p>
|
||||
<p>{{ 'about.helping.description'|trans }}</p>
|
||||
|
||||
<dl>
|
||||
<dt>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</dt>
|
||||
<dd>by contributing to the project: <a href="https://github.com/wallabag/wallabag/issues/1254">an issue lists all our needs</a></dd>
|
||||
<dd><a href="{{ paypal_url }}">{% trans %}via Paypal{% endtrans %}</a></dd>
|
||||
<dt>{{ 'about.helping.description'|trans }}</dt>
|
||||
<dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd>
|
||||
<dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd>
|
||||
</dl>
|
||||
|
||||
<h2>{% trans %}Contributors{% endtrans %}</h2>
|
||||
<p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}Thank you to contributors on wallabag web application{% endtrans %}</a></p>
|
||||
<h2>{{ 'about.top_menu.contributors'|trans }}</h2>
|
||||
<p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p>
|
||||
|
||||
<h2>{% trans %}Third-party libraries{% endtrans %}</h2>
|
||||
<p>{% trans %}Here are the list of third-party libraries used in wallabag (with their licenses):{% endtrans %}</p>
|
||||
<table>
|
||||
<h2>{{ 'about.top_menu.third_party'|trans }}</h2>
|
||||
<p>{{ 'about.third_party.description'|trans }}</p>
|
||||
<table class="striped">
|
||||
<tr>
|
||||
<th>{% trans %}Package{% endtrans %}</th>
|
||||
<th>{% trans %}License{% endtrans %}</th>
|
||||
<th>{{ 'about.third_party.package'|trans }}</th>
|
||||
<th>{{ 'about.third_party.license'|trans }}</th>
|
||||
</tr>
|
||||
<tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr>
|
||||
<tr><td>CraueConfigBundle</td><td>MIT</td></tr>
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}Howto{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'howto.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>{% trans %}Howto{% endtrans %}</h2>
|
||||
<h2>{{ 'howto.page_title'|trans }}</h2>
|
||||
|
||||
<p>{% trans %}There are several ways to save an article:{% endtrans %}</p>
|
||||
<p>{{ 'howto.page_description'|trans }}</p>
|
||||
<ul>
|
||||
<li><a href="{{ path('new') }}">{% trans %}Thanks to this form{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a></li>
|
||||
</ul>
|
||||
<h3>{% trans %}Browser Addons{% endtrans %}</h3>
|
||||
<h3>{{ 'howto.top_menu.browser_addons'|trans }}</h3>
|
||||
<ul>
|
||||
<li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans %}Standard Firefox Add-On{% endtrans %}</a></li>
|
||||
<li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans %}Chrome Extension{% endtrans %}</a></li>
|
||||
<li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li>
|
||||
<li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li>
|
||||
</ul>
|
||||
<h3>{% trans %}Mobile Apps{% endtrans %}</h3>
|
||||
<h3>{{ 'howto.top_menu.mobile_apps'|trans }}</h3>
|
||||
<ul>
|
||||
<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>
|
||||
<li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans %}download the application{% endtrans %}</a></li>
|
||||
<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>
|
||||
<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>
|
||||
<li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li>
|
||||
<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>
|
||||
</ul>
|
||||
<h3>{% trans %}Bookmarklet{% endtrans %}</h3>
|
||||
<h3>{{ 'howto.top_menu.bookmarklet'|trans }}</h3>
|
||||
<p>
|
||||
{% trans %}Drag & drop this link to your bookmarks bar:{% endtrans %}
|
||||
{{ 'howto.bookmarklet.description'|trans }}
|
||||
{% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,55 +1,66 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}Quickstart{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h3>{% trans %}Welcome to wallabag!{% endtrans %}</h3>
|
||||
<p>{% trans %}We'll accompany you to visit wallabag and show you some features which can interess you.{% endtrans %}</p>
|
||||
<p>{% trans %}Follow us!{% endtrans %}</p>
|
||||
<h4>{% trans %}Configure the application{% endtrans %}</h4>
|
||||
<h3>{{ 'quickstart.intro.title'|trans }}</h3>
|
||||
<p>{{ 'quickstart.intro.paragraph_1'|trans }}</p>
|
||||
<p>{{ 'quickstart.intro.paragraph_2'|trans }}</p>
|
||||
|
||||
<h4>{{ 'quickstart.configure.title'|trans }}</h4>
|
||||
<ul>
|
||||
<li><a href="{{ path('config') }}">{% trans %}Change language and design{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('config') }}#set2">{% trans %}Enable RSS feeds{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('config') }}#set5">{% trans %}Write rules to automatically tag your articles{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
|
||||
<li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li>
|
||||
<li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li>
|
||||
</ul>
|
||||
|
||||
{% if is_granted('ROLE_SUPER_ADMIN') %}
|
||||
<h4>{% trans %}Administration{% endtrans %}</h4>
|
||||
<p>{% trans %}As a administrator, you have privileges on wallabag. You can:{% endtrans %}</p>
|
||||
<ul>
|
||||
<li><a href="{{ path('config') }}#set6">{% trans %}Create a new user{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{% trans %}Configure analytics{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{% trans %}Enable some parameters about article sharing{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-export">{% trans %}Configure export{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-import">{% trans %}Configure import{% endtrans %}</a></li>
|
||||
</ul>
|
||||
<h4>{{ 'quickstart.admin.title'|trans }}</h4>
|
||||
<p>{{ 'quickstart.admin.description'|trans }}</p>
|
||||
<ul>
|
||||
<li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
<h4>{% trans %}First steps{% endtrans %}</h4>
|
||||
|
||||
<h4>{{ 'quickstart.first_steps.title'|trans }}</h4>
|
||||
<ul>
|
||||
<li><a href="{{ path('new') }}">{% trans %}Save your first article{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('unread') }}">{% trans %}And classify it!{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li>
|
||||
<li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li>
|
||||
</ul>
|
||||
<h4>{% trans %}Migrate from an existing service{% endtrans %}</h4>
|
||||
<p>{% trans %}You're using an other service? We'll help you to retrieve your data on wallabag.{% endtrans %}</p>
|
||||
|
||||
<h4>{{ 'quickstart.migrate.title'|trans }}</h4>
|
||||
<p>{{ 'quickstart.migrate.description'|trans }}</p>
|
||||
<ul>
|
||||
<li><a href="{{ path('import_pocket') }}">{% trans %}Migrate from Pocket{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('import_wallabag_v1') }}">{% trans %}Migrate from wallabag v1{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('import_wallabag_v2') }}">{% trans %}Migrate from wallabag v2{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li>
|
||||
<li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li>
|
||||
<li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li>
|
||||
</ul>
|
||||
<h4>{% trans %}Full documentation{% endtrans %}</h4>
|
||||
|
||||
<h4>{{ 'quickstart.developer.title'|trans }}</h4>
|
||||
<ul>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{% trans %}Annotate your article{% endtrans %}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{% trans %}Convert your articles into ePUB or PDF{% endtrans %}</a></li>
|
||||
<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>
|
||||
<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>
|
||||
<li><a href="http://doc.wallabag.org/">{% trans %}And so many other articles!{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li>
|
||||
</ul>
|
||||
<h4>{% trans %}Support{% endtrans %}</h4>
|
||||
<p>{% trans %}If you need some help, we are here for you.{% endtrans %}</p>
|
||||
|
||||
<h4>{{ 'quickstart.docs.title'|trans }}</h4>
|
||||
<ul>
|
||||
<li><a href="https://github.com/wallabag/wallabag/issues/">{% trans %}On GitHub{% endtrans %}</a></li>
|
||||
<li><a href="mailto:hello@wallabag.org">{% trans %}By email{% endtrans %}</a></li>
|
||||
<li><a href="https://gitter.im/wallabag/wallabag">{% trans %}On Gitter{% endtrans %}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li>
|
||||
</ul>
|
||||
|
||||
<h4>{{ 'quickstart.support.title'|trans }}</h4>
|
||||
<p>{{ 'quickstart.support.description'|trans }}</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li>
|
||||
<li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li>
|
||||
<li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li>
|
||||
</ul>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
{% endif %}
|
||||
|
||||
{{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
|
||||
{{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'}, 'label': 'add tag' }) }}
|
||||
|
||||
<div class="hidden">{{ form_rest(form) }}</div>
|
||||
{{ form_rest(form) }}
|
||||
</form>
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title "Tags" %}
|
||||
{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if tags is empty %}
|
||||
<div class="messages warning"><p>{% trans %}No tags found.{% endtrans %}</p></div>
|
||||
{% else %}
|
||||
{% for tag in tags %}
|
||||
{{tag.label}}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<div class="results">
|
||||
<div class="nb-results">{{ 'tag.list.number_on_the_page'|transchoice(tags.count) }}</div>
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
{% for tag in tags %}
|
||||
<li id="tag-{{ tag.id|e }}">{{tag.label}} ({{ tag.entries.getValues | length }})</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
|
|
@ -33,32 +33,32 @@
|
|||
{% block menu %}
|
||||
<button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
|
||||
<ul id="links" class="links">
|
||||
<li><a href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('all') }}">{% trans %}all{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('new') }}">{% trans %}save a link{% endtrans %}</a></li>
|
||||
<li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans %}search{% endtrans %}</a>
|
||||
<li><a href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a></li>
|
||||
<li><a href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a></li>
|
||||
<li><a href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a></li>
|
||||
<li><a href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a></li>
|
||||
<li><a href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a></li>
|
||||
<li><a href="{{ path('new') }}">{{ 'menu.left.save_link'|trans }}</a></li>
|
||||
<li style="position: relative;"><a href="javascript: void(null);" id="search">{{ 'menu.left.search'|trans }}</a>
|
||||
<div id="search-form" class="messages info popup-form">
|
||||
<form method="get" action="index.php">
|
||||
<h2>{% trans %}Search{% endtrans %}</h2>
|
||||
<h2>{{ 'menu.left.search'|trans }}</h2>
|
||||
<a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">×</a>
|
||||
<input type="hidden" name="view" value="search">
|
||||
<input required placeholder="{% trans %}Enter your search here{% endtrans %}" type="text" name="search" id="searchfield"><br>
|
||||
<input id="submit-search" type="submit" value="{% trans %}Search{% endtrans %}">
|
||||
<input required placeholder="{{ 'menu.search_form.input_label'|trans }}" type="text" name="search" id="searchfield"><br>
|
||||
<input id="submit-search" type="submit" value="{{ 'menu.left.search'|trans }}">
|
||||
</form>
|
||||
</div>
|
||||
</li>
|
||||
<li><a href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li>
|
||||
{% if is_granted('ROLE_SUPER_ADMIN') %}
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}">{% trans %}internal settings{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li>
|
||||
{% endif %}
|
||||
<li><a href="{{ path('import') }}">{% trans %}import{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('developer') }}">{% trans %}Developer{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('about') }}">{% trans %}about{% endtrans %}</a></li>
|
||||
<li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li>
|
||||
<li><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li>
|
||||
<li><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li>
|
||||
<li><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li>
|
||||
<li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li>
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
||||
|
@ -73,6 +73,6 @@
|
|||
|
||||
{% block footer %}
|
||||
<footer class="w600p center mt3 mb3 smaller txtright">
|
||||
<p>{% trans %}powered by{% endtrans %} <a href="http://wallabag.org">wallabag</a></p>
|
||||
<p>{{ 'footer.wallabag.powered_by'|trans }} <a href="http://wallabag.org">wallabag</a></p>
|
||||
</footer>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}config{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
@ -11,13 +11,13 @@
|
|||
<div class="row">
|
||||
<div class="div_tabs col s12">
|
||||
<ul class="tabs">
|
||||
<li class="tab col s3"><a class="active" href="#set1">{% trans %}Settings{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set2">{% trans %}RSS{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set3">{% trans %}User information{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set4">{% trans %}Password{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set5">{% trans %}Tagging rules{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li>
|
||||
<li class="tab col s3"><a href="#set2">{{ 'config.tab_menu.rss'|trans }}</a></li>
|
||||
<li class="tab col s3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li>
|
||||
<li class="tab col s3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li>
|
||||
<li class="tab col s3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li>
|
||||
{% if is_granted('ROLE_SUPER_ADMIN') %}
|
||||
<li class="tab col s3"><a href="#set6">{% trans %}Add a user{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set6">{{ 'config.tab_menu.new_user'|trans }}</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -28,9 +28,9 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
{{ form_label(form.config.theme) }}
|
||||
{{ form_errors(form.config.theme) }}
|
||||
{{ form_widget(form.config.theme) }}
|
||||
<label class="required">{% trans %}Theme{% endtrans %}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -59,10 +59,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hidden">{{ form_rest(form.config) }}</div>
|
||||
<button class="btn waves-effect waves-light" type="submit" name="action">
|
||||
{% trans %}Save{% endtrans %}
|
||||
</button>
|
||||
{{ form_widget(form.config.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_rest(form.config) }}
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
@ -72,33 +70,37 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
{% 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 %}
|
||||
{{ 'config.form_rss.description'|trans }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<label>{% trans %}RSS token{% endtrans %}</label>
|
||||
<label>{{ 'config.form_rss.token_label'|trans }}</label>
|
||||
<div>
|
||||
{% if rss.token %}
|
||||
{{ rss.token }}
|
||||
{% else %}
|
||||
<em>{% trans %}No token{% endtrans %}</em>
|
||||
<em>{{ 'config.form_rss.no_token'|trans }}</em>
|
||||
{% endif %}
|
||||
– <a href="{{ path('generate_token') }}">{% if rss.token %}{% trans %}Reset your token{% endtrans %}{% else %}{% trans %}Create your token{% endtrans %}{% endif %}</a>
|
||||
– <a href="{{ path('generate_token') }}">
|
||||
{% if rss.token %}
|
||||
{{ 'config.form_rss.token_reset'|trans }}
|
||||
{% else %}
|
||||
{{ 'config.form_rss.token_create'|trans }}
|
||||
{% endif %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if rss.token %}
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<label>{% trans %}RSS links{% endtrans %}</label>
|
||||
<ul>
|
||||
<li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}unread{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}starred{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{% trans %}archive{% endtrans %}</a></li>
|
||||
</ul>
|
||||
|
||||
<label>{{ 'config.form_rss.rss_links'|trans }}</label>
|
||||
<ul>
|
||||
<li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li>
|
||||
<li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li>
|
||||
<li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -111,11 +113,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hidden">{{ form_rest(form.rss) }}</div>
|
||||
<button class="btn waves-effect waves-light" type="submit" name="action">
|
||||
{% trans %}Save{% endtrans %}
|
||||
</button>
|
||||
|
||||
{{ form_widget(form.rss.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_rest(form.rss) }}
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
@ -142,7 +141,7 @@
|
|||
{% if twofactor_auth %}
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
{% trans %}Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion{% endtrans %}
|
||||
{{ 'config.form_user.two_factor_description'|trans }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -155,11 +154,8 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="hidden">{{ form_rest(form.user) }}</div>
|
||||
<button class="btn waves-effect waves-light" type="submit" name="action">
|
||||
{% trans %}Save{% endtrans %}
|
||||
</button>
|
||||
|
||||
{{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_rest(form.user) }}
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
@ -191,11 +187,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hidden">{{ form_rest(form.pwd) }}</div>
|
||||
<button class="btn waves-effect waves-light" type="submit" name="action">
|
||||
{% trans %}Save{% endtrans %}
|
||||
</button>
|
||||
|
||||
{{ form_widget(form.pwd.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_rest(form.pwd) }}
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
@ -205,8 +198,11 @@
|
|||
<ul>
|
||||
{% for tagging_rule in app.user.config.taggingRules %}
|
||||
<li>
|
||||
if « {{ tagging_rule.rule }} » then tag as « {{ tagging_rule.tags|join(', ') }} »
|
||||
<a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{% trans %}Delete{% endtrans %}">
|
||||
{{ 'config.form_rules.if_label'|trans }}
|
||||
« {{ tagging_rule.rule }} »
|
||||
{{ 'config.form_rules.then_tag_as_label'|trans }}
|
||||
« {{ tagging_rule.tags|join(', ') }} »
|
||||
<a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}">
|
||||
<i class="tool grey-text delete mdi-action-delete"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
@ -234,102 +230,88 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hidden">{{ form_rest(form.new_tagging_rule) }}</div>
|
||||
<button class="btn waves-effect waves-light" type="submit" name="action">
|
||||
{% trans %}Save{% endtrans %}
|
||||
</button>
|
||||
{{ form_widget(form.new_tagging_rule.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_rest(form.new_tagging_rule) }}
|
||||
</form>
|
||||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<h4>{% trans %}FAQ{% endtrans %}</h4>
|
||||
<h4>{{ 'config.form_rules.faq.title'|trans }}</h4>
|
||||
|
||||
<h5>{% trans %}What does « tagging rules » mean?{% endtrans %}</h5>
|
||||
<h5>{{ 'config.form_rules.faq.tagging_rules_definition_title'|trans }}</h5>
|
||||
<p class="help">{{ 'config.form_rules.faq.tagging_rules_definition_description'|trans|raw }}</p>
|
||||
|
||||
<h5>{{ 'config.form_rules.faq.how_to_use_them_title'|trans }}</h5>
|
||||
<p class="help">{{ 'config.form_rules.faq.how_to_use_them_description'|trans|raw }}</p>
|
||||
|
||||
<h5>{{ 'config.form_rules.faq.variables_available_title'|trans }}</h5>
|
||||
<p class="help">
|
||||
{% trans %}
|
||||
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.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
{{ 'config.form_rules.faq.variables_available_description'|trans }}
|
||||
|
||||
<h5>{% trans %}How do I use them?{% endtrans %}</h5>
|
||||
<p class="help">
|
||||
{% trans %}
|
||||
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 <= 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 >= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »
|
||||
{% endtrans %}
|
||||
</p>
|
||||
|
||||
<h5>{% trans %}Which variables and operators can I use to write rules?{% endtrans %}</h5>
|
||||
<p class="help">
|
||||
{% trans %}The following variables and operators can be used to create tagging rules:{% endtrans %}
|
||||
|
||||
<table>
|
||||
<table class="bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans %}Variable{% endtrans %}</th>
|
||||
<th>{% trans %}Meaning{% endtrans %}</th>
|
||||
<th>{% trans %}Operator{% endtrans %}</th>
|
||||
<th>{% trans %}Meaning{% endtrans %}</th>
|
||||
<th>{{ 'config.form_rules.faq.variable_description.label'|trans }}</th>
|
||||
<th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
|
||||
<th>{{ 'config.form_rules.faq.operator_description.label'|trans }}</th>
|
||||
<th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>title</td>
|
||||
<td>{% trans %}Title of the entry{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.title'|trans }}</td>
|
||||
<td><=</td>
|
||||
<td>{% trans %}Less than…{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.less_than'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>url</td>
|
||||
<td>{% trans %}URL of the entry{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.url'|trans }}</td>
|
||||
<td><</td>
|
||||
<td>{% trans %}Strictly less than…{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.strictly_less_than'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>isArchived</td>
|
||||
<td>{% trans %}Whether the entry is archived or not{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.isArchived'|trans }}</td>
|
||||
<td>=></td>
|
||||
<td>{% trans %}Greater than…{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.greater_than'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>isStarred</td>
|
||||
<td>{% trans %}Whether the entry is starred or not{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.isStarred'|trans }}</td>
|
||||
<td>></td>
|
||||
<td>{% trans %}Strictly greater than…{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.strictly_greater_than'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content</td>
|
||||
<td>{% trans %}The entry's content{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.content'|trans }}</td>
|
||||
<td>=</td>
|
||||
<td>{% trans %}Equal to…{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.equal_to'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>language</td>
|
||||
<td>{% trans %}The entry's language{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.language'|trans }}</td>
|
||||
<td>!=</td>
|
||||
<td>{% trans %}Not equal to…{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.not_equal_to'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mimetype</td>
|
||||
<td>{% trans %}The entry's mime-type{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.mimetype'|trans }}</td>
|
||||
<td>OR</td>
|
||||
<td>{% trans %}One rule or another{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.or'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>readingTime</td>
|
||||
<td>{% trans %}The estimated entry's reading time, in minutes{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.readingTime'|trans }}</td>
|
||||
<td>AND</td>
|
||||
<td>{% trans %}One rule and another{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.and'|trans }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>domainName</td>
|
||||
<td>{% trans %}The domain name of the entry{% endtrans %}</td>
|
||||
<td>{{ 'config.form_rules.faq.variable_description.domainName'|trans }}</td>
|
||||
<td>matches</td>
|
||||
<td>
|
||||
{% trans %}
|
||||
Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>
|
||||
{% endtrans %}
|
||||
</td>
|
||||
<td>{{ 'config.form_rules.faq.operator_description.matches'|trans|raw }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -375,11 +357,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hidden">{{ form_rest(form.new_user) }}</div>
|
||||
<button class="btn waves-effect waves-light" type="submit" name="action">
|
||||
{% trans %}Add a user{% endtrans %}
|
||||
</button>
|
||||
|
||||
{{ form_widget(form.new_user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_rest(form.new_user) }}
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}Edit an entry{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
@ -10,7 +10,6 @@
|
|||
|
||||
<form name="entry" method="post" action="">
|
||||
<div class="card-content">
|
||||
|
||||
{% if form_errors(form) %}
|
||||
<span class="black-text">{{ form_errors(form) }}</span>
|
||||
{% endif %}
|
||||
|
@ -24,17 +23,20 @@
|
|||
{{ form_widget(form.title) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field s12">
|
||||
{{ form_label(form.url) }}
|
||||
{{ form_widget(form.url) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field s12">
|
||||
{{ form_widget(form.is_public) }}
|
||||
{{ form_label(form.is_public) }}
|
||||
</div>
|
||||
<br>
|
||||
<button class="btn waves-effect waves-light" type="submit" name="entry[save]">
|
||||
{% trans %}Save{% endtrans %}
|
||||
<i class="mdi-content-send right"></i>
|
||||
</button>
|
||||
|
||||
{{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
</div>
|
||||
<div class="hidden">{{ form_rest(form) }}</div>
|
||||
{{ form_rest(form) }}
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
{% set currentRoute = app.request.attributes.get('_route') %}
|
||||
|
||||
{% if currentRoute == 'starred' %}
|
||||
{% trans %}starred{% endtrans %}
|
||||
{{ 'entry.page_titles.starred'|trans }}
|
||||
{% elseif currentRoute == 'archive' %}
|
||||
{% trans %}archive{% endtrans %}
|
||||
{{ 'entry.page_titles.archived'|trans }}
|
||||
{% elseif currentRoute == 'all' %}
|
||||
{% trans %}Filtered{% endtrans %}
|
||||
{{ 'entry.page_titles.filtered'|trans }}
|
||||
{% else %}
|
||||
{% trans %}unread{% endtrans %}
|
||||
{{ 'entry.page_titles.unread'|trans }}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
@ -18,7 +18,9 @@
|
|||
{% block content %}
|
||||
{% block pager %}
|
||||
<div class="results clearfix">
|
||||
<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>
|
||||
<div class="nb-results left">
|
||||
{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}
|
||||
</div>
|
||||
<ul class="pagination right">
|
||||
{% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
|
||||
<li class="{{ currentPage == p ? 'active':'waves-effect'}}">
|
||||
|
@ -52,9 +54,9 @@
|
|||
<span class="tool reading-time">
|
||||
{% set readingTime = entry.readingTime / app.user.config.readingSpeed %}
|
||||
{% if readingTime > 0 %}
|
||||
{% trans with {'%readingTime%': readingTime } %}estimated reading time: %readingTime% min{% endtrans %}
|
||||
{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': readingTime}) }}
|
||||
{% else %}
|
||||
{% trans with {'%inferior%': '<small class="inferieur"><</small>'} %}estimated reading time: %inferior% 1 min{% endtrans %}
|
||||
{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
@ -72,7 +74,7 @@
|
|||
|
||||
<div class="estimatedTime grey-text">
|
||||
<span class="tool reading-time">
|
||||
{% trans %}estimated reading time{% endtrans %}:
|
||||
{{ 'entry.list.reading_time'|trans }}
|
||||
{% if entry.readingTime > 0 %}{{ entry.readingTime }}{% else %}<small class="inferieur"><</small> 1{% endif %} min
|
||||
</span>
|
||||
</div>
|
||||
|
@ -82,13 +84,15 @@
|
|||
{% endif %}
|
||||
|
||||
<div class="card-action">
|
||||
<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>
|
||||
<span class="bold">
|
||||
<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>
|
||||
</bold>
|
||||
|
||||
<ul class="tools links right">
|
||||
<li>
|
||||
<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>
|
||||
<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>
|
||||
<a title="{% trans %}Delete{% endtrans %}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a>
|
||||
<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>
|
||||
<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>
|
||||
<a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -103,7 +107,7 @@
|
|||
{% if currentRoute == 'homepage' %}
|
||||
{% set currentRoute = 'unread' %}
|
||||
{% endif %}
|
||||
<h4 class="center">{% trans %}Export{% endtrans %}</h4>
|
||||
<h4 class="center">{{ 'entry.list.export_title'|trans }}</h4>
|
||||
<ul>
|
||||
{% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'epub' }) }}">EPUB</a></li>{% endif %}
|
||||
{% 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 @@
|
|||
<div id="filters" class="side-nav fixed right-aligned">
|
||||
<form action="{{ path('all') }}">
|
||||
|
||||
<h4 class="center">{% trans %}Filters{% endtrans %}</h4>
|
||||
<h4 class="center">{{ 'entry.filters.title'|trans }}</h4>
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<label>{% trans %}Status{% endtrans %}</label>
|
||||
<label>{{ 'entry.filters.status_label'|trans }}</label>
|
||||
</div>
|
||||
|
||||
<div class="input-field col s6 with-checkbox">
|
||||
{{ form_widget(form.isArchived) }}
|
||||
<label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label>
|
||||
{{ form_label(form.isArchived) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field col s6 with-checkbox">
|
||||
{{ form_widget(form.isStarred) }}
|
||||
<label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label>
|
||||
{{ form_label(form.isStarred) }}
|
||||
</div>
|
||||
|
||||
<div class="col s12">
|
||||
<label>{% trans %}Preview picture{% endtrans %}</label>
|
||||
<label>{{ 'entry.filters.preview_picture_help'|trans }}</label>
|
||||
</div>
|
||||
|
||||
<div class="input-field col s12 with-checkbox">
|
||||
{{ form_widget(form.previewPicture) }}
|
||||
<label for="entry_filter_previewPicture">{% trans %}Has a preview picture{% endtrans %}</label>
|
||||
{{ form_label(form.previewPicture) }}
|
||||
</div>
|
||||
|
||||
<div class="col s12">
|
||||
<label>{% trans %}Language{% endtrans %}</label>
|
||||
{{ form_label(form.language) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field col s12">
|
||||
|
@ -154,43 +158,42 @@
|
|||
</div>
|
||||
|
||||
<div class="col s12">
|
||||
<label>{% trans %}Reading time in minutes{% endtrans %}</label>
|
||||
{{ form_label(form.readingTime) }}
|
||||
</div>
|
||||
<div class="input-field col s6">
|
||||
{{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
|
||||
<label for="entry_filter_readingTime_left_number">{% trans %}from{% endtrans %}</label>
|
||||
<label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
|
||||
</div>
|
||||
<div class="input-field col s6">
|
||||
{{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
|
||||
<label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label>
|
||||
<label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
|
||||
</div>
|
||||
|
||||
<div class="input-field col s12">
|
||||
{{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com' | trans} }) }}
|
||||
<label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label>
|
||||
{{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
|
||||
{{ form_label(form.domainName) }}
|
||||
</div>
|
||||
|
||||
<div class="col s12">
|
||||
<label>{% trans %}Creation date{% endtrans %}</label>
|
||||
{{ form_label(form.createdAt) }}
|
||||
</div>
|
||||
|
||||
<div class="input-field col s6">
|
||||
{{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
|
||||
<label for="entry_filter_createdAt_left_date" class="active">{% trans %}from{% endtrans %}</label>
|
||||
<label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
|
||||
</div>
|
||||
<div class="input-field col s6">
|
||||
{{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
|
||||
<label for="entry_filter_createdAt_right_date" class="active">{% trans %}to{% endtrans %}</label>
|
||||
<label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
|
||||
</div>
|
||||
|
||||
<div class="col s6">
|
||||
<a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{% trans %}Clear{% endtrans %}</a>
|
||||
<a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
|
||||
</div>
|
||||
|
||||
<div class="col s6">
|
||||
<button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{% trans %}Filter{% endtrans %}</button>
|
||||
<button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
<description>
|
||||
<![CDATA[
|
||||
{%- if entry.readingTime > 0 -%}
|
||||
{% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min
|
||||
{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}
|
||||
{%- else -%}
|
||||
{% trans %}estimated reading time :{% endtrans %} < 1 min
|
||||
{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
|
||||
{%- endif %}
|
||||
|
||||
{{ entry.content|raw -}}
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
{% block title %}{{ entry.title|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
|
||||
|
||||
{% block body_class %}entry{% endblock %}
|
||||
|
||||
{% block menu %}
|
||||
<div class="progress">
|
||||
<div class="determinate"></div>
|
||||
|
@ -17,12 +19,12 @@
|
|||
</ul>
|
||||
<ul class="right">
|
||||
<li>
|
||||
<a class="waves-effect" title="{% trans %}Mark as read{% endtrans %}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
|
||||
<a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
|
||||
<i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="waves-effect" title="{% trans %}Favorite{% endtrans %}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
|
||||
<a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
|
||||
<i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
@ -38,7 +40,7 @@
|
|||
<li class="bold border-bottom hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" href="{{ path('homepage') }}">
|
||||
<i class="mdi-action-exit-to-app small"></i>
|
||||
<span>{% trans %}back{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.back_to_homepage'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
</li>
|
||||
|
@ -46,38 +48,38 @@
|
|||
<li class="bold border-bottom hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" href="{{ entry.url|e }}">
|
||||
<i class="mdi-content-link small"></i>
|
||||
<span>{% trans %}original article{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.view_original_article'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
</li>
|
||||
|
||||
<li class="bold hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" title="{% trans %}Re-fetch content{% endtrans %}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload">
|
||||
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload">
|
||||
<i class="mdi-action-autorenew small"></i>
|
||||
<span>{% trans %}Re-fetch content{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
</li>
|
||||
|
||||
<li class="bold hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" title="{% trans %}Mark as read{% endtrans %}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
|
||||
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
|
||||
<i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
|
||||
<span>{% if entry.isArchived == 0 %}{% trans %}Mark as read{% endtrans %}{% else %}{% trans %}Mark as unread{% endtrans %}{% endif %}</span>
|
||||
<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>
|
||||
<div class="collapsible-body"></div>
|
||||
</li>
|
||||
|
||||
<li class="bold hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" title="{% trans %}Favorite{% endtrans %}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
|
||||
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
|
||||
<i class="{% if entry.isStarred == 0 %}mdi-action-favorite-outline{% else %}mdi-action-favorite{% endif %} small"></i>
|
||||
<span>{% trans %}Favorite{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.set_as_favorite'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
</li>
|
||||
<li class="bold border-bottom hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" title="{% trans %}Delete{% endtrans %}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
|
||||
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
|
||||
<i class="mdi-action-delete small"></i>
|
||||
<span>{% trans %}Delete{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.delete'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
</li>
|
||||
|
@ -85,7 +87,7 @@
|
|||
<li class="bold border-bottom hide-on-med-and-down">
|
||||
<a class="waves-effect collapsible-header" id="nav-btn-add-tag">
|
||||
<i class="mdi-action-label-outline small"></i>
|
||||
<span>{% trans %}Add a tag{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
</li>
|
||||
|
@ -93,7 +95,7 @@
|
|||
<li class="bold">
|
||||
<a class="waves-effect collapsible-header">
|
||||
<i class="mdi-social-share small"></i>
|
||||
<span>{% trans %}Share{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.share_content'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body">
|
||||
<ul>
|
||||
|
@ -127,8 +129,8 @@
|
|||
{% endif %}
|
||||
{% if craue_setting('share_mail') %}
|
||||
<li>
|
||||
<a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans %}Email{% endtrans %}">
|
||||
<span>{% trans %}Email{% endtrans %}</span>
|
||||
<a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{{ 'entry.view.left_menu.share_email_label'|trans }}">
|
||||
<span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
@ -139,7 +141,7 @@
|
|||
<li class="bold">
|
||||
<a class="waves-effect collapsible-header">
|
||||
<i class="mdi-file-file-download small"></i>
|
||||
<span>{% trans %}Download{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.download'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body">
|
||||
<ul>
|
||||
|
@ -155,40 +157,33 @@
|
|||
</li>
|
||||
|
||||
<li class="bold hide-on-large-only">
|
||||
<a class="waves-effect collapsible-header" title="{% trans %}Delete{% endtrans %}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
|
||||
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
|
||||
<i class="mdi-action-delete small"></i>
|
||||
<span>{% trans %}Delete{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.delete'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
</li>
|
||||
|
||||
<li class="bold">
|
||||
<a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{% trans %}Does this article appear wrong?{% endtrans %}">
|
||||
<a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.description'|trans }}">
|
||||
<i class="mdi-alert-error small"></i>
|
||||
<span>{% trans %}Problems?{% endtrans %}</span>
|
||||
<span>{{ 'entry.view.left_menu.problem.label'|trans }}</span>
|
||||
</a>
|
||||
<div class="collapsible-body"></div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<style>
|
||||
main {
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div id="article">
|
||||
<header class="mbm">
|
||||
<h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{% trans %}Edit title{% endtrans %}">✎</a></h1>
|
||||
<h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
|
||||
</header>
|
||||
<aside>
|
||||
<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>
|
||||
{% set nbAnnotations = entry.annotations | length %}
|
||||
<span class="tool link mdi-communication-comment"> {% transchoice nbAnnotations %}{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations{% endtranschoice %}</span>
|
||||
<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>
|
||||
<span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
|
||||
<div id="list">
|
||||
{% for tag in entry.tags %}
|
||||
<div class="chip">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}Save new entry{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<span class="black-text">{{ form_errors(form.url) }}</span>
|
||||
{% endif %}
|
||||
|
||||
{{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'http://website'} }) }}
|
||||
{{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
|
||||
|
||||
<div class="hidden">{{ form_rest(form) }}</div>
|
||||
{{ form_rest(form) }}
|
||||
</form>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}About{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'about.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
@ -11,56 +11,56 @@
|
|||
<div class="row">
|
||||
<div class="div_tabs col s12">
|
||||
<ul class="tabs">
|
||||
<li class="tab col s3"><a class="active" href="#set1">{% trans %}Who is behind wallabag{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set2">{% trans %}Getting help{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set3">{% trans %}Helping wallabag{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set4">{% trans %}Contributors{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set5">{% trans %}Third-party libraries{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a class="active" href="#set1">{{ 'about.top_menu.who_behind_wallabag'|trans }}</a></li>
|
||||
<li class="tab col s3"><a href="#set2">{{ 'about.top_menu.getting_help'|trans }}</a></li>
|
||||
<li class="tab col s3"><a href="#set3">{{ 'about.top_menu.helping'|trans }}</a></li>
|
||||
<li class="tab col s3"><a href="#set4">{{ 'about.top_menu.contributors'|trans }}</a></li>
|
||||
<li class="tab col s3"><a href="#set5">{{ 'about.top_menu.third_party'|trans }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="set1" class="col s12">
|
||||
<dt>{% trans %}Developed by{% endtrans %}</dt>
|
||||
<dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans %}website{% endtrans %}</a></dd>
|
||||
<dd>Thomas Citharel — <a href="https://tcit.fr">{% trans %}website{% endtrans %}</a></dd>
|
||||
<dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{% trans %}website{% endtrans %}</a></dd>
|
||||
<dt>{% trans %}And many others contributors ♥{% endtrans %} <a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}on GitHub{% endtrans %}</a></dt>
|
||||
<dt>{% trans %}Project website{% endtrans %}</dt>
|
||||
<dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt>
|
||||
<dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
|
||||
<dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
|
||||
<dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd>
|
||||
<dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt>
|
||||
<dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt>
|
||||
<dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
|
||||
<dt>{% trans %}License{% endtrans %}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
|
||||
<dt>{% trans %}Version{% endtrans %}: {{ version }}</dt>
|
||||
<dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="https://en.wikipedia.org/wiki/MIT_License">MIT</a></dt>
|
||||
<dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt>
|
||||
</div>
|
||||
|
||||
<div id="set2" class="col s12">
|
||||
<dl>
|
||||
<dt>{% trans %}Documentation{% endtrans %}</dt>
|
||||
<dt>{{ 'about.getting_help.documentation'|trans }}</dt>
|
||||
<dd><a href="https://doc.wallabag.org/en">english</a></dd>
|
||||
<dd><a href="https://doc.wallabag.org/fr">français</a></dd>
|
||||
<dd><a href="https://doc.wallabag.org/de">deutsch</a></dd>
|
||||
|
||||
<dt>{% trans %}Bug reports{% endtrans %}</dt>
|
||||
<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>
|
||||
<dt>{{ 'about.getting_help.bug_reports'|trans }}</dt>
|
||||
<dd>{{ 'about.getting_help.support'|trans|raw }}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div id="set3" class="col s12">
|
||||
<dl>
|
||||
<dt>{% trans %}wallabag is free and opensource. You can help us:{% endtrans %}</dt>
|
||||
<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>
|
||||
<dd><a href="{{ paypal_url }}">{% trans %}via Paypal{% endtrans %}</a></dd>
|
||||
<dt>{{ 'about.helping.description'|trans }}</dt>
|
||||
<dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd>
|
||||
<dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div id="set4" class="col s12">
|
||||
<p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans %}Thank you to contributors on wallabag web application{% endtrans %}</a></p>
|
||||
<p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p>
|
||||
</div>
|
||||
|
||||
<div id="set5" class="col s12">
|
||||
<p>{% trans %}Here are the list of third-party libraries used in wallabag (with their licenses):{% endtrans %}</p>
|
||||
<table>
|
||||
<p>{{ 'about.third_party.description'|trans }}</p>
|
||||
<table class="striped">
|
||||
<tr>
|
||||
<th>{% trans %}Package{% endtrans %}</th>
|
||||
<th>{% trans %}License{% endtrans %}</th>
|
||||
<th>{{ 'about.third_party.package'|trans }}</th>
|
||||
<th>{{ 'about.third_party.license'|trans }}</th>
|
||||
</tr>
|
||||
<tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr>
|
||||
<tr><td>CraueConfigBundle</td><td>MIT</td></tr>
|
||||
|
|
|
@ -1,44 +1,40 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}howto{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'howto.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="card-panel settings">
|
||||
<p>{{ 'howto.page_description'|trans }}</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="div_tabs col s12">
|
||||
<ul class="tabs">
|
||||
<li class="tab col s3"><a class="active" href="#set1">{% trans %}Form{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set2">{% trans %}Browser addons{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set3">{% trans %}Mobile apps{% endtrans %}</a></li>
|
||||
<li class="tab col s3"><a href="#set4">{% trans %}Bookmarklet{% endtrans %}</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="col s12">
|
||||
<a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a>
|
||||
</div>
|
||||
|
||||
<div id="set1" class="col s12">
|
||||
<a href="{{ path('new') }}">{% trans %}Thanks to this form{% endtrans %}</a>
|
||||
</div>
|
||||
|
||||
<div id="set2" class="col s12">
|
||||
<div class="col s12">
|
||||
<h5>{{ 'howto.top_menu.browser_addons'|trans }}</h5>
|
||||
<ul>
|
||||
<li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans %}Standard Firefox Add-On{% endtrans %}</a></li>
|
||||
<li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans %}Chrome Extension{% endtrans %}</a></li>
|
||||
<li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li>
|
||||
<li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="set3" class="col s12">
|
||||
<div class="col s12">
|
||||
<h5>{{ 'howto.top_menu.mobile_apps'|trans }}</h5>
|
||||
<ul>
|
||||
<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>
|
||||
<li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans %}download the application{% endtrans %}</a></li>
|
||||
<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>
|
||||
<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>
|
||||
<li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li>
|
||||
<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>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="set4" class="col s12">
|
||||
{% trans %}Drag & drop this link to your bookmarks bar:{% endtrans %}
|
||||
<div class="col s12">
|
||||
<h5>{{ 'howto.top_menu.bookmarklet'|trans }}</h5>
|
||||
{{ 'howto.bookmarklet.description'|trans }}
|
||||
{% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{% trans %}Quickstart{% endtrans %}{% endblock %}
|
||||
{% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
@ -9,56 +9,63 @@
|
|||
<div class="card-panel settings">
|
||||
|
||||
<div class="row">
|
||||
<h3>{% trans %}Welcome to wallabag!{% endtrans %}</h3>
|
||||
<p>{% trans %}We'll accompany you to visit wallabag and show you some features which can interess you.{% endtrans %}</p>
|
||||
<p>{% trans %}Follow us!{% endtrans %}</p>
|
||||
<h4>{% trans %}Configure the application{% endtrans %}</h4>
|
||||
<h3>{{ 'quickstart.intro.title'|trans }}</h3>
|
||||
<p>{{ 'quickstart.intro.paragraph_1'|trans }}</p>
|
||||
<p>{{ 'quickstart.intro.paragraph_2'|trans }}</p>
|
||||
|
||||
<h4>{{ 'quickstart.configure.title'|trans }}</h4>
|
||||
<ul>
|
||||
<li><a href="{{ path('config') }}">{% trans %}Change language and design{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('config') }}#set2">{% trans %}Enable RSS feeds{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('config') }}#set5">{% trans %}Write rules to automatically tag your articles{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
|
||||
<li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li>
|
||||
<li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li>
|
||||
</ul>
|
||||
|
||||
{% if is_granted('ROLE_SUPER_ADMIN') %}
|
||||
<h4>{% trans %}Administration{% endtrans %}</h4>
|
||||
<p>{% trans %}As a administrator, you have privileges on wallabag. You can:{% endtrans %}</p>
|
||||
<h4>{{ 'quickstart.admin.title'|trans }}</h4>
|
||||
<p>{{ 'quickstart.admin.description'|trans }}</p>
|
||||
<ul>
|
||||
<li><a href="{{ path('config') }}#set6">{% trans %}Create a new user{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{% trans %}Configure analytics{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{% trans %}Enable some parameters about article sharing{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-export">{% trans %}Configure export{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-import">{% trans %}Configure import{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li>
|
||||
<li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
<h4>{% trans %}First steps{% endtrans %}</h4>
|
||||
|
||||
<h4>{{ 'quickstart.first_steps.title'|trans }}</h4>
|
||||
<ul>
|
||||
<li><a href="{{ path('new') }}">{% trans %}Save your first article{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('unread') }}">{% trans %}And classify it!{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li>
|
||||
<li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li>
|
||||
</ul>
|
||||
<h4>{% trans %}Migrate from an existing service{% endtrans %}</h4>
|
||||
<p>{% trans %}You're using an other service? We'll help you to retrieve your data on wallabag.{% endtrans %}</p>
|
||||
|
||||
<h4>{{ 'quickstart.migrate.title'|trans }}</h4>
|
||||
<p>{{ 'quickstart.migrate.description'|trans }}</p>
|
||||
<ul>
|
||||
<li><a href="{{ path('import_pocket') }}">{% trans %}Migrate from Pocket{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('import_wallabag_v1') }}">{% trans %}Migrate from wallabag v1{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('import_wallabag_v2') }}">{% trans %}Migrate from wallabag v2{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li>
|
||||
<li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li>
|
||||
<li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li>
|
||||
</ul>
|
||||
<h4>{% trans %}Developers{% endtrans %}</h4>
|
||||
|
||||
<h4>{{ 'quickstart.developer.title'|trans }}</h4>
|
||||
<ul>
|
||||
<li><a href="{{ path('developer') }}">{% trans %}Create your third application{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li>
|
||||
</ul>
|
||||
<h4>{% trans %}Full documentation{% endtrans %}</h4>
|
||||
|
||||
<h4>{{ 'quickstart.docs.title'|trans }}</h4>
|
||||
<ul>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{% trans %}Annotate your article{% endtrans %}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{% trans %}Convert your articles into ePUB or PDF{% endtrans %}</a></li>
|
||||
<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>
|
||||
<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>
|
||||
<li><a href="http://doc.wallabag.org/">{% trans %}And so many other articles!{% endtrans %}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/en/v2/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li>
|
||||
<li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li>
|
||||
</ul>
|
||||
<h4>{% trans %}Support{% endtrans %}</h4>
|
||||
<p>{% trans %}If you need some help, we are here for you.{% endtrans %}</p>
|
||||
|
||||
<h4>{{ 'quickstart.support.title'|trans }}</h4>
|
||||
<p>{{ 'quickstart.support.description'|trans }}</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/wallabag/wallabag/issues/">{% trans %}On GitHub{% endtrans %}</a></li>
|
||||
<li><a href="mailto:hello@wallabag.org">{% trans %}By email{% endtrans %}</a></li>
|
||||
<li><a href="https://gitter.im/wallabag/wallabag">{% trans %}On Gitter{% endtrans %}</a></li>
|
||||
<li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li>
|
||||
<li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li>
|
||||
<li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -9,5 +9,5 @@
|
|||
|
||||
{{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
|
||||
|
||||
<div class="hidden">{{ form_rest(form) }}</div>
|
||||
{{ form_rest(form) }}
|
||||
</form>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title "Tags" %}
|
||||
{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="results clearfix">
|
||||
<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>
|
||||
<div class="nb-results left">{{ 'tag.list.number_on_the_page'|transchoice(tags.count) }}</div>
|
||||
</div>
|
||||
<br />
|
||||
<ul class="row data">
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<ul id="slide-out" class="side-nav fixed">
|
||||
{% block logo %}
|
||||
<li class="logo border-bottom">
|
||||
<a title="{% trans %}Back to unread articles{% endtrans %}" href="{{ path('unread') }}">
|
||||
<a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}">
|
||||
<img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-square.png') }}" alt="wallabag logo" />
|
||||
</a>
|
||||
</li>
|
||||
|
@ -39,19 +39,41 @@
|
|||
|
||||
{% set currentRoute = app.request.attributes.get('_route') %}
|
||||
|
||||
<li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}"><a class="waves-effect" href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
|
||||
<li class="bold {% if currentRoute == 'starred' %}active{% endif %}"><a class="waves-effect" href="{{ path('starred') }}">{% trans %}starred{% endtrans %}</a></li>
|
||||
<li class="bold {% if currentRoute == 'archive' %}active{% endif %}"><a class="waves-effect" href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li>
|
||||
<li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}"><a class="waves-effect" href="{{ path('all') }}">{% trans %}all{% endtrans %}</a></li>
|
||||
<li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"><a class="waves-effect" href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li>
|
||||
<li class="bold {% if currentRoute == 'config' %}active{% endif %}"><a class="waves-effect" href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li>
|
||||
<li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a>
|
||||
</li>
|
||||
<li class="bold {% if currentRoute == 'starred' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a>
|
||||
</li>
|
||||
<li class="bold {% if currentRoute == 'archive' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a>
|
||||
</li>
|
||||
<li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a>
|
||||
</li>
|
||||
<li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a>
|
||||
</li>
|
||||
<li class="bold {% if currentRoute == 'config' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a>
|
||||
</li>
|
||||
{% if is_granted('ROLE_SUPER_ADMIN') %}
|
||||
<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>
|
||||
<li class="bold border-bottom {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li class="bold {% if currentRoute == 'import' %}active{% endif %}"><a class="waves-effect" href="{{ path('import') }}">{% trans %}import{% endtrans %}</a></li>
|
||||
<li class="bold {% if currentRoute == 'howto' %}active{% endif %}"><a class="waves-effect" href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li>
|
||||
<li class="bold {% if currentRoute == 'developer' %}active{% endif %}"><a class="waves-effect" href="{{ path('developer') }}">{% trans %}Developer{% endtrans %}</a></li>
|
||||
<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>
|
||||
<li class="bold {% if currentRoute == 'import' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a>
|
||||
</li>
|
||||
<li class="bold {% if currentRoute == 'developer' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a>
|
||||
</li>
|
||||
<li class="bold {% if currentRoute == 'howto' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a>
|
||||
</li>
|
||||
<li class="bold">
|
||||
<a class="waves-effect" class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="nav-wrapper nav-panels">
|
||||
<a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="mdi-navigation-menu"></i></a>
|
||||
|
@ -61,21 +83,37 @@
|
|||
</div>
|
||||
<div class="input-field nav-panel-buttom">
|
||||
<ul>
|
||||
<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>
|
||||
<li><a title="{% trans %}Search{% endtrans %}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search"><i class="mdi-action-search"></i></a>
|
||||
<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>
|
||||
<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>
|
||||
<li class="bold">
|
||||
<a title="{{ 'menu.top.add_new_entry'|trans }}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add">
|
||||
<i class="mdi-content-add"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="{{ 'menu.top.search'|trans }}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search">
|
||||
<i class="mdi-action-search"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li id="button_filters">
|
||||
<a title="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right">
|
||||
<i class="mdi-content-filter-list"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li id="button_export">
|
||||
<a title="{{ 'menu.top.export'|trans }}" 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>
|
||||
</ul>
|
||||
</div>
|
||||
<form method="get" action="index.php">
|
||||
<div class="input-field nav-panel-search" style="display: none">
|
||||
<input name="search" id="searchfield" type="search" required placeholder="{% trans %}Enter your search here{% endtrans %}">
|
||||
<input name="search" id="searchfield" type="search" required placeholder="{{ 'menu.search_form.input_label'|trans }}">
|
||||
<label for="search"><i class="mdi-action-search"></i></label>
|
||||
<i class="mdi-navigation-close"></i>
|
||||
</div>
|
||||
</form>
|
||||
<div class="input-field nav-panel-add" style="display: none">
|
||||
{{ render(controller( "WallabagCoreBundle:Entry:addEntryForm" )) }}
|
||||
{{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }}
|
||||
<label for="add" class="active"><i class="mdi-content-add"></i></label>
|
||||
<i class="mdi-navigation-close"></i>
|
||||
</div>
|
||||
|
@ -88,35 +126,40 @@
|
|||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col l6 s12">
|
||||
<h5 class="white-text">{% trans %}Take wallabag with you{% endtrans %}</h5>
|
||||
<h5 class="white-text">{{ 'footer.wallabag.elsewhere'|trans }}</h5>
|
||||
<p class="grey-text text-lighten-4">
|
||||
|
||||
<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>
|
||||
|
||||
<a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS"><span class="icon-apple"></a>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
<a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS">
|
||||
<span class="icon-apple"></span>
|
||||
</a>
|
||||
<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>
|
||||
<a target="_blank" class="grey-text text-lighten-3" href="https://chrome.google.com/webstore/detail/wallabagit/peehlcgckcnclnjlndmoddifcicdnabm" title="Chrome">
|
||||
<span class="icon-chrome"></span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col l4 offset-l2 s12">
|
||||
<h5 class="white-text">{% trans %}Social{% endtrans %}</h5>
|
||||
|
||||
<a target="_blank" class="grey-text text-lighten-3" href="https://twitter.com/wallabagapp" title="Twitter"><span class="icon-twitter"></span></a>
|
||||
|
||||
<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>
|
||||
|
||||
<a target="_blank" class="grey-text text-lighten-3" href="https://facebook.com/Wallabag" title="Facebook"><span class="icon-facebook2"></span></a>
|
||||
|
||||
<h5 class="white-text">{{ 'footer.wallabag.social'|trans }}</h5>
|
||||
<a target="_blank" class="grey-text text-lighten-3" href="https://twitter.com/wallabagapp" title="Twitter">
|
||||
<span class="icon-twitter"></span>
|
||||
</a>
|
||||
<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>
|
||||
<a target="_blank" class="grey-text text-lighten-3" href="https://facebook.com/Wallabag" title="Facebook">
|
||||
<span class="icon-facebook2"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-copyright">
|
||||
<div class="container">
|
||||
<p>{% trans %}powered by{% endtrans %} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p>
|
||||
<a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{% trans %}About{% endtrans %}</a>
|
||||
<p>{{ 'footer.wallabag.powered_by'|trans }} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p>
|
||||
<a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -102,7 +102,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
'change_passwd[new_password][first]' => '',
|
||||
'change_passwd[new_password][second]' => '',
|
||||
),
|
||||
'Wrong value for your current password',
|
||||
'validator.password_wrong_value',
|
||||
),
|
||||
array(
|
||||
array(
|
||||
|
@ -118,7 +118,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
'change_passwd[new_password][first]' => 'hop',
|
||||
'change_passwd[new_password][second]' => '',
|
||||
),
|
||||
'The password fields must match',
|
||||
'validator.password_must_match',
|
||||
),
|
||||
array(
|
||||
array(
|
||||
|
@ -126,7 +126,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
'change_passwd[new_password][first]' => 'hop',
|
||||
'change_passwd[new_password][second]' => 'hop',
|
||||
),
|
||||
'Password should by at least',
|
||||
'validator.password_too_short',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -188,14 +188,14 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
'update_user[name]' => '',
|
||||
'update_user[email]' => '',
|
||||
),
|
||||
'Please enter an email',
|
||||
'fos_user.email.blank',
|
||||
),
|
||||
array(
|
||||
array(
|
||||
'update_user[name]' => '',
|
||||
'update_user[email]' => 'test',
|
||||
),
|
||||
'The email is not valid',
|
||||
'fos_user.email.invalid',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -244,7 +244,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
|
||||
$crawler = $client->followRedirect();
|
||||
|
||||
$this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
|
||||
$this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text')));
|
||||
$this->assertContains('Information updated', $alert[0]);
|
||||
}
|
||||
|
||||
|
@ -258,7 +258,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
'new_user[plainPassword][second]' => '',
|
||||
'new_user[email]' => '',
|
||||
),
|
||||
'Please enter a username',
|
||||
'fos_user.username.blank',
|
||||
),
|
||||
array(
|
||||
array(
|
||||
|
@ -267,7 +267,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
'new_user[plainPassword][second]' => 'mypassword',
|
||||
'new_user[email]' => '',
|
||||
),
|
||||
'The username is too short',
|
||||
'fos_user.username.short',
|
||||
),
|
||||
array(
|
||||
array(
|
||||
|
@ -276,7 +276,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
'new_user[plainPassword][second]' => 'mypassword',
|
||||
'new_user[email]' => 'test',
|
||||
),
|
||||
'The email is not valid',
|
||||
'fos_user.email.invalid',
|
||||
),
|
||||
array(
|
||||
array(
|
||||
|
@ -285,7 +285,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
'new_user[plainPassword][second]' => 'wallacewallace',
|
||||
'new_user[email]' => 'wallace@wallace.me',
|
||||
),
|
||||
'The username is already used',
|
||||
'fos_user.username.already_used',
|
||||
),
|
||||
array(
|
||||
array(
|
||||
|
@ -294,7 +294,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
'new_user[plainPassword][second]' => 'mypassword2',
|
||||
'new_user[email]' => 'wallace@wallace.me',
|
||||
),
|
||||
'The password fields must match',
|
||||
'validator.password_must_match',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -382,7 +382,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
$this->assertEquals(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
|
||||
$this->assertContains('You need to generate a token first.', $body[0]);
|
||||
$this->assertContains('config.form_rss.no_token', $body[0]);
|
||||
|
||||
$client->request('GET', '/generate-token');
|
||||
$this->assertEquals(302, $client->getResponse()->getStatusCode());
|
||||
|
@ -390,7 +390,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
$crawler = $client->followRedirect();
|
||||
|
||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
|
||||
$this->assertNotContains('You need to generate a token first.', $body[0]);
|
||||
$this->assertNotContains('config.form_rss.no_token', $body[0]);
|
||||
}
|
||||
|
||||
public function testGenerateTokenAjax()
|
||||
|
@ -454,7 +454,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
|||
array(
|
||||
'rss_config[rss_limit]' => 1000000000000,
|
||||
),
|
||||
'This will certainly kill the app',
|
||||
'validator.rss_limit_too_hight',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
@ -28,14 +28,14 @@ class EntryControllerTest extends WallabagCoreTestCase
|
|||
$client->followRedirect();
|
||||
|
||||
$this->assertEquals(200, $client->getResponse()->getStatusCode());
|
||||
$this->assertContains('We\'ll accompany you to visit wallabag', $client->getResponse()->getContent());
|
||||
$this->assertContains('quickstart.intro.paragraph_1', $client->getResponse()->getContent());
|
||||
|
||||
// Test if quickstart is disabled when user has 1 entry
|
||||
$crawler = $client->request('GET', '/new');
|
||||
|
||||
$this->assertEquals(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$form = $crawler->filter('button[type=submit]')->form();
|
||||
$form = $crawler->filter('form[name=entry]')->form();
|
||||
|
||||
$data = array(
|
||||
'entry[url]' => $this->url,
|
||||
|
@ -46,7 +46,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
|||
$client->followRedirect();
|
||||
|
||||
$client->request('GET', '/unread/list');
|
||||
$this->assertContains('There is one entry.', $client->getResponse()->getContent());
|
||||
$this->assertContains('entry.list.number_on_the_page', $client->getResponse()->getContent());
|
||||
}
|
||||
|
||||
public function testGetNew()
|
||||
|
@ -59,7 +59,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
|||
$this->assertEquals(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$this->assertCount(1, $crawler->filter('input[type=url]'));
|
||||
$this->assertCount(1, $crawler->filter('button[type=submit]'));
|
||||
$this->assertCount(1, $crawler->filter('form[name=entry]'));
|
||||
}
|
||||
|
||||
public function testPostNewViaBookmarklet()
|
||||
|
@ -96,7 +96,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
|||
|
||||
$this->assertEquals(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$form = $crawler->filter('button[type=submit]')->form();
|
||||
$form = $crawler->filter('form[name=entry]')->form();
|
||||
|
||||
$crawler = $client->submit($form);
|
||||
|
||||
|
@ -117,7 +117,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
|||
|
||||
$this->assertEquals(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$form = $crawler->filter('button[type=submit]')->form();
|
||||
$form = $crawler->filter('form[name=entry]')->form();
|
||||
|
||||
$data = array(
|
||||
'entry[url]' => $this->url,
|
||||
|
@ -146,7 +146,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
|||
|
||||
$this->assertEquals(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$form = $crawler->filter('button[type=submit]')->form();
|
||||
$form = $crawler->filter('form[name=entry]')->form();
|
||||
|
||||
$data = array(
|
||||
'entry[url]' => $this->url,
|
||||
|
@ -170,7 +170,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
|||
|
||||
$this->assertEquals(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$form = $crawler->filter('button[type=submit]')->form();
|
||||
$form = $crawler->filter('form[name=entry]')->form();
|
||||
|
||||
$data = array(
|
||||
'entry[url]' => $url = 'https://github.com/wallabag/wallabag',
|
||||
|
|
|
@ -12,53 +12,59 @@ class SecurityControllerTest extends WallabagCoreTestCase
|
|||
$client = $this->getClient();
|
||||
$client->followRedirects();
|
||||
|
||||
$client->request('GET', '/config');
|
||||
$this->assertContains('RSS', $client->getResponse()->getContent());
|
||||
$crawler = $client->request('GET', '/config');
|
||||
$this->assertContains('config.form_rss.description', $crawler->filter('body')->extract(array('_text'))[0]);
|
||||
}
|
||||
|
||||
public function testLoginWith2Factor()
|
||||
{
|
||||
$client = $this->getClient();
|
||||
|
||||
if ($client->getContainer()->getParameter('twofactor_auth')) {
|
||||
$client->followRedirects();
|
||||
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$user = $em
|
||||
->getRepository('WallabagUserBundle:User')
|
||||
->findOneByUsername('admin');
|
||||
$user->setTwoFactorAuthentication(true);
|
||||
$em->persist($user);
|
||||
$em->flush();
|
||||
|
||||
$this->logInAs('admin');
|
||||
$client->request('GET', '/config');
|
||||
$this->assertContains('trusted computer', $client->getResponse()->getContent());
|
||||
|
||||
// restore user
|
||||
$user = $em
|
||||
->getRepository('WallabagUserBundle:User')
|
||||
->findOneByUsername('admin');
|
||||
$user->setTwoFactorAuthentication(false);
|
||||
$em->persist($user);
|
||||
$em->flush();
|
||||
if (!$client->getContainer()->getParameter('twofactor_auth')) {
|
||||
$this->markTestSkipped('twofactor_auth is not enabled.');
|
||||
return;
|
||||
}
|
||||
|
||||
$client->followRedirects();
|
||||
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$user = $em
|
||||
->getRepository('WallabagUserBundle:User')
|
||||
->findOneByUsername('admin');
|
||||
$user->setTwoFactorAuthentication(true);
|
||||
$em->persist($user);
|
||||
$em->flush();
|
||||
|
||||
$this->logInAs('admin');
|
||||
$crawler = $client->request('GET', '/config');
|
||||
$this->assertContains('scheb_two_factor.trusted', $crawler->filter('body')->extract(array('_text'))[0]);
|
||||
|
||||
// restore user
|
||||
$user = $em
|
||||
->getRepository('WallabagUserBundle:User')
|
||||
->findOneByUsername('admin');
|
||||
$user->setTwoFactorAuthentication(false);
|
||||
$em->persist($user);
|
||||
$em->flush();
|
||||
}
|
||||
|
||||
public function testTrustedComputer()
|
||||
{
|
||||
$client = $this->getClient();
|
||||
|
||||
if ($client->getContainer()->getParameter('twofactor_auth')) {
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$user = $em
|
||||
->getRepository('WallabagUserBundle:User')
|
||||
->findOneByUsername('admin');
|
||||
|
||||
$date = new \DateTime();
|
||||
$user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M')));
|
||||
$this->assertTrue($user->isTrustedComputer('ABCDEF'));
|
||||
$this->assertFalse($user->isTrustedComputer('FEDCBA'));
|
||||
if (!$client->getContainer()->getParameter('twofactor_auth')) {
|
||||
$this->markTestSkipped('twofactor_auth is not enabled.');
|
||||
return;
|
||||
}
|
||||
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$user = $em
|
||||
->getRepository('WallabagUserBundle:User')
|
||||
->findOneByUsername('admin');
|
||||
|
||||
$date = new \DateTime();
|
||||
$user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M')));
|
||||
$this->assertTrue($user->isTrustedComputer('ABCDEF'));
|
||||
$this->assertFalse($user->isTrustedComputer('FEDCBA'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ class TagControllerTest extends WallabagCoreTestCase
|
|||
|
||||
$crawler = $client->request('GET', '/view/'.$entry->getId());
|
||||
|
||||
$form = $crawler->filter('button[id=tag_save]')->form();
|
||||
$form = $crawler->filter('form[name=tag]')->form();
|
||||
|
||||
$data = array(
|
||||
'tag[label]' => $this->tagName,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue