import: "import"
misc: "misc"
modify_settings: "Gem ændring"
-piwik_host: Hosting af din side hos Piwik
+piwik_host: Hosting af din side hos Piwik (uden http:// eller https://)
piwik_site_id: ID for din side hos Piwik
piwik_enabled: Aktiver Piwik
demo_mode_enabled: "Aktiver demo-indstilling? (anvendes kun til wallabags offentlige demo)"
import: "Import"
misc: "Verschiedenes"
modify_settings: "Übernehmen"
-piwik_host: Host deiner Webseite in Piwik
+piwik_host: Host deiner Webseite in Piwik (ohne http:// oder https://)
piwik_site_id: ID deiner Webseite in Piwik
piwik_enabled: Piwik aktivieren
demo_mode_enabled: "Test-Modus aktivieren? (nur für die öffentliche wallabag-Demo genutzt)"
import: "import"
misc: "misc"
modify_settings: "apply"
-piwik_host: Host of your website in Piwik
+piwik_host: Host of your website in Piwik (without http:// ou https://)
piwik_site_id: ID of your website in Piwik
piwik_enabled: Enable Piwik
demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
import: "importar"
misc: "misc"
modify_settings: "modificar configuración"
-piwik_host: Host de tu website de Piwik
+piwik_host: Host de tu website de Piwik (sin http:// o https://)
piwik_site_id: ID de tu website de Piwik
piwik_enabled: Activar Piwik
demo_mode_enabled: "Activar modo demo (sólo usado para la demo de wallabag)"
import: "درونریزی"
misc: "غیره"
modify_settings: "اعمال"
-# piwik_host: Host of your website in Piwik
+# piwik_host: Host of your website in Piwik (without http:// or https://)
# piwik_site_id: ID of your website in Piwik
# piwik_enabled: Enable Piwik
# demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
import: "import"
misc: "divers"
modify_settings: "appliquer"
-piwik_host: URL de votre site dans Piwik
+piwik_host: URL de votre site dans Piwik (sans http:// ou https://)
piwik_site_id: ID de votre site dans Piwik
piwik_enabled: Activer Piwik
demo_mode_enabled: "Activer le mode démo ? (utiliser uniquement pour la démo publique de wallabag)"
import: "importa"
misc: "misc"
modify_settings: "applica"
-piwik_host: Host del tuo sito in Piwik
+piwik_host: Host del tuo sito in Piwik (senza http:// o https://)
piwik_site_id: ID del tuo sito in Piwik
piwik_enabled: Abilita Piwik
demo_mode_enabled: "Abilita modalità demo ? (usato solo per la demo pubblica di wallabag)"
import: "impòrt"
misc: "divèrs"
modify_settings: "aplicar"
-piwik_host: URL de vòstre site dins Piwik
+piwik_host: URL de vòstre site dins Piwik (sense http:// o https://)
piwik_site_id: ID de vòstre site dins Piwik
piwik_enabled: Activar Piwik
demo_mode_enabled: "Activar lo mode demostracion ? (utilizar solament per la demostracion publica de wallabag)"
import: "import"
misc: "różne"
modify_settings: "zatwierdz"
-piwik_host: Host twojej strony Piwik
+piwik_host: Host twojej strony Piwik (bez http:// lub https://)
piwik_site_id: ID twojej strony Piwik
piwik_enabled: Włacz Piwik
demo_mode_enabled: "Włacz tryb demo? (używany wyłącznie dla publicznej demonstracji Wallabag)"
import: "importă"
misc: "diverse"
modify_settings: "aplică"
-# piwik_host: Host of your website in Piwik
+# piwik_host: Host of your website in Piwik (without http:// or https://)
# piwik_site_id: ID of your website in Piwik
# piwik_enabled: Enable Piwik
# demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
# import: "import"
# misc: "misc"
# modify_settings: "apply"
-# piwik_host: Host of your website in Piwik
+# piwik_host: Host of your website in Piwik (without http:// or https://)
# piwik_site_id: ID of your website in Piwik
# piwik_enabled: Enable Piwik
# demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
rss_limit: 50
reading_speed: 1
cache_lifetime: 10
+ fetching_error_message: |
+ wallabag can't retrieve contents for this article. Please <a href="http://doc.wallabag.org/en/master/user/errors_during_fetching.html#how-can-i-help-to-fix-that">troubleshoot this issue</a>.
wallabag_user:
registration_enabled: "%fosuser_registration%"
user/tags
user/android
user/parameters
+ user/backup
.. _dev-docs:
--- /dev/null
+wallabag sichern
+================
+Da es manchmal vorkommen kann, dass dir ein Fehler mit deiner wallabag unterläuft und du Daten verlierst oder deine wallabag auf einen anderen Server verschieben willst, ist eine Sicherung der Daten sicher ratsam.
+Dieser Artikel beschreibt, was du für die Sicherung benötigst.
+
+Grundlegende Einstellungen
+--------------------------
+wallabag speichert grundlegende Parameter (etwa der SMTP-Server oder das Datenbank-Backend) in der Datei `app/config/parameters.yml`.
+
+Datenbank
+---------
+Da wallabag verschiedene Datenbank-Typen unterstützt, hängt der Weg der Sicherung von dem verwendeten Typ ab. Daher verweisen wir an dieser Stelle auf die entsprechenden Dokumentationen:
+
+Hier sind einige Beispiele:
+
+- MySQL: http://dev.mysql.com/doc/refman/5.7/en/backup-methods.html
+- PostgreSQL: https://www.postgresql.org/docs/current/static/backup.html
+
+SQLite
+~~~~~~
+Um die SQLite-Datenbank zu sichern, ist es lediglich notwendig, das Verzeichnis `data/db` aus dem wallabag-Installations-Ordner zu kopieren.
+
+Bilder
+------
+Die Bilder, die von wallabag empfangen worden, sind unter `data/assets/images` gespeichert (der Bilder-Speicher wird in wallabag 2.2 implementiert).
user/tags
user/android
user/parameters
+ user/backup
.. _dev-docs:
2FA
~~~
-Currently the does not support two-factor authentication. You should disable that to get the app working.
+Currently the Android application does not support two-factor authentication. You should disable that to get the application working.
Limited amount of articles with wallabag v2
--- /dev/null
+Backup wallabag
+===============
+Because sometimes you may do a mistake with your wallabag and lose data or in case you need to move your wallabag to another server you want to backup your data.
+This articles describes what you need to backup.
+
+Basic settings
+--------------
+wallabag stores some basic parameters (like SMTP server or database backend) in the file `app/config/parameters.yml`.
+
+Database
+--------
+As wallabag supports different kinds of database, the way to perform the backup depends on the database you use, so you need to refer to the vendor documentation.
+
+Here's some examples:
+
+- MySQL: http://dev.mysql.com/doc/refman/5.7/en/backup-methods.html
+- PostgreSQL: https://www.postgresql.org/docs/current/static/backup.html
+
+SQLite
+~~~~~~
+To backup the SQLite database, you just need to copy the directory `data/db` from the wallabag application directory.
+
+Images
+------
+The images retrieved by wallabag are stored under `data/assets/images` (the images storage will be implemented in wallabag 2.2).
user/filters
user/tags
user/parameters
+ user/backup
.. _dev-docs:
--- /dev/null
+Sauvegarde de wallabag
+======================
+
+Parce que des fois vous faites des erreurs avec votre installation de wallabag et vous perdez des données ou parce que vous souhaitez migrer votre installation sur un autre serveur, vous souhaitez faire une sauvegarde de vos données.
+Cette documentation décrit ce que vous devez sauvegarder.
+
+Configuration
+-------------
+wallabag stocke quelques paramètres (comme la configuration SMTP ou les infos de bases de données) dans le fichier `app/config/parameters.yml`.
+
+Base de données
+---------------
+Comme wallabag supporte différentes sortes de bases de données, la manière de sauvegarder dépend du type de base de données que vous utilisez, donc vous devez vous en référez à la documentation correspondante.
+
+Quelques exemples :
+
+- MySQL: http://dev.mysql.com/doc/refman/5.7/en/backup-methods.html
+- PostgreSQL: https://www.postgresql.org/docs/current/static/backup.html
+
+SQLite
+~~~~~~
+Pour sauvegarder une base SQLite, vous devez juste copier le répertoire `data/db` de votre installation wallabag.
+
+Images
+------
+Les images sauvegardées par wallabag sont stockées dans `data/assets/images` (le stockage des images sera implémenté dans wallabag 2.2).
],
[
'name' => 'piwik_host',
- 'value' => 'http://v2.wallabag.org',
+ 'value' => 'v2.wallabag.org',
'section' => 'analytics',
],
[
$this->updateEntry($entry, 'entry_reloaded');
+ // if refreshing entry failed, don't save it
+ if ($this->getParameter('wallabag_core.fetching_error_message') === $entry->getContent()) {
+ $bag = $this->get('session')->getFlashBag();
+ $bag->clear();
+ $bag->add('notice', 'flashes.entry.notice.entry_reloaded_failed');
+
+ return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));
+ }
+
$em = $this->getDoctrine()->getManager();
$em->persist($entry);
$em->flush();
],
[
'name' => 'piwik_host',
- 'value' => 'http://v2.wallabag.org',
+ 'value' => 'v2.wallabag.org',
'section' => 'analytics',
],
[
->integerNode('cache_lifetime')
->defaultValue(10)
->end()
+ ->scalarNode('fetching_error_message')
+ ->end()
->end()
;
$container->setParameter('wallabag_core.version', $config['version']);
$container->setParameter('wallabag_core.paypal_url', $config['paypal_url']);
$container->setParameter('wallabag_core.cache_lifetime', $config['cache_lifetime']);
+ $container->setParameter('wallabag_core.fetching_error_message', $config['fetching_error_message']);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
class: Graby\Graby
arguments:
-
- error_message: "wallabag can't retrieve contents for this article. Please report this issue to us."
+ error_message: '%wallabag_core.fetching_error_message%'
http_client:
user_agents:
'lifehacker.com': 'PHP/5.2'
# delete_confirm: Are you sure?
# back_to_list: Back to list
+error:
+ # page_title: An error occurred
+
flashes:
config:
notice:
delete_confirm: Bist du sicher?
back_to_list: Zurück zur Liste
+error:
+ # page_title: An error occurred
+
flashes:
config:
notice:
delete_confirm: Are you sure?
back_to_list: Back to list
+error:
+ page_title: An error occurred
+
flashes:
config:
notice:
# delete_confirm: Are you sure?
# back_to_list: Back to list
+error:
+ # page_title: An error occurred
+
flashes:
config:
notice:
# delete_confirm: Are you sure?
# back_to_list: Back to list
+error:
+ # page_title: An error occurred
+
flashes:
config:
notice:
how_to: "Choisissez le fichier de sauvegarde de vos marques-page et cliquez sur le bouton pour l'importer. Soyez avertis que le processus peut prendre un temps assez long car tous les articles doivent être récupérés en ligne."
instapaper:
page_title: 'Import > Instapaper'
- description: 'Sur la page des paramètres (`https://www.instapaper.com/user<https://www.instapaper.com/user>`_), cliquez sur "Download .CSV file" dans la section "Export". Un fichier CSV se téléchargera ("instapaper-export.csv").'
+ description: 'Sur la page des paramètres (https://www.instapaper.com/user), cliquez sur "Download .CSV file" dans la section "Export". Un fichier CSV se téléchargera ("instapaper-export.csv").'
how_to: "Choisissez le fichier de votre export Instapaper et cliquez sur le bouton ci-dessous pour l'importer."
developer:
delete_confirm: Êtes-vous sûr?
back_to_list: Revenir à la liste
+error:
+ page_title: Une erreur est survenue
+
flashes:
config:
notice:
# delete_confirm: Are you sure?
# back_to_list: Back to list
+error:
+ # page_title: An error occurred
+
flashes:
config:
notice:
# delete_confirm: Are you sure?
# back_to_list: Back to list
+error:
+ # page_title: An error occurred
+
flashes:
config:
notice:
delete_confirm: Jesteś pewien?
back_to_list: Powrót do listy
+error:
+ # page_title: An error occurred
+
flashes:
config:
notice:
# delete_confirm: Are you sure?
# back_to_list: Back to list
+error:
+ # page_title: An error occurred
+
flashes:
config:
notice:
# delete_confirm: Are you sure?
# back_to_list: Back to list
+error:
+ # page_title: An error occurred
+
flashes:
config:
notice:
<meta name="twitter:image" content="{{ picturePath }}" />
<meta name="twitter:site" content="@wallabagapp" />
<meta name="twitter:title" content="{{ entry.title | raw }}" />
- <meta name="twitter:description" content="{{ entry.title | raw }}" />
+ <meta name="twitter:description" content="{{ entry.content|striptags|slice(0, 300)|raw }}…" />
</head>
<body>
<header>
$interval = $user->getCreatedAt()->diff(new \DateTime('now'));
$nbDays = (int) $interval->format('%a') ?: 1;
+ // force setlocale for date translation
+ setlocale(LC_TIME, strtolower($user->getConfig()->getLanguage()).'_'.strtoupper(strtolower($user->getConfig()->getLanguage())));
+
return $this->translator->trans('footer.stats', [
- '%user_creation%' => $user->getCreatedAt()->format('F jS, Y'),
+ '%user_creation%' => strftime('%e %B %Y', $user->getCreatedAt()->getTimestamp()),
'%nb_archives%' => $nbArchives,
'%per_day%' => round($nbArchives / $nbDays, 2),
]);
$entry = $this->import->parseEntry($storedEntry);
if (null === $entry) {
- $this->logger->warning('Unable to parse entry', ['entry' => $storedEntry]);
+ $this->logger->warning('Entry already exists', ['entry' => $storedEntry]);
- return false;
+ // return true to skip message
+ return true;
}
try {
public function parseEntry(array $importedEntry)
{
if ((!array_key_exists('guid', $importedEntry) || (!array_key_exists('id', $importedEntry))) && is_array(reset($importedEntry))) {
+ if ($this->producer) {
+ $this->parseEntriesForProducer($importedEntry);
+
+ return;
+ }
+
$this->parseEntries($importedEntry);
return;
}
if (array_key_exists('children', $importedEntry)) {
+ if ($this->producer) {
+ $this->parseEntriesForProducer($importedEntry['children']);
+
+ return;
+ }
+
$this->parseEntries($importedEntry['children']);
return;
$content = $em
->getRepository('WallabagCoreBundle:Entry')
- ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+ ->find($content->getId());
$this->assertNotEmpty($content->getContent());
}
+ /**
+ * @depends testPostNewOk
+ */
+ public function testReloadWithFetchingFailed()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $em = $client->getContainer()
+ ->get('doctrine.orm.entity_manager');
+
+ $content = $em
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
+
+ // put a known failed url
+ $content->setUrl('http://0.0.0.0/failed.html');
+ $em->persist($content);
+ $em->flush();
+
+ $client->request('GET', '/reload/'.$content->getId());
+
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+ // force EntityManager to clear previous entity
+ // otherwise, retrieve the same entity will retrieve change from the previous request :0
+ $em->clear();
+ $newContent = $em
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->find($content->getId());
+
+ $newContent->setUrl($this->url);
+ $em->persist($newContent);
+ $em->flush();
+
+ $this->assertNotEquals($client->getContainer()->getParameter('wallabag_core.fetching_error_message'), $newContent->getContent());
+ }
+
public function testEdit()
{
$this->logInAs('admin');
$res = $consumer->manage($body);
- $this->assertFalse($res);
+ $this->assertTrue($res);
$this->assertFalse($consumer->isStopJob($body));
}
}