Merge remote-tracking branch 'origin/master' into port/2.6.10

This commit is contained in:
Kevin Decherf 2024-11-15 23:53:48 +01:00
commit 8e9f908cf1
25 changed files with 591 additions and 196 deletions

View file

@ -148,3 +148,57 @@ jobs:
- name: "Run PHPUnit"
run: "php bin/phpunit -v"
phpunit-without-rmq-redis:
name: "PHP ${{ matrix.php }} using ${{ matrix.database }} without Rabbit & Redis"
runs-on: "ubuntu-20.04"
strategy:
fail-fast: false
matrix:
php:
- "8.3"
database:
- "sqlite"
- "mysql"
- "pgsql"
steps:
- name: "Checkout"
uses: "actions/checkout@v4"
with:
fetch-depth: 2
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
php-version: "${{ matrix.php }}"
coverage: none
tools: pecl
extensions: json, pdo, pdo_mysql, pdo_sqlite, pdo_pgsql, curl, imagick, pgsql, gd, tidy
ini-values: "date.timezone=Europe/Paris"
- name: "Setup MySQL"
if: "${{ matrix.database == 'mysql' }}"
run: |
sudo systemctl start mysql.service
sudo mysql -u root -proot -h 127.0.0.1 -e "CREATE DATABASE wallabag_test"
- name: "Setup PostgreSQL"
if: "${{ matrix.database == 'pgsql' }}"
run: |
sudo systemctl start postgresql
sudo -u postgres psql -d template1 -c "CREATE USER wallabag WITH PASSWORD 'wallabagrocks' CREATEDB"
createdb -h localhost -p 5432 -U wallabag wallabag_test
pg_isready -d wallabag_test -h localhost -p 5432 -U wallabag
- name: "Install dependencies with Composer"
uses: "ramsey/composer-install@v3"
with:
composer-options: "--optimize-autoloader --prefer-dist"
- name: "Prepare database configuration"
run: cp app/config/tests/parameters_test.${{ matrix.database }}.yml app/config/parameters_test.yml
- name: "Run PHPUnit"
run: "php bin/phpunit -v"

View file

@ -6,6 +6,7 @@ services:
public: true
Wallabag\Consumer\RabbitMQConsumerTotalProxy:
lazy: true
arguments:
$pocketConsumer: '@old_sound_rabbit_mq.import_pocket_consumer'
$readabilityConsumer: '@old_sound_rabbit_mq.import_readability_consumer'

View file

@ -114,6 +114,10 @@ parameters:
name: export_xml
value: 1
section: export
-
name: export_md
value: 1
section: export
-
name: import_with_redis
value: 0
@ -140,7 +144,7 @@ parameters:
section: misc
-
name: wallabag_support_url
value: https://www.wallabag.org/pages/support.html
value: https://github.com/wallabag/wallabag/issues/new/choose
section: misc
-
name: api_user_registration

View file

@ -87,6 +87,7 @@
"jms/serializer-bundle": "^5.4",
"laminas/laminas-code": "^4.7.1",
"lcobucci/jwt": "^4.3",
"league/html-to-markdown": "^5.1",
"mgargano/simplehtmldom": "^1.5",
"mnapoli/piwik-twig-extension": "^3.0",
"monolog/monolog": "^2.9",

