aboutsummaryrefslogtreecommitdiffhomepage
path: root/docs/en
diff options
context:
space:
mode:
Diffstat (limited to 'docs/en')
-rw-r--r--docs/en/conf.py55
-rw-r--r--docs/en/developer/api.rst271
-rw-r--r--docs/en/developer/asynchronous.rst160
-rw-r--r--docs/en/developer/console_commands.rst30
-rw-r--r--docs/en/developer/docker.rst51
-rw-r--r--docs/en/developer/documentation.rst12
-rw-r--r--docs/en/developer/front_end.rst33
-rw-r--r--docs/en/developer/paywall.rst65
-rw-r--r--docs/en/developer/testsuite.rst10
-rw-r--r--docs/en/developer/translate.rst60
-rw-r--r--docs/en/index.rst53
-rw-r--r--docs/en/requirements.txt2
-rw-r--r--docs/en/user/android.rst95
-rw-r--r--docs/en/user/articles.rst117
-rw-r--r--docs/en/user/backup.rst26
-rw-r--r--docs/en/user/configuration.rst132
-rw-r--r--docs/en/user/configuring_mobile.rst13
-rw-r--r--docs/en/user/create_account.rst42
-rw-r--r--docs/en/user/errors_during_fetching.rst37
-rw-r--r--docs/en/user/faq.rst55
-rw-r--r--docs/en/user/filters.rst54
-rw-r--r--docs/en/user/import.rst159
-rw-r--r--docs/en/user/installation.rst365
-rw-r--r--docs/en/user/parameters.rst96
-rw-r--r--docs/en/user/query-upgrade-21-22.rst984
-rw-r--r--docs/en/user/tags.rst2
-rw-r--r--docs/en/user/upgrade.rst148
27 files changed, 0 insertions, 3127 deletions
diff --git a/docs/en/conf.py b/docs/en/conf.py
deleted file mode 100644
index 5926f8c9..00000000
--- a/docs/en/conf.py
+++ /dev/null
@@ -1,55 +0,0 @@
1# -*- coding: utf-8 -*-
2#
3# wallabag documentation build configuration file, created by
4# sphinx-quickstart on Fri Oct 16 06:47:23 2015.
5
6import sys
7import os
8
9extensions = []
10templates_path = ['_templates']
11source_suffix = '.rst'
12master_doc = 'index'
13project = u'wallabag'
14copyright = u'2013-2017, Nicolas Lœuillet - MIT Licence'
15version = '2.3.0'
16release = version
17exclude_patterns = ['_build']
18pygments_style = 'sphinx'
19html_theme = 'default'
20html_static_path = ['_static']
21htmlhelp_basename = 'wallabagdoc'
22latex_elements = {
23
24}
25
26latex_documents = [
27 ('index', 'wallabag.tex', u'wallabag Documentation',
28 u'Nicolas Lœuillet', 'manual'),
29]
30
31man_pages = [
32 ('index', 'wallabag', u'wallabag Documentation',
33 [u'Nicolas Lœuillet'], 1)
34]
35
36texinfo_documents = [
37 ('index', 'wallabag', u'wallabag Documentation',
38 u'Nicolas Lœuillet', 'wallabag', 'wallabag is an opensource read-it-later.',
39 'Miscellaneous'),
40]
41
42##### Guzzle sphinx theme
43
44import guzzle_sphinx_theme
45html_translator_class = 'guzzle_sphinx_theme.HTMLTranslator'
46html_theme_path = guzzle_sphinx_theme.html_theme_path()
47html_theme = 'guzzle_sphinx_theme'
48
49# Custom sidebar templates, maps document names to template names.
50html_sidebars = {
51 '**': ['logo-text.html', 'globaltoc.html', 'searchbox.html']
52}
53
54# Register the theme as an extension to generate a sitemap.xml
55extensions.append("guzzle_sphinx_theme")
diff --git a/docs/en/developer/api.rst b/docs/en/developer/api.rst
deleted file mode 100644
index 80c96025..00000000
--- a/docs/en/developer/api.rst
+++ /dev/null
@@ -1,271 +0,0 @@
1API documentation
2=================
3
4Thanks to this documentation, we'll see how to interact with the wallabag API.
5
6Requirements
7------------
8
9* wallabag freshly (or not) installed on http://localhost:8000
10* ``httpie`` installed on your computer (`see project website <https://github.com/jkbrzt/httpie>`__). Note that you can also adapt the commands using curl or wget.
11* all the API methods are documented here http://localhost:8000/api/doc (on your instance) and `on our example instance <http://v2.wallabag.org/api/doc>`_
12
13Creating a new API client
14-------------------------
15
16In your wallabag account, you can create a new API client at this URL http://localhost:8000/developer/client/create.
17
18Just give the redirect URL of your application and create your client. If your application is a desktop one, put whatever URL suits you the most.
19
20You get information like this:
21
22::
23
24 Client ID:
25
26 1_3o53gl30vhgk0c8ks4cocww08o84448osgo40wgw4gwkoo8skc
27
28 Client secret:
29
30 636ocbqo978ckw0gsw4gcwwocg8044sco0w8w84cws48ggogs4
31
32
33Obtaining a refresh token
34-------------------------
35
36For each API call, you'll need a token. Let's create it with this command (replace ``client_id``, ``client_secret``, ``username`` and ``password`` with their values):
37
38::
39
40 http POST http://localhost:8000/oauth/v2/token \
41 grant_type=password \
42 client_id=1_3o53gl30vhgk0c8ks4cocww08o84448osgo40wgw4gwkoo8skc \
43 client_secret=636ocbqo978ckw0gsw4gcwwocg8044sco0w8w84cws48ggogs4 \
44 username=wallabag \
45 password=wallabag
46
47You'll have this in return:
48
49::
50
51 HTTP/1.1 200 OK
52 Cache-Control: no-store, private
53 Connection: close
54 Content-Type: application/json
55 Date: Tue, 05 Apr 2016 08:44:33 GMT
56 Host: localhost:8000
57 Pragma: no-cache
58 X-Debug-Token: 19c8e0
59 X-Debug-Token-Link: /_profiler/19c8e0
60 X-Powered-By: PHP/7.0.4
61
62 {
63 "access_token": "ZGJmNTA2MDdmYTdmNWFiZjcxOWY3MWYyYzkyZDdlNWIzOTU4NWY3NTU1MDFjOTdhMTk2MGI3YjY1ZmI2NzM5MA",
64 "expires_in": 3600,
65 "refresh_token": "OTNlZGE5OTJjNWQwYzc2NDI5ZGE5MDg3ZTNjNmNkYTY0ZWZhZDVhNDBkZTc1ZTNiMmQ0MjQ0OThlNTFjNTQyMQ",
66 "scope": null,
67 "token_type": "bearer"
68 }
69
70We'll work with the ``access_token`` value in our next calls.
71
72cURL example:
73
74::
75
76 curl -s "https://localhost:8000/oauth/v2/token?grant_type=password&client_id=1_3o53gl30vhgk0c8ks4cocww08o84448osgo40wgw4gwkoo8skc&client_secret=636ocbqo978ckw0gsw4gcwwocg8044sco0w8w84cws48ggogs4&username=wallabag&password=wallabag"
77
78Getting existing entries
79------------------------
80
81Documentation for this method: http://localhost:8000/api/doc#get--api-entries.{_format}
82
83As we work on a fresh wallabag installation, we'll have no result with this command:
84
85::
86
87 http GET http://localhost:8000/api/entries.json \
88 "Authorization:Bearer ZGJmNTA2MDdmYTdmNWFiZjcxOWY3MWYyYzkyZDdlNWIzOTU4NWY3NTU1MDFjOTdhMTk2MGI3YjY1ZmI2NzM5MA"
89
90returns:
91
92::
93
94 HTTP/1.1 200 OK
95 0: application/json
96 Cache-Control: no-cache
97 Connection: close
98 Content-Type: application/json
99 Date: Tue, 05 Apr 2016 08:51:32 GMT
100 Host: localhost:8000
101 Set-Cookie: PHPSESSID=nrogm748md610ovhu6j70c3q63; path=/; HttpOnly
102 X-Debug-Token: 4fbbc4
103 X-Debug-Token-Link: /_profiler/4fbbc4
104 X-Powered-By: PHP/7.0.4
105
106 {
107 "_embedded": {
108 "items": []
109 },
110 "_links": {
111 "first": {
112 "href": "http://localhost:8000/api/entries?page=1&perPage=30"
113 },
114 "last": {
115 "href": "http://localhost:8000/api/entries?page=1&perPage=30"
116 },
117 "self": {
118 "href": "http://localhost:8000/api/entries?page=1&perPage=30"
119 }
120 },
121 "limit": 30,
122 "page": 1,
123 "pages": 1,
124 "total": 0
125 }
126
127The ``items`` array is empty.
128
129cURL example:
130
131::
132
133 curl --get "https://localhost:8000/api/entries.html?access_token=ZGJmNTA2MDdmYTdmNWFiZjcxOWY3MWYyYzkyZDdlNWIzOTU4NWY3NTU1MDFjOTdhMTk2MGI3YjY1ZmI2NzM5MA"
134
135Adding your first entry
136-----------------------
137
138Documentation for this method: http://localhost:8000/api/doc#post--api-entries.{_format}
139
140::
141
142 http POST http://localhost:8000/api/entries.json \
143 "Authorization:Bearer ZGJmNTA2MDdmYTdmNWFiZjcxOWY3MWYyYzkyZDdlNWIzOTU4NWY3NTU1MDFjOTdhMTk2MGI3YjY1ZmI2NzM5MA" \
144 url="http://www.numerama.com/tech/160115-le-pocket-libre-wallabag-fait-le-plein-de-fonctionnalites.html"
145
146returns
147
148::
149
150 HTTP/1.1 200 OK
151 0: application/json
152 Cache-Control: no-cache
153 Connection: close
154 Content-Type: application/json
155 Date: Tue, 05 Apr 2016 09:07:54 GMT
156 Host: localhost:8000
157 Set-Cookie: PHPSESSID=bjie40ck72kp2pst3i71gf43a4; path=/; HttpOnly
158 X-Debug-Token: e01c51
159 X-Debug-Token-Link: /_profiler/e01c51
160 X-Powered-By: PHP/7.0.4
161
162 {
163 "_links": {
164 "self": {
165 "href": "/api/entries/1"
166 }
167 },
168 "content": "<p class=\"chapo\">Fonctionnant sur le même principe que Pocket, Instapaper ou Readability, le logiciel Wallabag permet de mémoriser des articles pour les lire plus tard. Sa nouvelle version apporte une multitude de nouvelles fonctionnalités.</p><p>Si vous utilisez Firefox comme navigateur web, vous avez peut-être constaté l’arrivée d’<a href=\"http://www.numerama.com/magazine/33292-update-firefox.html\">une fonctionnalité intitulée Pocket</a>. Disponible autrefois sous la forme d’un module complémentaire, et sous un autre nom (Read it Later), elle est depuis le mois de juin 2015 directement incluse au sein de Firefox.</p>\n<p>Concrètement, Pocket sert à garder en mémoire des contenus que vous croisez au fil de la navigation, comme des articles de presse ou des vidéos, afin de pouvoir les consulter plus tard. Pocket fonctionne un peu comme un système de favoris, mais en bien plus élaboré grâce à ses options supplémentaires.</p>\n<p>Mais <a href=\"https://en.wikipedia.org/wiki/Pocket_%28application%29#Firefox_integration\" target=\"_blank\">Pocket fait polémique</a>, car il s’agit d’un projet propriétaire qui est intégré dans un logiciel libre. C’est pour cette raison que des utilisateurs ont choisi de se tourner vers d’autres solutions, comme <strong>Wallabag</strong>, qui est l’équivalent libre de Pocket et d’autres systèmes du même genre, comme Instapaper et Readability.</p>\n<p>Et justement, Wallabag évolue. C’est ce dimanche que la <a href=\"https://www.wallabag.org/blog/2016/04/03/wallabag-v2\" target=\"_blank\">version 2.0.0 du logiciel</a> a été publiée par l’équipe en  charge de son développement et celle-ci contient de nombreux changements par rapport aux moutures précédentes (la <a href=\"http://doc.wallabag.org/fr/v2/\" target=\"_blank\">documentation est traduite</a> en français), lui permettant d’apparaître comme une alternative à Pocket, Instapaper et Readability.</p>\n<p><img class=\"aligncenter size-medium wp-image-160439\" src=\"http://www.numerama.com/content/uploads/2016/04/homepage-680x347.png\" alt=\"homepage\" width=\"680\" height=\"347\" srcset=\"//www.numerama.com/content/uploads/2016/04/homepage-680x347.png 680w, //www.numerama.com/content/uploads/2016/04/homepage-1024x523.png 1024w, //www.numerama.com/content/uploads/2016/04/homepage-270x138.png 270w, //www.numerama.com/content/uploads/2016/04/homepage.png 1286w\" sizes=\"(max-width: 680px) 100vw, 680px\"/></p>\n<p>Parmi les principaux changements que l’on peut retenir avec cette nouvelle version, notons la possibilité d’écrire des annotations dans les articles mémorisés, de filtrer les contenus selon divers critères (temps de lecture, nom de domaine, date de création, statut…), d’assigner des mots-clés aux entrées, de modifier le titre des articles, le support des flux RSS ou encore le support de plusieurs langues dont le français.</p>\n<p>D’autres options sont également à signaler, comme l’aperçu d’un article mémorisé (si l’option est disponible), un guide de démarrage rapide pour les débutants, un outil d’export dans divers formats (PDF, JSON, EPUB, MOBI, XML, CSV et TXT) et, surtout, la possibilité de migrer vers Wallabag depuis Pocket, afin de convaincre les usagers de se lancer.</p>\n \n \n <footer class=\"clearfix\" readability=\"1\"><p class=\"source\">\n Crédit photo de la une : <a href=\"https://www.flickr.com/photos/bookgrl/2388310523/\">Laura Taylor</a>\n </p>\n \n <p><a href=\"http://www.numerama.com/tech/160115-le-pocket-libre-wallabag-fait-le-plein-de-fonctionnalites.html?&amp;show_reader_reports\" target=\"_blank\" rel=\"nofollow\">Signaler une erreur dans le texte</a></p>\n \n</footer> <section class=\"related-article\"><header><h3>Articles liés</h3>\n </header><article class=\"post-grid format-article\"><a class=\"floatleft\" href=\"http://www.numerama.com/magazine/34444-firefox-prepare-l-enterrement-des-vieux-plugins.html\" title=\"Firefox prépare l'enterrement des vieux plugins\">\n <div class=\"cover-preview cover-tech\">\n <p>Lire</p>\n \n \n \n <img class=\"cover-preview_img\" src=\"http://c2.lestechnophiles.com/www.numerama.com/content/uploads/2015/10/cimetierecolleville.jpg?resize=200,135\" srcset=\"&#10; //c2.lestechnophiles.com/www.numerama.com/content/uploads/2015/10/cimetierecolleville.jpg?resize=200,135 200w,&#10; //c2.lestechnophiles.com/www.numerama.com/content/uploads/2015/10/cimetierecolleville.jpg?resize=100,67 100w,&#10; \" sizes=\"(min-width: 1001px) 200px, (max-width: 1000px) 100px\" alt=\"Firefox prépare l'enterrement des vieux plugins\"/></div>\n <h4> Firefox prépare l'enterrement des vieux plugins </h4>\n </a>\n <footer class=\"span12\">\n </footer></article><article class=\"post-grid format-article\"><a class=\"floatleft\" href=\"http://www.numerama.com/tech/131636-activer-navigation-privee-navigateur-web.html\" title=\"Comment activer la navigation privée sur son navigateur web\">\n <div class=\"cover-preview cover-tech\">\n <p>Lire</p>\n \n \n \n <img class=\"cover-preview_img\" src=\"http://c1.lestechnophiles.com/www.numerama.com/content/uploads/2015/11/Incognito.jpg?resize=200,135\" srcset=\"&#10; //c1.lestechnophiles.com/www.numerama.com/content/uploads/2015/11/Incognito.jpg?resize=200,135 200w,&#10; //c1.lestechnophiles.com/www.numerama.com/content/uploads/2015/11/Incognito.jpg?resize=100,67 100w,&#10; \" sizes=\"(min-width: 1001px) 200px, (max-width: 1000px) 100px\" alt=\"Comment activer la navigation privée sur son navigateur web\"/></div>\n <h4> Comment activer la navigation privée sur son navigateur web </h4>\n </a>\n <footer class=\"span12\">\n </footer></article><article class=\"post-grid format-article\"><a class=\"floatleft\" href=\"http://www.numerama.com/tech/144028-firefox-se-mettra-a-jour-regulierement.html\" title=\"Firefox se mettra à jour un peu moins régulièrement\">\n <div class=\"cover-preview cover-tech\">\n <p>Lire</p>\n \n \n \n <img class=\"cover-preview_img\" src=\"http://c0.lestechnophiles.com/www.numerama.com/content/uploads/2016/02/firefox-mobile.jpg?resize=200,135\" srcset=\"&#10; //c0.lestechnophiles.com/www.numerama.com/content/uploads/2016/02/firefox-mobile.jpg?resize=200,135 200w,&#10; //c0.lestechnophiles.com/www.numerama.com/content/uploads/2016/02/firefox-mobile.jpg?resize=100,67 100w,&#10; \" sizes=\"(min-width: 1001px) 200px, (max-width: 1000px) 100px\" alt=\"Firefox se mettra à jour un peu moins régulièrement\"/></div>\n <h4> Firefox se mettra à jour un peu moins régulièrement </h4>\n </a>\n <footer class=\"span12\">\n </footer></article>\n</section>\n",
169 "created_at": "2016-04-05T09:07:54+0000",
170 "domain_name": "www.numerama.com",
171 "id": 1,
172 "is_archived": 0,
173 "is_starred": 0,
174 "language": "fr-FR",
175 "mimetype": "text/html",
176 "preview_picture": "http://www.numerama.com/content/uploads/2016/04/post-it.jpg",
177 "reading_time": 2,
178 "tags": [],
179 "title": "Le Pocket libre Wallabag fait le plein de fonctionnalités - Tech - Numerama",
180 "updated_at": "2016-04-05T09:07:54+0000",
181 "url": "http://www.numerama.com/tech/160115-le-pocket-libre-wallabag-fait-le-plein-de-fonctionnalites.html",
182 "user_email": "",
183 "user_id": 1,
184 "user_name": "wallabag"
185 }
186
187Now, if you execute the previous command (see **Get existing entries**), you'll have data.
188
189cURL example:
190
191::
192
193 curl "https://localhost:8000/api/entries.html?access_token=ZGJmNTA2MDdmYTdmNWFiZjcxOWY3MWYyYzkyZDdlNWIzOTU4NWY3NTU1MDFjOTdhMTk2MGI3YjY1ZmI2NzM5MA&url=http://www.numerama.com/tech/160115-le-pocket-libre-wallabag-fait-le-plein-de-fonctionnalites.html"
194
195Deleting an entry
196-----------------
197
198Documentation for this method: http://localhost:8000/api/doc#delete--api-entries-{entry}.{_format}
199
200::
201
202 http DELETE http://localhost:8000/api/entries/1.json \
203 "Authorization:Bearer ZGJmNTA2MDdmYTdmNWFiZjcxOWY3MWYyYzkyZDdlNWIzOTU4NWY3NTU1MDFjOTdhMTk2MGI3YjY1ZmI2NzM5MA"
204
205returns
206
207::
208
209 HTTP/1.1 200 OK
210 0: application/json
211 Cache-Control: no-cache
212 Connection: close
213 Content-Type: application/json
214 Date: Tue, 05 Apr 2016 09:19:07 GMT
215 Host: localhost:8000
216 Set-Cookie: PHPSESSID=jopgnfvmuc9a62b27sqm6iulr6; path=/; HttpOnly
217 X-Debug-Token: 887cef
218 X-Debug-Token-Link: /_profiler/887cef
219 X-Powered-By: PHP/7.0.4
220
221 {
222 "_links": {
223 "self": {
224 "href": "/api/entries/"
225 }
226 },
227 "annotations": [],
228 "content": "<p class=\"chapo\">Fonctionnant sur le même principe que Pocket, Instapaper ou Readability, le logiciel Wallabag permet de mémoriser des articles pour les lire plus tard. Sa nouvelle version apporte une multitude de nouvelles fonctionnalités.</p><p>Si vous utilisez Firefox comme navigateur web, vous avez peut-être constaté l’arrivée d’<a href=\"http://www.numerama.com/magazine/33292-update-firefox.html\">une fonctionnalité intitulée Pocket</a>. Disponible autrefois sous la forme d’un module complémentaire, et sous un autre nom (Read it Later), elle est depuis le mois de juin 2015 directement incluse au sein de Firefox.</p>\n<p>Concrètement, Pocket sert à garder en mémoire des contenus que vous croisez au fil de la navigation, comme des articles de presse ou des vidéos, afin de pouvoir les consulter plus tard. Pocket fonctionne un peu comme un système de favoris, mais en bien plus élaboré grâce à ses options supplémentaires.</p>\n<p>Mais <a href=\"https://en.wikipedia.org/wiki/Pocket_%28application%29#Firefox_integration\" target=\"_blank\">Pocket fait polémique</a>, car il s’agit d’un projet propriétaire qui est intégré dans un logiciel libre. C’est pour cette raison que des utilisateurs ont choisi de se tourner vers d’autres solutions, comme <strong>Wallabag</strong>, qui est l’équivalent libre de Pocket et d’autres systèmes du même genre, comme Instapaper et Readability.</p>\n<p>Et justement, Wallabag évolue. C’est ce dimanche que la <a href=\"https://www.wallabag.org/blog/2016/04/03/wallabag-v2\" target=\"_blank\">version 2.0.0 du logiciel</a> a été publiée par l’équipe en  charge de son développement et celle-ci contient de nombreux changements par rapport aux moutures précédentes (la <a href=\"http://doc.wallabag.org/fr/v2/\" target=\"_blank\">documentation est traduite</a> en français), lui permettant d’apparaître comme une alternative à Pocket, Instapaper et Readability.</p>\n<p><img class=\"aligncenter size-medium wp-image-160439\" src=\"http://www.numerama.com/content/uploads/2016/04/homepage-680x347.png\" alt=\"homepage\" width=\"680\" height=\"347\" srcset=\"//www.numerama.com/content/uploads/2016/04/homepage-680x347.png 680w, //www.numerama.com/content/uploads/2016/04/homepage-1024x523.png 1024w, //www.numerama.com/content/uploads/2016/04/homepage-270x138.png 270w, //www.numerama.com/content/uploads/2016/04/homepage.png 1286w\" sizes=\"(max-width: 680px) 100vw, 680px\"/></p>\n<p>Parmi les principaux changements que l’on peut retenir avec cette nouvelle version, notons la possibilité d’écrire des annotations dans les articles mémorisés, de filtrer les contenus selon divers critères (temps de lecture, nom de domaine, date de création, statut…), d’assigner des mots-clés aux entrées, de modifier le titre des articles, le support des flux RSS ou encore le support de plusieurs langues dont le français.</p>\n<p>D’autres options sont également à signaler, comme l’aperçu d’un article mémorisé (si l’option est disponible), un guide de démarrage rapide pour les débutants, un outil d’export dans divers formats (PDF, JSON, EPUB, MOBI, XML, CSV et TXT) et, surtout, la possibilité de migrer vers Wallabag depuis Pocket, afin de convaincre les usagers de se lancer.</p>\n \n \n <footer class=\"clearfix\" readability=\"1\"><p class=\"source\">\n Crédit photo de la une : <a href=\"https://www.flickr.com/photos/bookgrl/2388310523/\">Laura Taylor</a>\n </p>\n \n <p><a href=\"http://www.numerama.com/tech/160115-le-pocket-libre-wallabag-fait-le-plein-de-fonctionnalites.html?&amp;show_reader_reports\" target=\"_blank\" rel=\"nofollow\">Signaler une erreur dans le texte</a></p>\n \n</footer> <section class=\"related-article\"><header><h3>Articles liés</h3>\n </header><article class=\"post-grid format-article\"><a class=\"floatleft\" href=\"http://www.numerama.com/magazine/34444-firefox-prepare-l-enterrement-des-vieux-plugins.html\" title=\"Firefox prépare l'enterrement des vieux plugins\">\n <div class=\"cover-preview cover-tech\">\n <p>Lire</p>\n \n \n \n <img class=\"cover-preview_img\" src=\"http://c2.lestechnophiles.com/www.numerama.com/content/uploads/2015/10/cimetierecolleville.jpg?resize=200,135\" srcset=\"&#10; //c2.lestechnophiles.com/www.numerama.com/content/uploads/2015/10/cimetierecolleville.jpg?resize=200,135 200w,&#10; //c2.lestechnophiles.com/www.numerama.com/content/uploads/2015/10/cimetierecolleville.jpg?resize=100,67 100w,&#10; \" sizes=\"(min-width: 1001px) 200px, (max-width: 1000px) 100px\" alt=\"Firefox prépare l'enterrement des vieux plugins\"/></div>\n <h4> Firefox prépare l'enterrement des vieux plugins </h4>\n </a>\n <footer class=\"span12\">\n </footer></article><article class=\"post-grid format-article\"><a class=\"floatleft\" href=\"http://www.numerama.com/tech/131636-activer-navigation-privee-navigateur-web.html\" title=\"Comment activer la navigation privée sur son navigateur web\">\n <div class=\"cover-preview cover-tech\">\n <p>Lire</p>\n \n \n \n <img class=\"cover-preview_img\" src=\"http://c1.lestechnophiles.com/www.numerama.com/content/uploads/2015/11/Incognito.jpg?resize=200,135\" srcset=\"&#10; //c1.lestechnophiles.com/www.numerama.com/content/uploads/2015/11/Incognito.jpg?resize=200,135 200w,&#10; //c1.lestechnophiles.com/www.numerama.com/content/uploads/2015/11/Incognito.jpg?resize=100,67 100w,&#10; \" sizes=\"(min-width: 1001px) 200px, (max-width: 1000px) 100px\" alt=\"Comment activer la navigation privée sur son navigateur web\"/></div>\n <h4> Comment activer la navigation privée sur son navigateur web </h4>\n </a>\n <footer class=\"span12\">\n </footer></article><article class=\"post-grid format-article\"><a class=\"floatleft\" href=\"http://www.numerama.com/tech/144028-firefox-se-mettra-a-jour-regulierement.html\" title=\"Firefox se mettra à jour un peu moins régulièrement\">\n <div class=\"cover-preview cover-tech\">\n <p>Lire</p>\n \n \n \n <img class=\"cover-preview_img\" src=\"http://c0.lestechnophiles.com/www.numerama.com/content/uploads/2016/02/firefox-mobile.jpg?resize=200,135\" srcset=\"&#10; //c0.lestechnophiles.com/www.numerama.com/content/uploads/2016/02/firefox-mobile.jpg?resize=200,135 200w,&#10; //c0.lestechnophiles.com/www.numerama.com/content/uploads/2016/02/firefox-mobile.jpg?resize=100,67 100w,&#10; \" sizes=\"(min-width: 1001px) 200px, (max-width: 1000px) 100px\" alt=\"Firefox se mettra à jour un peu moins régulièrement\"/></div>\n <h4> Firefox se mettra à jour un peu moins régulièrement </h4>\n </a>\n <footer class=\"span12\">\n </footer></article>\n</section>\n",
229 "created_at": "2016-04-05T09:07:54+0000",
230 "domain_name": "www.numerama.com",
231 "is_archived": 0,
232 "is_starred": 0,
233 "language": "fr-FR",
234 "mimetype": "text/html",
235 "preview_picture": "http://www.numerama.com/content/uploads/2016/04/post-it.jpg",
236 "reading_time": 2,
237 "tags": [],
238 "title": "Le Pocket libre Wallabag fait le plein de fonctionnalités - Tech - Numerama",
239 "updated_at": "2016-04-05T09:07:54+0000",
240 "url": "http://www.numerama.com/tech/160115-le-pocket-libre-wallabag-fait-le-plein-de-fonctionnalites.html",
241 "user_email": "",
242 "user_id": 1,
243 "user_name": "wallabag"
244 }
245
246And if you want to list the existing entries (see **Get existing entries**), the array is empty.
247
248cURL example:
249
250::
251
252 curl --request DELETE "https://localhost:8000/api/entries/1.html?access_token=ZGJmNTA2MDdmYTdmNWFiZjcxOWY3MWYyYzkyZDdlNWIzOTU4NWY3NTU1MDFjOTdhMTk2MGI3YjY1ZmI2NzM5MA"
253
254Other methods
255-------------
256
257We won't write samples for each API method.
258
259Have a look on the listing here: http://localhost:8000/api/doc to know each method.
260
261Third party resources
262---------------
263
264Some applications or libraries use our API. Here is a non-exhaustive list of them:
265
266- `Java wrapper for the wallabag API <https://github.com/di72nn/wallabag-api-wrapper>`_ by Dmitriy Bogdanov.
267- `.NET library for the wallabag v2 API <https://github.com/jlnostr/wallabag-api>`_ by Julian Oster.
268- `Python API for wallabag <https://github.com/foxmask/wallabag_api>`_ by FoxMaSk, for his project `Trigger Happy <https://blog.trigger-happy.eu/>`_.
269- `A plugin <https://github.com/joshp23/ttrss-to-wallabag-v2>`_ designed for `Tiny Tiny RSS <https://tt-rss.org/gitlab/fox/tt-rss/wikis/home>`_ that makes use of the wallabag v2 API. By Josh Panter.
270- `Golang wrapper for the wallabag API <https://github.com/Strubbl/wallabago>`_ by Strubbl, for his projects `wallabag-stats graph <https://github.com/Strubbl/wallabag-stats>`_ and the command line tool `wallabag-add-article <https://github.com/Strubbl/wallabag-add-article>`_.
271- Tool to automatically download Wallabag articles into your local computer or Kobo ebook reader `wallabako <https://gitlab.com/anarcat/wallabako>`_ by anarcat.
diff --git a/docs/en/developer/asynchronous.rst b/docs/en/developer/asynchronous.rst
deleted file mode 100644
index 2e409e4a..00000000
--- a/docs/en/developer/asynchronous.rst
+++ /dev/null
@@ -1,160 +0,0 @@
1Asynchronous tasks
2==================
3
4In order to launch asynchronous tasks (useful for huge imports for example), we can use RabbitMQ or Redis.
5
6Install RabbitMQ for asynchronous tasks
7---------------------------------------
8
9Requirements
10^^^^^^^^^^^^
11
12You need to have RabbitMQ installed on your server.
13
14Installation
15^^^^^^^^^^^^
16
17.. code:: bash
18
19 wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
20 apt-key add rabbitmq-signing-key-public.asc
21 apt-get update
22 apt-get install rabbitmq-server
23
24Configuration and launch
25^^^^^^^^^^^^^^^^^^^^^^^^
26
27.. code:: bash
28
29 rabbitmq-plugins enable rabbitmq_management # (useful to have a web interface, available at http://localhost:15672/ (guest/guest)
30 rabbitmq-server -detached
31
32Stop RabbitMQ
33^^^^^^^^^^^^^
34
35.. code:: bash
36
37 rabbitmqctl stop
38
39
40Configure RabbitMQ in wallabag
41^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
42
43Edit your ``app/config/parameters.yml`` file to edit RabbitMQ configuration. The default one should be ok:
44
45.. code:: yaml
46
47 rabbitmq_host: localhost
48 rabbitmq_port: 5672
49 rabbitmq_user: guest
50 rabbitmq_password: guest
51 rabbitmq_prefetch_count: 10 # read http://www.rabbitmq.com/consumer-prefetch.html
52
53Enable RabbitMQ in wallabag
54^^^^^^^^^^^^^^^^^^^^^^^^^^^
55
56In internal settings, in the **Import** section, enable RabbitMQ (with the value 1).
57
58Launch RabbitMQ consumer
59^^^^^^^^^^^^^^^^^^^^^^^^
60
61Depending on which service you want to import from you need to enable one (or many if you want to support many) cron job:
62
63.. code:: bash
64
65 # for Pocket import
66 bin/console rabbitmq:consumer -e=prod import_pocket -w
67
68 # for Readability import
69 bin/console rabbitmq:consumer -e=prod import_readability -w
70
71 # for Instapaper import
72 bin/console rabbitmq:consumer -e=prod import_instapaper -w
73
74 # for wallabag v1 import
75 bin/console rabbitmq:consumer -e=prod import_wallabag_v1 -w
76
77 # for wallabag v2 import
78 bin/console rabbitmq:consumer -e=prod import_wallabag_v2 -w
79
80 # for Firefox import
81 bin/console rabbitmq:consumer -e=prod import_firefox -w
82
83 # for Chrome import
84 bin/console rabbitmq:consumer -e=prod import_chrome -w
85
86Install Redis for asynchronous tasks
87------------------------------------
88
89In order to launch asynchronous tasks (useful for huge imports for example), we can use Redis.
90
91Requirements
92^^^^^^^^^^^^
93
94You need to have Redis installed on your server.
95
96Installation
97^^^^^^^^^^^^
98
99.. code:: bash
100
101 apt-get install redis-server
102
103Launch
104^^^^^^
105
106The server might be already running after installing, if not you can launch it using:
107
108.. code:: bash
109
110 redis-server
111
112
113Configure Redis in wallabag
114^^^^^^^^^^^^^^^^^^^^^^^^^^^
115
116Edit your ``app/config/parameters.yml`` file to edit Redis configuration. The default one should be ok:
117
118.. code:: yaml
119
120 redis_host: localhost
121 redis_port: 6379
122
123Enable Redis in wallabag
124^^^^^^^^^^^^^^^^^^^^^^^^
125
126In internal settings, in the **Import** section, enable Redis (with the value 1).
127
128Launch Redis consumer
129^^^^^^^^^^^^^^^^^^^^^
130
131Depending on which service you want to import from you need to enable one (or many if you want to support many) cron job:
132
133.. code:: bash
134
135 # for Pocket import
136 bin/console wallabag:import:redis-worker -e=prod pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
137
138 # for Readability import
139 bin/console wallabag:import:redis-worker -e=prod readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
140
141 # for Instapaper import
142 bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
143
144 # for wallabag v1 import
145 bin/console wallabag:import:redis-worker -e=prod wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
146
147 # for wallabag v2 import
148 bin/console wallabag:import:redis-worker -e=prod wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
149
150 # for Firefox import
151 bin/console wallabag:import:redis-worker -e=prod firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
152
153 # for Chrome import
154 bin/console wallabag:import:redis-worker -e=prod chrome -vv >> /path/to/wallabag/var/logs/redis-chrome.log
155
156If you want to launch the import only for some messages and not all, you can specify this number (here 12) and the worker will stop right after the 12th message :
157
158.. code:: bash
159
160 bin/console wallabag:import:redis-worker -e=prod pocket -vv --maxIterations=12
diff --git a/docs/en/developer/console_commands.rst b/docs/en/developer/console_commands.rst
deleted file mode 100644
index 85a8a092..00000000
--- a/docs/en/developer/console_commands.rst
+++ /dev/null
@@ -1,30 +0,0 @@
1Console Commands
2================
3
4wallabag has a number of CLI commands to manage a number of tasks. You can list all the commands by executing `bin/console` in the wallabag folder.
5
6Each command has a help accessible through `bin/console help %command%`.
7
8.. note::
9
10 If you're in a production environment, remember to add `-e prod` to each command.
11
12Notable commands
13----------------
14
15* `assets:install`: May be helpful if assets are missing.
16* `cache:clear`: should be run after each update (included in `make update`).
17* `doctrine:migrations:status`: Output the status of your database migrations.
18* `fos:user:activate`: Manually activate an user.
19* `fos:user:change-password`: Change a password for an user.
20* `fos:user:create`: Create an user.
21* `fos:user:deactivate`: Deactivate an user (not deleted).
22* `fos:user:demote`: Removes a role from an user, typically admin rights.
23* `fos:user:promote`: Adds a role to an user, typically admin rights.
24* `rabbitmq:*`: May be useful if you're using RabbitMQ.
25* `wallabag:clean-duplicates`: Removes all entry duplicates for one user or all users
26* `wallabag:export`: Exports all entries for an user. You can choose the output path of the file.
27* `wallabag:import`: Import entries to different formats to an user account.
28* `wallabag:import:redis-worker`: Useful if you use Redis.
29* `wallabag:install`: (re)Install wallabag
30* `wallabag:tag:all`: Tag all entries for an user using his/her tagging rules.
diff --git a/docs/en/developer/docker.rst b/docs/en/developer/docker.rst
deleted file mode 100644
index 5e4f2ce6..00000000
--- a/docs/en/developer/docker.rst
+++ /dev/null
@@ -1,51 +0,0 @@
1Run wallabag in docker-compose
2==============================
3
4In order to run your own development instance of wallabag, you may
5want to use the pre-configured docker compose files.
6
7Requirements
8------------
9
10Make sure to have `Docker
11<https://docs.docker.com/installation/ubuntulinux/>`__ and `Docker
12Compose <https://docs.docker.com/compose/install/>`__ availables on
13your system and up to date.
14
15Switch DBMS
16-----------
17
18By default, wallabag will start with a SQLite database.
19Since wallabag provides support for Postgresql and MySQL, docker
20containers are also available for these ones.
21
22In ``docker-compose.yml``, for the chosen DBMS uncomment:
23
24- the container definition (``postgres`` or ``mariadb`` root level
25 block)
26- the container link in the ``php`` container
27- the container env file in the ``php`` container
28
29In order to keep running Symfony commands on your host (such as
30``wallabag:install``), you also should:
31
32- source the proper env files on your command line, so variables
33 like ``SYMFONY__ENV__DATABASE_HOST`` will exist.
34- create a ``127.0.0.1 rdbms`` on your system ``hosts`` file
35
36Run wallabag
37------------
38
39#. Fork and clone the project
40#. Edit ``app/config/parameters.yml`` to replace ``database_*``
41 properties with commented ones (with values prefixed by ``env.``)
42#. ``composer install`` the project dependencies
43#. ``php bin/console wallabag:install`` to create the schema
44#. ``docker-compose up`` to run the containers
45#. Finally, browse to http://localhost:8080/ to find your freshly
46 installed wallabag.
47
48At various step, you'll probably run into UNIX permission problems,
49bad paths in generated cache, etc…
50Operations like removing cache files or changing files owners might
51be frequently required, so don't be afraid !
diff --git a/docs/en/developer/documentation.rst b/docs/en/developer/documentation.rst
deleted file mode 100644
index ab206479..00000000
--- a/docs/en/developer/documentation.rst
+++ /dev/null
@@ -1,12 +0,0 @@
1Contribute to this documentation
2================================
3
4Sources of our documentation are here https://github.com/wallabag/wallabag/tree/master/docs
5
6We use `ReadTheDocs
7<https://readthedocs.org>`__ to generate it.
8
9Pages are written in `Restructured Text
10<https://en.wikipedia.org/wiki/ReStructuredText>`__ format. You can use online tools like http://rst.aaroniles.net/ or http://rst.ninjs.org/ to preview your articles.
11
12If you create a new page, don't forget to edit the `index.rst <https://raw.githubusercontent.com/wallabag/wallabag/master/docs/en/index.rst>`__ file to add a link in the sidebar. \ No newline at end of file
diff --git a/docs/en/developer/front_end.rst b/docs/en/developer/front_end.rst
deleted file mode 100644
index 40f18a42..00000000
--- a/docs/en/developer/front_end.rst
+++ /dev/null
@@ -1,33 +0,0 @@
1Tips for front-end developers
2=============================
3
4Starting from version 2.3, wallabag uses webpack to bundle its assets.
5
6Dev mode
7--------
8
9If the server runs in dev mode, you need to run ``yarn run build:dev`` to generate the outputted javascript files for each theme. These are named ``%theme%.dev.js`` and are ignored by git. You need to relaunch ``yarn run build:dev`` for each change made to one of the assets files (js, css, pictures, fonts,...).
10
11Live reload
12-----------
13
14Webpack brings support for live reload, which means you don't need to regenerate the assets file for each change neither reload the page manually. Changes are applied automatically in the web page. Just set the ``use_webpack_dev_server`` setting to ``true`` in ``app/config/config.yml`` and run ``yarn run watch`` and you're good to go.
15
16.. note::
17
18 Don't forget to put back ``use_webpack_dev_server`` to ``false`` when not using the live reload feature.
19
20Production builds
21-----------------
22
23When you want to commit your changes, build them in production environment by using ``yarn run build:prod``. This will build all the assets needed for wallabag. To test that it properly works, you'll need to have a server in production mode, for instance with ``bin/console server:run -e=prod``.
24
25.. note::
26
27 Don't forget to generate production builds before committing !
28
29
30Code style
31----------
32
33Code style is checked by two tools : stylelint for (S)CSS and eslint for JS. ESlint config is based on the Airbnb base preset.
diff --git a/docs/en/developer/paywall.rst b/docs/en/developer/paywall.rst
deleted file mode 100644
index 153afa6f..00000000
--- a/docs/en/developer/paywall.rst
+++ /dev/null
@@ -1,65 +0,0 @@
1Articles behind a paywall
2=========================
3
4wallabag can fetch articles from websites which use a paywall system.
5
6Enable paywall authentication
7-----------------------------
8
9In internal settings, as a wallabag administrator, in the **Article** section, enable authentication for websites with paywall (with the value 1).
10
11Configure credentials in wallabag
12---------------------------------
13
14Edit your ``app/config/parameters.yml`` file to edit credentials for each website with paywall. For example, under Ubuntu:
15
16``sudo -u www-data nano /var/www/html/wallabag/app/config/parameters.yml``
17
18Here is an example for some french websites (be careful: don't use the "tab" key, only spaces):
19
20.. code:: yaml
21
22 sites_credentials:
23 mediapart.fr: {username: "myMediapartLogin", password: "mypassword"}
24 arretsurimages.net: {username: "myASILogin", password: "mypassword"}
25
26.. note::
27
28 These credentials will be shared between each user of your wallabag instance.
29
30Parsing configuration files
31---------------------------
32
33.. note::
34
35 Read `this part of the documentation <http://doc.wallabag.org/en/master/user/errors_during_fetching.html>`_ to understand the configuration files, which are located under ``vendor/j0k3r/graby-site-config/``. For most of the websites, this file is already configured: the following instructions are only for the websites that are not configured yet.
36
37Each parsing configuration file needs to be improved by adding ``requires_login``, ``login_uri``,
38``login_username_field``, ``login_password_field`` and ``not_logged_in_xpath``.
39
40Be careful, the login form must be in the page content when wallabag loads it. It's impossible for wallabag to be authenticated
41on a website where the login form is loaded after the page (by ajax for example).
42
43``login_uri`` is the action URL of the form (``action`` attribute in the form).
44``login_username_field`` is the ``name`` attribute of the login field.
45``login_password_field`` is the ``name`` attribute of the password field.
46
47For example:
48
49.. code::
50
51 title://div[@id="titrage-contenu"]/h1[@class="title"]
52 body: //div[@class="contenu-html"]/div[@class="page-pane"]
53
54 requires_login: yes
55
56 login_uri: http://www.arretsurimages.net/forum/login.php
57 login_username_field: username
58 login_password_field: password
59
60 not_logged_in_xpath: //body[@class="not-logged-in"]
61
62Last step: clear the cache
63--------------------------
64
65It's necessary to clear the wallabag cache with the following command (here under Ubuntu): ``sudo -u www-data php /var/www/html/wallabag/bin/console cache:clear -e=prod``
diff --git a/docs/en/developer/testsuite.rst b/docs/en/developer/testsuite.rst
deleted file mode 100644
index b2b16cdc..00000000
--- a/docs/en/developer/testsuite.rst
+++ /dev/null
@@ -1,10 +0,0 @@
1Testsuite
2=========
3
4To ensure wallabag development quality, we wrote tests with `PHPUnit <https://phpunit.de>`_.
5
6If you contribute to the project (by translating the application, by fixing bugs or by adding a new feature), please write your own tests.
7
8To launch wallabag testsuite, you need to install `ant <http://ant.apache.org>`_.
9
10Then, execute this command ``make test``.
diff --git a/docs/en/developer/translate.rst b/docs/en/developer/translate.rst
deleted file mode 100644
index 1e5d5009..00000000
--- a/docs/en/developer/translate.rst
+++ /dev/null
@@ -1,60 +0,0 @@
1Translate wallabag
2==================
3
4wallabag web application
5------------------------
6
7Translation files
8~~~~~~~~~~~~~~~~~
9
10.. note::
11
12 As wallabag is mainly developed by a French team, please consider that french
13 translation is the most updated one and please copy it to create your own translation.
14
15You can find translation files here: https://github.com/wallabag/wallabag/tree/master/src/Wallabag/CoreBundle/Resources/translations.
16
17You have to create ``messages.CODE.yml`` and ``validators.CODE.yml``, where CODE
18is the ISO 639-1 code of your language (`see wikipedia <https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>`__).
19
20Other files to translate:
21
22- https://github.com/wallabag/wallabag/tree/master/app/Resources/CraueConfigBundle/translations.
23- https://github.com/wallabag/wallabag/tree/master/src/Wallabag/UserBundle/Resources/translations.
24
25You have to create ``THE_TRANSLATION_FILE.CODE.yml`` files.
26
27Configuration file
28~~~~~~~~~~~~~~~~~~
29
30You have to edit `app/config/config.yml
31<https://github.com/wallabag/wallabag/blob/master/app/config/config.yml>`__ to display
32your language on Configuration page of wallabag (to allow users to switch to this new translation).
33
34Under the ``wallabag_core.languages`` section, you have to add a new line with
35your translation. For example:
36
37::
38
39 wallabag_core:
40 ...
41 languages:
42 en: 'English'
43 fr: 'Français'
44
45
46For the first column (``en``, ``fr``, etc.), you have to add the ISO 639-1 code
47of your language (see above).
48
49For the second column, it's the name of your language. Just that.
50
51wallabag documentation
52----------------------
53
54.. note::
55
56 Contrary to the web application, the main language for documentation is english.
57
58Documentation files are stored here: https://github.com/wallabag/wallabag/tree/master/docs
59
60You need to respect the ``en`` folder structure when you create your own translation.
diff --git a/docs/en/index.rst b/docs/en/index.rst
deleted file mode 100644
index 89f61d6d..00000000
--- a/docs/en/index.rst
+++ /dev/null
@@ -1,53 +0,0 @@
1wallabag documentation
2======================
3
4.. image:: ../img/wallabag.png
5 :alt: wallabag logo
6 :align: center
7
8**wallabag** is a read-it-later application: it saves a web page by
9keeping content only. Elements like navigation or ads are deleted.
10
11The main documentation for this application is organized into a couple sections:
12
13* :ref:`user-docs`
14* :ref:`dev-docs`
15
16The documentation is available in other languages:
17
18* `Documentation en français <http://doc.wallabag.org/fr/master/>`_
19* `Dokumentation in Deutsch <http://doc.wallabag.org/de/master/>`_
20
21.. _user-docs:
22
23.. toctree::
24 :maxdepth: 2
25 :caption: User documentation
26
27 user/installation
28 user/upgrade
29 user/configuration
30 user/import
31 user/create_account
32 user/articles
33 user/errors_during_fetching
34 user/filters
35 user/tags
36 user/configuring_mobile
37 user/android
38 user/parameters
39 user/backup
40 user/faq
41
42.. _dev-docs:
43
44.. toctree::
45 :maxdepth: 2
46 :caption: Developer documentation
47
48 developer/api
49 developer/docker
50 developer/paywall
51 developer/documentation
52 developer/translate
53 developer/asynchronous
diff --git a/docs/en/requirements.txt b/docs/en/requirements.txt
deleted file mode 100644
index 06fc8973..00000000
--- a/docs/en/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1Sphinx>=1.3.0,<1.4.0
2guzzle_sphinx_theme>=0.7.0,<0.8.0
diff --git a/docs/en/user/android.rst b/docs/en/user/android.rst
deleted file mode 100644
index e286bb3b..00000000
--- a/docs/en/user/android.rst
+++ /dev/null
@@ -1,95 +0,0 @@
1Android application
2===================
3
4Purpose of this document
5------------------------
6
7This document describes how you can setup your Android application to work with your wallabag instance. There is no difference in this procedure for wallabag v1 or v2.
8
9Steps to configure your app
10---------------------------
11
12When you first start the app, you see the welcome screen, where you are adviced to configure the app for your wallabag instance at first.
13
14.. image:: ../../img/user/android_welcome_screen.en.png
15 :alt: Welcome screen
16 :align: center
17
18Just confirm that message and you get redirected to the settings screen.
19
20.. image:: ../../img/user/android_configuration_screen.en.png
21 :alt: Settings screen
22 :align: center
23
24Fill 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.
25
26.. image:: ../../img/user/android_configuration_filled_in.en.png
27 :alt: Filled in settings
28 :align: center
29
30After you have filled in your data, push the button Connection test and wait for the test to finish.
31
32.. image:: ../../img/user/android_configuration_connection_test.en.png
33 :alt: Connection test with your wallabag data
34 :align: center
35
36The connection test should finish with success. If not, you need to fix this first until you proceed.
37
38.. image:: ../../img/user/android_configuration_connection_test_success.en.png
39 :alt: Connection test successful
40 :align: center
41
42After 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.
43
44.. image:: ../../img/user/android_configuration_get_feed_credentials.en.png
45 :alt: Getting the feed credentials
46 :align: center
47
48When 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.
49
50.. image:: ../../img/user/android_configuration_feed_credentials_automatically_filled_in.en.png
51 :alt: Getting feed credentials successful
52 :align: center
53
54Now 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.
55
56.. image:: ../../img/user/android_configuration_scroll_bottom.en.png
57 :alt: Bottom of the settings screen
58 :align: center
59
60After hitting the save button, you get the following screen. The app proposes to initiate a synchronization process to update your feeds of articles. It is recommended to acknowledge this action and press Yes.
61
62.. image:: ../../img/user/android_configuration_saved_feed_update.en.png
63 :alt: Settings saved the first time
64 :align: center
65
66Finally after the synchronization finished successfully, you are presented to the list of unread articles.
67
68.. image:: ../../img/user/android_unread_feed_synced.en.png
69 :alt: Filled article list cause feeds successfully synchronized
70 :align: center
71
72Known limitations
73-----------------
74
75Two factor authentication (2FA)
76~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
77
78Currently the Android application does not support two-factor authentication. You should disable that to get the application working.
79
80Limited amount of articles with wallabag v2
81~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
82
83In your wallabag web instance you can configure how many items are part of the RSS feed. This option did not exist in wallabag v1, where all articles were part of the feed. So if you set the amount of articles being displayed greater than the number of items being content of your RSS feed, you will only see the number of items in your RSS feed.
84
85SSL/TLS encryption
86~~~~~~~~~~~~~~~~~~
87
88If you can reach your wallabag web instance via HTTPS, you should use that. Especially if your HTTP URL redirects you to the HTTPS one. Currently, the app cannot handle that redirect properly.
89
90References
91----------
92
93- `Source code of the Android application <https://github.com/wallabag/android-app>`_
94- `Android Application on F-Droid <https://f-droid.org/repository/browse/?fdfilter=wallabag&fdid=fr.gaulupeau.apps.InThePoche>`_
95- `Android Application on Google Play <https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche>`_
diff --git a/docs/en/user/articles.rst b/docs/en/user/articles.rst
deleted file mode 100644
index 862bba3e..00000000
--- a/docs/en/user/articles.rst
+++ /dev/null
@@ -1,117 +0,0 @@
1Articles
2========
3
4Save your first article
5-----------------------
6
7The main purpose of wallabag is to save web articles. You have many ways to do it. If you think that the article is wrong displayed, `you can read this documentation <http://doc.wallabag.org/en/master/user/errors_during_fetching.html>`_.
8
9By using a bookmarklet
10^^^^^^^^^^^^^^^^^^^^^^
11
12On the ``Howto`` page, you have a ``Bookmarklet`` tab. Drag and drop the ``bag it!``
13link to your bookmarks bar of your browser.
14
15Now, each time you're reading an article on the web and you want to save it,
16click on the ``bag it!`` link in your bookmarks bar. The article is saved.
17
18By using the classic form
19^^^^^^^^^^^^^^^^^^^^^^^^^
20
21In the top bar of your screen, you have 3 icons. With the first one, a plus sign,
22you can easily save a new article.
23
24.. image:: ../../img/user/topbar.png
25 :alt: Top bar
26 :align: center
27
28Click on it to display a new field, paste the article URL inside and press your
29``Return`` key. The article is saved.
30
31By using a browser add-on
32^^^^^^^^^^^^^^^^^^^^^^^^^
33
34Firefox
35"""""""
36
37You can download the `Firefox addon here <https://addons.mozilla.org/firefox/addon/wallabagger/>`_.
38
39Chrome
40""""""
41
42You can download the `Chrome addon here <https://chrome.google.com/webstore/detail/wallabagger/gbmgphmejlcoihgedabhgjdkcahacjlj?hl=fr>`_.
43
44By using your smartphone application
45^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
46
47Android
48"""""""
49
50You can download the `Android application here <https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche>`_ or on `F-Droid <https://f-droid.org/repository/browse/?fdid=fr.gaulupeau.apps.InThePoche>`_.
51
52Windows Phone
53"""""""""""""
54
55You can downlaod the `Windows Phone application here <https://www.microsoft.com/store/apps/9nblggh5x3p6>`_.
56
57Download your articles
58----------------------
59
60You can download each article in several formats: ePUB, MOBI, PDF, XML, JSON, CSV.
61
62On the article view, click on this icon, in the sidebar:
63
64.. image:: ../../img/user/download_article.png
65 :alt: download article
66 :align: center
67
68You can also download a full category (unread, starred, archive) in these formats.
69For example, on **Unread** view, click on this icon in the top bar:
70
71.. image:: ../../img/user/download_articles.png
72 :alt: download articles
73 :align: center
74
75Share your articles
76-------------------
77
78When you're reading an article, you can share it. Just click on the share button:
79
80.. image:: ../../img/user/share.png
81 :alt: share article
82 :align: center
83
84Now, you can share the article:
85
86- with a public URL (you'll have a light view of the article)
87- with a tweet
88- into your Shaarli
89- into your Scuttle
90- with a post in Diaspora*
91- to Carrot
92- with an email
93
94Annotate your articles
95----------------------
96
97In each article you read, you can write annotations. It's easier to understand with some pictures.
98
99Select the part of the article that you want to annotate and click on the pencil:
100
101.. image:: ../../img/user/annotations_1.png
102 :alt: Select your text
103 :align: center
104
105Then, write your annotation:
106
107.. image:: ../../img/user/annotations_2.png
108 :alt: Write your annotation
109 :align: center
110
111The text is now highlighted and you can read your annotation if you move the mouse cursor over it.
112
113.. image:: ../../img/user/annotations_3.png
114 :alt: Read your annotation
115 :align: center
116
117You can create as many annotations as you wish.
diff --git a/docs/en/user/backup.rst b/docs/en/user/backup.rst
deleted file mode 100644
index f8b480a3..00000000
--- a/docs/en/user/backup.rst
+++ /dev/null
@@ -1,26 +0,0 @@
1Backup wallabag
2===============
3
4Because sometimes you may do a mistake with your wallabag and lose data or in case you need to move your wallabag to another server you want to backup your data.
5This articles describes what you need to backup.
6
7Basic settings
8--------------
9wallabag stores some basic parameters (like SMTP server or database backend) in the file `app/config/parameters.yml`.
10
11Database
12--------
13As wallabag supports different kinds of database, the way to perform the backup depends on the database you use, so you need to refer to the vendor documentation.
14
15Here's some examples:
16
17- MySQL: http://dev.mysql.com/doc/refman/5.7/en/backup-methods.html
18- PostgreSQL: https://www.postgresql.org/docs/current/static/backup.html
19
20SQLite
21~~~~~~
22To backup the SQLite database, you just need to copy the directory `data/db` from the wallabag application directory.
23
24Images
25------
26The images retrieved by wallabag are stored under `web/assets/images` (the images storage will be implemented in wallabag 2.2).
diff --git a/docs/en/user/configuration.rst b/docs/en/user/configuration.rst
deleted file mode 100644
index 0f3ac38f..00000000
--- a/docs/en/user/configuration.rst
+++ /dev/null
@@ -1,132 +0,0 @@
1Configuration
2=============
3
4Now you're logged in, it's time to configure your account as you want.
5
6Click on ``Config`` menu. You have five tabs: ``Settings``, ``RSS``,
7``User information``, ``Password`` and ``Tagging rules``.
8
9Settings
10--------
11
12Theme
13~~~~~
14
15wallabag is customizable. You can choose your prefered theme here. The default theme is
16``Material``, it's the theme used in the documentation screenshots.
17
18Items per page
19~~~~~~~~~~~~~~
20
21You can change the number of articles displayed on each page.
22
23Reading speed
24~~~~~~~~~~~~~
25
26wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are
27a fast or a slow reader. wallabag will recalculate the reading time for each article.
28
29Where do you want to be redirected after mark an article as read?
30~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31
32Each time you'll do some actions (after marking an article as read/favorite,
33after deleting an article, after removing a tag from an entry), you can be redirected:
34
35- To the homepage
36- To the current page
37
38Language
39~~~~~~~~
40
41You can change the language of wallabag interface.
42
43RSS
44---
45
46wallabag provides RSS feeds for each article status: unread, starred and archive.
47
48Firstly, you need to create a personal token: click on ``Create your token``.
49It's possible to change your token by clicking on ``Reset your token``.
50
51Now you have three links, one for each status: add them into your favourite RSS reader.
52
53You can also define how many articles you want in each RSS feed (default value: 50).
54
55There is also a pagination available for these feeds. You can add ``?page=2`` to jump to the second page.
56The pagination follow `the RFC <https://tools.ietf.org/html/rfc5005#page-4>`_ about that, which means you'll find the ``next``, ``previous`` & ``last`` page link inside the `<channel>` tag of each RSS feed.
57
58User information
59----------------
60
61You can change your name, your email address and enable ``Two factor authentication``.
62
63If the wallabag instance has more than one enabled user, you can delete your account here. **Take care, we delete all your data**.
64
65Two factor authentication (2FA)
66~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
67
68 Two-factor authentication (also known as 2FA) is a technology patented in 1984
69 that provides identification of users by means of the combination of two different components.
70
71 https://en.wikipedia.org/wiki/Two-factor_authentication
72
73**Warning**: enabling 2FA from the configuration interface is only possible if it has been authorized before in `app/config/parameters.yml` by setting the *twofactor_auth* property to `true` (do not forget to run `php bin/console cache:clear -e=prod` after modification).
74
75If you enable 2FA, each time you want to login to wallabag, you'll receive
76a code by email. You have to put this code on the following form.
77
78.. image:: ../../img/user/2FA_form.png
79 :alt: Two factor authentication
80 :align: center
81
82If you don't want to receive a code each time you want to login, you can check
83the ``I'm on a trusted computer`` checkbox: wallabag will remember you for 15 days.
84
85Password
86--------
87
88You can change your password here (8 characters minimum).
89
90Tagging rules
91-------------
92
93If you want to automatically assign a tag to new articles, this part
94of the configuration is for you.
95
96What does « tagging rules » mean?
97~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
98
99They are rules used by wallabag to automatically tag new entries.
100Each time a new entry is added, all the tagging rules will be used to add
101the tags you configured, thus saving you the trouble to manually classify your entries.
102
103How do I use them?
104~~~~~~~~~~~~~~~~~~
105
106Let assume you want to tag new entries as *« short reading »* when
107the reading time is inferior to 3 minutes.
108In that case, you should put « readingTime <= 3 » in the **Rule** field
109and *« short reading »* in the **Tags** field.
110Several tags can added simultaneously by separating them by a comma: *« short reading, must read »*.
111Complex rules can be written by using predefined operators:
112if *« readingTime >= 5 AND domainName = "github.com" »* then tag as *« long reading, github »*.
113
114Which variables and operators can I use to write rules?
115~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116
117The following variables and operators can be used to create tagging rules (be careful, for some values, you need to add quotes, for example ``language = "en"``):
118
119=========== ============================================== ========== ==========
120Variable Meaning Operator Meaning
121----------- ---------------------------------------------- ---------- ----------
122title Title of the entry <= Less than…
123url URL of the entry < Strictly less than…
124isArchived Whether the entry is archived or not => Greater than…
125isStarred Whether the entry is starred or not > Strictly greater than…
126content The entry's content = Equal to…
127language The entry's language != Not equal to…
128mimetype The entry's mime-type OR One rule or another
129readingTime The estimated entry's reading time, in minutes AND One rule and another
130domainName The domain name of the entry matches Tests that a subject is matches a search (case-insensitive). Example: title matches "football"
131 notmatches Tests that a subject is not matches a search (case-insensitive). Example: title notmatches "football"
132=========== ============================================== ========== ==========
diff --git a/docs/en/user/configuring_mobile.rst b/docs/en/user/configuring_mobile.rst
deleted file mode 100644
index 7229aed6..00000000
--- a/docs/en/user/configuring_mobile.rst
+++ /dev/null
@@ -1,13 +0,0 @@
1Configuring mobile apps to work with wallabag
2=============================================
3
4Steps to configure the app
5--------------------------
6
7- First *create a new client* in the ``API clients management`` section. The name of your app doesn't matter as much as the ``Client ID`` and the ``Client secret``. Write these two values down.
8- When you download a mobile app, it's going to ask for the server address of the hosted wallabag instance. For example, with wallabag.it that is: ``https://app.wallabag.it``.
9- It's also going to ask for the aforementioned ``Client ID`` and ``secret``. Please insert those in the text fields, when asked.
10- Lastly you need to provide your ``username`` and ``password``. These are the same credentials you use to login in to wallabag.
11
12Please also have a look at `Android <android.html>`_ page. Especially the section on *known limitations*.
13
diff --git a/docs/en/user/create_account.rst b/docs/en/user/create_account.rst
deleted file mode 100644
index 8c43867d..00000000
--- a/docs/en/user/create_account.rst
+++ /dev/null
@@ -1,42 +0,0 @@
1Create an account and authentication
2====================================
3
4Register
5--------
6
7On the login page, click on ``Register`` button.
8
9.. image:: ../../img/user/registration_form.png
10 :alt: Registration form
11 :align: center
12
13You have to fill the form. Please sure to type a valid email address,
14we'll send you an activation email.
15
16.. image:: ../../img/user/sent_email.png
17 :alt: Email was sent to activate account
18 :align: center
19
20Check your inbox, you now have a new mail with a link like this
21``http://wallabag/register/confirm/Ba19wokGovN-DdBQNfg4YgRkUQWRP4-k2g0Bk-hBTX4``.
22Click on it to activate your account.
23
24Your account is now activated.
25
26.. image:: ../../img/user/activated_account.png
27 :alt: Welcome on board!
28 :align: center
29
30Login
31-----
32
33Your account is now enabled, congratulations!
34
35To login to wallabag, fill the form on login page.
36
37If you are on your personal computer and you want to stay connected,
38you can check the ``Keep me logged in`` checkbox: wallabag will remember you for one year.
39
40.. image:: ../../img/user/login_form.png
41 :alt: Login form
42 :align: center
diff --git a/docs/en/user/errors_during_fetching.rst b/docs/en/user/errors_during_fetching.rst
deleted file mode 100644
index c5e18d3b..00000000
--- a/docs/en/user/errors_during_fetching.rst
+++ /dev/null
@@ -1,37 +0,0 @@
1Errors during fetching articles
2===============================
3
4Why does the fetch of an article fail?
5--------------------------------------
6
7There may be several reasons:
8
9- network problem
10- wallabag can't fetch content due to the website structure
11
12How can I help to fix that?
13---------------------------
14
15You can try to fix this problem by yourself (so we can be focused on improving wallabag internally instead of writing siteconfig :) ).
16
17You can try to see if it works here: `http://f43.me/feed/test <http://f43.me/feed/test>`_ (it uses almost the same system as wallabag to retrieve content).
18
19If it works here and not on wallabag, it means there is something internally in wallabag that breaks the parser (hard to fix: please open an issue about it).
20
21If it doesn't works, try to extract a site config using: `http://siteconfig.fivefilters.org/ <http://siteconfig.fivefilters.org/>`_ (select which part of the content is actually the content). You can `read this documentation before <http://help.fivefilters.org/customer/en/portal/articles/223153-site-patterns>`_.
22
23You can test it on **f43.me** website: click on **Want to try a custom siteconfig?** and put the generated file from siteconfig.fivefilters.org.
24
25Repeat until you have something ok.
26
27Then you can submit a pull request to `https://github.com/fivefilters/ftr-site-config <https://github.com/fivefilters/ftr-site-config>`_ which is the global repo for siteconfig files.
28
29How can I try to re-fetch this article?
30---------------------------------------
31
32If wallabag failed when fetching an article, you can click on the reload button
33(the third on the below picture).
34
35.. image:: ../../img/user/refetch.png
36 :alt: Refetch content
37 :align: center
diff --git a/docs/en/user/faq.rst b/docs/en/user/faq.rst
deleted file mode 100644
index 0f995ce5..00000000
--- a/docs/en/user/faq.rst
+++ /dev/null
@@ -1,55 +0,0 @@
1Frequently Asked Questions
2==========================
3
4During the installation, I got the error ``Error Output: sh: 1: @post-cmd: not found``
5--------------------------------------------------------------------------------------
6
7It seems you have a problem with your ``composer`` installation. Try to uninstall and reinstall it.
8
9`Read the documentation about composer to know how to install it
10<https://getcomposer.org/doc/00-intro.md>`__.
11
12I can't validate the registration form
13--------------------------------------
14
15Ensure that all fields are properly filled:
16
17* valid email address
18* same passwords in two fields
19
20I'm not receiving my activation email
21-------------------------------------
22
23Are you sure your email address was correct? Did you check your spam folder?
24
25If you still don't see the activation email, please ensure that you have
26installed and properly configured a mail transfer agent. Be sure to include a
27firewall rule for SMTP. E.g., if using firewalld:
28
29::
30
31 firewall-cmd --permanent --add-service=smtp
32 firewall-cmd --reload
33
34Lastly, if you have SELinux enabled, set the following rule:
35
36``setsebool -P httpd_can_sendmail 1``
37
38When I click on the activation link, I've got this message: ``The user with confirmation token "DtrOPfbQeVkWf6N" does not exist``.
39----------------------------------------------------------------------------------------------------------------------------------
40
41You already enabled your account or the URL of the activation email is wrong.
42
43I forgot my password
44--------------------
45
46You can reset your password by clicking on ``Forgot your password?`` link,
47on the login page. Then, fill the form with your email address or your username,
48you'll receive an email to reset your password.
49
50I've got the ``failed to load external entity`` error when I try to install wallabag
51------------------------------------------------------------------------------------
52
53As described `here <https://github.com/wallabag/wallabag/issues/2529>`_, please edit your ``web/app.php`` file and add this line: ``libxml_disable_entity_loader(false);`` on line 5.
54
55This is a Doctrine / PHP bug, nothing we can do about it.
diff --git a/docs/en/user/filters.rst b/docs/en/user/filters.rst
deleted file mode 100644
index aae8a749..00000000
--- a/docs/en/user/filters.rst
+++ /dev/null
@@ -1,54 +0,0 @@
1Retrieve your articles thanks to filters
2========================================
3
4To retrieve articles easily, you can use filters.
5Click on the third icon in the top bar.
6
7.. image:: ../../img/user/topbar.png
8 :alt: Top bar
9 :align: center
10
11All these filters can be combined.
12
13.. image:: ../../img/user/filters.png
14 :alt: Combine all filters
15 :align: center
16
17Status
18------
19
20Use these checkboxes to find archived or starred articles.
21
22Preview picture
23---------------
24
25Check this filter if you want to retrieve articles with a preview picture.
26
27Language
28--------
29
30wallabag (via graby) can detect article language. It's easy to you to retrieve articles
31written in a specific language.
32
33HTTP status
34-----------
35
36You can retrieve the articles by filtering by their HTTP status code: 200, 404, 500, etc.
37
38Reading time
39------------
40
41wallabag estimates how many time you need to read an article. With this filter,
42you can for example find the articles with a reading time between 2 and 5 minutes.
43
44Domain name
45-----------
46
47Thanks to this filter, you can retrieve the articles from the same domain name.
48For example, in this field, type ``bbc.co.uk`` to retrieve the articles of this website.
49
50Creation date
51-------------
52
53When you save an article, wallabag stored the current date. So handful to retrieve articles written
54between 1st and 31th January for example.
diff --git a/docs/en/user/import.rst b/docs/en/user/import.rst
deleted file mode 100644
index f6aaa373..00000000
--- a/docs/en/user/import.rst
+++ /dev/null
@@ -1,159 +0,0 @@
1Migrate from ...
2================
3
4In wallabag 2.x, you can import data from:
5
6- `Pocket <#id1>`_
7- `Readability <#id2>`_
8- `Instapaper <#id4>`_
9- `wallabag 1.x <#id6>`_
10- `wallabag 2.x <#id7>`_
11
12We also developed `a script to execute migrations via command-line interface <#import-via-command-line-interface-cli>`_.
13
14Because imports can take ages, we developed an asynchronous tasks system. `You can read the documentation here <http://doc.wallabag.org/fr/master/developer/asynchronous.html>`_ (for experts).
15
16Pocket
17------
18
19Create a new application on Pocket
20~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21
22To import your data from Pocket, we use the Pocket API. You need to create
23a new application on their developer website to continue.
24
25* Create a new application `on the developer website <https://getpocket.com/developer/apps/new>`_
26* Fill in the required fields: application name, application description,
27 permissions (only **retrieve**), platform (**web**), accept the terms of service
28 and submit your new application
29
30Pocket will give you a **Consumer Key** (for example, `49961-985e4b92fe21fe4c78d682c1`).
31You need to configure the ``pocket_consumer_key`` in the ``Config`` menu.
32
33Now, all is fine to migrate from Pocket.
34
35Import your data into wallabag 2.x
36~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37
38Click on ``Import`` link in the menu, on ``Import contents`` in Pocket section
39and then on ``Connect to Pocket and import data``.
40
41You need to authorize wallabag to interact with your Pocket account.
42Your data will be imported. Data import can be a demanding process for your server.
43
44Readability
45-----------
46
47Export your Readability data
48~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49
50On the tools (`https://www.readability.com/tools/ <https://www.readability.com/tools/>`_) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).
51
52Import your data into wallabag 2.x
53~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54
55Click on ``Import`` link in the menu, on ``Import contents`` in Readability section
56and then select your json file and upload it.
57
58Your data will be imported. Data import can be a demanding process for your server.
59
60From Pinboard
61-------------
62
63Export your Pinboard data
64~~~~~~~~~~~~~~~~~~~~~~~~~
65
66On the backup (`https://pinboard.in/settings/backup <https://pinboard.in/settings/backup>`_) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like ``pinboard_export``).
67
68Import your data into wallabag 2.x
69~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70
71Click on ``Import`` link in the menu, on ``Import contents`` in Pinboard section
72and then select your json file and upload it.
73
74Your data will be imported. Data import can be a demanding process for your server.
75
76From Instapaper
77---------------
78
79Export your Instapaper data
80~~~~~~~~~~~~~~~~~~~~~~~~~~~
81
82On the settings (`https://www.instapaper.com/user <https://www.instapaper.com/user>`_) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like ``instapaper-export.csv``).
83
84Import your data into wallabag 2.x
85~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86
87Click on ``Import`` link in the menu, on ``Import contents`` in Instapaper section
88and then select your CSV file and upload it.
89
90Your data will be imported. Data import can be a demanding process for your server.
91
92wallabag 1.x
93------------
94
95If you were using wallabag v1.x, you need to export your data before migrating to wallabag v2.x, because the application and its database changed a lot. In your old wallabag installation, you can export your data, which can be done on the Config page of your old wallabag installation.
96
97.. image:: ../../img/user/export_v1.png
98 :alt: Exporting from wallabag v1
99 :align: center
100
101.. note::
102 If you have multiple accounts on the same instance of wallabag, each user must export from v1 and import into v2 its data.
103
104.. note::
105 If you encounter issues during the export or the import, don't hesitate to `ask for support <https://gitter.im/wallabag/wallabag>`__.
106
107When you have retrieved the json file containing your entries, you can install wallabag v2 if needed by following `the standard procedure <http://doc.wallabag.org/en/master/user/installation.html>`__.
108
109After creating an user account on your new wallabag v2 instance, you must head over to the `Import` section and select `Import from wallabag v1`. Select your json file and upload it.
110
111.. image:: ../../img/user/import_wallabagv1.png
112 :alt: Import from wallabag v1
113 :align: center
114
115wallabag 2.x
116------------
117
118From the previous wallabag instance on which you were before, go to `All articles`, then export these articles as json.
119
120.. image:: ../../img/user/export_v2.png
121 :alt: Export depuis wallabag v2
122 :align: center
123
124From your new wallabag instance, create your user account and click on the link in the menu to proceed to import. Choose import from wallabag v2 and select your json file to upload it.
125
126.. note::
127 If you encounter issues during the export or the import, don't hesitate to `ask for support <https://gitter.im/wallabag/wallabag>`__.
128
129Import via command-line interface (CLI)
130---------------------------------------
131
132If you have a CLI access on your web server, you can execute this command to import your wallabag v1 export:
133
134::
135
136 bin/console wallabag:import username ~/Downloads/wallabag-export-1-2016-04-05.json --env=prod
137
138Please replace values:
139
140* ``username`` is the user's username
141* ``~/Downloads/wallabag-export-1-2016-04-05.json`` is the path of your wallabag v1 export
142
143.. note::
144 If you want to mark all these entries as read, you can add the ``--markAsRead`` option.
145
146.. note::
147 To import a wallabag v2 file, you need to add the option ``--importer=v2``.
148
149.. note::
150 If you want to pass the user id of the user instead of it's username, add the option ``--useUserId=true``.
151
152You'll have this in return:
153
154::
155
156 Start : 05-04-2016 11:36:07 ---
157 403 imported
158 0 already saved
159 End : 05-04-2016 11:36:09 ---
diff --git a/docs/en/user/installation.rst b/docs/en/user/installation.rst
deleted file mode 100644
index f1146b49..00000000
--- a/docs/en/user/installation.rst
+++ /dev/null
@@ -1,365 +0,0 @@
1Install wallabag
2================
3
4Requirements
5------------
6
7wallabag is compatible with **PHP >= 5.6**, including PHP 7.
8
9.. note::
10
11 To install wallabag easily, we provide a ``Makefile``, so you need to have the ``make`` tool.
12
13wallabag uses a large number of PHP 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 and be sure to use the 1.2 version (if you already have Composer, run a ``composer selfupdate``).
14
15Install Composer:
16
17::
18
19 curl -s https://getcomposer.org/installer | php
20
21You can find specific instructions `here <https://getcomposer.org/doc/00-intro.md>`__.
22
23You'll also need the following extensions for wallabag to work. Some of these may already activated in your version of PHP, so you may not have to install all corresponding packages.
24
25- php-session
26- php-ctype
27- php-dom
28- php-hash
29- php-simplexml
30- php-json
31- php-gd
32- php-mbstring
33- php-xml
34- php-tidy
35- php-iconv
36- php-curl
37- php-gettext
38- php-tokenizer
39- php-bcmath
40
41wallabag uses PDO to connect to the database, so you'll need one of the following:
42
43- pdo_mysql
44- pdo_sqlite
45- pdo_pgsql
46
47and its corresponding database server.
48
49Installation
50------------
51
52On a dedicated web server (recommended way)
53~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54
55To install wallabag itself, you must run the following commands:
56
57::
58
59 git clone https://github.com/wallabag/wallabag.git
60 cd wallabag && make install
61
62To start PHP's build-in server and test if everything did install correctly, you can do:
63
64::
65
66 make run
67
68And access wallabag at http://yourserverip:8000
69
70.. tip::
71
72 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>`__.
73
74On a shared hosting
75~~~~~~~~~~~~~~~~~~~
76
77We provide a package with all dependencies inside.
78The default configuration uses SQLite for the database. If you want to change these settings, please edit ``app/config/parameters.yml``.
79
80We already created a user: login and password are ``wallabag``.
81
82.. 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).
83
84Execute this command to download and extract the latest package:
85
86.. code-block:: bash
87
88 wget https://wllbg.org/latest-v2-package && tar xvf latest-v2-package
89
90You will find the `md5 hash of the latest package on our website <https://static.wallabag.org/releases/>`_.
91
92Now, read the following documentation to create your virtual host, then access your wallabag.
93If 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``.
94
95Installation with Docker
96~~~~~~~~~~~~~~~~~~~~~~~~
97
98We provide you a Docker image to install wallabag easily. Have a look at our repository on `Docker Hub <https://hub.docker.com/r/wallabag/wallabag/>`__ for more information.
99
100Command to launch container
101^^^^^^^^^^^^^^^^^^^^^^^^^^^
102
103.. code-block:: bash
104
105 docker pull wallabag/wallabag
106
107Installation on Cloudron
108~~~~~~~~~~~~~~~~~~~~~~~~
109
110Cloudron provides an easy way to install webapps on your server with a focus on sysadmin automation and keeping apps updated.
111wallabag is packaged as a Cloudron app and available to install directly from the store.
112
113`Install wallabag on your Cloudron <https://cloudron.io/store/org.wallabag.cloudronapp.html>`__
114
115Virtual hosts
116-------------
117
118Configuration on Apache
119~~~~~~~~~~~~~~~~~~~~~~~
120
121Do not forget to active the *rewrite* mod of Apache
122
123.. code-block:: bash
124
125 a2enmod rewrite && systemctl reload apache2
126
127Assuming you install wallabag in the ``/var/www/wallabag`` folder and that you want to use PHP as an Apache module, here's a vhost for wallabag:
128
129::
130
131 <VirtualHost *:80>
132 ServerName domain.tld
133 ServerAlias www.domain.tld
134
135 DocumentRoot /var/www/wallabag/web
136 <Directory /var/www/wallabag/web>
137 AllowOverride None
138 Order Allow,Deny
139 Allow from All
140
141 <IfModule mod_rewrite.c>
142 Options -MultiViews
143 RewriteEngine On
144 RewriteCond %{REQUEST_FILENAME} !-f
145 RewriteRule ^(.*)$ app.php [QSA,L]
146 </IfModule>
147 </Directory>
148
149 # uncomment the following lines if you install assets as symlinks
150 # or run into problems when compiling LESS/Sass/CoffeScript assets
151 # <Directory /var/www/wallabag>
152 # Options FollowSymlinks
153 # </Directory>
154
155 # optionally disable the RewriteEngine for the asset directories
156 # which will allow apache to simply reply with a 404 when files are
157 # not found instead of passing the request into the full symfony stack
158 <Directory /var/www/wallabag/web/bundles>
159 <IfModule mod_rewrite.c>
160 RewriteEngine Off
161 </IfModule>
162 </Directory>
163 ErrorLog /var/log/apache2/wallabag_error.log
164 CustomLog /var/log/apache2/wallabag_access.log combined
165 </VirtualHost>
166
167
168.. tip:: Note for Apache 2.4, in the section `<Directory /var/www/wallabag/web>` you have to replace the directives :
169
170::
171
172 AllowOverride None
173 Order Allow,Deny
174 Allow from All
175
176
177by
178
179::
180
181 Require All granted
182
183
184After reloading or restarting Apache, you should now be able to access wallabag at http://domain.tld.
185
186Configuration on Nginx
187~~~~~~~~~~~~~~~~~~~~~~
188
189Assuming you installed wallabag in the ``/var/www/wallabag`` folder, here's the recipe for wallabag :
190
191::
192
193 server {
194 server_name domain.tld www.domain.tld;
195 root /var/www/wallabag/web;
196
197 location / {
198 # try to serve file directly, fallback to app.php
199 try_files $uri /app.php$is_args$args;
200 }
201 location ~ ^/app\.php(/|$) {
202 fastcgi_pass unix:/var/run/php5-fpm.sock;
203 fastcgi_split_path_info ^(.+\.php)(/.*)$;
204 include fastcgi_params;
205 # When you are using symlinks to link the document root to the
206 # current version of your application, you should pass the real
207 # application path instead of the path to the symlink to PHP
208 # FPM.
209 # Otherwise, PHP's OPcache may not properly detect changes to
210 # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
211 # for more information).
212 fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
213 fastcgi_param DOCUMENT_ROOT $realpath_root;
214 # Prevents URIs that include the front controller. This will 404:
215 # http://domain.tld/app.php/some-path
216 # Remove the internal directive to allow URIs like this
217 internal;
218 }
219
220 # return 404 for all other php files not matching the front controller
221 # this prevents access to other php files you don't want to be accessible.
222 location ~ \.php$ {
223 return 404;
224 }
225
226 error_log /var/log/nginx/wallabag_error.log;
227 access_log /var/log/nginx/wallabag_access.log;
228 }
229
230After reloading or restarting nginx, you should now be able to access wallabag at http://domain.tld.
231
232.. tip::
233
234 When you want to import large files into wallabag, you need to add this line in your nginx configuration ``client_max_body_size XM; # allows file uploads up to X megabytes``.
235
236Configuration on lighttpd
237~~~~~~~~~~~~~~~~~~~~~~~~~
238
239Assuming you install wallabag in the ``/var/www/wallabag`` folder, here's the recipe for wallabag (edit your ``lighttpd.conf`` file and paste this configuration into it):
240
241::
242
243 server.modules = (
244 "mod_fastcgi",
245 "mod_access",
246 "mod_alias",
247 "mod_compress",
248 "mod_redirect",
249 "mod_rewrite",
250 )
251 server.document-root = "/var/www/wallabag/web"
252 server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
253 server.errorlog = "/var/log/lighttpd/error.log"
254 server.pid-file = "/var/run/lighttpd.pid"
255 server.username = "www-data"
256 server.groupname = "www-data"
257 server.port = 80
258 server.follow-symlink = "enable"
259 index-file.names = ( "index.php", "index.html", "index.lighttpd.html")
260 url.access-deny = ( "~", ".inc" )
261 static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
262 compress.cache-dir = "/var/cache/lighttpd/compress/"
263 compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
264 include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
265 include_shell "/usr/share/lighttpd/create-mime.assign.pl"
266 include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
267 dir-listing.activate = "disable"
268
269 url.rewrite-if-not-file = (
270 "^/([^?]*)(?:\?(.*))?" => "/app.php?$1&$2",
271 "^/([^?]*)" => "/app.php?=$1",
272 )
273
274Rights access to the folders of the project
275-------------------------------------------
276
277Test environment
278~~~~~~~~~~~~~~~~
279
280When we just want to test wallabag, we just run the command ``make run`` to start our wallabag instance and everything will go smoothly because the user who started the project can access to the current folder naturally, without any problem.
281
282Production environment
283~~~~~~~~~~~~~~~~~~~~~~
284
285As soon as we use Apache or Nginx to access to our wallabag instance, and not from the command ``make run`` to start it, we should take care to grant the good rights on the good folders to keep safe all the folders of the project.
286
287To do so, the folder name, known as ``DocumentRoot`` (for apache) or ``root`` (for Nginx), has to be absolutely accessible by the Apache/Nginx user. Its name is generally ``www-data``, ``apache`` or ``nobody`` (depending on linux system used).
288
289So the folder ``/var/www/wallabag/web`` has to be accessible by this last one. But this may not be enough if we just care about this folder, because we could meet a blank page or get an error 500 when trying to access to the homepage of the project.
290
291This is due to the fact that we will need to grant the same rights access on the folder ``/var/www/wallabag/var`` like those we gave on the folder ``/var/www/wallabag/web``. Thus, we fix this problem with the following command:
292
293.. code-block:: bash
294
295 chown -R www-data:www-data /var/www/wallabag/var
296
297It has to be the same for the following folders
298
299* /var/www/wallabag/bin/
300* /var/www/wallabag/app/config/
301* /var/www/wallabag/vendor/
302* /var/www/wallabag/data/
303
304by entering
305
306.. code-block:: bash
307
308 chown -R www-data:www-data /var/www/wallabag/bin
309 chown -R www-data:www-data /var/www/wallabag/app/config
310 chown -R www-data:www-data /var/www/wallabag/vendor
311 chown -R www-data:www-data /var/www/wallabag/data/
312
313otherwise, sooner or later you will see these error messages:
314
315.. code-block:: bash
316
317 Unable to write to the "bin" directory.
318 file_put_contents(app/config/parameters.yml): failed to open stream: Permission denied
319 file_put_contents(/.../wallabag/vendor/autoload.php): failed to open stream: Permission denied
320
321Additional rules for SELinux
322~~~~~~~~~~~~~~~~~~~~~~~~~~~~
323
324If 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:
325
326``getenforce``
327
328This will return ``Enforcing`` if SELinux is enabled. Creating a new context involves the following syntax:
329
330``semanage fcontext -a -t <context type> <full path>``
331
332For example:
333
334``semanage fcontext -a -t httpd_sys_content_t "/var/www/wallabag(/.*)?"``
335
336This will recursively apply the httpd_sys_content_t context to the wallabag directory and all underlying files and folders. The following rules are needed:
337
338+-----------------------------------+----------------------------+
339| Full path | Context |
340+===================================+============================+
341| /var/www/wallabag(/.*)? | ``httpd_sys_content_t`` |
342+-----------------------------------+----------------------------+
343| /var/www/wallabag/data(/.*)? | ``httpd_sys_rw_content_t`` |
344+-----------------------------------+----------------------------+
345| /var/www/wallabag/var/logs(/.*)? | ``httpd_log_t`` |
346+-----------------------------------+----------------------------+
347| /var/www/wallabag/var/cache(/.*)? | ``httpd_cache_t`` |
348+-----------------------------------+----------------------------+
349
350After creating these contexts, enter the following in order to apply your rules:
351
352``restorecon -R -v /var/www/wallabag``
353
354You can check contexts in a directory by typing ``ls -lZ`` and you can see all of your current rules with ``semanage fcontext -l -C``.
355
356If you're installing the preconfigured latest-v2-package, then an additional rule is needed during the initial setup:
357
358``semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wallabag/var"``
359
360After you successfully access your wallabag and complete the initial setup, this context can be removed:
361
362::
363
364 semanage fcontext -d -t httpd_sys_rw_content_t "/var/www/wallabag/var"
365 retorecon -R -v /var/www/wallabag/var
diff --git a/docs/en/user/parameters.rst b/docs/en/user/parameters.rst
deleted file mode 100644
index d8a209e7..00000000
--- a/docs/en/user/parameters.rst
+++ /dev/null
@@ -1,96 +0,0 @@
1What is the meaning of the parameters?
2======================================
3
4Default `parameters.yml` file
5-----------------------------
6
7Here is the last version of the default `app/config/parameters.yml` file. Be sure that yours respects this one.
8If you don't know which value you need to set, please leave the default one.
9
10.. code-block:: yml
11
12 parameters:
13 database_driver: pdo_sqlite
14 database_host: 127.0.0.1
15 database_port: null
16 database_name: symfony
17 database_user: root
18 database_password: null
19 database_path: '%kernel.root_dir%/../data/db/wallabag.sqlite'
20 database_table_prefix: wallabag_
21 database_socket: null
22 mailer_transport: smtp
23 mailer_host: 127.0.0.1
24 mailer_user: null
25 mailer_password: null
26 locale: en
27 secret: ovmpmAWXRCabNlMgzlzFXDYmCFfzGv
28 twofactor_auth: true
29 twofactor_sender: no-reply@wallabag.org
30 fosuser_registration: true
31 fosuser_confirmation: true
32 from_email: no-reply@wallabag.org
33 rss_limit: 50
34 rabbitmq_host: localhost
35 rabbitmq_port: 5672
36 rabbitmq_user: guest
37 rabbitmq_password: guest
38 redis_scheme: tcp
39 redis_host: localhost
40 redis_port: 6379
41 redis_path: null
42 redis_password: null
43
44Meaning of each parameter
45-------------------------
46
47.. csv-table:: Database parameters
48 :header: "name", "default", "description"
49
50 "database_driver", "pdo_sqlite", "Should be pdo_sqlite or pdo_mysql or pdo_pgsql"
51 "database_host", "127.0.0.1", "host of your database (usually localhost or 127.0.0.1)"
52 "database_port", "~", "port of your database (you can leave ``~`` to use the default one)"
53 "database_name", "symfony", "name of your database"
54 "database_user", "root", "user that can write to this database"
55 "database_password", "~", "password of that user"
56 "database_path", "``""%kernel.root_dir%/../data/db/wallabag.sqlite""``", "only for SQLite, define where to put the database file. Leave it empty for other database"
57 "database_table_prefix", "wallabag_", "all wallabag's tables will be prefixed with that string. You can include a ``_`` for clarity"
58 "database_socket", "null", "If your database is using a socket instead of tcp, put the path of the socket (other connection parameters will then be ignored)"
59 "database_charset", "utf8mb4", "For PostgreSQL & SQLite you should use utf8, for MySQL use utf8mb4 which handle emoji"
60
61.. csv-table:: Configuration to send emails from wallabag
62 :header: "name", "default", "description"
63
64 "mailer_transport", "smtp", "The exact transport method to use to deliver emails. Valid values are: smtp, gmail, mail, sendmail, null (which will disable the mailer)"
65 "mailer_host", "127.0.0.1", "The host to connect to when using smtp as the transport."
66 "mailer_user", "~", "The username when using smtp as the transport."
67 "mailer_password", "~", "The password when using smtp as the transport."
68
69.. csv-table:: Other wallabag's option
70 :header: "name", "default", "description"
71
72 "locale", "en", "Default language of your wallabag instance (like en, fr, es, etc.)"
73 "secret", "ovmpmAWXRCabNlMgzlzFXDYmCFfzGv", "This is a string that should be unique to your application and it's commonly used to add more entropy to security related operations."
74 "twofactor_auth", "true", "true to enable Two factor authentication"
75 "twofactor_sender", "no-reply@wallabag.org", "email of the email sender to receive the two factor code"
76 "fosuser_registration", "true", "true to enable public registration"
77 "fosuser_confirmation", "true", "true to send a confirmation by email for each registration"
78 "from_email", "no-reply@wallabag.org", "email address used in From: field in each email"
79 "rss_limit", "50", "limit for RSS feeds"
80
81.. csv-table:: RabbitMQ configuration
82 :header: "name", "default", "description"
83
84 "rabbitmq_host", "localhost", "Host of your RabbitMQ"
85 "rabbitmq_port", "5672", "Port of your RabbitMQ"
86 "rabbitmq_user", "guest", "User that can read queues"
87 "rabbitmq_password", "guest", "Password of that user"
88
89.. csv-table:: Redis configuration
90 :header: "name", "default", "description"
91
92 "redis_scheme", "tcp", "Specifies the protocol used to communicate with an instance of Redis. Valid values are: tcp, unix, http"
93 "redis_host", "localhost", "IP or hostname of the target server (ignored for unix scheme)"
94 "redis_port", "6379", "TCP/IP port of the target server (ignored for unix scheme)"
95 "redis_path", "null", "Path of the UNIX domain socket file used when connecting to Redis using UNIX domain sockets"
96 "redis_password", "null", "Password defined in the Redis server configuration (parameter `requirepass` in `redis.conf`)"
diff --git a/docs/en/user/query-upgrade-21-22.rst b/docs/en/user/query-upgrade-21-22.rst
deleted file mode 100644
index fa9835a8..00000000
--- a/docs/en/user/query-upgrade-21-22.rst
+++ /dev/null
@@ -1,984 +0,0 @@
1Migration 20161001072726
2------------------------
3
4MySQL
5^^^^^
6
7Migration up
8""""""""""""
9
10.. code-block:: sql
11
12 ALTER TABLE wallabag_entry_tag DROP FOREIGN KEY FK_C9F0DD7CBA364942
13 ALTER TABLE wallabag_entry_tag DROP FOREIGN KEY FK_C9F0DD7CBAD26311
14 ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE
15 ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_tag FOREIGN KEY (tag_id) REFERENCES wallabag_tag (id) ON DELETE CASCADE
16 ALTER TABLE wallabag_annotation DROP FOREIGN KEY FK_A7AED006BA364942
17 ALTER TABLE wallabag_annotation ADD CONSTRAINT FK_annotation_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE
18
19Migration down
20""""""""""""""
21
22We didn't write down migration for ``20161001072726``.
23
24PostgreSQL
25^^^^^^^^^^
26
27Migration up
28""""""""""""
29
30.. code-block:: sql
31
32 ALTER TABLE wallabag_entry_tag DROP CONSTRAINT fk_c9f0dd7cba364942
33 ALTER TABLE wallabag_entry_tag DROP CONSTRAINT fk_c9f0dd7cbad26311
34 ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE
35 ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_tag FOREIGN KEY (tag_id) REFERENCES wallabag_tag (id) ON DELETE CASCADE
36 ALTER TABLE wallabag_annotation DROP CONSTRAINT fk_a7aed006ba364942
37 ALTER TABLE wallabag_annotation ADD CONSTRAINT FK_annotation_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE
38
39Migration down
40""""""""""""""
41
42We didn't write down migration for ``20161001072726``.
43
44SQLite
45^^^^^^
46
47This migration can only be executed safely on MySQL or PostgreSQL.
48
49Migration 20161022134138
50------------------------
51
52MySQL
53^^^^^
54
55Migration up
56""""""""""""
57
58.. code-block:: sql
59
60 ALTER DATABASE wallabag CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
61 ALTER TABLE wallabag_user CHANGE confirmation_token confirmation_token VARCHAR(180) DEFAULT NULL;
62 ALTER TABLE wallabag_user CHANGE salt salt VARCHAR(180) NOT NULL;
63 ALTER TABLE wallabag_user CHANGE password password VARCHAR(180) NOT NULL;
64 ALTER TABLE wallabag_annotation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
65 ALTER TABLE wallabag_entry CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
66 ALTER TABLE wallabag_tag CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
67 ALTER TABLE wallabag_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
68 ALTER TABLE wallabag_annotation CHANGE `text` `text` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
69 ALTER TABLE wallabag_annotation CHANGE `quote` `quote` VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
70 ALTER TABLE wallabag_entry CHANGE `title` `title` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
71 ALTER TABLE wallabag_entry CHANGE `content` `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
72 ALTER TABLE wallabag_tag CHANGE `label` `label` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
73 ALTER TABLE wallabag_user CHANGE `name` `name` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
74
75Migration down
76""""""""""""""
77
78.. code-block:: sql
79
80 ALTER DATABASE wallabag CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;
81 ALTER TABLE wallabag_annotation CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
82 ALTER TABLE wallabag_entry CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
83 ALTER TABLE wallabag_tag CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
84 ALTER TABLE wallabag_user CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
85 ALTER TABLE wallabag_annotation CHANGE `text` `text` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci;
86 ALTER TABLE wallabag_annotation CHANGE `quote` `quote` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci;
87 ALTER TABLE wallabag_entry CHANGE `title` `title` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci;
88 ALTER TABLE wallabag_entry CHANGE `content` `content` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci;
89 ALTER TABLE wallabag_tag CHANGE `label` `label` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci;
90 ALTER TABLE wallabag_user CHANGE `name` `name` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci;
91
92PostgreSQL and SQLite
93^^^^^^^^^^^^^^^^^^^^^
94
95This migration only apply to MySQL.
96
97Migration 20161024212538
98------------------------
99
100MySQL
101^^^^^
102
103Migration up
104""""""""""""
105
106.. code-block:: sql
107
108 ALTER TABLE wallabag_oauth2_clients ADD user_id INT NOT NULL
109 ALTER TABLE wallabag_oauth2_clients ADD CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE
110 CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id)
111
112Migration down
113""""""""""""""
114
115.. code-block:: sql
116
117 ALTER TABLE wallabag_oauth2_clients DROP FOREIGN KEY IDX_user_oauth_client
118 ALTER TABLE wallabag_oauth2_clients DROP user_id
119
120PostgreSQL
121^^^^^^^^^^
122
123Migration up
124""""""""""""
125
126.. code-block:: sql
127
128 ALTER TABLE wallabag_oauth2_clients ADD user_id INT DEFAULT NULL
129 ALTER TABLE wallabag_oauth2_clients ADD CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
130 CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id)
131
132
133Migration down
134""""""""""""""
135
136.. code-block:: sql
137
138 ALTER TABLE wallabag_oauth2_clients DROP CONSTRAINT idx_user_oauth_client
139 ALTER TABLE wallabag_oauth2_clients DROP user_id
140
141SQLite
142^^^^^^
143
144Migration up
145""""""""""""
146
147.. code-block:: sql
148
149 CREATE TEMPORARY TABLE __temp__wallabag_oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM wallabag_oauth2_clients
150 DROP TABLE wallabag_oauth2_clients
151 CREATE TABLE wallabag_oauth2_clients (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id), CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE)
152 INSERT INTO wallabag_oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types, name) SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM __temp__wallabag_oauth2_clients
153 DROP TABLE __temp__wallabag_oauth2_clients
154 CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id)
155
156Migration down
157""""""""""""""
158
159.. code-block:: sql
160
161 DROP INDEX IDX_635D765EA76ED395
162 CREATE TEMPORARY TABLE __temp__wallabag_oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM wallabag_oauth2_clients
163 DROP TABLE wallabag_oauth2_clients
164 CREATE TABLE wallabag_oauth2_clients (id INTEGER NOT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id))
165 INSERT INTO wallabag_oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types, name) SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM __temp__wallabag_oauth2_clients
166 DROP TABLE __temp__wallabag_oauth2_clients
167
168Migration 20161031132655
169------------------------
170
171MySQL
172^^^^^
173
174Migration up
175""""""""""""
176
177.. code-block:: sql
178
179 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc')
180
181Migration down
182""""""""""""""
183
184.. code-block:: sql
185
186 DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled';
187
188PostgreSQL
189^^^^^^^^^^
190
191Migration up
192""""""""""""
193
194.. code-block:: sql
195
196 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc')
197
198Migration down
199""""""""""""""
200
201.. code-block:: sql
202
203 DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled';
204
205SQLite
206^^^^^^
207
208Migration up
209""""""""""""
210
211.. code-block:: sql
212
213 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc')
214
215Migration down
216""""""""""""""
217
218.. code-block:: sql
219
220 DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled';
221
222Migration 20161104073720
223------------------------
224
225MySQL
226^^^^^
227
228Migration up
229""""""""""""
230
231.. code-block:: sql
232
233 CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at)
234
235Migration down
236""""""""""""""
237
238.. code-block:: sql
239
240 DROP INDEX IDX_entry_created_at ON wallabag_entry
241
242PostgreSQL
243^^^^^^^^^^
244
245Migration up
246""""""""""""
247
248.. code-block:: sql
249
250 CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at)
251
252Migration down
253""""""""""""""
254
255.. code-block:: sql
256
257 DROP INDEX idx_entry_created_at
258
259SQLite
260^^^^^^
261
262Migration up
263""""""""""""
264
265.. code-block:: sql
266
267 DROP INDEX created_at_idx
268 DROP INDEX IDX_F4D18282A76ED395
269 CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry
270 DROP TABLE wallabag_entry
271 CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id))
272 INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry
273 DROP TABLE __temp__wallabag_entry
274 CREATE INDEX created_at_idx ON wallabag_entry (created_at)
275 CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id)
276 CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at)
277
278Migration down
279""""""""""""""
280
281.. code-block:: sql
282
283 DROP INDEX IDX_entry_created_at
284 DROP INDEX IDX_F4D18282A76ED395
285 DROP INDEX created_at_idx
286 CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry
287 DROP TABLE wallabag_entry
288 CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id))
289 INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry
290 DROP TABLE __temp__wallabag_entry
291 CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id)
292 CREATE INDEX created_at_idx ON wallabag_entry (created_at)
293
294Migration 20161106113822
295------------------------
296
297MySQL
298^^^^^
299
300Migration up
301""""""""""""
302
303.. code-block:: sql
304
305 ALTER TABLE wallabag_config ADD action_mark_as_read INT DEFAULT 0
306
307Migration down
308""""""""""""""
309
310.. code-block:: sql
311
312 ALTER TABLE wallabag_config DROP action_mark_as_read
313
314PostgreSQL
315^^^^^^^^^^
316
317Migration up
318""""""""""""
319
320.. code-block:: sql
321
322 ALTER TABLE wallabag_config ADD action_mark_as_read INT DEFAULT 0
323
324Migration down
325""""""""""""""
326
327.. code-block:: sql
328
329 ALTER TABLE wallabag_config DROP action_mark_as_read
330
331SQLite
332^^^^^^
333
334Migration up
335""""""""""""
336
337.. code-block:: sql
338
339 ALTER TABLE wallabag_config ADD COLUMN action_mark_as_read INTEGER DEFAULT 0
340
341Migration down
342""""""""""""""
343
344.. code-block:: sql
345
346 DROP INDEX UNIQ_87E64C53A76ED395
347 CREATE TEMPORARY TABLE __temp__wallabag_config AS SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM wallabag_config
348 DROP TABLE wallabag_config
349 CREATE TABLE wallabag_config (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL COLLATE BINARY, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL COLLATE BINARY, rss_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id))
350 INSERT INTO wallabag_config (id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key) SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM __temp__wallabag_config
351 DROP TABLE __temp__wallabag_config
352 CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON wallabag_config (user_id)
353
354Migration 20161117071626
355------------------------
356
357MySQL
358^^^^^
359
360Migration up
361""""""""""""
362
363.. code-block:: sql
364
365 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry')
366 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry')
367
368Migration down
369""""""""""""""
370
371.. code-block:: sql
372
373 DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark';
374 DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url';
375
376PostgreSQL
377^^^^^^^^^^
378
379Migration up
380""""""""""""
381
382.. code-block:: sql
383
384 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry')
385 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry')
386
387Migration down
388""""""""""""""
389
390.. code-block:: sql
391
392 DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark';
393 DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url';
394
395SQLite
396^^^^^^
397
398Migration up
399""""""""""""
400
401.. code-block:: sql
402
403 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry')
404 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry')
405
406Migration down
407""""""""""""""
408
409.. code-block:: sql
410
411 DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark';
412 DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url';
413
414Migration 20161118134328
415------------------------
416
417MySQL
418^^^^^
419
420Migration up
421""""""""""""
422
423.. code-block:: sql
424
425 ALTER TABLE wallabag_entry ADD http_status VARCHAR(3) DEFAULT NULL
426
427Migration down
428""""""""""""""
429
430.. code-block:: sql
431
432 ALTER TABLE wallabag_entry DROP http_status
433
434PostgreSQL
435^^^^^^^^^^
436
437Migration up
438""""""""""""
439
440.. code-block:: sql
441
442 ALTER TABLE wallabag_entry ADD http_status VARCHAR(3) DEFAULT NULL
443
444Migration down
445""""""""""""""
446
447.. code-block:: sql
448
449 ALTER TABLE wallabag_entry DROP http_status
450
451SQLite
452^^^^^^
453
454Migration up
455""""""""""""
456
457.. code-block:: sql
458
459 ALTER TABLE wallabag_entry ADD COLUMN http_status VARCHAR(3) DEFAULT NULL
460
461Migration down
462""""""""""""""
463
464.. code-block:: sql
465
466 DROP INDEX created_at_idx
467 DROP INDEX IDX_F4D18282A76ED395
468 CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry
469 DROP TABLE wallabag_entry
470 CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id))
471 INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry
472 DROP TABLE __temp__wallabag_entry
473 CREATE INDEX created_at_idx ON wallabag_entry (created_at)
474 CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id)
475
476Migration 20161122144743
477------------------------
478
479MySQL
480^^^^^
481
482Migration up
483""""""""""""
484
485.. code-block:: sql
486
487 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry')
488
489Migration down
490""""""""""""""
491
492.. code-block:: sql
493
494 DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access';
495
496PostgreSQL
497^^^^^^^^^^
498
499Migration up
500""""""""""""
501
502.. code-block:: sql
503
504 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry')
505
506Migration down
507""""""""""""""
508
509.. code-block:: sql
510
511 DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access';
512
513SQLite
514^^^^^^
515
516Migration up
517""""""""""""
518
519.. code-block:: sql
520
521 INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry')
522
523Migration down
524""""""""""""""
525
526.. code-block:: sql
527
528 DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access';
529
530Migration 20161122203647
531------------------------
532
533MySQL
534^^^^^
535
536Migration up
537""""""""""""
538
539.. code-block:: sql
540
541 ALTER TABLE wallabag_user DROP expired, DROP credentials_expired
542
543Migration down
544""""""""""""""
545
546.. code-block:: sql
547
548 ALTER TABLE wallabag_user ADD expired SMALLINT DEFAULT NULL, ADD credentials_expired SMALLINT DEFAULT NULL
549
550PostgreSQL
551^^^^^^^^^^
552
553Migration up
554""""""""""""
555
556.. code-block:: sql
557
558 ALTER TABLE wallabag_user DROP expired
559 ALTER TABLE wallabag_user DROP credentials_expired
560
561Migration down
562""""""""""""""
563
564.. code-block:: sql
565
566 ALTER TABLE wallabag_user ADD expired SMALLINT DEFAULT NULL
567 ALTER TABLE wallabag_user ADD credentials_expired SMALLINT DEFAULT NULL
568
569SQLite
570^^^^^^
571
572Migration up
573""""""""""""
574
575.. code-block:: sql
576
577 DROP INDEX UNIQ_1D63E7E5C05FB297
578 DROP INDEX UNIQ_1D63E7E5A0D96FBF
579 DROP INDEX UNIQ_1D63E7E592FC23A8
580 CREATE TEMPORARY TABLE __temp__wallabag_user AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted FROM wallabag_user
581 DROP TABLE wallabag_user
582 CREATE TABLE wallabag_user (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL COLLATE BINARY, username_canonical VARCHAR(180) NOT NULL COLLATE BINARY, email VARCHAR(180) NOT NULL COLLATE BINARY, email_canonical VARCHAR(180) NOT NULL COLLATE BINARY, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL COLLATE BINARY, password VARCHAR(255) NOT NULL COLLATE BINARY, last_login DATETIME DEFAULT NULL, locked BOOLEAN NOT NULL, expires_at DATETIME DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL COLLATE BINARY, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL COLLATE BINARY, credentials_expire_at DATETIME DEFAULT NULL, name CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id))
583 INSERT INTO wallabag_user (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted FROM __temp__wallabag_user
584 DROP TABLE __temp__wallabag_user
585 CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON wallabag_user (confirmation_token)
586 CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON wallabag_user (email_canonical)
587 CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON wallabag_user (username_canonical)
588
589Migration down
590""""""""""""""
591
592.. code-block:: sql
593
594 ALTER TABLE wallabag_user ADD COLUMN expired SMALLINT DEFAULT NULL
595 ALTER TABLE wallabag_user ADD COLUMN credentials_expired SMALLINT DEFAULT NULL
596
597Migration 20161128084725
598------------------------
599
600MySQL
601^^^^^
602
603Migration up
604""""""""""""
605
606.. code-block:: sql
607
608 ALTER TABLE wallabag_config ADD list_mode INT DEFAULT NULL
609
610Migration down
611""""""""""""""
612
613.. code-block:: sql
614
615 ALTER TABLE wallabag_config DROP list_mode
616
617PostgreSQL
618^^^^^^^^^^
619
620Migration up
621""""""""""""
622
623.. code-block:: sql
624
625 ALTER TABLE wallabag_config ADD list_mode INT DEFAULT NULL
626
627Migration down
628""""""""""""""
629
630.. code-block:: sql
631
632 ALTER TABLE wallabag_config DROP list_mode
633
634SQLite
635^^^^^^
636
637Migration up
638""""""""""""
639
640.. code-block:: sql
641
642 ALTER TABLE wallabag_config ADD COLUMN list_mode INTEGER DEFAULT NULL
643
644Migration down
645""""""""""""""
646
647.. code-block:: sql
648
649 DROP INDEX UNIQ_87E64C53A76ED395
650 CREATE TEMPORARY TABLE __temp__wallabag_config AS SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM wallabag_config
651 DROP TABLE wallabag_config
652 CREATE TABLE wallabag_config (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL COLLATE BINARY, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL COLLATE BINARY, rss_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id))
653 INSERT INTO wallabag_config (id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key) SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM __temp__wallabag_config
654 DROP TABLE __temp__wallabag_config
655 CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON wallabag_config (user_id)
656
657Migration 20161128131503
658------------------------
659
660MySQL
661^^^^^
662
663Migration up
664""""""""""""
665
666.. code-block:: sql
667
668 ALTER TABLE wallabag_user DROP locked, DROP credentials_expire_at, DROP expires_at
669
670Migration down
671""""""""""""""
672
673.. code-block:: sql
674
675 ALTER TABLE wallabag_user ADD locked SMALLINT DEFAULT NULL, ADD credentials_expire_at DATETIME DEFAULT NULL, ADD expires_at DATETIME DEFAULT NULL
676
677PostgreSQL
678^^^^^^^^^^
679
680Migration up
681""""""""""""
682
683.. code-block:: sql
684
685 ALTER TABLE wallabag_user DROP locked
686 ALTER TABLE wallabag_user DROP credentials_expire_at
687 ALTER TABLE wallabag_user DROP expires_at
688
689Migration down
690""""""""""""""
691
692.. code-block:: sql
693
694 ALTER TABLE wallabag_user ADD locked SMALLINT DEFAULT NULL
695 ALTER TABLE wallabag_user ADD credentials_expire_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL
696 ALTER TABLE wallabag_user ADD expires_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL
697
698SQLite
699^^^^^^
700
701Migration up
702""""""""""""
703
704.. code-block:: sql
705
706 ALTER TABLE wallabag_user ADD COLUMN locked SMALLINT DEFAULT NULL
707 ALTER TABLE wallabag_user ADD COLUMN credentials_expire_at DATETIME DEFAULT NULL
708 ALTER TABLE wallabag_user ADD COLUMN expires_at DATETIME DEFAULT NULL
709
710Migration down
711""""""""""""""
712
713.. code-block:: sql
714
715 DROP INDEX UNIQ_1D63E7E592FC23A8
716 DROP INDEX UNIQ_1D63E7E5A0D96FBF
717 DROP INDEX UNIQ_1D63E7E5C05FB297
718 CREATE TEMPORARY TABLE __temp__wallabag_user AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired FROM wallabag_user
719 DROP TABLE wallabag_user
720 CREATE TABLE wallabag_user (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL COLLATE BINARY, username_canonical VARCHAR(180) NOT NULL COLLATE BINARY, email VARCHAR(180) NOT NULL COLLATE BINARY, email_canonical VARCHAR(180) NOT NULL COLLATE BINARY, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL COLLATE BINARY, password VARCHAR(255) NOT NULL COLLATE BINARY, last_login DATETIME DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL COLLATE BINARY, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL COLLATE BINARY, expired SMALLINT DEFAULT NULL, credentials_expired SMALLINT DEFAULT NULL, PRIMARY KEY(id))
721 INSERT INTO wallabag_user (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired FROM __temp__wallabag_user
722 DROP TABLE __temp__wallabag_user
723 CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON wallabag_user (username_canonical)
724 CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON wallabag_user (email_canonical)
725 CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON wallabag_user (confirmation_token)
726
727Migration 20161214094402
728------------------------
729
730MySQL
731^^^^^
732
733Migration up
734""""""""""""
735
736.. code-block:: sql
737
738 ALTER TABLE wallabag_entry CHANGE uuid uid VARCHAR(23)
739
740Migration down
741""""""""""""""
742
743.. code-block:: sql
744
745 ALTER TABLE wallabag_entry CHANGE uid uuid VARCHAR(23)
746
747PostgreSQL
748^^^^^^^^^^
749
750Migration up
751""""""""""""
752
753.. code-block:: sql
754
755 ALTER TABLE wallabag_entry RENAME uuid TO uid
756
757Migration down
758""""""""""""""
759
760.. code-block:: sql
761
762 ALTER TABLE wallabag_entry RENAME uid TO uuid
763
764SQLite
765^^^^^^
766
767Migration up
768""""""""""""
769
770.. code-block:: sql
771
772 CREATE TABLE __temp__wallabag_entry (
773 id INTEGER NOT NULL,
774 user_id INTEGER DEFAULT NULL,
775 uid VARCHAR(23) DEFAULT NULL,
776 title CLOB DEFAULT NULL,
777 url CLOB DEFAULT NULL,
778 is_archived BOOLEAN NOT NULL,
779 is_starred BOOLEAN NOT NULL,
780 content CLOB DEFAULT NULL,
781 created_at DATETIME NOT NULL,
782 updated_at DATETIME NOT NULL,
783 mimetype CLOB DEFAULT NULL,
784 language CLOB DEFAULT NULL,
785 reading_time INTEGER DEFAULT NULL,
786 domain_name CLOB DEFAULT NULL,
787 preview_picture CLOB DEFAULT NULL,
788 is_public BOOLEAN DEFAULT '0',
789 http_status VARCHAR(3) DEFAULT NULL,
790 PRIMARY KEY(id)
791 );
792 INSERT INTO __temp__wallabag_entry SELECT id,user_id,uuid,title,url,is_archived,is_starred,content,created_at,updated_at,mimetype,language,reading_time,domain_name,preview_picture,is_public,http_status FROM wallabag_entry;
793 DROP TABLE wallabag_entry;
794 ALTER TABLE __temp__wallabag_entry RENAME TO wallabag_entry
795 CREATE INDEX uid ON wallabag_entry (uid)
796 CREATE INDEX created_at ON wallabag_entry (created_at)
797 CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id)
798
799
800Migration down
801""""""""""""""
802
803.. code-block:: sql
804
805 CREATE TABLE __temp__wallabag_entry (
806 id INTEGER NOT NULL,
807 user_id INTEGER DEFAULT NULL,
808 uuid VARCHAR(23) DEFAULT NULL,
809 title CLOB DEFAULT NULL,
810 url CLOB DEFAULT NULL,
811 is_archived BOOLEAN NOT NULL,
812 is_starred BOOLEAN NOT NULL,
813 content CLOB DEFAULT NULL,
814 created_at DATETIME NOT NULL,
815 updated_at DATETIME NOT NULL,
816 mimetype CLOB DEFAULT NULL,
817 language CLOB DEFAULT NULL,
818 reading_time INTEGER DEFAULT NULL,
819 domain_name CLOB DEFAULT NULL,
820 preview_picture CLOB DEFAULT NULL,
821 is_public BOOLEAN DEFAULT '0',
822 http_status VARCHAR(3) DEFAULT NULL,
823 PRIMARY KEY(id)
824 );
825 INSERT INTO __temp__wallabag_entry SELECT id,user_id,uid,title,url,is_archived,is_starred,content,created_at,updated_at,mimetype,language,reading_time,domain_name,preview_picture,is_public,http_status FROM wallabag_entry;
826 DROP TABLE wallabag_entry;
827 ALTER TABLE __temp__wallabag_entry RENAME TO wallabag_entry
828 CREATE INDEX uid ON wallabag_entry (uid)
829 CREATE INDEX created_at ON wallabag_entry (created_at)
830 CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id)
831
832Migration 20161214094403
833------------------------
834
835MySQL
836^^^^^
837
838Migration up
839""""""""""""
840
841.. code-block:: sql
842
843 CREATE INDEX IDX_entry_uid ON wallabag_entry (uid)
844
845Migration down
846""""""""""""""
847
848.. code-block:: sql
849
850 DROP INDEX IDX_entry_uid ON wallabag_entry
851
852PostgreSQL
853^^^^^^^^^^
854
855Migration up
856""""""""""""
857
858.. code-block:: sql
859
860 CREATE INDEX IDX_entry_uid ON wallabag_entry (uid)
861
862Migration down
863""""""""""""""
864
865.. code-block:: sql
866
867 DROP INDEX idx_entry_uid
868
869SQLite
870^^^^^^
871
872Migration up
873""""""""""""
874
875.. code-block:: sql
876
877 DROP INDEX IDX_F4D18282A76ED395
878 DROP INDEX created_at_idx
879 CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry
880 DROP TABLE wallabag_entry
881 CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id))
882 INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry
883 DROP TABLE __temp__wallabag_entry
884 CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id)
885 CREATE INDEX created_at_idx ON wallabag_entry (created_at)
886 CREATE INDEX IDX_entry_uid ON wallabag_entry (uid)
887
888Migration down
889""""""""""""""
890
891.. code-block:: sql
892
893 DROP INDEX IDX_entry_uid
894 DROP INDEX created_at_idx
895 DROP INDEX IDX_F4D18282A76ED395
896 CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry
897 DROP TABLE wallabag_entry
898 CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id))
899 INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry
900 DROP TABLE __temp__wallabag_entry
901 CREATE INDEX created_at_idx ON wallabag_entry (created_at)
902 CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id)
903
904Migration 20170127093841
905------------------------
906
907MySQL
908^^^^^
909
910Migration up
911""""""""""""
912
913.. code-block:: sql
914
915 CREATE INDEX IDX_entry_starred ON wallabag_entry (is_starred)
916 CREATE INDEX IDX_entry_archived ON wallabag_entry (is_archived)
917
918Migration down
919""""""""""""""
920
921.. code-block:: sql
922
923 DROP INDEX IDX_entry_starred ON wallabag_entry
924 DROP INDEX IDX_entry_archived ON wallabag_entry
925
926PostgreSQL
927^^^^^^^^^^
928
929Migration up
930""""""""""""
931
932.. code-block:: sql
933
934 CREATE INDEX IDX_entry_starred ON wallabag_entry (is_starred)
935 CREATE INDEX IDX_entry_archived ON wallabag_entry (is_archived)
936
937Migration down
938""""""""""""""
939
940.. code-block:: sql
941
942 DROP INDEX IDX_entry_starred
943 DROP INDEX IDX_entry_archived
944
945SQLite
946^^^^^^
947
948Migration up
949""""""""""""
950
951.. code-block:: sql
952
953 DROP INDEX uid
954 DROP INDEX created_at
955 DROP INDEX IDX_F4D18282A76ED395
956 CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public, http_status FROM wallabag_entry
957 DROP TABLE wallabag_entry
958 CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid VARCHAR(23) DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', http_status VARCHAR(3) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id))
959 INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public, http_status) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public, http_status FROM __temp__wallabag_entry
960 DROP TABLE __temp__wallabag_entry
961 CREATE INDEX uid ON wallabag_entry (uid)
962 CREATE INDEX created_at ON wallabag_entry (created_at)
963 CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id)
964 CREATE INDEX IDX_entry_starred ON wallabag_entry (is_starred)
965 CREATE INDEX IDX_entry_archived ON wallabag_entry (is_archived)
966
967Migration down
968""""""""""""""
969
970.. code-block:: sql
971
972 DROP INDEX IDX_entry_archived
973 DROP INDEX IDX_entry_starred
974 DROP INDEX IDX_F4D18282A76ED395
975 DROP INDEX created_at
976 DROP INDEX uid
977 CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public, http_status FROM wallabag_entry
978 DROP TABLE wallabag_entry
979 CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid VARCHAR(23) DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', http_status VARCHAR(3) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id))
980 INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public, http_status) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public, http_status FROM __temp__wallabag_entry
981 DROP TABLE __temp__wallabag_entry
982 CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id)
983 CREATE INDEX created_at ON wallabag_entry (created_at)
984 CREATE INDEX uid ON wallabag_entry (uid)
diff --git a/docs/en/user/tags.rst b/docs/en/user/tags.rst
deleted file mode 100644
index 8ddc0f40..00000000
--- a/docs/en/user/tags.rst
+++ /dev/null
@@ -1,2 +0,0 @@
1Tags
2==== \ No newline at end of file
diff --git a/docs/en/user/upgrade.rst b/docs/en/user/upgrade.rst
deleted file mode 100644
index 3157684c..00000000
--- a/docs/en/user/upgrade.rst
+++ /dev/null
@@ -1,148 +0,0 @@
1==================================
2Upgrade your wallabag installation
3==================================
4
5You will find here different ways to upgrade your wallabag:
6
7- `from 2.1.x to 2.2.x <#upgrading-from-2-1-x-to-2-2-x>`_
8- `from 2.0.x to 2.1.1 <#upgrade-from-2-0-x-to-2-1-1>`_
9- `from 1.x to 2.x <#from-wallabag-1-x>`_
10
11*****************************
12Upgrading from 2.1.x to 2.2.x
13*****************************
14
15Upgrade on a dedicated web server
16=================================
17
18**From 2.1.x:**
19
20::
21
22 make update
23 php bin/console doctrine:migrations:migrate --no-interaction -e=prod
24
25**From 2.2.0:**
26
27::
28
29 make update
30
31Explanations about database migrations
32--------------------------------------
33
34During the update, we execute database migrations.
35
36All the database migrations are stored in ``app/DoctrineMigrations``. You can execute each migration individually:
37``bin/console doctrine:migrations:execute 20161001072726 --env=prod``.
38
39You can also cancel each migration individually: ``bin/console doctrine:migrations:execute 20161001072726 --down --env=prod``.
40
41Here is the migrations list for 2.1.x to 2.2.0 release:
42
43* ``20161001072726``: added foreign keys for account resetting
44* ``20161022134138``: converted database to ``utf8mb4`` encoding (for MySQL only)
45* ``20161024212538``: added ``user_id`` column on ``oauth2_clients`` to prevent users to delete API clients from other users
46* ``20161031132655``: added the internal setting to enable/disable downloading pictures
47* ``20161104073720``: added ``created_at`` index on ``entry`` table
48* ``20161106113822``: added ``action_mark_as_read`` field on ``config`` table
49* ``20161117071626``: added the internal setting to share articles to unmark.it
50* ``20161118134328``: added ``http_status`` field on ``entry`` table
51* ``20161122144743``: added the internal setting to enable/disable fetching articles with paywall
52* ``20161122203647``: dropped ``expired`` and ``credentials_expired`` fields on ``user`` table
53* ``20161128084725``: added ``list_mode`` field on ``config`` table
54* ``20161128131503``: dropped ``locked``, ``credentials_expire_at`` and ``expires_at`` fields on ``user`` table
55* ``20161214094402``: renamed ``uuid`` to ``uid`` on ``entry`` table
56* ``20161214094403``: added ``uid`` index on ``entry`` table
57* ``20170127093841``: added ``is_starred`` and ``is_archived`` indexes on ``entry`` table
58
59Upgrade on a shared hosting
60===========================
61
62Backup your ``app/config/parameters.yml`` file.
63
64Download the last release of wallabag:
65
66.. code-block:: bash
67
68 wget https://wllbg.org/latest-v2-package && tar xvf latest-v2-package
69
70You will find the `md5 hash of the latest package on our website <https://static.wallabag.org/releases/>`_.
71
72Extract the archive in your wallabag folder and replace ``app/config/parameters.yml`` with yours.
73
74Please check that your ``app/config/parameters.yml`` contains all the required parameters. You can find `here a documentation about parameters <http://doc.wallabag.org/en/master/user/parameters.html>`_.
75
76If you use SQLite, you must also copy your ``data/`` folder inside the new installation.
77
78Empty ``var/cache`` folder.
79
80You must run some SQL queries to upgrade your database. We assume that the table prefix is ``wallabag_``. Don't forgete to backup your database before migrating.
81
82You may encounter issues with indexes names: if so, please change queries with the correct index name.
83
84`You can find all the queries here <http://doc.wallabag.org/en/master/user/query-upgrade-21-22.html>`_.
85
86***************************
87Upgrade from 2.0.x to 2.1.1
88***************************
89
90.. warning::
91
92 Before this migration, if you configured the Pocket import by adding your consumer key in Internal settings, please do a backup of it: you'll have to add it into the Config page after the upgrade.
93
94Upgrade on a dedicated web server
95=================================
96
97::
98
99 rm -rf var/cache/*
100 git fetch origin
101 git fetch --tags
102 git checkout 2.1.1 --force
103 SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist
104 php bin/console doctrine:migrations:migrate --env=prod
105 php bin/console cache:clear --env=prod
106
107Upgrade on a shared hosting
108===========================
109
110Backup your ``app/config/parameters.yml`` file.
111
112Download the 2.1.1 release of wallabag:
113
114.. code-block:: bash
115
116 wget http://framabag.org/wallabag-release-2.1.1.tar.gz && tar xvf wallabag-release-2.1.1.tar.gz
117
118(md5 hash of the 2.1.1 package: ``9584a3b60a2b2a4de87f536548caac93``)
119
120Extract the archive in your wallabag folder and replace ``app/config/parameters.yml`` with yours.
121
122Please check that your ``app/config/parameters.yml`` contains all the required parameters. You can find `here a documentation about parameters <http://doc.wallabag.org/en/master/user/parameters.html>`_.
123
124If you use SQLite, you must also copy your ``data/`` folder inside the new installation.
125
126Empty ``var/cache`` folder.
127
128You must run some SQL queries to upgrade your database. We assume that the table prefix is ``wallabag_`` and the database server is a MySQL one:
129
130.. code-block:: sql
131
132 ALTER TABLE `wallabag_entry` ADD `uuid` LONGTEXT DEFAULT NULL;
133 INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('share_public', '1', 'entry');
134 ALTER TABLE `wallabag_oauth2_clients` ADD name longtext COLLATE 'utf8_unicode_ci' DEFAULT NULL;
135 INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('import_with_redis', '0', 'import');
136 INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('import_with_rabbitmq', '0', 'import');
137 ALTER TABLE `wallabag_config` ADD `pocket_consumer_key` VARCHAR(255) DEFAULT NULL;
138 DELETE FROM `wallabag_craue_config_setting` WHERE `name` = 'pocket_consumer_key';
139
140*****************
141From wallabag 1.x
142*****************
143
144There is no automatic script to update from wallabag 1.x to wallabag 2.x. You need to:
145
146- export your data
147- install wallabag 2.x (`read the installation documentation <http://doc.wallabag.org/en/master/user/installation.html>`_ )
148- import data in this fresh installation (`read the import documentation <http://doc.wallabag.org/en/master/user/import.html>`_ )