forked from wallabag/wallabag
Merge pull request #1941 from wallabag/v2-asynchronous-jobs
Use asynchronous jobs for imports
This commit is contained in:
@ -317,8 +317,13 @@ class InstallCommand extends ContainerAwareCommand
|
||||
'section' => 'export',
|
||||
],
|
||||
[
|
||||
'name' => 'pocket_consumer_key',
|
||||
'value' => null,
|
||||
'name' => 'import_with_redis',
|
||||
'value' => '0',
|
||||
'section' => 'import',
|
||||
],
|
||||
[
|
||||
'name' => 'import_with_rabbitmq',
|
||||
'value' => '0',
|
||||
'section' => 'import',
|
||||
],
|
||||
[
|
||||
|
||||
@ -17,26 +17,35 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
|
||||
class EntryController extends Controller
|
||||
{
|
||||
/**
|
||||
* @param Entry $entry
|
||||
* Fetch content and update entry.
|
||||
* In case it fails, entry will return to avod loosing the data.
|
||||
*
|
||||
* @param Entry $entry
|
||||
* @param string $prefixMessage Should be the translation key: entry_saved or entry_reloaded
|
||||
*
|
||||
* @return Entry
|
||||
*/
|
||||
private function updateEntry(Entry $entry)
|
||||
private function updateEntry(Entry $entry, $prefixMessage = 'entry_saved')
|
||||
{
|
||||
// put default title in case of fetching content failed
|
||||
$entry->setTitle('No title found');
|
||||
|
||||
$message = 'flashes.entry.notice.'.$prefixMessage;
|
||||
|
||||
try {
|
||||
$entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl());
|
||||
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($entry);
|
||||
$em->flush();
|
||||
} catch (\Exception $e) {
|
||||
$this->get('logger')->error('Error while saving an entry', [
|
||||
'exception' => $e,
|
||||
'entry' => $entry,
|
||||
]);
|
||||
|
||||
return false;
|
||||
$message = 'flashes.entry.notice.'.$prefixMessage.'_failed';
|
||||
}
|
||||
|
||||
return true;
|
||||
$this->get('session')->getFlashBag()->add('notice', $message);
|
||||
|
||||
return $entry;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -66,12 +75,11 @@ class EntryController extends Controller
|
||||
return $this->redirect($this->generateUrl('view', ['id' => $existingEntry->getId()]));
|
||||
}
|
||||
|
||||
$message = 'flashes.entry.notice.entry_saved';
|
||||
if (false === $this->updateEntry($entry)) {
|
||||
$message = 'flashes.entry.notice.entry_saved_failed';
|
||||
}
|
||||
$this->updateEntry($entry);
|
||||
|
||||
$this->get('session')->getFlashBag()->add('notice', $message);
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($entry);
|
||||
$em->flush();
|
||||
|
||||
return $this->redirect($this->generateUrl('homepage'));
|
||||
}
|
||||
@ -95,6 +103,10 @@ class EntryController extends Controller
|
||||
|
||||
if (false === $this->checkIfEntryAlreadyExists($entry)) {
|
||||
$this->updateEntry($entry);
|
||||
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($entry);
|
||||
$em->flush();
|
||||
}
|
||||
|
||||
return $this->redirect($this->generateUrl('homepage'));
|
||||
@ -316,15 +328,11 @@ class EntryController extends Controller
|
||||
{
|
||||
$this->checkUserAction($entry);
|
||||
|
||||
$message = 'flashes.entry.notice.entry_reloaded';
|
||||
if (false === $this->updateEntry($entry)) {
|
||||
$message = 'flashes.entry.notice.entry_reload_failed';
|
||||
}
|
||||
$this->updateEntry($entry, 'entry_reloaded');
|
||||
|
||||
$this->get('session')->getFlashBag()->add(
|
||||
'notice',
|
||||
$message
|
||||
);
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($entry);
|
||||
$em->flush();
|
||||
|
||||
return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ class LoadConfigData extends AbstractFixture implements OrderedFixtureInterface
|
||||
$adminConfig->setItemsPerPage(30);
|
||||
$adminConfig->setReadingSpeed(1);
|
||||
$adminConfig->setLanguage('en');
|
||||
$adminConfig->setPocketConsumerKey('xxxxx');
|
||||
|
||||
$manager->persist($adminConfig);
|
||||
|
||||
@ -30,6 +31,7 @@ class LoadConfigData extends AbstractFixture implements OrderedFixtureInterface
|
||||
$bobConfig->setItemsPerPage(10);
|
||||
$bobConfig->setReadingSpeed(1);
|
||||
$bobConfig->setLanguage('fr');
|
||||
$bobConfig->setPocketConsumerKey(null);
|
||||
|
||||
$manager->persist($bobConfig);
|
||||
|
||||
@ -40,6 +42,7 @@ class LoadConfigData extends AbstractFixture implements OrderedFixtureInterface
|
||||
$emptyConfig->setItemsPerPage(10);
|
||||
$emptyConfig->setReadingSpeed(1);
|
||||
$emptyConfig->setLanguage('en');
|
||||
$emptyConfig->setPocketConsumerKey(null);
|
||||
|
||||
$manager->persist($emptyConfig);
|
||||
|
||||
|
||||
@ -91,8 +91,13 @@ class LoadSettingData extends AbstractFixture implements OrderedFixtureInterface
|
||||
'section' => 'export',
|
||||
],
|
||||
[
|
||||
'name' => 'pocket_consumer_key',
|
||||
'value' => null,
|
||||
'name' => 'import_with_redis',
|
||||
'value' => '0',
|
||||
'section' => 'import',
|
||||
],
|
||||
[
|
||||
'name' => 'import_with_rabbitmq',
|
||||
'value' => '0',
|
||||
'section' => 'import',
|
||||
],
|
||||
[
|
||||
|
||||
@ -80,6 +80,13 @@ class Config
|
||||
*/
|
||||
private $readingSpeed;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @ORM\Column(name="pocket_consumer_key", type="string", nullable=true)
|
||||
*/
|
||||
private $pocketConsumerKey;
|
||||
|
||||
/**
|
||||
* @ORM\OneToOne(targetEntity="Wallabag\UserBundle\Entity\User", inversedBy="config")
|
||||
*/
|
||||
@ -278,6 +285,30 @@ class Config
|
||||
return $this->readingSpeed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set pocketConsumerKey.
|
||||
*
|
||||
* @param string $pocketConsumerKey
|
||||
*
|
||||
* @return Config
|
||||
*/
|
||||
public function setPocketConsumerKey($pocketConsumerKey)
|
||||
{
|
||||
$this->pocketConsumerKey = $pocketConsumerKey;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pocketConsumerKey.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPocketConsumerKey()
|
||||
{
|
||||
return $this->pocketConsumerKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param TaggingRule $rule
|
||||
*
|
||||
|
||||
@ -97,7 +97,7 @@ class Entry
|
||||
private $content;
|
||||
|
||||
/**
|
||||
* @var date
|
||||
* @var \DateTime
|
||||
*
|
||||
* @ORM\Column(name="created_at", type="datetime")
|
||||
*
|
||||
@ -106,7 +106,7 @@ class Entry
|
||||
private $createdAt;
|
||||
|
||||
/**
|
||||
* @var date
|
||||
* @var \DateTime
|
||||
*
|
||||
* @ORM\Column(name="updated_at", type="datetime")
|
||||
*
|
||||
@ -410,7 +410,22 @@ class Entry
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* Set created_at.
|
||||
* Only used when importing data from an other service.
|
||||
*
|
||||
* @param \DateTime $createdAt
|
||||
*
|
||||
* @return Entry
|
||||
*/
|
||||
public function setCreatedAt(\DateTime $createdAt)
|
||||
{
|
||||
$this->createdAt = $createdAt;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DateTime
|
||||
*/
|
||||
public function getCreatedAt()
|
||||
{
|
||||
@ -418,7 +433,7 @@ class Entry
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @return \DateTime
|
||||
*/
|
||||
public function getUpdatedAt()
|
||||
{
|
||||
|
||||
@ -52,6 +52,9 @@ class ConfigType extends AbstractType
|
||||
'choices' => array_flip($this->languages),
|
||||
'label' => 'config.form_settings.language_label',
|
||||
])
|
||||
->add('pocket_consumer_key', null, [
|
||||
'label' => 'config.form_settings.pocket_consumer_key_label',
|
||||
])
|
||||
->add('save', SubmitType::class, [
|
||||
'label' => 'config.form.save',
|
||||
])
|
||||
|
||||
@ -125,3 +125,11 @@ services:
|
||||
arguments:
|
||||
- "@security.token_storage"
|
||||
- "@router"
|
||||
|
||||
wallabag_core.redis.client:
|
||||
class: Predis\Client
|
||||
arguments:
|
||||
-
|
||||
host: '%redis_host%'
|
||||
port: '%redis_port%'
|
||||
schema: tcp
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
# 200_word: 'I read ~200 words per minute'
|
||||
# 300_word: 'I read ~300 words per minute'
|
||||
# 400_word: 'I read ~400 words per minute'
|
||||
pocket_consumer_key_label: Brugers nøgle til Pocket for at importere materialer
|
||||
form_rss:
|
||||
description: 'RSS-feeds fra wallabag gør det muligt at læse de artikler, der gemmes i wallabag, med din RSS-læser. Det kræver, at du genererer et token først.'
|
||||
token_label: 'RSS-Token'
|
||||
@ -346,6 +347,8 @@ import:
|
||||
# page_title: 'Import > Readability'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
worker:
|
||||
# enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
# page_title: 'Developer'
|
||||
@ -411,10 +414,10 @@ flashes:
|
||||
notice:
|
||||
# entry_already_saved: 'Entry already saved on %date%'
|
||||
# entry_saved: 'Entry saved'
|
||||
# entry_saved_failed: 'Failed to save entry'
|
||||
# entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
# entry_updated: 'Entry updated'
|
||||
# entry_reloaded: 'Entry reloaded'
|
||||
# entry_reload_failed: 'Failed to reload entry'
|
||||
# entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'Artikel arkiveret'
|
||||
entry_unarchived: 'Artikel ikke længere arkiveret'
|
||||
entry_starred: 'Artikel markeret som favorit'
|
||||
@ -428,6 +431,7 @@ flashes:
|
||||
# failed: 'Import failed, please try again.'
|
||||
# failed_on_file: 'Error while processing import. Please verify your import file.'
|
||||
# summary: 'Import summary: %imported% imported, %skipped% already saved.'
|
||||
# summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
# client_created: 'New client created.'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
200_word: 'Ich lese ~200 Wörter pro Minute'
|
||||
300_word: 'Ich lese ~300 Wörter pro Minute'
|
||||
400_word: 'Ich lese ~400 Wörter pro Minute'
|
||||
pocket_consumer_key_label: Consumer-Key für Pocket, um Inhalte zu importieren
|
||||
form_rss:
|
||||
description: 'Die RSS-Feeds von wallabag erlauben es dir, deine gespeicherten Artikel mit deinem bevorzugten RSS-Reader zu lesen. Vorher musst du jedoch einen Token erstellen.'
|
||||
token_label: 'RSS-token'
|
||||
@ -346,6 +347,8 @@ import:
|
||||
page_title: 'Aus Readability importieren'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
worker:
|
||||
# enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
page_title: 'Entwickler'
|
||||
@ -411,10 +414,10 @@ flashes:
|
||||
notice:
|
||||
entry_already_saved: 'Eintrag bereits am %date% gespeichert'
|
||||
entry_saved: 'Eintrag gespeichert'
|
||||
# entry_saved_failed: 'Failed to save entry'
|
||||
# entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
entry_updated: 'Eintrag aktualisiert'
|
||||
entry_reloaded: 'Eintrag neugeladen'
|
||||
entry_reload_failed: 'Neuladen des Eintrags fehlgeschlagen'
|
||||
# entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'Artikel archiviert'
|
||||
entry_unarchived: 'Artikel dearchiviert'
|
||||
entry_starred: 'Artikel favorisiert'
|
||||
@ -428,6 +431,7 @@ flashes:
|
||||
failed: 'Import fehlgeschlagen, bitte erneut probieren.'
|
||||
failed_on_file: 'Fehler während des Imports. Bitte überprüfe deine Import-Datei.'
|
||||
summary: 'Import-Zusammenfassung: %imported% importiert, %skipped% bereits gespeichert.'
|
||||
# summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
client_created: 'Neuer Client erstellt.'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
200_word: 'I read ~200 words per minute'
|
||||
300_word: 'I read ~300 words per minute'
|
||||
400_word: 'I read ~400 words per minute'
|
||||
pocket_consumer_key_label: Consumer key for Pocket to import contents
|
||||
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'
|
||||
@ -346,6 +347,8 @@ import:
|
||||
page_title: 'Import > Readability'
|
||||
description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
worker:
|
||||
enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
page_title: 'Developer'
|
||||
@ -413,10 +416,10 @@ flashes:
|
||||
notice:
|
||||
entry_already_saved: 'Entry already saved on %date%'
|
||||
entry_saved: 'Entry saved'
|
||||
entry_saved_failed: 'Failed to save entry'
|
||||
entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
entry_updated: 'Entry updated'
|
||||
entry_reloaded: 'Entry reloaded'
|
||||
entry_reload_failed: 'Failed to reload entry'
|
||||
entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'Entry archived'
|
||||
entry_unarchived: 'Entry unarchived'
|
||||
entry_starred: 'Entry starred'
|
||||
@ -430,6 +433,7 @@ flashes:
|
||||
failed: 'Import failed, please try again.'
|
||||
failed_on_file: 'Error while processing import. Please verify your import file.'
|
||||
summary: 'Import summary: %imported% imported, %skipped% already saved.'
|
||||
summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
client_created: 'New client %name% created.'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
200_word: 'Leo ~200 palabras por minuto'
|
||||
300_word: 'Leo ~300 palabras por minuto'
|
||||
400_word: 'Leo ~400 palabras por minuto'
|
||||
# pocket_consumer_key_label: Consumer key for Pocket to import contents
|
||||
form_rss:
|
||||
description: 'Los feeds RSS de wallabag permiten leer los artículos guardados con su lector RSS favorito. Necesita generar un token primero'
|
||||
token_label: 'RSS token'
|
||||
@ -346,6 +347,8 @@ import:
|
||||
page_title: 'Importar > Readability'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
worker:
|
||||
# enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
page_title: 'Promotor'
|
||||
@ -411,10 +414,10 @@ flashes:
|
||||
notice:
|
||||
entry_already_saved: 'Entrada ya guardada por %fecha%'
|
||||
entry_saved: 'Entrada guardada'
|
||||
# entry_saved_failed: 'Failed to save entry'
|
||||
# entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
entry_updated: 'Entrada actualizada'
|
||||
entry_reloaded: 'Entrada recargada'
|
||||
entry_reload_failed: 'Entrada recargada reprobada'
|
||||
# entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'Artículo archivado'
|
||||
entry_unarchived: 'Artículo desarchivado'
|
||||
entry_starred: 'Artículo guardado en los favoritos'
|
||||
@ -425,9 +428,10 @@ flashes:
|
||||
tag_added: 'Etiqueta añadida'
|
||||
import:
|
||||
notice:
|
||||
failed: 'Importación reprobada, por favor inténtelo de nuevo.'
|
||||
failed_on_file: 'Se ocurre un error por procesar importación. Por favor verifique su archivo importado.'
|
||||
summary: 'Resúmen importado: %importado% importado, %saltados% ya guardado.'
|
||||
failed: 'Importación reprobada, por favor inténtelo de nuevo.'
|
||||
failed_on_file: 'Se ocurre un error por procesar importación. Por favor verifique su archivo importado.'
|
||||
summary: 'Resúmen importado: %importado% importado, %saltados% ya guardado.'
|
||||
# summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
client_created: 'Nuevo cliente creado.'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
200_word: 'من تقریباً ۲۰۰ واژه را در دقیقه میخوانم'
|
||||
300_word: 'من تقریباً ۳۰۰ واژه را در دقیقه میخوانم'
|
||||
400_word: 'من تقریباً ۴۰۰ واژه را در دقیقه میخوانم'
|
||||
pocket_consumer_key_label: کلید کاربری Pocket برای درونریزی مطالب
|
||||
form_rss:
|
||||
description: 'با خوراک آر-اس-اس که wallabag در اختیارتان میگذارد، میتوانید مقالههای ذخیرهشده را در نرمافزار آر-اس-اس دلخواه خود بخوانید. برای این کار نخست باید یک کد بسازید.'
|
||||
token_label: 'کد آر-اس-اس'
|
||||
@ -344,8 +345,10 @@ import:
|
||||
description: 'این برنامه همهٔ دادههای شما را در نسخهٔ ۲ wallabag درونریزی میکند. به بخش «همهٔ مقالهها» بروید و در بخش «برونریزی» روی "JSON" کلیک کنید. با این کار شما پروندهای به شکل "All articles.json" دریافت خواهید کرد.'
|
||||
readability:
|
||||
page_title: 'درونریزی > Readability'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
worker:
|
||||
# enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
# page_title: 'Developer'
|
||||
@ -411,10 +414,10 @@ flashes:
|
||||
notice:
|
||||
entry_already_saved: 'این مقاله در تاریخ %date% ذخیره شده بود'
|
||||
entry_saved: 'مقاله ذخیره شد'
|
||||
# entry_saved_failed: 'Failed to save entry'
|
||||
# entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
entry_updated: 'مقاله بهروز شد'
|
||||
entry_reloaded: 'مقاله بهروز شد'
|
||||
entry_reload_failed: 'بهروزرسانی مقاله شکست خورد'
|
||||
# entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'مقاله بایگانی شد'
|
||||
entry_unarchived: 'مقاله از بایگانی درآمد'
|
||||
entry_starred: 'مقاله برگزیده شد'
|
||||
@ -428,6 +431,7 @@ flashes:
|
||||
failed: 'درونریزی شکست خورد. لطفاً دوباره تلاش کنید.'
|
||||
failed_on_file: 'خطا هنگام پردازش پروندهٔ ورودی. آیا پروندهٔ درونریزی شده سالم است؟'
|
||||
summary: 'گزارش درونریزی: %imported% وارد شد, %skipped% از قبل ذخیره شده بود.'
|
||||
# summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
# client_created: 'New client created.'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
200_word: 'Je lis environ 200 mots par minute'
|
||||
300_word: 'Je lis environ 300 mots par minute'
|
||||
400_word: 'Je lis environ 400 mots par minute'
|
||||
pocket_consumer_key_label: Clé d'authentification Pocket pour importer les données
|
||||
form_rss:
|
||||
description: "Les flux RSS fournis par wallabag vous permettent de lire vos articles sauvegardés dans votre lecteur de flux préféré. Pour pouvoir les utiliser, vous devez d'abord créer un jeton."
|
||||
token_label: 'Jeton RSS'
|
||||
@ -346,6 +347,8 @@ import:
|
||||
page_title: 'Importer > Readability'
|
||||
description: 'Cet outil va importer toutes vos données de Readability. Sur la page des outils (https://www.readability.com/tools/), cliquez sur "Export your data" dans la section "Data Export". Vous allez recevoir un email avec un lien pour télécharger le json.'
|
||||
how_to: "Choisissez le fichier de votre export Readability et cliquez sur le bouton ci-dessous pour l'importer."
|
||||
worker:
|
||||
enabled: "Les imports sont asynchrones. Une fois l'import commencé un worker externe traitera les messages un par un. Le service activé est :"
|
||||
|
||||
developer:
|
||||
page_title: 'Développeur'
|
||||
@ -413,10 +416,10 @@ flashes:
|
||||
notice:
|
||||
entry_already_saved: 'Article déjà sauvergardé le %date%'
|
||||
entry_saved: 'Article enregistré'
|
||||
entry_saved_failed: "L'enregistrement a échoué"
|
||||
entry_saved_failed: 'Article enregistré mais impossible de récupérer le contenu'
|
||||
entry_updated: 'Article mis à jour'
|
||||
entry_reloaded: 'Article rechargé'
|
||||
entry_reload_failed: "Le rechargement de l'article a échoué"
|
||||
entry_reload_failed: "Article mis à jour mais impossible de récupérer le contenu"
|
||||
entry_archived: 'Article marqué comme lu'
|
||||
entry_unarchived: 'Article marqué comme non lu'
|
||||
entry_starred: 'Article ajouté dans les favoris'
|
||||
@ -430,6 +433,7 @@ flashes:
|
||||
failed: "L'import a échoué, veuillez ré-essayer"
|
||||
failed_on_file: "Erreur lors du traitement de l'import. Vérifier votre fichier."
|
||||
summary: "Rapport d'import: %imported% importés, %skipped% déjà présent."
|
||||
summary_with_queue: "Rapport d'import: %queued% en cours de traitement."
|
||||
developer:
|
||||
notice:
|
||||
client_created: 'Nouveau client %name% créé'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
200_word: 'Leggo ~200 parole al minuto'
|
||||
300_word: 'Leggo ~300 parole al minuto'
|
||||
400_word: 'Leggo ~400 parole al minuto'
|
||||
pocket_consumer_key_label: Consumer key per Pocket per importare i contenuti
|
||||
form_rss:
|
||||
description: 'I feed RSS generati da wallabag ti permettono di leggere i tuoi contenuti salvati con il tuo lettore di RSS preferito. Prima, devi generare un token.'
|
||||
token_label: 'RSS token'
|
||||
@ -343,8 +344,10 @@ import:
|
||||
description: 'Questo importatore copierà tutti i tuoi dati da un wallabag v2. Vai in "Tutti i contenuti", e, nella sidebar di esportazione, clicca su "JSON". Otterrai un file "Tutti i contenuti.json".'
|
||||
readability:
|
||||
page_title: 'Importa da > Readability'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
worker:
|
||||
# enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
page_title: 'Sviluppatori'
|
||||
@ -410,10 +413,10 @@ flashes:
|
||||
notice:
|
||||
entry_already_saved: 'Contenuto già salvato in data %date%'
|
||||
entry_saved: 'Contenuto salvato'
|
||||
# entry_saved_failed: 'Failed to save entry'
|
||||
# entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
entry_updated: 'Contenuto aggiornato'
|
||||
entry_reloaded: 'Contenuto ricaricato'
|
||||
entry_reload_failed: 'Errore nel ricaricamento del contenuto'
|
||||
# entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'Contenuto archiviato'
|
||||
entry_unarchived: 'Contenuto dis-archiviato'
|
||||
entry_starred: 'Contenuto segnato come preferito'
|
||||
@ -427,6 +430,7 @@ flashes:
|
||||
failed: 'Importazione fallita, riprova.'
|
||||
failed_on_file: 'Errore durante la processazione dei dati da importare. Verifica il tuo file di import.'
|
||||
summary: 'Sommario di importazione: %imported% importati, %skipped% già salvati.'
|
||||
# summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
client_created: 'Nuovo client creato.'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
200_word: "Legissi a l'entorn de 200 mots per minuta"
|
||||
300_word: "Legissi a l'entorn de 300 mots per minuta"
|
||||
400_word: "Legissi a l'entorn de 400 mots per minuta"
|
||||
pocket_consumer_key_label: Clau d'autentificacion Pocket per importar las donadas
|
||||
form_rss:
|
||||
description: "Los fluxes RSS fornits per wallabag vos permeton de legir vòstres articles salvagardats dins vòstre lector de fluxes preferit. Per los poder emplegar, vos cal, d'en primièr crear un geton."
|
||||
token_label: 'Geton RSS'
|
||||
@ -346,6 +347,8 @@ import:
|
||||
page_title: 'Importer > Readability'
|
||||
description: "Aquesta aisina importarà totas vòstres articles de Readability. Sus la pagina de l'aisina (https://www.readability.com/tools/), clicatz sus \"Export your data\" dins la seccion \"Data Export\". Recebretz un corrièl per telecargar un json (qu'acaba pas amb un .json de fach)."
|
||||
how_to: "Mercés de seleccionar vòstre Readability fichièr e de clicar sul boton dejós per lo telecargar e l'importar."
|
||||
worker:
|
||||
# enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
page_title: 'Desvolopador'
|
||||
@ -411,10 +414,10 @@ flashes:
|
||||
notice:
|
||||
entry_already_saved: 'Article ja salvargardat lo %date%'
|
||||
entry_saved: 'Article enregistrat'
|
||||
entry_saved_failed: "Fracàs de l'enregistrament de l'entrada"
|
||||
# entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
entry_updated: 'Article mes a jorn'
|
||||
entry_reloaded: 'Article recargat'
|
||||
entry_reload_failed: "Fracàs de l'actualizacion de l'article"
|
||||
# entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'Article marcat coma legit'
|
||||
entry_unarchived: 'Article marcat coma pas legit'
|
||||
entry_starred: 'Article apondut dins los favorits'
|
||||
@ -428,6 +431,7 @@ flashes:
|
||||
failed: "L'importacion a fracassat, mercés de tornar ensajar"
|
||||
failed_on_file: "Errorr pendent du tractament de l'import. Mercés de verificar vòstre fichièr."
|
||||
summary: "Rapòrt d'import: %imported% importats, %skipped% ja presents."
|
||||
# summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
client_created: 'Novèl client creat'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
200_word: 'Czytam ~200 słów na minutę'
|
||||
300_word: 'Czytam ~300 słów na minutę'
|
||||
400_word: 'Czytam ~400 słów na minutę'
|
||||
pocket_consumer_key_label: Klucz klienta Pocket do importu zawartości
|
||||
form_rss:
|
||||
description: 'Kanały RSS prowadzone przez wallabag pozwalają Ci na czytanie twoich zapisanych artykułów w twoium ulubionym czytniku RSS. Musisz najpierw wynegenerować tokena.'
|
||||
token_label: 'Token RSS'
|
||||
@ -346,6 +347,8 @@ import:
|
||||
page_title: 'Import > Readability'
|
||||
description: 'Ten importer, zaimportuje wszystkie twoje artykuły z Readability. Na stronie narzędzi (https://www.readability.com/tools/), kliknij na "Export your data" w sekcji "Data Export". Otrzymach email z plikiem JSON (plik nie będzie zawierał rozszerzenia .json).'
|
||||
how_to: 'Wybierz swój plik eksportu z Readability i kliknij poniższy przycisk, aby go załadować.'
|
||||
worker:
|
||||
# enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
page_title: 'Deweloper'
|
||||
@ -411,10 +414,10 @@ flashes:
|
||||
notice:
|
||||
entry_already_saved: 'Wpis już został dodany %date%'
|
||||
entry_saved: 'Wpis zapisany'
|
||||
entry_saved_failed: 'Zapis artykułu się nie powiódł'
|
||||
# entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
entry_updated: 'Wpis zaktualizowany'
|
||||
entry_reloaded: 'Wpis ponownie załadowany'
|
||||
entry_reload_failed: 'Błąd ponownego załadowania'
|
||||
# entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'Wpis dodany do archiwum'
|
||||
entry_unarchived: 'Wpis usunięty z archiwum'
|
||||
entry_starred: 'Wpis oznaczony gwiazdką'
|
||||
@ -428,6 +431,7 @@ flashes:
|
||||
failed: 'Nieudany import, prosimy spróbować ponownie.'
|
||||
failed_on_file: 'Błąd podczas ptrzetwarzania pliku. Sprawdż swój importowany plik.'
|
||||
summary: 'Podsumowanie importu: %imported% zaimportowane, %skipped% już zapisane.'
|
||||
# summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
client_created: 'Nowy klient utworzony.'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
# 200_word: 'I read ~200 words per minute'
|
||||
# 300_word: 'I read ~300 words per minute'
|
||||
# 400_word: 'I read ~400 words per minute'
|
||||
pocket_consumer_key_label: Cheie consumator pentru importarea contentului din Pocket
|
||||
form_rss:
|
||||
description: 'Feed-urile RSS oferite de wallabag îți permit să-ți citești articolele salvate în reader-ul tău preferat RSS.'
|
||||
token_label: 'RSS-Token'
|
||||
@ -346,6 +347,8 @@ import:
|
||||
# page_title: 'Import > Readability'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
worker:
|
||||
# enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
# page_title: 'Developer'
|
||||
@ -411,10 +414,10 @@ flashes:
|
||||
notice:
|
||||
# entry_already_saved: 'Entry already saved on %date%'
|
||||
# entry_saved: 'Entry saved'
|
||||
# entry_saved_failed: 'Failed to save entry'
|
||||
# entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
# entry_updated: 'Entry updated'
|
||||
# entry_reloaded: 'Entry reloaded'
|
||||
# entry_reload_failed: 'Failed to reload entry'
|
||||
# entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'Articol arhivat'
|
||||
entry_unarchived: 'Articol dezarhivat'
|
||||
entry_starred: 'Articol adăugat la favorite'
|
||||
@ -428,6 +431,7 @@ flashes:
|
||||
# failed: 'Import failed, please try again.'
|
||||
# failed_on_file: 'Error while processing import. Please verify your import file.'
|
||||
# summary: 'Import summary: %imported% imported, %skipped% already saved.'
|
||||
# summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
# client_created: 'New client created.'
|
||||
|
||||
@ -68,6 +68,7 @@ config:
|
||||
# 200_word: 'I read ~200 words per minute'
|
||||
# 300_word: 'I read ~300 words per minute'
|
||||
# 400_word: 'I read ~400 words per minute'
|
||||
# pocket_consumer_key_label: Consumer key for Pocket to import contents
|
||||
form_rss:
|
||||
description: 'wallabag RSS akışı kaydetmiş olduğunuz makalelerini favori RSS okuyucunuzda görüntülemenizi sağlar. Bunu yapabilmek için öncelikle belirteç (token) oluşturmalısınız.'
|
||||
token_label: 'RSS belirteci (token)'
|
||||
@ -344,8 +345,10 @@ import:
|
||||
# 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.'
|
||||
readability:
|
||||
page_title: 'İçe Aktar > Readability'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
# description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
|
||||
# how_to: 'Please select your Readability export and click on the below button to upload and import it.'
|
||||
worker:
|
||||
# enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:"
|
||||
|
||||
developer:
|
||||
# page_title: 'Developer'
|
||||
@ -411,10 +414,10 @@ flashes:
|
||||
notice:
|
||||
entry_already_saved: 'Entry already saved on %date%'
|
||||
entry_saved: 'Makale kaydedildi'
|
||||
# entry_saved_failed: 'Failed to save entry'
|
||||
# entry_saved_failed: 'Entry saved but fetching content failed'
|
||||
# entry_updated: 'Entry updated'
|
||||
entry_reloaded: 'Makale içeriği yenilendi'
|
||||
# entry_reload_failed: 'Failed to reload entry'
|
||||
# entry_reload_failed: 'Entry reloaded but fetching content failed'
|
||||
entry_archived: 'Makale arşivlendi'
|
||||
entry_unarchived: 'Makale arşivden çıkartıldı'
|
||||
entry_starred: 'Makale favorilere eklendi'
|
||||
@ -428,6 +431,7 @@ flashes:
|
||||
# failed: 'Import failed, please try again.'
|
||||
# failed_on_file: 'Error while processing import. Please verify your import file.'
|
||||
# summary: 'Import summary: %imported% imported, %skipped% already saved.'
|
||||
# summary_with_queue: 'Import summary: %queued% queued.'
|
||||
developer:
|
||||
notice:
|
||||
# client_created: 'New client created.'
|
||||
|
||||
@ -44,6 +44,18 @@
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="w500p inline">
|
||||
<div class="row">
|
||||
{{ form_label(form.config.pocket_consumer_key) }}
|
||||
{{ form_errors(form.config.pocket_consumer_key) }}
|
||||
{{ form_widget(form.config.pocket_consumer_key) }}
|
||||
<p>
|
||||
»
|
||||
<a href="https://getpocket.com/developer/docs/authentication">https://getpocket.com/developer/docs/authentication</a>
|
||||
</p>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
{{ form_rest(form.config) }}
|
||||
</form>
|
||||
|
||||
|
||||
@ -62,6 +62,18 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
{{ form_label(form.config.pocket_consumer_key) }}
|
||||
{{ form_errors(form.config.pocket_consumer_key) }}
|
||||
{{ form_widget(form.config.pocket_consumer_key) }}
|
||||
<p>
|
||||
»
|
||||
<a href="https://getpocket.com/developer/docs/authentication">https://getpocket.com/developer/docs/authentication</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ form_widget(form.config.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_rest(form.config) }}
|
||||
</form>
|
||||
|
||||
@ -19,6 +19,8 @@
|
||||
Materialize.toast('{{ flashMessage|trans }}', 4000);
|
||||
</script>
|
||||
{% endfor %}
|
||||
|
||||
{{ render(controller("WallabagImportBundle:Import:checkQueue")) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block menu %}
|
||||
|
||||
Reference in New Issue
Block a user