Mercurial > libervia-backend
comparison doc/jp/blog.rst @ 2946:ce16847a7b6d
doc: documentation first draft:
this patch starts the local documentation, existing documentation will be imported from wiki/other places to this folder and updated.
This doc is using reStructuredText format and will be generated with Sphinx.
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 22 Feb 2019 18:58:59 +0100 |
parents | |
children | 5e72efd2f95d |
comparison
equal
deleted
inserted
replaced
2945:6c264c224614 | 2946:ce16847a7b6d |
---|---|
1 .. highlight:: sh | |
2 | |
3 ================================ | |
4 blog: (micro)blogging management | |
5 ================================ | |
6 | |
7 Blog commands are high level tools to handle an XMPP blog. | |
8 They are using the generic pubsub arguments | |
9 | |
10 set | |
11 === | |
12 | |
13 publish a blog item. | |
14 | |
15 :ref:`pubsub_common` commands are used to specify the destination item. | |
16 | |
17 ``stdin`` is used to get the body of the blog post. | |
18 | |
19 examples | |
20 -------- | |
21 | |
22 Create a blog post with a body, a subject, 2 tags, and with comments allowed:: | |
23 | |
24 $ echo "This is post body" | jp blog set -T "This is a test message" -t test -t jp -C | |
25 | |
26 Create a blog post with rich content using `markdown` syntax, and no subject:: | |
27 | |
28 $ echo "This is a **rich** body" | jp blog set -S markdown | |
29 | |
30 get | |
31 === | |
32 | |
33 get command retrieves one or move blog post from specified location (by default the | |
34 personal blog of the profile). | |
35 | |
36 output can be customised to only retrieve some keys, or to use a specific template. | |
37 | |
38 :ref:`pubsub_common` commands are used to specify the blog location. | |
39 | |
40 examples | |
41 -------- | |
42 | |
43 Retrieve personal blog of the profile using `fancy` output with a verbosity of 1 (to show | |
44 publication date):: | |
45 | |
46 $ jp blog get -O fancy -v | |
47 | |
48 Retrieve *title* and *publication date* of last 3 blog posts from the blog at | |
49 https://www.goffi.org:: | |
50 | |
51 $ jp blog get -m 3 -u https://www.goffi.org -k title -k published | |
52 | |
53 Retrieve last 2 posts of personal blog, and output them in browser using default | |
54 template:: | |
55 | |
56 $ jp blog get -m 2 -O template --oo browser | |
57 | |
58 edit | |
59 ==== | |
60 | |
61 With edit command you can create a new blog post or modify an existing one using your | |
62 local editor (the one set in ``$EDITOR``). You'll edit 2 things: the body of the post, and | |
63 the metadata which contain things like title, comments infos, or tags. | |
64 | |
65 For some common editors (like **vim** or **Emacs**), the editor will be automatially | |
66 opened using a split screen with *body* in one side, and metadata on the other. If the | |
67 editor is not supported or doesn't support split screen, you'll edit first the *body*, then | |
68 the *metadata*. You can also specify editor and arguments in ``sat.conf``, see | |
69 `configuration <edit_conf_>`_ below | |
70 | |
71 If you don't change anything or publish an empty blog post, the edition will be cancelled. | |
72 | |
73 In the metadata (see `below <edit_metadata_>`_ for details), you can use | |
74 ``"publish": false`` to forbid the publication. In this case, when you'll save | |
75 your modification and quit your editor, the blog post will not be published but | |
76 saved locally in a draft. To continue your work later, just start your edition with the | |
77 ``-D, --current`` option like this:: | |
78 | |
79 $ jp blog edit -D | |
80 | |
81 Note that item location must be re-specified if it has been used to create the draft, so | |
82 you'll have to reproduce the arguments to specify service, node or item (or the URL), | |
83 other data like tags will be restored from draft file of metadata. | |
84 | |
85 You can specify the syntax by using ``-S SYNTAX, --syntax SYNTAX``. If not specified, the | |
86 syntax set in your parameters will be used. | |
87 | |
88 When you edit a blog post, it is often useful to activate the ``-P, --preview`` option, | |
89 this will launch a web browser and refresh the page each time you save a modification in | |
90 your editor. By default, the browser registered as default in your system will be used, | |
91 and a new tab will be opened on each modification. This is not ideal, and we recommand to | |
92 set you configuration to activate automatic refreshing of the page instead, see `preview | |
93 configuration <edit_preview_>`_ below to see how to do. | |
94 | |
95 examples | |
96 -------- | |
97 | |
98 Edit a new blog post with comments on your personal blog, using default syntax and preview:: | |
99 | |
100 $ jp blog edit -P --comments | |
101 | |
102 Modifiy a draft previously saved using the ``"publish": false`` metadata:: | |
103 | |
104 $ jp blog edit -D | |
105 | |
106 Correct a typo in your last published blog post:: | |
107 | |
108 $ jp blog edit --last-item | |
109 | |
110 Edit the blog item at an HTTPS URL using XHTML syntax:: | |
111 | |
112 $ jp blog edit -u https://www.example.net/some_xmpp_blog_article.html -S xhtml | |
113 | |
114 Create a new blog post on a XMPP blog node using its HTTPS URL (supposing here that | |
115 https://example.net is a XMPP blog node):: | |
116 | |
117 $ jp blog edit -u https://www.example.net | |
118 | |
119 .. _edit_metadata: | |
120 | |
121 metadata | |
122 -------- | |
123 | |
124 Metadata is set using a JSON object. The key you can use are: | |
125 | |
126 publish | |
127 boolean indicating if item can be published. Set to ``false`` if you want to work on a | |
128 draft and to avoid accidental publication. | |
129 | |
130 atom_id | |
131 atom entry identifier. This should not be modified manually. | |
132 | |
133 published | |
134 time of initial publication (unix time). This should not be modified manually. | |
135 | |
136 language | |
137 language of the content | |
138 | |
139 comments | |
140 array of URIs to the comments node, if any. | |
141 | |
142 tag | |
143 array of tags, if any | |
144 | |
145 author | |
146 human readable name of the entry author | |
147 | |
148 author_jid | |
149 jid of the author. This should notbe modified manually. | |
150 | |
151 author_jid_verified | |
152 true if the pubsub service confirmed that author_jid is the one of the publisher. It is | |
153 useless to modify this variable. | |
154 | |
155 title | |
156 the title of the message | |
157 | |
158 title_rich | |
159 the rich title of the message, in current text syntax. It will be automatically | |
160 converted to xhtml. | |
161 | |
162 .. _edit_conf: | |
163 | |
164 configuration | |
165 ------------- | |
166 | |
167 editor | |
168 ^^^^^^ | |
169 | |
170 Local editor used is by default the one set in ``$EDITOR`` environment variable, but you | |
171 can specify one in ``sat.conf``. To do so, you have to set the name of an editor | |
172 executable in the ``editor`` option in ``[jp]`` section. | |
173 | |
174 You can specify the args to use by using ``blog_editor_args`` option. Use | |
175 ``{content_file}`` to get the path of the main content file (the body of the blog post), | |
176 and ``{metadata_file}`` to get the path of the json metadata. | |
177 | |
178 .. sourcecode:: cfg | |
179 | |
180 [jp] | |
181 editor = kate | |
182 blog_editor_args = {content_file} {metadata_file} | |
183 | |
184 .. _edit_preview: | |
185 | |
186 preview | |
187 ^^^^^^^ | |
188 | |
189 To set the preview, you can use the options ``blog_preview_open_cmd`` and | |
190 ``blog_preview_update_cmd`` in your ``[jp]`` section. the former is the command to use to | |
191 open your browser when edition starts, and the later is the command to use when a | |
192 modification is saved. In both cases you may use ``{url}`` to set the location of local HTML file. | |
193 | |
194 This can be use to activate automatic refreshing of the page. | |
195 | |
196 For **Konqueror**, you can use its D-Bus API to do refreshing. Ensure that ``qdbus`` is | |
197 installed on your system, and enter the following lines in your ``sat.conf``: | |
198 | |
199 .. sourcecode:: cfg | |
200 | |
201 [jp] | |
202 blog_preview_open_cmd = konqueror {url} | |
203 blog_preview_update_cmd = /bin/sh -c "qdbus $(qdbus org.kde.konqueror\*) /konqueror/MainWindow_1 reload" | |
204 | |
205 For **Firefox**, you may use ``xdotool`` on X11. Once you have installed this tool, enter the | |
206 following lines in your ``sat.conf``: | |
207 | |
208 .. sourcecode:: cfg | |
209 | |
210 [jp] | |
211 blog_preview_open_cmd = firefox -new-tab {url} | |
212 blog_preview_update_cmd = /bin/sh -c "WID=$(xdotool search --name 'Mozilla Firefox' | head -1); xdotool windowactivate $WID; xdotool key F5" | |
213 | |
214 This *xdotool* technique can be adapted to other browsers. | |
215 | |
216 syntax extensions | |
217 ^^^^^^^^^^^^^^^^^^ | |
218 | |
219 A dictionary with a mapping from syntax name to file extension can be used. This can be | |
220 useful to activate the right syntax highlighting in your editor. There is a default | |
221 mapping which can be overriden. | |
222 | |
223 The mapping is set in the ``syntax_ext_dict`` option of the ``[jp]`` section of your | |
224 ``sat.conf`` file. For instance, if your prefer do your ``.markdown`` for temp files | |
225 instead of the default ``.md``, you can use this: | |
226 | |
227 .. sourcecode:: cfg | |
228 | |
229 [jp] | |
230 syntax_ext_dict = {"markdown": "markdown"} | |
231 | |
232 the first ``markdown`` is the name of the syntax (could an other syntax like ``xhtml``), | |
233 while the second if the file extension. | |
234 | |
235 preview | |
236 ======= | |
237 | |
238 This command will show the specified file in browser, and refresh it when changes are | |
239 detected. Configuration is the same as for `edit preview <edit_preview_>`_. This is can be | |
240 used if you have already started an edition with ``jp blog edit`` but forgot to use the ``-P, --preview`` arguments. | |
241 | |
242 example: | |
243 -------- | |
244 | |
245 Preview the draft at ``~/local/sat/blog/some_name/blog_something.md``:: | |
246 | |
247 $ jp blog preview ~/local/sat/blog/some_name/blog_something.md | |
248 | |
249 import | |
250 ====== | |
251 | |
252 With this command you can import an external blog in a XMPP blog at the specified pubsub | |
253 location. | |
254 | |
255 The import is done using an *importer* name and a *location* which depends of the importer | |
256 (it can be a path to a file, an URL to a blog, or something else). Use empty nothing to | |
257 get list of importers, and specify only importer name to get its description. | |
258 | |
259 By default, found images are re-uploaded to XMPP server, if you want to keep original | |
260 URLs, use the ``--no-images-upload`` option. | |
261 | |
262 Alternatively, you can re-upload images except for a specific host with ``--upload-ignore-host UPLOAD_IGNORE_HOST``. The images for the specified host will keep there original URLs while other will be uploaded to XMPP server. | |
263 | |
264 You shoud specify original blog host using ``--host HOST`` argument, this is used notably | |
265 to reconstruct relative URLs of media. | |
266 | |
267 Importers may have specific options, you can set them using the ``-o NAME VALUE, --option NAME VALUE`` argument. Check the importer description for details. | |
268 | |
269 examples: | |
270 --------- | |
271 | |
272 List available importers:: | |
273 | |
274 $ jp blog import | |
275 | |
276 Get description of ``dotclear`` importer:: | |
277 | |
278 $ jp blog import dotclear | |
279 | |
280 Import a Dotclear blog:: | |
281 | |
282 $ jp blog import dotclear /path/to/dotclear.dump | |
283 | |
284 Import a Dotclear blog without uploading images:: | |
285 | |
286 $ jp blog import --no-images-upload dotclear /path/to/dotclear.dump |