1
0
Fork 0
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:
Jeremy Benoist 2016-03-09 08:59:08 +01:00
parent d2b4f01d74
commit 0d42217e4e
80 changed files with 1145 additions and 868 deletions

View file

@ -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;

View file

@ -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)
;
}

View file

@ -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)
;
}

View file

@ -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',
))
;
}

View file

@ -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',
))
;
}

View file

@ -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',
))
;
}

View file

@ -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)
;
}

View file

@ -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)
;
}

View file

@ -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',
))
;
}

View file

@ -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);

View file

@ -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')
;

View 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 &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »'
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">&lt;</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'

View file

@ -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"

View file

@ -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) }}

View file

@ -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) }}

View file

@ -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">&lt;</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) }}&hellip;</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) }}&hellip;</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">&times;</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>

View file

@ -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 %} &lt; 1 min
{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
{%- endif %}
{{ entry.content|raw -}}

View file

@ -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 }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans %}Email{% endtrans %}"><span>{% trans %}Email{% endtrans %}</span></a></li>{% endif %}
{% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans %}shaarli{% endtrans %}"><span>{% trans %}shaarli{% endtrans %}</span></a></li>{% endif %}
{% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="{% trans %}diaspora{% endtrans %}"><span>{% trans %}diaspora{% endtrans %}</span></a></li>{% endif %}
{% 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 }}&amp;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 }}&amp;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 }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="diaspora"><span>diaspora</span></a></li>{% endif %}
{% 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&amp;method=id&amp;value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
{% if craue_setting('export_mobi') %}<li><a href="?mobi&amp;method=id&amp;value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
{% if craue_setting('export_pdf') %}<li><a href="?pdf&amp;method=id&amp;value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %}
<li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans %}Does this article appear wrong?{% endtrans %}" class="tool bad-display icon icon-delete"><span>{% trans %}Does this article appear wrong?{% endtrans %}</span></a></li>
<li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.label'|trans }}" class="tool bad-display icon icon-delete"><span>{{ 'entry.view.left_menu.problem.label'|trans }}</span></a></li>
</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>

View file

@ -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" )) }}

View file

@ -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>

View file

@ -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>

View file

@ -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 &amp; drop this link to your bookmarks bar:{% endtrans %}
{{ 'howto.bookmarklet.description'|trans }}
{% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
{% endblock %}

View file

@ -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 %}

View file

@ -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>

View file

@ -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 %}

View file

@ -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">&times;</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 %}

View file

@ -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 &lt;= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime &gt;= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »
{% 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>&lt;=</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>&lt;</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>=&gt;</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>&gt;</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 %}

View file

@ -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>

View file

@ -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">&lt;</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">&lt;</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>

View file

@ -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 %} &lt; 1 min
{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
{%- endif %}
{{ entry.content|raw -}}

View file

@ -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 }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans %}Email{% endtrans %}">
<span>{% trans %}Email{% endtrans %}</span>
<a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{{ 'entry.view.left_menu.share_email_label'|trans }}">
<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&amp;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&amp;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">

View file

@ -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" )) }}

View file

@ -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>

View file

@ -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>

View file

@ -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 &amp; 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>

View file

@ -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>

View file

@ -9,5 +9,5 @@
{{ form_widget(form.label, { 'attr': {'autocomplete': 'off'} }) }}
<div class="hidden">{{ form_rest(form) }}</div>
{{ form_rest(form) }}
</form>

View file

@ -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">

View file

@ -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>

View file

@ -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',
),
);
}

View file

@ -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',

View file

@ -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'));
}
}

View file

@ -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,