399
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "6407ed5fbd4b0973ed565c2a136d3a81",
"content-hash": "a45ce1bad60f024c66e17b6aca7ad88d",
"packages": [
{
"name": "babdev/pagerfanta-bundle",
@ -145,16 +145,16 @@
},
{
"name": "beberlei/assert",
"version": "v3.3.3",
"version": "v3.3.2",
"source": {
"type": "git",
"url": "https://github.com/beberlei/assert.git",
"reference": "b5fd8eacd8915a1b627b8bfc027803f1939734dd"
"reference": "cb70015c04be1baee6f5f5c953703347c0ac1655"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/beberlei/assert/zipball/b5fd8eacd8915a1b627b8bfc027803f1939734dd",
"reference": "b5fd8eacd8915a1b627b8bfc027803f1939734dd",
"url": "https://api.github.com/repos/beberlei/assert/zipball/cb70015c04be1baee6f5f5c953703347c0ac1655",
"reference": "cb70015c04be1baee6f5f5c953703347c0ac1655",
"shasum": ""
},
"require": {
@ -162,7 +162,7 @@
"ext-json": "*",
"ext-mbstring": "*",
"ext-simplexml": "*",
"php": "^7.1 || ^8.0"
"php": "^7.0 || ^8.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "*",
@ -206,9 +206,9 @@
],
"support": {
"issues": "https://github.com/beberlei/assert/issues",
"source": "https://github.com/beberlei/assert/tree/v3.3.3"
"source": "https://github.com/beberlei/assert/tree/v3.3.2"
},
"time": "2024-07-15T13:18:35+00:00"
"time": "2021-12-16T21:41:27+00:00"
},
{
"name": "behat/transliterator",
@ -413,23 +413,23 @@
},
{
"name": "dasprid/enum",
"version": "1.0.6",
"version": "1.0.5",
"source": {
"type": "git",
"url": "https://github.com/DASPRiD/Enum.git",
"reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90"
"reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DASPRiD/Enum/zipball/8dfd07c6d2cf31c8da90c53b83c026c7696dda90",
"reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90",
"url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6faf451159fb8ba4126b925ed2d78acfce0dc016",
"reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016",
"shasum": ""
},
"require": {
"php": ">=7.1 <9.0"
},
"require-dev": {
"phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11",
"phpunit/phpunit": "^7 | ^8 | ^9",
"squizlabs/php_codesniffer": "*"
},
"type": "library",
@ -457,9 +457,9 @@
],
"support": {
"issues": "https://github.com/DASPRiD/Enum/issues",
"source": "https://github.com/DASPRiD/Enum/tree/1.0.6"
"source": "https://github.com/DASPRiD/Enum/tree/1.0.5"
},
"time": "2024-08-09T14:30:48+00:00"
"time": "2023-08-25T16:18:39+00:00"
},
{
"name": "defuse/php-encryption",
@ -2657,16 +2657,16 @@
},
{
"name": "gedmo/doctrine-extensions",
"version": "v3.17.1",
"version": "v3.16.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine-extensions/DoctrineExtensions.git",
"reference": "eabb45018c5a4362b46c5beae3881261da89f900"
"reference": "e85560ed96f977b8c29428a99222cb2ef2f0e80d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/eabb45018c5a4362b46c5beae3881261da89f900",
"reference": "eabb45018c5a4362b46c5beae3881261da89f900",
"url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/e85560ed96f977b8c29428a99222cb2ef2f0e80d",
"reference": "e85560ed96f977b8c29428a99222cb2ef2f0e80d",
"shasum": ""
},
"require": {
@ -2683,14 +2683,14 @@
},
"conflict": {
"doctrine/annotations": "<1.13 || >=3.0",
"doctrine/dbal": "<3.7 || >=5.0",
"doctrine/dbal": "<3.2 || >=4.0",
"doctrine/mongodb-odm": "<2.3 || >=3.0",
"doctrine/orm": "<2.14.0 || 2.16.0 || 2.16.1 || >=4.0"
},
"require-dev": {
"doctrine/annotations": "^1.13 || ^2.0",
"doctrine/cache": "^1.11 || ^2.0",
"doctrine/dbal": "^3.7 || ^4.0",
"doctrine/dbal": "^3.2",
"doctrine/doctrine-bundle": "^2.3",
"doctrine/mongodb-odm": "^2.3",
"doctrine/orm": "^2.14.0 || ^3.0",
@ -2762,7 +2762,7 @@
"support": {
"email": "gediminas.morkevicius@gmail.com",
"issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues",
"source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.17.1",
"source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.16.1",
"wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc"
},
"funding": [
@ -2783,7 +2783,7 @@
"type": "github"
}
],
"time": "2024-10-07T22:30:27+00:00"
"time": "2024-06-25T16:22:14+00:00"
},
{
"name": "grandt/binstring",
@ -5305,6 +5305,95 @@
],
"time": "2023-01-02T13:28:00+00:00"
},
{
"name": "league/html-to-markdown",
"version": "5.1.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
"reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/0b4066eede55c48f38bcee4fb8f0aa85654390fd",
"reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-xml": "*",
"php": "^7.2.5 || ^8.0"
},
"require-dev": {
"mikehaertl/php-shellcommand": "^1.1.0",
"phpstan/phpstan": "^1.8.8",
"phpunit/phpunit": "^8.5 || ^9.2",
"scrutinizer/ocular": "^1.6",
"unleashedtech/php-coding-standard": "^2.7 || ^3.0",
"vimeo/psalm": "^4.22 || ^5.0"
},
"bin": [
"bin/html-to-markdown"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.2-dev"
}
},
"autoload": {
"psr-4": {
"League\\HTMLToMarkdown\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Colin O'Dell",
"email": "colinodell@gmail.com",
"homepage": "https://www.colinodell.com",
"role": "Lead Developer"
},
{
"name": "Nick Cernis",
"email": "nick@cern.is",
"homepage": "http://modernnerd.net",
"role": "Original Author"
}
],
"description": "An HTML-to-markdown conversion helper for PHP",
"homepage": "https://github.com/thephpleague/html-to-markdown",
"keywords": [
"html",
"markdown"
],
"support": {
"issues": "https://github.com/thephpleague/html-to-markdown/issues",
"source": "https://github.com/thephpleague/html-to-markdown/tree/5.1.1"
},
"funding": [
{
"url": "https://www.colinodell.com/sponsor",
"type": "custom"
},
{
"url": "https://www.paypal.me/colinpodell/10.00",
"type": "custom"
},
{
"url": "https://github.com/colinodell",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/league/html-to-markdown",
"type": "tidelift"
}
],
"time": "2023-07-12T21:21:09+00:00"
},
{
"name": "masterminds/html5",
"version": "2.9.0",
@ -8593,16 +8682,16 @@
},
{
"name": "sentry/sentry",
"version": "4.10.0",
"version": "4.9.0",
"source": {
"type": "git",
"url": "https://github.com/getsentry/sentry-php.git",
"reference": "2af937d47d8aadb8dab0b1d7b9557e495dd12856"
"reference": "788ec170f51ebb22f2809a1e3f78b19ccd39b70d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/2af937d47d8aadb8dab0b1d7b9557e495dd12856",
"reference": "2af937d47d8aadb8dab0b1d7b9557e495dd12856",
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/788ec170f51ebb22f2809a1e3f78b19ccd39b70d",
"reference": "788ec170f51ebb22f2809a1e3f78b19ccd39b70d",
"shasum": ""
},
"require": {
@ -8620,12 +8709,12 @@
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.4",
"guzzlehttp/promises": "^2.0.3",
"guzzlehttp/promises": "^1.0|^2.0",
"guzzlehttp/psr7": "^1.8.4|^2.1.1",
"monolog/monolog": "^1.6|^2.0|^3.0",
"phpbench/phpbench": "^1.0",
"phpstan/phpstan": "^1.3",
"phpunit/phpunit": "^8.5|^9.6",
"phpunit/phpunit": "^8.5.14|^9.4",
"symfony/phpunit-bridge": "^5.2|^6.0|^7.0",
"vimeo/psalm": "^4.17"
},
@ -8666,7 +8755,7 @@
],
"support": {
"issues": "https://github.com/getsentry/sentry-php/issues",
"source": "https://github.com/getsentry/sentry-php/tree/4.10.0"
"source": "https://github.com/getsentry/sentry-php/tree/4.9.0"
},
"funding": [
{
@ -8678,7 +8767,7 @@
"type": "custom"
}
],
"time": "2024-11-06T07:44:19+00:00"
"time": "2024-08-08T14:40:50+00:00"
},
{
"name": "sentry/sentry-symfony",
@ -8910,16 +8999,16 @@
},
{
"name": "spiriitlabs/form-filter-bundle",
"version": "v10.0.2",
"version": "v10.0.0",
"source": {
"type": "git",
"url": "https://github.com/SpiriitLabs/form-filter-bundle.git",
"reference": "78a8aaaf4f0e51d1ba6ffd59e371e137f9517123"
"reference": "7a1ab5c7f8d1890562f8a3e57796bbb8f84e5be8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/SpiriitLabs/form-filter-bundle/zipball/78a8aaaf4f0e51d1ba6ffd59e371e137f9517123",
"reference": "78a8aaaf4f0e51d1ba6ffd59e371e137f9517123",
"url": "https://api.github.com/repos/SpiriitLabs/form-filter-bundle/zipball/7a1ab5c7f8d1890562f8a3e57796bbb8f84e5be8",
"reference": "7a1ab5c7f8d1890562f8a3e57796bbb8f84e5be8",
"shasum": ""
},
"require": {
@ -8956,9 +9045,9 @@
"symfony"
],
"support": {
"source": "https://github.com/SpiriitLabs/form-filter-bundle/tree/v10.0.2"
"source": "https://github.com/SpiriitLabs/form-filter-bundle/tree/v10.0.0"
},
"time": "2024-08-23T08:46:41+00:00"
"time": "2024-01-15T14:09:58+00:00"
},
{
"name": "spomky-labs/otphp",
@ -9446,16 +9535,16 @@
},
{
"name": "symfony/console",
"version": "v5.4.46",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "fb0d4760e7147d81ab4d9e2d57d56268261b4e4e"
"reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/fb0d4760e7147d81ab4d9e2d57d56268261b4e4e",
"reference": "fb0d4760e7147d81ab4d9e2d57d56268261b4e4e",
"url": "https://api.github.com/repos/symfony/console/zipball/c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed",
"reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed",
"shasum": ""
},
"require": {
@ -9525,7 +9614,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v5.4.46"
"source": "https://github.com/symfony/console/tree/v5.4.47"
},
"funding": [
{
@ -9541,7 +9630,7 @@
"type": "tidelift"
}
],
"time": "2024-11-05T14:17:06+00:00"
"time": "2024-11-06T11:30:55+00:00"
},
{
"name": "symfony/dependency-injection",
@ -10639,16 +10728,16 @@
},
{
"name": "symfony/http-client",
"version": "v5.4.46",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
"reference": "ebcaeeafc48b69f497f82b9700ddf54bfe975f71"
"reference": "3b643b83f87e1765d2e9b1e946bb56ee0b4b7bde"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/ebcaeeafc48b69f497f82b9700ddf54bfe975f71",
"reference": "ebcaeeafc48b69f497f82b9700ddf54bfe975f71",
"url": "https://api.github.com/repos/symfony/http-client/zipball/3b643b83f87e1765d2e9b1e946bb56ee0b4b7bde",
"reference": "3b643b83f87e1765d2e9b1e946bb56ee0b4b7bde",
"shasum": ""
},
"require": {
@ -10710,7 +10799,7 @@
"http"
],
"support": {
"source": "https://github.com/symfony/http-client/tree/v5.4.46"
"source": "https://github.com/symfony/http-client/tree/v5.4.47"
},
"funding": [
{
@ -10726,7 +10815,7 @@
"type": "tidelift"
}
],
"time": "2024-10-25T11:45:42+00:00"
"time": "2024-11-13T12:18:12+00:00"
},
{
"name": "symfony/http-client-contracts",
@ -10884,16 +10973,16 @@
},
{
"name": "symfony/http-kernel",
"version": "v5.4.46",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "492ce57430d44e28b30b2c76724bef31dcb73b3e"
"reference": "0ac42d5e16317f15dc5f8ea83742c51d2ed2350f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/492ce57430d44e28b30b2c76724bef31dcb73b3e",
"reference": "492ce57430d44e28b30b2c76724bef31dcb73b3e",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/0ac42d5e16317f15dc5f8ea83742c51d2ed2350f",
"reference": "0ac42d5e16317f15dc5f8ea83742c51d2ed2350f",
"shasum": ""
},
"require": {
@ -10977,7 +11066,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-kernel/tree/v5.4.46"
"source": "https://github.com/symfony/http-kernel/tree/v5.4.47"
},
"funding": [
{
@ -10993,20 +11082,20 @@
"type": "tidelift"
}
],
"time": "2024-11-06T09:26:57+00:00"
"time": "2024-11-13T13:47:53+00:00"
},
{
"name": "symfony/intl",
"version": "v5.4.46",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/intl.git",
"reference": "d74763310045ccf2bf485549f8ba942184e31087"
"reference": "5258476a3ab680cd633a1d23130fcc9e8027e3ff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/intl/zipball/d74763310045ccf2bf485549f8ba942184e31087",
"reference": "d74763310045ccf2bf485549f8ba942184e31087",
"url": "https://api.github.com/repos/symfony/intl/zipball/5258476a3ab680cd633a1d23130fcc9e8027e3ff",
"reference": "5258476a3ab680cd633a1d23130fcc9e8027e3ff",
"shasum": ""
},
"require": {
@ -11067,7 +11156,7 @@
"localization"
],
"support": {
"source": "https://github.com/symfony/intl/tree/v5.4.46"
"source": "https://github.com/symfony/intl/tree/v5.4.47"
},
"funding": [
{
@ -11083,7 +11172,7 @@
"type": "tidelift"
}
],
"time": "2024-11-05T14:12:18+00:00"
"time": "2024-11-08T08:12:23+00:00"
},
{
"name": "symfony/mailer",
@ -12419,16 +12508,16 @@
},
{
"name": "symfony/property-info",
"version": "v5.4.45",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
"reference": "cec75362b20263758c9c7af4c2f9af82614195ae"
"reference": "4d77ab22c57ef56a943e3f5769b5fe66be546094"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/property-info/zipball/cec75362b20263758c9c7af4c2f9af82614195ae",
"reference": "cec75362b20263758c9c7af4c2f9af82614195ae",
"url": "https://api.github.com/repos/symfony/property-info/zipball/4d77ab22c57ef56a943e3f5769b5fe66be546094",
"reference": "4d77ab22c57ef56a943e3f5769b5fe66be546094",
"shasum": ""
},
"require": {
@ -12445,7 +12534,7 @@
"require-dev": {
"doctrine/annotations": "^1.10.4|^2",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"phpstan/phpdoc-parser": "^1.0",
"phpstan/phpdoc-parser": "^1.0|^2.0",
"symfony/cache": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/serializer": "^4.4|^5.0|^6.0"
@ -12490,7 +12579,7 @@
"validator"
],
"support": {
"source": "https://github.com/symfony/property-info/tree/v5.4.45"
"source": "https://github.com/symfony/property-info/tree/v5.4.47"
},
"funding": [
{
@ -12506,7 +12595,7 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:11:13+00:00"
"time": "2024-11-07T14:13:13+00:00"
},
{
"name": "symfony/proxy-manager-bridge",
@ -13094,16 +13183,16 @@
},
{
"name": "symfony/security-http",
"version": "v5.4.46",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-http.git",
"reference": "7152f0e4e292719cdeb8306076448036e025569b"
"reference": "cde02b002e0447075430e6a84482e38f2fd9268d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/security-http/zipball/7152f0e4e292719cdeb8306076448036e025569b",
"reference": "7152f0e4e292719cdeb8306076448036e025569b",
"url": "https://api.github.com/repos/symfony/security-http/zipball/cde02b002e0447075430e6a84482e38f2fd9268d",
"reference": "cde02b002e0447075430e6a84482e38f2fd9268d",
"shasum": ""
},
"require": {
@ -13160,7 +13249,7 @@
"description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/security-http/tree/v5.4.46"
"source": "https://github.com/symfony/security-http/tree/v5.4.47"
},
"funding": [
{
@ -13176,7 +13265,7 @@
"type": "tidelift"
}
],
"time": "2024-11-04T12:18:48+00:00"
"time": "2024-11-07T14:12:41+00:00"
},
{
"name": "symfony/serializer",
@ -13428,16 +13517,16 @@
},
{
"name": "symfony/string",
"version": "v5.4.45",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "7f6807add88b1e2635f3c6de5e1ace631ed7cad2"
"reference": "136ca7d72f72b599f2631aca474a4f8e26719799"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/7f6807add88b1e2635f3c6de5e1ace631ed7cad2",
"reference": "7f6807add88b1e2635f3c6de5e1ace631ed7cad2",
"url": "https://api.github.com/repos/symfony/string/zipball/136ca7d72f72b599f2631aca474a4f8e26719799",
"reference": "136ca7d72f72b599f2631aca474a4f8e26719799",
"shasum": ""
},
"require": {
@ -13494,7 +13583,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v5.4.45"
"source": "https://github.com/symfony/string/tree/v5.4.47"
},
"funding": [
{
@ -13510,7 +13599,7 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:11:13+00:00"
"time": "2024-11-10T20:33:58+00:00"
},
{
"name": "symfony/templating",
@ -13968,16 +14057,16 @@
},
{
"name": "symfony/validator",
"version": "v5.4.46",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
"reference": "9849c2cae17964a42a77df6823ac90414e2b451d"
"reference": "7caeb2a5f5d5a8a82f243e4dd0b1e7b89e54dc33"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/validator/zipball/9849c2cae17964a42a77df6823ac90414e2b451d",
"reference": "9849c2cae17964a42a77df6823ac90414e2b451d",
"url": "https://api.github.com/repos/symfony/validator/zipball/7caeb2a5f5d5a8a82f243e4dd0b1e7b89e54dc33",
"reference": "7caeb2a5f5d5a8a82f243e4dd0b1e7b89e54dc33",
"shasum": ""
},
"require": {
@ -14061,7 +14150,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/validator/tree/v5.4.46"
"source": "https://github.com/symfony/validator/tree/v5.4.47"
},
"funding": [
{
@ -14077,20 +14166,20 @@
"type": "tidelift"
}
],
"time": "2024-11-04T11:03:12+00:00"
"time": "2024-11-08T08:12:23+00:00"
},
{
"name": "symfony/var-dumper",
"version": "v5.4.46",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "f51f11e4fc5ca24fa0defcdf4df027078950b9e0"
"reference": "e13e8dfa8eaab2b0536ef365beddc2af723a9ac0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/f51f11e4fc5ca24fa0defcdf4df027078950b9e0",
"reference": "f51f11e4fc5ca24fa0defcdf4df027078950b9e0",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/e13e8dfa8eaab2b0536ef365beddc2af723a9ac0",
"reference": "e13e8dfa8eaab2b0536ef365beddc2af723a9ac0",
"shasum": ""
},
"require": {
@ -14150,7 +14239,7 @@
"dump"
],
"support": {
"source": "https://github.com/symfony/var-dumper/tree/v5.4.46"
"source": "https://github.com/symfony/var-dumper/tree/v5.4.47"
},
"funding": [
{
@ -14166,7 +14255,7 @@
"type": "tidelift"
}
],
"time": "2024-11-05T14:17:06+00:00"
"time": "2024-11-08T15:21:10+00:00"
},
{
"name": "symfony/var-exporter",
@ -14721,16 +14810,16 @@
},
{
"name": "twig/twig",
"version": "v3.11.3",
"version": "v3.11.2",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "3b06600ff3abefaf8ff55d5c336cd1c4253f8c7e"
"reference": "5b580ec1882b54c98cbd8c0f8a3ca5d1904db6b1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/3b06600ff3abefaf8ff55d5c336cd1c4253f8c7e",
"reference": "3b06600ff3abefaf8ff55d5c336cd1c4253f8c7e",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/5b580ec1882b54c98cbd8c0f8a3ca5d1904db6b1",
"reference": "5b580ec1882b54c98cbd8c0f8a3ca5d1904db6b1",
"shasum": ""
},
"require": {
@ -14785,7 +14874,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.11.3"
"source": "https://github.com/twigphp/Twig/tree/v3.11.2"
},
"funding": [
{
@ -14797,7 +14886,7 @@
"type": "tidelift"
}
],
"time": "2024-11-07T12:34:41+00:00"
"time": "2024-11-06T18:50:16+00:00"
},
{
"name": "wallabag/phpepub",
@ -15596,24 +15685,24 @@
},
{
"name": "composer/semver",
"version": "3.4.3",
"version": "3.4.2",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
"reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
"reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
"reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
"url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6",
"reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.11",
"symfony/phpunit-bridge": "^3 || ^7"
"phpstan/phpstan": "^1.4",
"symfony/phpunit-bridge": "^4.2 || ^5"
},
"type": "library",
"extra": {
@ -15657,7 +15746,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
"source": "https://github.com/composer/semver/tree/3.4.3"
"source": "https://github.com/composer/semver/tree/3.4.2"
},
"funding": [
{
@ -15673,7 +15762,7 @@
"type": "tidelift"
}
],
"time": "2024-09-19T14:15:21+00:00"
"time": "2024-07-12T11:35:52+00:00"
},
{
"name": "composer/xdebug-handler",
@ -15896,16 +15985,16 @@
},
{
"name": "doctrine/doctrine-fixtures-bundle",
"version": "3.6.1",
"version": "3.6.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
"reference": "d13a08ebf244f74c8adb8ff15aa55d01c404e534"
"reference": "f44a224e27573b79140197a44e68484c45fb24da"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/d13a08ebf244f74c8adb8ff15aa55d01c404e534",
"reference": "d13a08ebf244f74c8adb8ff15aa55d01c404e534",
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/f44a224e27573b79140197a44e68484c45fb24da",
"reference": "f44a224e27573b79140197a44e68484c45fb24da",
"shasum": ""
},
"require": {
@ -15963,7 +16052,7 @@
],
"support": {
"issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues",
"source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.6.1"
"source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.6.2"
},
"funding": [
{
@ -15979,7 +16068,7 @@
"type": "tidelift"
}
],
"time": "2024-05-07T07:16:35+00:00"
"time": "2024-11-13T07:41:29+00:00"
},
{
"name": "ergebnis/composer-normalize",
@ -16836,16 +16925,16 @@
},
{
"name": "myclabs/deep-copy",
"version": "1.12.1",
"version": "1.12.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
"shasum": ""
},
"require": {
@ -16884,7 +16973,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.0"
},
"funding": [
{
@ -16892,20 +16981,20 @@
"type": "tidelift"
}
],
"time": "2024-11-08T17:47:46+00:00"
"time": "2024-06-12T14:39:25+00:00"
},
{
"name": "nikic/php-parser",
"version": "v4.19.4",
"version": "v4.19.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2"
"reference": "4e1b88d21c69391150ace211e9eaf05810858d0b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2",
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b",
"reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
"shasum": ""
},
"require": {
@ -16914,7 +17003,7 @@
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
},
"bin": [
"bin/php-parse"
@ -16946,9 +17035,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4"
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1"
},
"time": "2024-09-29T15:01:53+00:00"
"time": "2024-03-17T08:10:35+00:00"
},
{
"name": "phar-io/manifest",
@ -17434,35 +17523,35 @@
},
{
"name": "phpunit/php-code-coverage",
"version": "9.2.32",
"version": "9.2.31",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5"
"reference": "48c34b5d8d983006bd2adc2d0de92963b9155965"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5",
"reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965",
"reference": "48c34b5d8d983006bd2adc2d0de92963b9155965",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
"nikic/php-parser": "^4.19.1 || ^5.1.0",
"nikic/php-parser": "^4.18 || ^5.0",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.6",
"phpunit/php-text-template": "^2.0.4",
"sebastian/code-unit-reverse-lookup": "^2.0.3",
"sebastian/complexity": "^2.0.3",
"sebastian/environment": "^5.1.5",
"sebastian/lines-of-code": "^1.0.4",
"sebastian/version": "^3.0.2",
"theseer/tokenizer": "^1.2.3"
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
"sebastian/code-unit-reverse-lookup": "^2.0.2",
"sebastian/complexity": "^2.0",
"sebastian/environment": "^5.1.2",
"sebastian/lines-of-code": "^1.0.3",
"sebastian/version": "^3.0.1",
"theseer/tokenizer": "^1.2.0"
},
"require-dev": {
"phpunit/phpunit": "^9.6"
"phpunit/phpunit": "^9.3"
},
"suggest": {
"ext-pcov": "PHP extension that provides line coverage",
@ -17471,7 +17560,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "9.2.x-dev"
"dev-master": "9.2-dev"
}
},
"autoload": {
@ -17500,7 +17589,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32"
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31"
},
"funding": [
{
@ -17508,7 +17597,7 @@
"type": "github"
}
],
"time": "2024-08-22T04:23:01+00:00"
"time": "2024-03-02T06:37:42+00:00"
},
{
"name": "phpunit/php-file-iterator",
@ -17753,16 +17842,16 @@
},
{
"name": "phpunit/phpunit",
"version": "9.6.21",
"version": "9.6.20",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa"
"reference": "49d7820565836236411f5dc002d16dd689cde42f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa",
"reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/49d7820565836236411f5dc002d16dd689cde42f",
"reference": "49d7820565836236411f5dc002d16dd689cde42f",
"shasum": ""
},
"require": {
@ -17777,7 +17866,7 @@
"phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1",
"php": ">=7.3",
"phpunit/php-code-coverage": "^9.2.32",
"phpunit/php-code-coverage": "^9.2.31",
"phpunit/php-file-iterator": "^3.0.6",
"phpunit/php-invoker": "^3.1.1",
"phpunit/php-text-template": "^2.0.4",
@ -17836,7 +17925,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.21"
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.20"
},
"funding": [
{
@ -17852,7 +17941,7 @@
"type": "tidelift"
}
],
"time": "2024-09-19T10:50:18+00:00"
"time": "2024-07-10T11:45:39+00:00"
},
{
"name": "react/cache",
@ -19732,16 +19821,16 @@
},
{
"name": "symfony/process",
"version": "v5.4.46",
"version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "01906871cb9b5e3cf872863b91aba4ec9767daf4"
"reference": "5d1662fb32ebc94f17ddb8d635454a776066733d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/01906871cb9b5e3cf872863b91aba4ec9767daf4",
"reference": "01906871cb9b5e3cf872863b91aba4ec9767daf4",
"url": "https://api.github.com/repos/symfony/process/zipball/5d1662fb32ebc94f17ddb8d635454a776066733d",
"reference": "5d1662fb32ebc94f17ddb8d635454a776066733d",
"shasum": ""
},
"require": {
@ -19774,7 +19863,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v5.4.46"
"source": "https://github.com/symfony/process/tree/v5.4.47"
},
"funding": [
{
@ -19790,7 +19879,7 @@
"type": "tidelift"
}
],
"time": "2024-11-06T09:18:28+00:00"
"time": "2024-11-06T11:36:42+00:00"
},
{
"name": "symfony/web-profiler-bundle",

View file

@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace Application\Migrations;
use Doctrine\DBAL\Schema\Schema;
use Wallabag\Doctrine\WallabagMigration;
/**
* Added the internal setting to export articles in markdown.
*/
final class Version20241112193044 extends WallabagMigration
{
public function up(Schema $schema): void
{
$this->addSql('INSERT INTO ' . $this->getTable('internal_setting') . " (name, value, section) VALUES ('export_md', '1', 'export');");
}
public function down(Schema $schema): void
{
$this->addSql('DELETE FROM' . $this->getTable('internal_setting') . " WHERE name = 'export_md';");
}
}

View file

@ -54,7 +54,7 @@
"file-loader": "^6.2.0",
"lato-font": "^3.0.0",
"mini-css-extract-plugin": "^2.9.2",
"postcss": "^8.4.47",
"postcss": "^8.4.48",
"postcss-loader": "^8.1.1",
"postcss-scss": "^4.0.9",
"sass-embedded": "^1.80.6",

View file

@ -20,7 +20,7 @@ class ExportController extends AbstractController
* Gets one entry content.
*
* @Route("/export/{id}.{format}", name="export_entry", requirements={
* "format": "epub|pdf|json|xml|txt|csv",
* "format": "epub|pdf|json|xml|txt|csv|md",
* "id": "\d+"
* })
*
@ -54,7 +54,7 @@ class ExportController extends AbstractController
* Export all entries for current user.
*
* @Route("/export/{category}.{format}", name="export_entries", requirements={
* "format": "epub|pdf|json|xml|txt|csv",
* "format": "epub|pdf|json|xml|txt|csv|md",
* "category": "all|unread|starred|archive|tag_entries|untagged|search|annotated|same_domain"
* })
*

View file

@ -5,6 +5,7 @@ namespace Wallabag\Helper;
use Html2Text\Html2Text;
use JMS\Serializer\SerializationContext;
use JMS\Serializer\SerializerBuilder;
use League\HTMLToMarkdown\HtmlConverter;
use PHPePub\Core\EPub;
use PHPePub\Core\Structure\OPF\DublinCore;
use Symfony\Component\HttpFoundation\Response;
@ -129,10 +130,8 @@ class EntriesExport
/**
* Use PHPePub to dump a .epub file.
*
* @return Response
*/
private function produceEpub()
private function produceEpub(): Response
{
$user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
\assert($user instanceof User);
@ -249,10 +248,8 @@ class EntriesExport
/**
* Use TCPDF to dump a .pdf file.
*
* @return Response
*/
private function producePdf()
private function producePdf(): Response
{
$user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
\assert($user instanceof User);
@ -326,10 +323,8 @@ class EntriesExport
/**
* Inspired from CsvFileDumper.
*
* @return Response
*/
private function produceCsv()
private function produceCsv(): Response
{
$delimiter = ';';
$enclosure = '"';
@ -372,10 +367,8 @@ class EntriesExport
/**
* Dump a JSON file.
*
* @return Response
*/
private function produceJson()
private function produceJson(): Response
{
return Response::create(
$this->prepareSerializingContent('json'),
@ -390,10 +383,8 @@ class EntriesExport
/**
* Dump a XML file.
*
* @return Response
*/
private function produceXml()
private function produceXml(): Response
{
return Response::create(
$this->prepareSerializingContent('xml'),
@ -408,10 +399,8 @@ class EntriesExport
/**
* Dump a TXT file.
*
* @return Response
*/
private function produceTxt()
private function produceTxt(): Response
{
$content = '';
$bar = str_repeat('=', 100);
@ -432,6 +421,29 @@ class EntriesExport
);
}
/**
* Dump a Markdown file.
*/
private function produceMd(): Response
{
$content = '';
$converter = new HtmlConverter();
$converter->getConfig()->setOption('strip_tags', true);
foreach ($this->entries as $entry) {
$content .= $converter->convert('<h1>' . $entry->getTitle() . '</h1>' . $entry->getContent());
}
return Response::create(
$content,
200,
[
'Content-type' => 'text/markdown',
'Content-Disposition' => 'attachment; filename="' . $this->getSanitizedFilename() . '.md"',
'Content-Transfer-Encoding' => 'UTF-8',
]
);
}
/**
* Return a Serializer object for producing processes that need it (JSON & XML).
*

View file

@ -105,6 +105,7 @@
{% if craue_setting('export_csv') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'csv', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">CSV</a></li>{% endif %}
{% if craue_setting('export_txt') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'txt', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">TXT</a></li>{% endif %}
{% if craue_setting('export_xml') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'xml', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">XML</a></li>{% endif %}
{% if craue_setting('export_md') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'md', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">Markdown</a></li>{% endif %}
</ul>
</div>

View file

@ -242,6 +242,7 @@
{% if craue_setting('export_json') %}<li><a href="{{ path('export_entry', {'id': entry.id, 'format': 'json'}) }}" title="Generate JSON file">JSON</a></li>{% endif %}
{% if craue_setting('export_txt') %}<li><a href="{{ path('export_entry', {'id': entry.id, 'format': 'txt'}) }}" title="Generate TXT file">TXT</a></li>{% endif %}
{% if craue_setting('export_xml') %}<li><a href="{{ path('export_entry', {'id': entry.id, 'format': 'xml'}) }}" title="Generate XML file">XML</a></li>{% endif %}
{% if craue_setting('export_md') %}<li><a href="{{ path('export_entry', {'id': entry.id, 'format': 'md'}) }}" title="Generate MD file">Markdown</a></li>{% endif %}
</ul>
</div>
</li>

View file

@ -15,15 +15,20 @@
{% include 'Import/_information.html.twig' %}
{{ 'import.page_description'|trans }}
<ul>
<div class="row">
{% for import in imports %}
<li>
<h5>{{ import.name }}</h5>
<blockquote>{{ import.description|trans|raw }}</blockquote>
<p><a class="waves-effect waves-light btn" href="{{ path(import.url) }}">{{ 'import.action.import_contents'|trans }}</a></p>
</li>
<div class="col s6 m3">
<div class="card">
<div class="card-content">
<span class="card-title">{{ import.name }}</span>
</div>
<div class="card-action">
<a href="{{ path(import.url) }}">{{ 'import.action.import_contents'|trans }}</a>
</div>
</div>
</div>
{% endfor %}
</ul>
</div>
</div>
</div>
</div>

View file

@ -307,6 +307,22 @@ class ExportControllerTest extends WallabagTestCase
$this->assertNotEmpty('updated_at', (string) $content->entry[0]->updated_at);
}
public function testMdExport()
{
$this->logInAs('admin');
$client = $this->getTestClient();
$client->request('GET', '/export/all.md');
$this->assertSame(200, $client->getResponse()->getStatusCode());
$headers = $client->getResponse()->headers;
$content = $client->getResponse()->getContent();
$this->assertSame('text/markdown; charset=UTF-8', $headers->get('content-type'));
$this->assertSame('attachment; filename="All articles.md"', $headers->get('content-disposition'));
$this->assertSame('UTF-8', $headers->get('content-transfer-encoding'));
$this->assertStringContainsString('=================', $content);
}
public function testJsonExportFromSameDomain()
{
$this->logInAs('admin');

View file

@ -22,8 +22,7 @@ class ImportControllerTest extends WallabagTestCase
$client = $this->getTestClient();
$crawler = $client->request('GET', '/import/');
$this->assertSame(200, $client->getResponse()->getStatusCode());
$this->assertSame(13, $crawler->filter('blockquote')->count());
$this->assertSame(13, $crawler->filter('.card-title')->count());
}
}

View file

@ -0,0 +1,35 @@
settings_changed: Канфігурацыя абноўлена
download_pictures: Пампаваць карцінкі на ваш сэрвэр
diaspora_url: diaspora* URL, калі сэрвіс уключаны
export_xml: Уключыць экспарт XML
import_with_rabbitmq: Уключыць RabbitMQ для асінхроннага ймпарту даных
shaarli_url: Shaarli URL, калі сэрвіс уключаны
share_shaarli: Уключыць магчымасьць пашырэньня ў Shaarli
share_twitter: Уключыць магчымасьць пашырэньня ў Twitter
share_unmark: Уключыць магчымасьць пашырэньня ў Unmark.it
share_linkding: Уключыць магчымасьць пашырэньня ў Linkding
show_printlink: Адлюстроўваць спасылкі ў вэрсыйі для друку
modify_settings: ужыць
matomo_enabled: Уключыць Matomo
share_public: Дазволіць агульнадаступныя спасылкі для запісаў
restricted_access: Уключыць аўтэнтыфікацыю для платных вэб-сайтаў
shaarli_share_origin_url: Уключыць адпраўку URL-адрасу крыніцы ў Shaarlі, калі сэрвіс ўключаны
export_epub: Уключыць экспарт ePub
export_pdf: Уключыць экспарт PDF
export_json: Уключыць экспарт JSON
export_txt: Уключыць экспарт TXT
import_with_redis: Уключыць Redis для асынхроннага ймпарту даных
export_csv: Уключыць экспарт CSV
unmark_url: Unmark URL, калі сэрвіс уключаны
share_mail: Уключыць магчымасьць пашырэньня праз e-mail
share_diaspora: Уключыць магчымасьць пашырэньня ў diaspora*
wallabag_support_url: Падтрымка URL для wallabag
export: экспарт
matomo_site_id: Ідэнтыфікатар вашага сайта ў Matomo
entry: артыкул
import: імпарт
misc: рознае
matomo_host: Разьмяшчэньне вашага сайта ў Matomo (без http:// альбо https://)
download_images_enabled: Спампоўваць выявы лякальна
api_user_registration: Уключыць рэгістрацыю карыстальніка праз APІ
store_article_headers: Уключыце, калі wallabag захоўвае HTTP загалоўкі для кожнага артыкула

View file

@ -0,0 +1 @@
{}

View file

@ -32,3 +32,4 @@ restricted_access: Увімкнути аутентифікацію для сай
api_user_registration: Дозволити користувачам реєструватись через API
store_article_headers: Увімкнути зберігання HTTP-заголовків для кожної статті
shaarli_share_origin_url: Увімкнути можливість ділитись оригінальним лінком в Shaarli, якщо сервіс увімкнено
share_linkding: Увімкнути обмін посиланням

View file

@ -0,0 +1,137 @@
security:
login:
page_title: Сардэчна запрашаем у wallabag!
keep_logged_in: Захаваць мяне ў сыстэме
forgot_password: Забыліся на пароль?
submit: Увайсьці
register: Зарэгістравацца
cancel: Скасаваць
username: Імя карыстальніка
password: Пароль
register:
page_title: Стварыць уліковы запіс
go_to_account: Перайсьці ва ўліковы запіс
resetting:
description: Увядзіце ніжэй свой адрас электроннай пошты, і мы вышлем вам інструкцыйі па скідзе пароля.
menu:
left:
starred: Пазначаныя
archive: Архіў
with_annotations: З анатацыямі
internal_settings: Унутраныя налады
import: Імпарт
howto: Інструкцыя
developer: Кіраваньне кліентамі API
logout: Выйсьці
about: Аб wallabag
search: Пошук
save_link: Захаваць спасылку
back_to_unread: Вярнуцца да непрачытаных артыкулаў
users_management: Кіраваньне карыстальнікамі
site_credentials: Уліковыя даныя сайта
quickstart: Хуткі старт
theme_toggle_light: Сьветлая тэма
theme_toggle_dark: Цёмная тэма
theme_toggle_auto: Аўтаматычная тэма
config: Канфігурацыя
tags: Тэгі
unread: Непрачытанае
all_articles: Усе запісы
ignore_origin_instance_rules: Ґлябальныя правілы йґнараваньня крыніцы
top:
add_new_entry: Дадаць новы запіс
search: Пошук
filter_entries: Фільтраваць запісы
export: Экспарт
account: Мой уліковы запіс
random_entry: Перайсьці да выпадковага запісу з гэтага сьпісу
search_form:
input_label: Увядзіце шуканае тут
footer:
wallabag:
elsewhere: Вазьміце wallabag з сабой
social: Сац. сеткі
about: Аб wallabag
powered_by: створана з дапамогай
stats: З %user_creation% вы прачыталі %nb_archives% артыкулаў. Гэта прыкладна %per_day% у дзень!
config:
page_title: Канфігурацыя
tab_menu:
settings: Налады
feed: Стужкі
user_info: Інфармацыя аб карыстальніку
password: Пароль
rules: Правілы выстаўленьня тэгаў
new_user: Дадаць карыстальніка
ignore_origin: Іґнараваць правілы крыніцы
reset: Скінуць вобласьць
article_display: Адлюстраваньне артыкула
form_settings:
items_per_page_label: Запісаў на старонцы
reading_speed:
label: Хуткасьць чытаньня
help_message: 'Вы можаце выкарыстоўваць анлайн-інструмэнты для ацэнкі хуткасьці чытаньня:'
200_word: Я чытаю ~200 словаў у хвіліну
300_word: Я чытаю ~300 словаў у хвіліну
400_word: Я чытаю ~400 словаў у хвіліну
100_word: Я чытаю ~100 словаў у хвіліну
action_mark_as_read:
label: Што рабіць пасьля выдаленьня артыкула, пазначэньня яго зоркай або пазначэньня як прачытанага?
redirect_homepage: Да хатняй старонцы
redirect_current_page: Застацца на бягучай старонцы
pocket_consumer_key_label: Ключ ад Pocket для ймпарту кантэнту
android_configuration: Наладзьце сваю Android аплікацыю
help_items_per_page: Вы можаце зьмяніць колькасьць артыкулаў, якія адлюстроўваюцца на кожнай старонцы.
help_language: Вы можаце зьмяніць мову йнтэрфэйсу wallabag.
help_pocket_consumer_key: Патрабуецца для ймпарту з Pocket. Вы можаце стварыць яго ў сваім уліковым запісе Pocket.
help_display_thumbnails: Вы можаце вырашыць, ці хочаце вы каб мініятуры артыкулаў адлюстроўваліся. Карысна калі ў вас павольнае злучэньне зь сеткай.
help_font: Вы можаце абраць сямейства шрыфтоў, якое хочаце выкарыстоўваць.
help_fontsize: Вы можаце абраць памер шрыфта, які хочаце выкарыстоўваць.
help_lineheight: Вы можаце абраць вышыню лінійі, якую хочаце выкарыстоўваць.
help_maxwidth: Вы можаце абраць максымальную шырыню, якую хочаце выкарыстоўваць.
display_thumbnails_label: Адлюстраваньне мініятур артыкулаў (карысна калі ў вас павольнае злучэньне зь сеткай).
font_label: Сямейства шрыфтоў
fontsize_label: Памер шрыфта
lineheight_label: Вышыня лінійі
maxwidth_label: Максімальная шырыня
language_label: Мова
android_instruction: Націсьніце тут, каб прадусталяваць вашую Android аплікацыю
help_reading_speed: wallabag разьлічвае час чытаньня для кожнага артыкула. Вы можаце вызначыць тут, як хутка вы чытаеце. wallabag пералічыць час чытаньня для кожнага артыкула.
form_feed:
no_token: Няма токена
token_create: Стварыць свой токен
token_reset: Аднавіце свой токен
token_revoke: Адклікаць токен
feed_links: Спасылкі на стужкі
feed_link:
starred: Пазначаныя
archive: Архіваваныя
all: Усе
unread: Непрачытанае
feed_limit: Колькасьць элемэнтаў у стужцы
description: Навінавыя стужкі Atom, якія прадстаўляюцца wallabag, дазваляюць чытаць захаваныя артыкулы пры дапамозе ўпадабанай вамі Atom-чыталкі. Спачатку вам трэба зґенераваць токен.
token_label: Токен стужкі
form_user:
login_label: Лагін (ня можа быць зьменены)
name_label: Імя
email_label: Электронная пошта
two_factor:
googleTwoFactor_label: Выкарыстоўваючы праґраму OTP (адкрыйце праґраму, напрыклад Google Authenticator, Authy альбо FreeOTP, каб атрымаць аднаразовы код)
table_method: Мэтад
table_state: Стан
table_action: Дзеяньне
state_enabled: Уключана
state_disabled: Выключана
action_email: Выкарыстаць электронную пошту
action_app: Выкарыстаць OTP аплікацыю
emailTwoFactor_label: З дапамогай электроннай пошты (атрымаць код па электроннай пошце)
two_factor_description: Уключэньне двухфактарнай аўтэнтыфікацыйі азначае, што вы будзеце атрымліваць электронны ліст з кодам пры кожным новым ненадзейным злучэньні.
delete:
title: Выдаліць мой уліковы запіс (ці небясьпечная зона)
description: Калі вы выдаліце свой уліковы запіс, УСЕ вашыя АРТЫКУЛЫ, тэгі, АНАТАЦЫІ й ВАШ УЛІКОВЫ ЗАПІС будуць ПЕРМАНЕНТНА выдаленыя (ГЭТА НЕЛЬГА АДМЯНІЦЬ). Таксама, потым вы выйдзеце з сыстэмы.
button: Выдаліць мой уліковы запіс
confirm: Вы ўпэўненыя? (ГЭТА НЕЛЬГА АДМЯНІЦЬ)
reset:
title: Зона скіду (ці небясьпечная зона)
form:
save: Захаваць

View file

@ -0,0 +1 @@
{}

View file

@ -0,0 +1 @@
{}

View file

@ -0,0 +1 @@
{}

View file

@ -1,6 +1,6 @@
validator:
password_must_match: Паролі повинні співпадати.
password_too_short: Довжина пароля повинна бути не менше 8-ми символів.
password_too_short: Ваш пароль повинен бути довжиною принаймні 8 символів.
password_wrong_value: Введено неправильний поточний пароль.
item_per_page_too_high: Вибрано завелику кількість
rss_limit_too_high: Вибрано завелику кількість

View file

@ -0,0 +1,10 @@
auth_code:
on: Ўкл
mailer:
subject: код аўнтыфікацыйі wallabag
body:
second_para: 'Вось код:'
support: 'Калі ласка, не саромейцеся зьвяртацца да нас, калі ў вас узьнікнуць праблемы:'
signature: Каманда wallabag
hello: Гэй %user%,
first_para: Паколькі вам патрабуецца двухфактарная аўтэнтыфікацыя для ўваходу ў ваш уліковы запіс wallabag, а новая прылада толькі што выкарыстоўвала яе, мы дасылаем вам код для пацьверджаньня яе злучэньня.

View file

@ -0,0 +1 @@
{}

View file

@ -4290,10 +4290,10 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
version "2.3.1"
@ -4389,13 +4389,13 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.4.28, postcss@^8.4.33, postcss@^8.4.47:
version "8.4.47"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365"
integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==
postcss@^8.4.28, postcss@^8.4.33, postcss@^8.4.48:
version "8.4.48"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.48.tgz#765f3f8abaa2a2b065cdddbc57ad4cb5a76e515f"
integrity sha512-GCRK8F6+Dl7xYniR5a4FYbpBzU8XnZVeowqsQFYdcXuSbChgiks7qybSkbvnaeqv0G0B+dd9/jJgH8kkLDQeEA==
dependencies:
nanoid "^3.3.7"
picocolors "^1.1.0"
picocolors "^1.1.1"
source-map-js "^1.2.1"
prelude-ls@^1.2.1: