Mercurial > libervia-backend
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/jp/blog.rst Fri Feb 22 18:58:59 2019 +0100 @@ -0,0 +1,286 @@ +.. highlight:: sh + +================================ +blog: (micro)blogging management +================================ + +Blog commands are high level tools to handle an XMPP blog. +They are using the generic pubsub arguments + +set +=== + +publish a blog item. + +:ref:`pubsub_common` commands are used to specify the destination item. + +``stdin`` is used to get the body of the blog post. + +examples +-------- + +Create a blog post with a body, a subject, 2 tags, and with comments allowed:: + + $ echo "This is post body" | jp blog set -T "This is a test message" -t test -t jp -C + +Create a blog post with rich content using `markdown` syntax, and no subject:: + + $ echo "This is a **rich** body" | jp blog set -S markdown + +get +=== + +get command retrieves one or move blog post from specified location (by default the +personal blog of the profile). + +output can be customised to only retrieve some keys, or to use a specific template. + +:ref:`pubsub_common` commands are used to specify the blog location. + +examples +-------- + +Retrieve personal blog of the profile using `fancy` output with a verbosity of 1 (to show +publication date):: + + $ jp blog get -O fancy -v + +Retrieve *title* and *publication date* of last 3 blog posts from the blog at +https://www.goffi.org:: + + $ jp blog get -m 3 -u https://www.goffi.org -k title -k published + +Retrieve last 2 posts of personal blog, and output them in browser using default +template:: + + $ jp blog get -m 2 -O template --oo browser + +edit +==== + +With edit command you can create a new blog post or modify an existing one using your +local editor (the one set in ``$EDITOR``). You'll edit 2 things: the body of the post, and +the metadata which contain things like title, comments infos, or tags. + +For some common editors (like **vim** or **Emacs**), the editor will be automatially +opened using a split screen with *body* in one side, and metadata on the other. If the +editor is not supported or doesn't support split screen, you'll edit first the *body*, then +the *metadata*. You can also specify editor and arguments in ``sat.conf``, see +`configuration <edit_conf_>`_ below + +If you don't change anything or publish an empty blog post, the edition will be cancelled. + +In the metadata (see `below <edit_metadata_>`_ for details), you can use +``"publish": false`` to forbid the publication. In this case, when you'll save +your modification and quit your editor, the blog post will not be published but +saved locally in a draft. To continue your work later, just start your edition with the +``-D, --current`` option like this:: + + $ jp blog edit -D + +Note that item location must be re-specified if it has been used to create the draft, so +you'll have to reproduce the arguments to specify service, node or item (or the URL), +other data like tags will be restored from draft file of metadata. + +You can specify the syntax by using ``-S SYNTAX, --syntax SYNTAX``. If not specified, the +syntax set in your parameters will be used. + +When you edit a blog post, it is often useful to activate the ``-P, --preview`` option, +this will launch a web browser and refresh the page each time you save a modification in +your editor. By default, the browser registered as default in your system will be used, +and a new tab will be opened on each modification. This is not ideal, and we recommand to +set you configuration to activate automatic refreshing of the page instead, see `preview +configuration <edit_preview_>`_ below to see how to do. + +examples +-------- + +Edit a new blog post with comments on your personal blog, using default syntax and preview:: + + $ jp blog edit -P --comments + +Modifiy a draft previously saved using the ``"publish": false`` metadata:: + + $ jp blog edit -D + +Correct a typo in your last published blog post:: + + $ jp blog edit --last-item + +Edit the blog item at an HTTPS URL using XHTML syntax:: + + $ jp blog edit -u https://www.example.net/some_xmpp_blog_article.html -S xhtml + +Create a new blog post on a XMPP blog node using its HTTPS URL (supposing here that +https://example.net is a XMPP blog node):: + + $ jp blog edit -u https://www.example.net + +.. _edit_metadata: + +metadata +-------- + +Metadata is set using a JSON object. The key you can use are: + +publish + boolean indicating if item can be published. Set to ``false`` if you want to work on a + draft and to avoid accidental publication. + +atom_id + atom entry identifier. This should not be modified manually. + +published + time of initial publication (unix time). This should not be modified manually. + +language + language of the content + +comments + array of URIs to the comments node, if any. + +tag + array of tags, if any + +author + human readable name of the entry author + +author_jid + jid of the author. This should notbe modified manually. + +author_jid_verified + true if the pubsub service confirmed that author_jid is the one of the publisher. It is + useless to modify this variable. + +title + the title of the message + +title_rich + the rich title of the message, in current text syntax. It will be automatically + converted to xhtml. + +.. _edit_conf: + +configuration +------------- + +editor +^^^^^^ + +Local editor used is by default the one set in ``$EDITOR`` environment variable, but you +can specify one in ``sat.conf``. To do so, you have to set the name of an editor +executable in the ``editor`` option in ``[jp]`` section. + +You can specify the args to use by using ``blog_editor_args`` option. Use +``{content_file}`` to get the path of the main content file (the body of the blog post), +and ``{metadata_file}`` to get the path of the json metadata. + +.. sourcecode:: cfg + + [jp] + editor = kate + blog_editor_args = {content_file} {metadata_file} + +.. _edit_preview: + +preview +^^^^^^^ + +To set the preview, you can use the options ``blog_preview_open_cmd`` and +``blog_preview_update_cmd`` in your ``[jp]`` section. the former is the command to use to +open your browser when edition starts, and the later is the command to use when a +modification is saved. In both cases you may use ``{url}`` to set the location of local HTML file. + +This can be use to activate automatic refreshing of the page. + +For **Konqueror**, you can use its D-Bus API to do refreshing. Ensure that ``qdbus`` is +installed on your system, and enter the following lines in your ``sat.conf``: + +.. sourcecode:: cfg + + [jp] + blog_preview_open_cmd = konqueror {url} + blog_preview_update_cmd = /bin/sh -c "qdbus $(qdbus org.kde.konqueror\*) /konqueror/MainWindow_1 reload" + +For **Firefox**, you may use ``xdotool`` on X11. Once you have installed this tool, enter the +following lines in your ``sat.conf``: + +.. sourcecode:: cfg + + [jp] + blog_preview_open_cmd = firefox -new-tab {url} + blog_preview_update_cmd = /bin/sh -c "WID=$(xdotool search --name 'Mozilla Firefox' | head -1); xdotool windowactivate $WID; xdotool key F5" + +This *xdotool* technique can be adapted to other browsers. + +syntax extensions +^^^^^^^^^^^^^^^^^^ + +A dictionary with a mapping from syntax name to file extension can be used. This can be +useful to activate the right syntax highlighting in your editor. There is a default +mapping which can be overriden. + +The mapping is set in the ``syntax_ext_dict`` option of the ``[jp]`` section of your +``sat.conf`` file. For instance, if your prefer do your ``.markdown`` for temp files +instead of the default ``.md``, you can use this: + +.. sourcecode:: cfg + + [jp] + syntax_ext_dict = {"markdown": "markdown"} + +the first ``markdown`` is the name of the syntax (could an other syntax like ``xhtml``), +while the second if the file extension. + +preview +======= + +This command will show the specified file in browser, and refresh it when changes are +detected. Configuration is the same as for `edit preview <edit_preview_>`_. This is can be +used if you have already started an edition with ``jp blog edit`` but forgot to use the ``-P, --preview`` arguments. + +example: +-------- + +Preview the draft at ``~/local/sat/blog/some_name/blog_something.md``:: + + $ jp blog preview ~/local/sat/blog/some_name/blog_something.md + +import +====== + +With this command you can import an external blog in a XMPP blog at the specified pubsub +location. + +The import is done using an *importer* name and a *location* which depends of the importer +(it can be a path to a file, an URL to a blog, or something else). Use empty nothing to +get list of importers, and specify only importer name to get its description. + +By default, found images are re-uploaded to XMPP server, if you want to keep original +URLs, use the ``--no-images-upload`` option. + +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. + +You shoud specify original blog host using ``--host HOST`` argument, this is used notably +to reconstruct relative URLs of media. + +Importers may have specific options, you can set them using the ``-o NAME VALUE, --option NAME VALUE`` argument. Check the importer description for details. + +examples: +--------- + +List available importers:: + + $ jp blog import + +Get description of ``dotclear`` importer:: + + $ jp blog import dotclear + +Import a Dotclear blog:: + + $ jp blog import dotclear /path/to/dotclear.dump + +Import a Dotclear blog without uploading images:: + + $ jp blog import --no-images-upload dotclear /path/to/dotclear.dump