diff options
22 files changed, 205 insertions, 67 deletions
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 0b92775a..920f1905 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md | |||
@@ -3,22 +3,11 @@ | |||
3 | ## You found a bug | 3 | ## You found a bug |
4 | Please [open a new issue](https://github.com/wallabag/wallabag/issues/new). | 4 | Please [open a new issue](https://github.com/wallabag/wallabag/issues/new). |
5 | 5 | ||
6 | To fix the bug quickly, we need some infos: | 6 | To fix the bug quickly, we need some infos: please answer to the questions in the issue form. |
7 | * your wallabag version (in `app/config/config.yml`, see `wallabag_core.version`) | ||
8 | * your webserver installation : | ||
9 | * type of hosting (shared or dedicated) | ||
10 | * in case of a dedicated server, the server and OS used | ||
11 | * the php version used, eventually `phpinfo()` | ||
12 | * which storage system you choose at install (SQLite, MySQL/MariaDB or PostgreSQL) | ||
13 | * any particular details which could be related | ||
14 | 7 | ||
15 | If relevant : | 8 | If you have the skills, look for errors into php, server and application (see `var/logs`) logs. |
16 | * the link you want to save and which causes problem | ||
17 | * the file you want to import into wallabag, or just an extract | ||
18 | |||
19 | If you have the skills, look for errors into php, server and application (see `var/logs`) logs | ||
20 | 9 | ||
21 | Note : If you have large portions of text, use [Github's Gist service](https://gist.github.com/) or other pastebin-like. | 10 | Note : If you have large portions of text, use [Github's Gist service](https://gist.github.com/) or other pastebin-like. |
22 | 11 | ||
23 | ## You want to fix a bug or to add a feature | 12 | ## You want to fix a bug or to add a feature |
24 | Please fork wallabag and work with **the v2 branch** only. **Do not work on master branch**. | 13 | Please fork wallabag and work with **the master branch**. |
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.it.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.it.yml index ec302901..e4417139 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.it.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.it.yml | |||
@@ -1,5 +1,5 @@ | |||
1 | download_pictures: Scarica le immagini sul tuo server | 1 | download_pictures: Scarica le immagini sul tuo server |
2 | carrot: Abilita la condivisione su Carrot | 2 | carrot: Abilita la condivisione con Carrot |
3 | diaspora_url: Diaspora URL, se il servizio è abilitato | 3 | diaspora_url: Diaspora URL, se il servizio è abilitato |
4 | export_epub: Abilita esportazione ePub | 4 | export_epub: Abilita esportazione ePub |
5 | export_mobi: Abilita esportazione .mobi | 5 | export_mobi: Abilita esportazione .mobi |
@@ -9,15 +9,15 @@ export_json: Abilita esportazione JSON | |||
9 | export_txt: Abilita esportazione TXT | 9 | export_txt: Abilita esportazione TXT |
10 | export_xml: Abilita esportazione XML | 10 | export_xml: Abilita esportazione XML |
11 | pocket_consumer_key: Consumer key per Pocket per importare i contenuti (https://getpocket.com/developer/docs/authentication) | 11 | pocket_consumer_key: Consumer key per Pocket per importare i contenuti (https://getpocket.com/developer/docs/authentication) |
12 | shaarli_url: Shaarli URL, if the service is enabled | 12 | shaarli_url: Shaarli URL, se il servizio è abilitato |
13 | share_diaspora: Abilita la condivisione su Diaspora | 13 | share_diaspora: Abilita la condivisione con Diaspora |
14 | share_mail: Abilita la condivisione per email | 14 | share_mail: Abilita la condivisione per email |
15 | share_shaarli: Abilita la condivisione su Shaarli | 15 | share_shaarli: Abilita la condivisione con Shaarli |
16 | share_twitter: Abilita la condivisione su Twitter | 16 | share_twitter: Abilita la condivisione con Twitter |
17 | show_printlink: Mostra un collegamento per stampare il contenuto | 17 | show_printlink: Mostra un collegamento per stampare il contenuto |
18 | wallabag_support_url: URL di supporto per wallabag | 18 | wallabag_support_url: URL di supporto per wallabag |
19 | wallabag_url: URL della *tua* installazione di wallabag | 19 | wallabag_url: URL della *tua* installazione di wallabag |
20 | entry: "articolo" | 20 | entry: "contenuto" |
21 | export: "esporta" | 21 | export: "esporta" |
22 | import: "importa" | 22 | import: "importa" |
23 | misc: "misc" | 23 | misc: "misc" |
@@ -25,5 +25,5 @@ modify_settings: "applica" | |||
25 | piwik_host: Host del tuo sito in Piwik | 25 | piwik_host: Host del tuo sito in Piwik |
26 | piwik_site_id: ID del tuo sito in Piwik | 26 | piwik_site_id: ID del tuo sito in Piwik |
27 | piwik_enabled: Abilita Piwik | 27 | piwik_enabled: Abilita Piwik |
28 | demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)" | 28 | demo_mode_enabled: "Abilita modalità demo ? (usato solo per la demo pubblica di wallabag)" |
29 | demo_mode_username: "Utente Demo" | 29 | demo_mode_username: "Utente Demo" |
diff --git a/docs/en/user/android.rst b/docs/en/user/android.rst index c13cf031..4271f037 100644 --- a/docs/en/user/android.rst +++ b/docs/en/user/android.rst | |||
@@ -13,61 +13,61 @@ Steps to configure your app | |||
13 | 13 | ||
14 | When you first start the app, you see the welcome screen, where you are adviced to configure the app for your wallabag instance at first. | 14 | When you first start the app, you see the welcome screen, where you are adviced to configure the app for your wallabag instance at first. |
15 | 15 | ||
16 | .. image:: ../../img/user/android_welcome_screen.de.png | 16 | .. image:: ../../img/user/android_welcome_screen.en.png |
17 | :alt: Welcome screen | 17 | :alt: Welcome screen |
18 | :align: center | 18 | :align: center |
19 | 19 | ||
20 | Just confirm that message and you get redirected to the settings screen. | 20 | Just confirm that message and you get redirected to the settings screen. |
21 | 21 | ||
22 | .. image:: ../../img/user/android_configuration_screen.de.png | 22 | .. image:: ../../img/user/android_configuration_screen.en.png |
23 | :alt: Settings screen | 23 | :alt: Settings screen |
24 | :align: center | 24 | :align: center |
25 | 25 | ||
26 | Fill in your wallabag data. You need to enter your wallabag address. It is important that this URL does not end with a slash. Also add your wallabag credentials to the user name and password field. | 26 | Fill in your wallabag data. You need to enter your wallabag address. It is important that this URL does not end with a slash. Also add your wallabag credentials to the user name and password field. |
27 | 27 | ||
28 | .. image:: ../../img/user/android_configuration_filled_in.de.png | 28 | .. image:: ../../img/user/android_configuration_filled_in.en.png |
29 | :alt: Filled in settings | 29 | :alt: Filled in settings |
30 | :align: center | 30 | :align: center |
31 | 31 | ||
32 | After you have filled in your data, push the button Connection test and wait for the test to finish. | 32 | After you have filled in your data, push the button Connection test and wait for the test to finish. |
33 | 33 | ||
34 | .. image:: ../../img/user/android_configuration_connection_test.de.png | 34 | .. image:: ../../img/user/android_configuration_connection_test.en.png |
35 | :alt: Connection test with your wallabag data | 35 | :alt: Connection test with your wallabag data |
36 | :align: center | 36 | :align: center |
37 | 37 | ||
38 | The connection test shall finish with success. If not, you need to fix this first until you proceed. | 38 | The connection test shall finish with success. If not, you need to fix this first until you proceed. |
39 | 39 | ||
40 | .. image:: ../../img/user/android_configuration_connection_test_success.de.png | 40 | .. image:: ../../img/user/android_configuration_connection_test_success.en.png |
41 | :alt: Connection test successful | 41 | :alt: Connection test successful |
42 | :align: center | 42 | :align: center |
43 | 43 | ||
44 | After the connection test was successful, you can push the button to get your feed credentials. The app now tries to login to your wallabag instance and get the user id and the corresponding token for the feeds. | 44 | After the connection test was successful, you can push the button to get your feed credentials. The app now tries to login to your wallabag instance and get the user id and the corresponding token for the feeds. |
45 | 45 | ||
46 | .. image:: ../../img/user/android_configuration_get_feed_credentials.de.png | 46 | .. image:: ../../img/user/android_configuration_get_feed_credentials.en.png |
47 | :alt: Getting the feed credentials | 47 | :alt: Getting the feed credentials |
48 | :align: center | 48 | :align: center |
49 | 49 | ||
50 | When the process of getting your feed credentials finishes with success you see a toast message that the user id and the token were automatically filled in to the form. | 50 | When the process of getting your feed credentials finishes with success you see a toast message that the user id and the token were automatically filled in to the form. |
51 | 51 | ||
52 | .. image:: ../../img/user/android_configuration_feed_credentials_automatically_filled_in.de.png | 52 | .. image:: ../../img/user/android_configuration_feed_credentials_automatically_filled_in.en.png |
53 | :alt: Getting feed credentials successful | 53 | :alt: Getting feed credentials successful |
54 | :align: center | 54 | :align: center |
55 | 55 | ||
56 | Now you need to scroll to the bottom of the settings menu. Of course you can adjust the given settings to your needs. Finish the configuration of your app with pushing the save button. | 56 | Now you need to scroll to the bottom of the settings menu. Of course you can adjust the given settings to your needs. Finish the configuration of your app with pushing the save button. |
57 | 57 | ||
58 | .. image:: ../../img/user/android_configuration_scroll_bottom.de.png | 58 | .. image:: ../../img/user/android_configuration_scroll_bottom.en.png |
59 | :alt: Bottom of the settings screen | 59 | :alt: Bottom of the settings screen |
60 | :align: center | 60 | :align: center |
61 | 61 | ||
62 | After hitting the save button, you get the following screen. The app proposes to initiate a syncronisation process to update your feeds of articles. It is recommended to acknowledge this action and press Yes. | 62 | After hitting the save button, you get the following screen. The app proposes to initiate a syncronisation process to update your feeds of articles. It is recommended to acknowledge this action and press Yes. |
63 | 63 | ||
64 | .. image:: ../../img/user/android_configuration_saved_feed_update.de.png | 64 | .. image:: ../../img/user/android_configuration_saved_feed_update.en.png |
65 | :alt: Settings saved the first time | 65 | :alt: Settings saved the first time |
66 | :align: center | 66 | :align: center |
67 | 67 | ||
68 | Finally after the syncronisation finished successfully, you are presented the list of unread articles. | 68 | Finally after the syncronisation finished successfully, you are presented the list of unread articles. |
69 | 69 | ||
70 | .. image:: ../../img/user/android_unread_feed_synced.de.png | 70 | .. image:: ../../img/user/android_unread_feed_synced.en.png |
71 | :alt: Filled article list cause feeds successfully syncronized | 71 | :alt: Filled article list cause feeds successfully syncronized |
72 | :align: center | 72 | :align: center |
73 | 73 | ||
diff --git a/docs/en/user/faq.rst b/docs/en/user/faq.rst index 1e36dc26..61303604 100644 --- a/docs/en/user/faq.rst +++ b/docs/en/user/faq.rst | |||
@@ -1,26 +1,39 @@ | |||
1 | Frequently Asked Questions | 1 | Frequently Asked Questions |
2 | ========================== | 2 | ========================== |
3 | 3 | ||
4 | During the installation, I've got this error ``Error Output: sh: 1: @post-cmd: not found`` | 4 | During the installation, I got the error ``Error Output: sh: 1: @post-cmd: not found`` |
5 | ------------------------------------------------------------------------------------------ | 5 | -------------------------------------------------------------------------------------- |
6 | 6 | ||
7 | It seems you have a problem with your ``composer`` installation. Try to uninstall and reinstall it. | 7 | It seems you have a problem with your ``composer`` installation. Try to uninstall and reinstall it. |
8 | 8 | ||
9 | `Read the documentation about composer to know how to install it | 9 | `Read the documentation about composer to know how to install it |
10 | <https://getcomposer.org/doc/00-intro.md>`__. | 10 | <https://getcomposer.org/doc/00-intro.md>`__. |
11 | 11 | ||
12 | I can't valid the registration form | 12 | I can't validate the registration form |
13 | ----------------------------------- | 13 | -------------------------------------- |
14 | 14 | ||
15 | Make sure that all fields are well filled: | 15 | Ensure that all fields are properly filled: |
16 | 16 | ||
17 | * valid email address | 17 | * valid email address |
18 | * same passwords in two fields | 18 | * same passwords in two fields |
19 | 19 | ||
20 | I don't receive my activation email | 20 | I'm not receiving my activation email |
21 | ----------------------------------- | 21 | ------------------------------------- |
22 | 22 | ||
23 | Are you sure your email address was correct? Did you check your spams folder? | 23 | Are you sure your email address was correct? Did you check your spam folder? |
24 | |||
25 | If you still don't see the activation email, please ensure that you have | ||
26 | installed and properly configured a mail transfer agent. Be sure to include a | ||
27 | firewall rule for SMTP. E.g., if using firewalld: | ||
28 | |||
29 | :: | ||
30 | |||
31 | firewall-cmd --permanent --add-service=smtp | ||
32 | firewall-cmd --reload | ||
33 | |||
34 | Lastly, if you have SELinux enabled, set the following rule: | ||
35 | |||
36 | ``setsebool -P httpd_can_sendmail 1`` | ||
24 | 37 | ||
25 | When I click on the activation link, I've got this message: ``The user with confirmation token "DtrOPfbQeVkWf6N" does not exist``. | 38 | When I click on the activation link, I've got this message: ``The user with confirmation token "DtrOPfbQeVkWf6N" does not exist``. |
26 | ---------------------------------------------------------------------------------------------------------------------------------- | 39 | ---------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/en/user/installation.rst b/docs/en/user/installation.rst index 484e66cb..41542c45 100644 --- a/docs/en/user/installation.rst +++ b/docs/en/user/installation.rst | |||
@@ -23,13 +23,13 @@ You'll need the following extensions for wallabag to work. Some of these may alr | |||
23 | - php-gettext | 23 | - php-gettext |
24 | - php-tokenizer | 24 | - php-tokenizer |
25 | 25 | ||
26 | wallabag uses PDO to connect to database, so you'll need one of: | 26 | wallabag uses PDO to connect to the database, so you'll need one of the following: |
27 | 27 | ||
28 | - pdo_mysql | 28 | - pdo_mysql |
29 | - pdo_sqlite | 29 | - pdo_sqlite |
30 | - pdo_pgsql | 30 | - pdo_pgsql |
31 | 31 | ||
32 | and it's corresponding database server. | 32 | and its corresponding database server. |
33 | 33 | ||
34 | Installation | 34 | Installation |
35 | ------------ | 35 | ------------ |
@@ -37,7 +37,7 @@ Installation | |||
37 | On a dedicated web server (recommended way) | 37 | On a dedicated web server (recommended way) |
38 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 38 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
39 | 39 | ||
40 | wallabag uses a big number of libraries in order to function. These libraries must be installed with a tool called Composer. You need to install it if you don't already have. | 40 | wallabag uses a large number of libraries in order to function. These libraries must be installed with a tool called Composer. You need to install it if you have not already done so. |
41 | 41 | ||
42 | Install Composer: | 42 | Install Composer: |
43 | 43 | ||
@@ -47,7 +47,7 @@ Install Composer: | |||
47 | 47 | ||
48 | You can find specific instructions `here <https://getcomposer.org/doc/00-intro.md>`__: | 48 | You can find specific instructions `here <https://getcomposer.org/doc/00-intro.md>`__: |
49 | 49 | ||
50 | To install wallabag itself, you must run these two commands: | 50 | To install wallabag itself, you must run the following commands: |
51 | 51 | ||
52 | :: | 52 | :: |
53 | 53 | ||
@@ -67,17 +67,17 @@ And access wallabag at http://yourserverip:8000 | |||
67 | 67 | ||
68 | .. tip:: | 68 | .. tip:: |
69 | 69 | ||
70 | To define parameters with environment variables, you have to set these variables with ``SYMFONY__`` prefix. For example, ``SYMFONY__DATABASE_DRIVER``. You can have a look to the `Symfony documentation <http://symfony.com/doc/current/cookbook/configuration/external_parameters.html>`__. | 70 | To define parameters with environment variables, you have to set these variables with ``SYMFONY__`` prefix. For example, ``SYMFONY__DATABASE_DRIVER``. You can have a look at `Symfony documentation <http://symfony.com/doc/current/cookbook/configuration/external_parameters.html>`__. |
71 | 71 | ||
72 | On a shared hosting | 72 | On a shared hosting |
73 | ~~~~~~~~~~~~~~~~~~~ | 73 | ~~~~~~~~~~~~~~~~~~~ |
74 | 74 | ||
75 | We provide you a package with all dependancies inside. | 75 | We provide a package with all dependencies inside. |
76 | The default configuration uses SQLite for the database. If you want to change these settings, please edit ``app/config/parameters.yml``. | 76 | The default configuration uses SQLite for the database. If you want to change these settings, please edit ``app/config/parameters.yml``. |
77 | 77 | ||
78 | We already created a user: login and password are ``wallabag``. | 78 | We already created a user: login and password are ``wallabag``. |
79 | 79 | ||
80 | .. caution:: With this package, wallabag don't check mandatory extensions used in the application (theses checks are made during ``composer install`` when you have a dedicated web server, see above). | 80 | .. caution:: With this package, wallabag doesn't check for mandatory extensions used in the application (theses checks are made during ``composer install`` when you have a dedicated web server, see above). |
81 | 81 | ||
82 | Execute this command to download and extract the latest package: | 82 | Execute this command to download and extract the latest package: |
83 | 83 | ||
@@ -85,7 +85,7 @@ Execute this command to download and extract the latest package: | |||
85 | 85 | ||
86 | wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package | 86 | wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package |
87 | 87 | ||
88 | Now, read the following documentation to create your virtual host, then access to your wallabag. | 88 | Now, read the following documentation to create your virtual host, then access your wallabag. |
89 | If you changed the database configuration to use MySQL or PostgreSQL, you need to create a user via this command ``php bin/console wallabag:install --env=prod``. | 89 | If you changed the database configuration to use MySQL or PostgreSQL, you need to create a user via this command ``php bin/console wallabag:install --env=prod``. |
90 | 90 | ||
91 | Installation with Docker | 91 | Installation with Docker |
@@ -151,7 +151,7 @@ After reloading or restarting Apache, you should now be able to access wallabag | |||
151 | Configuration on Nginx | 151 | Configuration on Nginx |
152 | ~~~~~~~~~~~~~~~~~~~~~~ | 152 | ~~~~~~~~~~~~~~~~~~~~~~ |
153 | 153 | ||
154 | Assuming you install wallabag in the ``/var/www/wallabag`` folder, here's the recipe for wallabag : | 154 | Assuming you installed wallabag in the ``/var/www/wallabag`` folder, here's the recipe for wallabag : |
155 | 155 | ||
156 | :: | 156 | :: |
157 | 157 | ||
@@ -258,6 +258,7 @@ It has to be the same for the following folders | |||
258 | * /var/www/wallabag/bin/ | 258 | * /var/www/wallabag/bin/ |
259 | * /var/www/wallabag/app/config/ | 259 | * /var/www/wallabag/app/config/ |
260 | * /var/www/wallabag/vendor/ | 260 | * /var/www/wallabag/vendor/ |
261 | * /var/www/wallabag/data/ | ||
261 | 262 | ||
262 | by entering | 263 | by entering |
263 | 264 | ||
@@ -266,11 +267,58 @@ by entering | |||
266 | chown -R www-data:www-data /var/www/wallabag/bin | 267 | chown -R www-data:www-data /var/www/wallabag/bin |
267 | chown -R www-data:www-data /var/www/wallabag/app/config | 268 | chown -R www-data:www-data /var/www/wallabag/app/config |
268 | chown -R www-data:www-data /var/www/wallabag/vendor | 269 | chown -R www-data:www-data /var/www/wallabag/vendor |
270 | chown -R www-data:www-data /var/www/wallabag/data/ | ||
269 | 271 | ||
270 | otherwise, sooner or later you will meet this error messages | 272 | otherwise, sooner or later you will see these error messages: |
271 | 273 | ||
272 | .. code-block:: bash | 274 | .. code-block:: bash |
273 | 275 | ||
274 | Unable to write to the "bin" directory. | 276 | Unable to write to the "bin" directory. |
275 | file_put_contents(app/config/parameters.yml): failed to open stream: Permission denied | 277 | file_put_contents(app/config/parameters.yml): failed to open stream: Permission denied |
276 | file_put_contents(/.../wallabag/vendor/autoload.php): failed to open stream: Permission denied | 278 | file_put_contents(/.../wallabag/vendor/autoload.php): failed to open stream: Permission denied |
279 | |||
280 | Additional rules for SELinux | ||
281 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
282 | |||
283 | If SELinux is enabled on your system, you will need to configure additional contexts in order for wallabag to function properly. To check if SELinux is enabled, simply enter the following: | ||
284 | |||
285 | ``getenforce`` | ||
286 | |||
287 | This will return ``Enforcing`` if SELinux is enabled. Creating a new context involves the following syntax: | ||
288 | |||
289 | ``semanage fcontext -a -t <context type> <full path>`` | ||
290 | |||
291 | For example: | ||
292 | |||
293 | ``semanage fcontext -a -t httpd_sys_content_t "/var/www/wallabag(/.*)?"`` | ||
294 | |||
295 | This will recursively apply the httpd_sys_content_t context to the wallabag directory and all underlying files and folders. The following rules are needed: | ||
296 | |||
297 | +-----------------------------------+----------------------------+ | ||
298 | | Full path | Context | | ||
299 | +===================================+============================+ | ||
300 | | /var/www/wallabag(/.*)? | ``httpd_sys_content_t`` | | ||
301 | +-----------------------------------+----------------------------+ | ||
302 | | /var/www/wallabag/data(/.*)? | ``httpd_sys_rw_content_t`` | | ||
303 | +-----------------------------------+----------------------------+ | ||
304 | | /var/www/wallabag/var/logs(/.*)? | ``httpd_log_t`` | | ||
305 | +-----------------------------------+----------------------------+ | ||
306 | | /var/www/wallabag/var/cache(/.*)? | ``httpd_cache_t`` | | ||
307 | +-----------------------------------+----------------------------+ | ||
308 | |||
309 | After creating these contexts, enter the following in order to apply your rules: | ||
310 | |||
311 | ``restorecon -R -v /var/www/wallabag`` | ||
312 | |||
313 | You can check contexts in a directory by typing ``ls -lZ`` and you can see all of your current rules with ``semanage fcontext -l -C``. | ||
314 | |||
315 | If you're installing the preconfigured latest-v2-package, then an additional rule is needed during the initial setup: | ||
316 | |||
317 | ``semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wallabag/var"`` | ||
318 | |||
319 | After you successfully access your wallabag and complete the initial setup, this context can be removed: | ||
320 | |||
321 | :: | ||
322 | |||
323 | semanage fcontext -d -t httpd_sys_rw_content_t "/var/www/wallabag/var" | ||
324 | retorecon -R -v /var/www/wallabag/var | ||
diff --git a/docs/fr/developer/api.rst b/docs/fr/developer/api.rst index af38d3ec..a0710a96 100644 --- a/docs/fr/developer/api.rst +++ b/docs/fr/developer/api.rst | |||
@@ -266,3 +266,4 @@ Certaines applications ou bibliothèques utilisent notre API. En voici une liste | |||
266 | - `Java wrapper for the wallabag API <https://github.com/Strubbl/wallabag-java>`_ par Strubbl. | 266 | - `Java wrapper for the wallabag API <https://github.com/Strubbl/wallabag-java>`_ par Strubbl. |
267 | - `.NET library for the wallabag v2 API <https://github.com/jlnostr/wallabag-api>`_ par Julian Oster. | 267 | - `.NET library for the wallabag v2 API <https://github.com/jlnostr/wallabag-api>`_ par Julian Oster. |
268 | - `Python API for wallabag <https://github.com/foxmask/wallabag_api>`_ par FoxMaSk, pour son projet `Trigger Happy <https://blog.trigger-happy.eu/>`_. | 268 | - `Python API for wallabag <https://github.com/foxmask/wallabag_api>`_ par FoxMaSk, pour son projet `Trigger Happy <https://blog.trigger-happy.eu/>`_. |
269 | - `Un plugin <https://github.com/joshp23/ttrss-to-wallabag-v2>`_ conçu pour `Tiny Tiny RSS <https://tt-rss.org/gitlab/fox/tt-rss/wikis/home>`_ qui utilise l'API wallabag v2. Par Josh Panter. | ||
diff --git a/docs/img/user/android_configuration_connection_test.en.png b/docs/img/user/android_configuration_connection_test.en.png new file mode 100644 index 00000000..479cd09a --- /dev/null +++ b/docs/img/user/android_configuration_connection_test.en.png | |||
Binary files differ | |||
diff --git a/docs/img/user/android_configuration_connection_test_success.en.png b/docs/img/user/android_configuration_connection_test_success.en.png new file mode 100644 index 00000000..840f00cd --- /dev/null +++ b/docs/img/user/android_configuration_connection_test_success.en.png | |||
Binary files differ | |||
diff --git a/docs/img/user/android_configuration_feed_credentials_automatically_filled_in.en.png b/docs/img/user/android_configuration_feed_credentials_automatically_filled_in.en.png new file mode 100644 index 00000000..df071b8b --- /dev/null +++ b/docs/img/user/android_configuration_feed_credentials_automatically_filled_in.en.png | |||
Binary files differ | |||
diff --git a/docs/img/user/android_configuration_filled_in.en.png b/docs/img/user/android_configuration_filled_in.en.png new file mode 100644 index 00000000..368ac515 --- /dev/null +++ b/docs/img/user/android_configuration_filled_in.en.png | |||
Binary files differ | |||
diff --git a/docs/img/user/android_configuration_get_feed_credentials.en.png b/docs/img/user/android_configuration_get_feed_credentials.en.png new file mode 100644 index 00000000..2a8958ff --- /dev/null +++ b/docs/img/user/android_configuration_get_feed_credentials.en.png | |||
Binary files differ | |||
diff --git a/docs/img/user/android_configuration_saved_feed_update.en.png b/docs/img/user/android_configuration_saved_feed_update.en.png new file mode 100644 index 00000000..f1c06f17 --- /dev/null +++ b/docs/img/user/android_configuration_saved_feed_update.en.png | |||
Binary files differ | |||
diff --git a/docs/img/user/android_configuration_screen.en.png b/docs/img/user/android_configuration_screen.en.png new file mode 100644 index 00000000..945fd7c8 --- /dev/null +++ b/docs/img/user/android_configuration_screen.en.png | |||
Binary files differ | |||
diff --git a/docs/img/user/android_configuration_scroll_bottom.en.png b/docs/img/user/android_configuration_scroll_bottom.en.png new file mode 100644 index 00000000..11a6fc5a --- /dev/null +++ b/docs/img/user/android_configuration_scroll_bottom.en.png | |||
Binary files differ | |||
diff --git a/docs/img/user/android_unread_feed_synced.en.png b/docs/img/user/android_unread_feed_synced.en.png new file mode 100644 index 00000000..8451557e --- /dev/null +++ b/docs/img/user/android_unread_feed_synced.en.png | |||
Binary files differ | |||
diff --git a/docs/img/user/android_welcome_screen.en.png b/docs/img/user/android_welcome_screen.en.png new file mode 100644 index 00000000..a3741d50 --- /dev/null +++ b/docs/img/user/android_welcome_screen.en.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php index 5202c524..af24e498 100644 --- a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php +++ b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php | |||
@@ -110,8 +110,8 @@ class WallabagRestController extends FOSRestController | |||
110 | 110 | ||
111 | $url = $request->request->get('url'); | 111 | $url = $request->request->get('url'); |
112 | $title = $request->request->get('title'); | 112 | $title = $request->request->get('title'); |
113 | $isArchived = (int) $request->request->get('archive'); | 113 | $isArchived = $request->request->get('archive'); |
114 | $isStarred = (int) $request->request->get('starred'); | 114 | $isStarred = $request->request->get('starred'); |
115 | 115 | ||
116 | $entry = $this->get('wallabag_core.entry_repository')->findByUrlAndUserId($url, $this->getUser()->getId()); | 116 | $entry = $this->get('wallabag_core.entry_repository')->findByUrlAndUserId($url, $this->getUser()->getId()); |
117 | 117 | ||
@@ -172,8 +172,8 @@ class WallabagRestController extends FOSRestController | |||
172 | $this->validateUserAccess($entry->getUser()->getId()); | 172 | $this->validateUserAccess($entry->getUser()->getId()); |
173 | 173 | ||
174 | $title = $request->request->get('title'); | 174 | $title = $request->request->get('title'); |
175 | $isArchived = (int) $request->request->get('archive'); | 175 | $isArchived = $request->request->get('archive'); |
176 | $isStarred = (int) $request->request->get('starred'); | 176 | $isStarred = $request->request->get('starred'); |
177 | 177 | ||
178 | if (!is_null($title)) { | 178 | if (!is_null($title)) { |
179 | $entry->setTitle($title); | 179 | $entry->setTitle($title); |
diff --git a/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php b/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php index 2f2d92ee..c50e4d02 100644 --- a/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php +++ b/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php | |||
@@ -423,4 +423,91 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
423 | 423 | ||
424 | $this->assertEquals($this->client->getContainer()->getParameter('wallabag_core.version'), $content); | 424 | $this->assertEquals($this->client->getContainer()->getParameter('wallabag_core.version'), $content); |
425 | } | 425 | } |
426 | |||
427 | public function testSaveIsArchivedAfterPost() | ||
428 | { | ||
429 | $entry = $this->client->getContainer() | ||
430 | ->get('doctrine.orm.entity_manager') | ||
431 | ->getRepository('WallabagCoreBundle:Entry') | ||
432 | ->findOneBy(['user' => 1, 'isArchived' => true]); | ||
433 | |||
434 | if (!$entry) { | ||
435 | $this->markTestSkipped('No content found in db.'); | ||
436 | } | ||
437 | |||
438 | $this->client->request('POST', '/api/entries.json', [ | ||
439 | 'url' => $entry->getUrl(), | ||
440 | ]); | ||
441 | |||
442 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
443 | |||
444 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
445 | |||
446 | $this->assertEquals(true, $content['is_archived']); | ||
447 | } | ||
448 | |||
449 | public function testSaveIsStarredAfterPost() | ||
450 | { | ||
451 | $entry = $this->client->getContainer() | ||
452 | ->get('doctrine.orm.entity_manager') | ||
453 | ->getRepository('WallabagCoreBundle:Entry') | ||
454 | ->findOneBy(['user' => 1, 'isStarred' => true]); | ||
455 | |||
456 | if (!$entry) { | ||
457 | $this->markTestSkipped('No content found in db.'); | ||
458 | } | ||
459 | |||
460 | $this->client->request('POST', '/api/entries.json', [ | ||
461 | 'url' => $entry->getUrl(), | ||
462 | ]); | ||
463 | |||
464 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
465 | |||
466 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
467 | |||
468 | $this->assertEquals(true, $content['is_starred']); | ||
469 | } | ||
470 | |||
471 | public function testSaveIsArchivedAfterPatch() | ||
472 | { | ||
473 | $entry = $this->client->getContainer() | ||
474 | ->get('doctrine.orm.entity_manager') | ||
475 | ->getRepository('WallabagCoreBundle:Entry') | ||
476 | ->findOneBy(['user' => 1, 'isArchived' => true]); | ||
477 | |||
478 | if (!$entry) { | ||
479 | $this->markTestSkipped('No content found in db.'); | ||
480 | } | ||
481 | |||
482 | $this->client->request('PATCH', '/api/entries/'.$entry->getId().'.json', [ | ||
483 | 'title' => $entry->getTitle().'++', | ||
484 | ]); | ||
485 | |||
486 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
487 | |||
488 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
489 | |||
490 | $this->assertEquals(true, $content['is_archived']); | ||
491 | } | ||
492 | |||
493 | public function testSaveIsStarredAfterPatch() | ||
494 | { | ||
495 | $entry = $this->client->getContainer() | ||
496 | ->get('doctrine.orm.entity_manager') | ||
497 | ->getRepository('WallabagCoreBundle:Entry') | ||
498 | ->findOneBy(['user' => 1, 'isStarred' => true]); | ||
499 | |||
500 | if (!$entry) { | ||
501 | $this->markTestSkipped('No content found in db.'); | ||
502 | } | ||
503 | $this->client->request('PATCH', '/api/entries/'.$entry->getId().'.json', [ | ||
504 | 'title' => $entry->getTitle().'++', | ||
505 | ]); | ||
506 | |||
507 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
508 | |||
509 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
510 | |||
511 | $this->assertEquals(true, $content['is_starred']); | ||
512 | } | ||
426 | } | 513 | } |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml index 6658baa9..ae03f809 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml | |||
@@ -81,7 +81,7 @@ config: | |||
81 | archive: 'archived' | 81 | archive: 'archived' |
82 | rss_limit: 'Number of items in the feed' | 82 | rss_limit: 'Number of items in the feed' |
83 | form_user: | 83 | form_user: |
84 | two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion" | 84 | two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connection." |
85 | name_label: 'Name' | 85 | name_label: 'Name' |
86 | email_label: 'Email' | 86 | email_label: 'Email' |
87 | twoFactorAuthentication_label: 'Two factor authentication' | 87 | twoFactorAuthentication_label: 'Two factor authentication' |
@@ -98,9 +98,9 @@ config: | |||
98 | faq: | 98 | faq: |
99 | title: 'FAQ' | 99 | title: 'FAQ' |
100 | tagging_rules_definition_title: 'What does « tagging rules » mean?' | 100 | tagging_rules_definition_title: 'What does « tagging rules » mean?' |
101 | tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.' | 101 | tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble of manually classifying your entries.' |
102 | how_to_use_them_title: 'How do I use them?' | 102 | how_to_use_them_title: 'How do I use them?' |
103 | how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime <= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime >= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »' | 103 | how_to_use_them_description: 'Let us assume you want to tag new entries as « <i>short reading</i> » when the reading time is under 3 minutes.<br />In that case, you should put « readingTime <= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them with a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime >= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »' |
104 | variables_available_title: 'Which variables and operators can I use to write rules?' | 104 | variables_available_title: 'Which variables and operators can I use to write rules?' |
105 | variables_available_description: 'The following variables and operators can be used to create tagging rules:' | 105 | variables_available_description: 'The following variables and operators can be used to create tagging rules:' |
106 | meaning: 'Meaning' | 106 | meaning: 'Meaning' |
@@ -140,7 +140,7 @@ entry: | |||
140 | archived: 'Archived entries' | 140 | archived: 'Archived entries' |
141 | filtered: 'Filtered entries' | 141 | filtered: 'Filtered entries' |
142 | list: | 142 | list: |
143 | number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.' | 143 | number_on_the_page: '{0} There are no entries.|{1} There is one entry.|]1,Inf[ There are %count% entries.' |
144 | reading_time: 'estimated reading time' | 144 | reading_time: 'estimated reading time' |
145 | reading_time_minutes: 'estimated reading time: %readingTime% min' | 145 | reading_time_minutes: 'estimated reading time: %readingTime% min' |
146 | reading_time_less_one_minute: 'estimated reading time: <small class="inferieur"><</small> 1 min' | 146 | reading_time_less_one_minute: 'estimated reading time: <small class="inferieur"><</small> 1 min' |
@@ -223,14 +223,14 @@ about: | |||
223 | bug_reports: 'Bug reports' | 223 | bug_reports: 'Bug reports' |
224 | support: '<a href="https://support.wallabag.org">On our support website</a> or <a href="https://github.com/wallabag/wallabag/issues">on GitHub</a>' | 224 | support: '<a href="https://support.wallabag.org">On our support website</a> or <a href="https://github.com/wallabag/wallabag/issues">on GitHub</a>' |
225 | helping: | 225 | helping: |
226 | description: 'wallabag is free and opensource. You can help us:' | 226 | description: 'wallabag is free and open source. You can help us:' |
227 | by_contributing: 'by contributing to the project:' | 227 | by_contributing: 'by contributing to the project:' |
228 | by_contributing_2: 'an issue lists all our needs' | 228 | by_contributing_2: 'an issue lists all our needs' |
229 | by_paypal: 'via Paypal' | 229 | by_paypal: 'via Paypal' |
230 | contributors: | 230 | contributors: |
231 | description: 'Thank you to contributors on wallabag web application' | 231 | description: 'Thank you to contributors on wallabag web application' |
232 | third_party: | 232 | third_party: |
233 | description: 'Here are the list of third-party libraries used in wallabag (with their licenses):' | 233 | description: 'Here is the list of third-party libraries used in wallabag (with their licenses):' |
234 | package: 'Package' | 234 | package: 'Package' |
235 | license: 'License' | 235 | license: 'License' |
236 | 236 | ||
@@ -259,7 +259,7 @@ quickstart: | |||
259 | page_title: 'Quickstart' | 259 | page_title: 'Quickstart' |
260 | intro: | 260 | intro: |
261 | title: 'Welcome to wallabag!' | 261 | title: 'Welcome to wallabag!' |
262 | paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you." | 262 | paragraph_1: "We'll accompany you on your visit to wallabag and show you some features that might interest you." |
263 | paragraph_2: 'Follow us!' | 263 | paragraph_2: 'Follow us!' |
264 | configure: | 264 | configure: |
265 | title: 'Configure the application' | 265 | title: 'Configure the application' |
@@ -291,7 +291,7 @@ quickstart: | |||
291 | title: 'Full documentation' | 291 | title: 'Full documentation' |
292 | annotate: 'Annotate your article' | 292 | annotate: 'Annotate your article' |
293 | export: 'Convert your articles into ePUB or PDF' | 293 | export: 'Convert your articles into ePUB or PDF' |
294 | search_filters: 'See how you can look for an article by using search engine and filters' | 294 | search_filters: 'See how you can look for an article by using the search engine and filters' |
295 | fetching_errors: 'What can I do if an article encounters errors during fetching?' | 295 | fetching_errors: 'What can I do if an article encounters errors during fetching?' |
296 | all_docs: 'And so many other articles!' | 296 | all_docs: 'And so many other articles!' |
297 | support: | 297 | support: |
@@ -304,11 +304,11 @@ quickstart: | |||
304 | tag: | 304 | tag: |
305 | page_title: 'Tags' | 305 | page_title: 'Tags' |
306 | list: | 306 | list: |
307 | number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.' | 307 | number_on_the_page: '{0} There are no tags.|{1} There is one tag.|]1,Inf[ There are %count% tags.' |
308 | 308 | ||
309 | import: | 309 | import: |
310 | page_title: 'Import' | 310 | page_title: 'Import' |
311 | page_description: 'Welcome to wallabag importer. Please select your previous service that you want to migrate.' | 311 | page_description: 'Welcome to wallabag importer. Please select your previous service from which you want to migrate.' |
312 | action: | 312 | action: |
313 | import_contents: 'Import contents' | 313 | import_contents: 'Import contents' |
314 | form: | 314 | form: |
@@ -318,7 +318,7 @@ import: | |||
318 | save_label: 'Upload file' | 318 | save_label: 'Upload file' |
319 | pocket: | 319 | pocket: |
320 | page_title: 'Import > Pocket' | 320 | page_title: 'Import > Pocket' |
321 | description: "This importer will import all your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag." | 321 | description: "This importer will import all of your Pocket data. Pocket doesn't allow us to retrieve content from their service, so the readable content of each article will be re-fetched by wallabag." |
322 | config_missing: | 322 | config_missing: |
323 | description: "Pocket import isn't configured." | 323 | description: "Pocket import isn't configured." |
324 | admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.' | 324 | admin_message: 'You need to define %keyurls%a pocket_consumer_key%keyurle%.' |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig index 9ce5b645..920fa933 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig | |||
@@ -32,7 +32,7 @@ | |||
32 | 32 | ||
33 | <div class="card-content"> | 33 | <div class="card-content"> |
34 | {% if not entry.previewPicture is null %} | 34 | {% if not entry.previewPicture is null %} |
35 | <i class="card-title grey-text text-darken-4 activator mdi-navigation-more-vert right"></i> | 35 | <i class="card-title grey-text text-darken-4 activator mdi-navigation-more-horiz right"></i> |
36 | {% endif %} | 36 | {% endif %} |
37 | 37 | ||
38 | <span class="card-title"><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|raw }}">{{ entry.title|striptags|slice(0, 42)|raw }}</a></span> | 38 | <span class="card-title"><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|raw }}">{{ entry.title|striptags|slice(0, 42)|raw }}</a></span> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig index 75170f91..25ad23dd 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig | |||
@@ -134,7 +134,7 @@ | |||
134 | <a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS"> | 134 | <a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS"> |
135 | <span class="icon-apple"></span> | 135 | <span class="icon-apple"></span> |
136 | </a> | 136 | </a> |
137 | <a target="_blank" class="grey-text text-lighten-3" href="https://addons.mozilla.org/ru/firefox/addon/wallabag/" title="Firefox"> | 137 | <a target="_blank" class="grey-text text-lighten-3" href="https://addons.mozilla.org/firefox/addon/wallabag/" title="Firefox"> |
138 | <span class="icon-firefox"></span> | 138 | <span class="icon-firefox"></span> |
139 | </a> | 139 | </a> |
140 | <a target="_blank" class="grey-text text-lighten-3" href="https://chrome.google.com/webstore/detail/wallabagit/peehlcgckcnclnjlndmoddifcicdnabm" title="Chrome"> | 140 | <a target="_blank" class="grey-text text-lighten-3" href="https://chrome.google.com/webstore/detail/wallabagit/peehlcgckcnclnjlndmoddifcicdnabm" title="Chrome"> |
diff --git a/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig b/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig index c44fcfb7..3731f13b 100644 --- a/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/TwoFactor/email_auth_code.html.twig | |||
@@ -74,7 +74,7 @@ | |||
74 | 74 | ||
75 | <table cellpadding="0" cellspacing="0" border="0" align="center" id="card"> | 75 | <table cellpadding="0" cellspacing="0" border="0" align="center" id="card"> |
76 | <tr> | 76 | <tr> |
77 | <td style="padding: 20px;" width="96px" valign="top"><img class="image_fix" src="{{ wallabag_url }}/themes/material/img/logo-other_themes.png" alt="logo" title="{{ wallabag_url }}" style="width: 96px; height: 96px;" /></td> | 77 | <td style="padding: 20px;" width="96px" valign="top"><img class="image_fix" src="{{ asset('bundles/wallabagcore/themes/material/img/logo-other_themes.png') }}" alt="logo" title="{{ wallabag_url }}" style="width: 96px; height: 96px;" /></td> |
78 | <td style="padding: 20px; padding-left: 0;" valign="top" id="cell_desc"> | 78 | <td style="padding: 20px; padding-left: 0;" valign="top" id="cell_desc"> |
79 | <h1>wallabag</h1> | 79 | <h1>wallabag</h1> |
80 | <h5>{{ "auth_code.on"|trans({}, 'wallabag_user') }} {{ wallabag_url }}</h5> | 80 | <h5>{{ "auth_code.on"|trans({}, 'wallabag_user') }} {{ wallabag_url }}</h5> |