Blasta/template/profile.xhtml
Schimon Jehudah, Adv. 0ab40eedec Python : Utilize XEP-0004: Data Forms to store configurations;
Python : Fix error in blasta_client.py (Thank you. yvo.);
XMPP   : Replace node xmpp:blasta:settings:0 by xmpp:blasta:configuration:0;
2024-09-11 07:44:18 +03:00

544 lines
23 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta / profile</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
<script src="/script/regulator.js" />
</head>
<body>
<div id="container">
<div id="header" class="row">
<h1>
<img src="/graphic/blasta.svg"/>
&nbsp;
<a href="/">
Blasta
</a>
/ profile
</h1>
<dl id="navigation">
<dd>
<a href="/">
<img alt="Main"
src="/graphic/blasta.svg"/>
</a>
</dd>
{% if jabber_id %}
<dd>
<a href="/save">Add</a>
</dd>
<dd>
<a href="/jid">Public</a>
</dd>
<dd>
<a href="/private">Private</a>
</dd>
<dd>
<a href="/read">Read</a>
</dd>
{% endif %}
<dd>
<a href="/search{% if jabber_id %}/jid/{{jabber_id}}{% endif %}">Search</a>
</dd>
<dd>
<a href="/popular">Popular</a>
</dd>
<dd>
<a href="/recent">Recent</a>
</dd>
<dd>
<a href="/disconnect">Disconnect</a>
</dd>
</dl>
</div>
<div id="main" class="row">
<div id="content">
<h2>
<img alt="💡" src="/graphic/xmpp.svg" width="18" height="18"/>
&nbsp;
PubSub bookmarks
</h2>
<p>
» Information of your Jabber ID.
</p>
<h3>
Your profile
</h3>
<p>
This page provides a general survey of your XMPP account and
stored bookmarks.
</p>
<!--
<h4 id="enrollment">
Enrollment
</h4>
<p>
Blasta does not automatically include your public bookmarks
to its database.
</p>
<p>
You have to actively accept to enroll your bookmarks to the
Blasta database.
</p>
<p>
{% if enroll == '1' %}
Click the button “Opt out”, if you want to exclude your
bookmarks in the Blasta database, and consequently not
to share your bookmarks with the public.
{% else %}
Click the button “Opt in”, if you want to include your
bookmarks in the Blasta database, and consequently share
your bookmarks with the public.
{% endif %}
</p>
<form action="/profile"
method="post">
<input id="enroll"
name="enroll"
type="hidden"
value="{% if enroll == '1' %}0{% else %}1{% endif %}"/>
<input class="submit"
type="submit"
value="{% if enroll == '1' %}Opt Out{% else %}Opt In{% endif %}"/>
<span>
You can opt {% if enroll == '1' %}in{% else %}out{% endif %}
again, at any time you want.
</span>
</form>
<p class="warning">
If you choose to cancel your enrollment (i.e. Opt out)
and a bookmark of yours is also shared by someone else,
then the bookmark be remain in the Blasta system, and
only the asociation with your <abbr title="Jabber ID">
JID</abbr> be removed.
</p>
<p class="warning">
Directories “Private” and “Read” are private and are
intended only to you.
These couple of directories are not intended to be
included in the Blasta system, and are not sharable
therefore.
</p>
-->
<h4 id="export">
Export
</h4>
<p>
Export bookmarks to a file.
</p>
<p>
<!-- TODO Add XBEL, XHTML and XML -->
<dl>
<dt>
<strong>
Private
</strong>
</dt>
<dd>
<a download="{{jabber_id}}_private.json"
href="/profile/export/private/json">
JSON</a>,
<a download="{{jabber_id}}_private.toml"
href="/profile/export/private/toml">
TOML</a>.
</dd>
<dt>
<strong>
Public
</strong>
</dt>
<dd>
<a download="{{jabber_id}}_public.json"
href="/profile/export/public/json">
JSON</a>,
<a download="{{jabber_id}}_public.toml"
href="/profile/export/public/toml">
TOML</a>.
</dd>
<dt>
<strong>
Read
</strong>
</dt>
<dd>
<a download="{{jabber_id}}_read.json"
href="/profile/export/read/json">
JSON</a>,
<a download="{{jabber_id}}_read.toml"
href="/profile/export/read/toml">
TOML</a>.
</dd>
</dl>
</p>
<h4 id="import">
Import
</h4>
<p>
Import bookmarks from a file, and choose a node to import
your bookmarks to.
</p>
<form action="/profile/import"
enctype="multipart/form-data"
id="import"
method="post">
<table>
<tr>
<td>
<strong>
<label for="file">
File
</label>
</strong>
</td>
<td>
<input id="file"
name="file"
placeholder="Select a file to import."
required=""
type="file" />
</td>
</tr>
<tr>
<td>
<strong>
<label for="node">
Node
</label>
</strong>
</td>
<td>
<input id="node-private"
name="node"
required=""
type="radio"
value="private"/>
<label for="node-private">Private</label>
<input id="node-public"
name="node"
type="radio"
value="public"/>
<label for="node-public">Public</label>
<input id="node-read"
name="node"
type="radio"
value="read"/>
<label for="node-read">Read</label>
</td>
</tr>
<tr>
<td>
<strong>
<label for="node">
Action
</label>
</strong>
</td>
<td>
<input id="merge"
disabled=""
name="merge"
type="checkbox"/>
<label for="merge"
title="Merge tags.">
Merge
</label>
<input id="override"
checked=""
disabled=""
name="override"
type="checkbox"/>
<label for="override"
title="Replace properties by the
properties of the imported entries.">
Override
</label>
(<abbr title="Selecting Override &amp; Merge
will replace properties by the properties of the imported entries, and also
merge tags.">
?
</abbr>)
</td>
</tr>
</table>
<input class="submit"
type="submit"
value="Import Bookmarks"/>
</form>
<h4 id="permissions">
Permissions
</h4>
<p>
Choose the desired
<a href="https://xmpp.org/extensions/xep-0060.html#accessmodels">
access models</a>
of your directories.
</p>
<form action="/profile"
method="post">
<table>
<tr>
<td>
<strong>
Private
</strong>
</td>
<td>
<input id="private-authorize"
{% if access_models['private'] == 'authorize' %}checked=""{% endif %}
disabled=""
name="private"
type="radio"/>
<label for="private-authorize"
title="The node owner must approve all
subscription requests, and only subscribers may retrieve items from the node.">
Authorize
</label>
</td>
<td>
<input id="private-whitelist"
{% if access_models['private'] == 'whitelist' %}checked=""{% endif %}
disabled=""
name="private"
type="radio"/>
<label for="private-whitelist"
title="An entity may subscribe or
retrieve items only if on a whitelist managed by the node owner.">
Whitelist
</label>
</td>
</tr>
<tr>
<td>
<strong>
Public
</strong>
</td>
<td>
<input id="public-open"
{% if access_models['public'] == 'open' %}checked=""{% endif %}
disabled=""
name="public"
type="radio"/>
<label for="public-open"
title="Any entity may subscribe to the
node (i.e., without the necessity for subscription approval) and any entity may
retrieve items from the node (i.e., without being subscribed).">
Open
</label>
</td>
<td>
<input id="public-presence"
{% if access_models['public'] == 'presence' %}checked=""{% endif %}
disabled=""
name="public"
type="radio"/>
<label for="public-presence"
title="Any entity with a subscription of
type 'from' or 'both' may subscribe to the node and retrieve items from the
node; this access model applies mainly to instant messaging systems (see RFC
3921).">
Presence
</label>
</td>
<td>
<input id="public-roster"
{% if access_models['public'] == 'roster' %}checked=""{% endif %}
disabled=""
name="public"
type="radio"/>
<label for="public-roster"
title="Any entity in the specified roster
group(s) may subscribe to the node and retrieve items from the node; this access
model applies mainly to instant messaging systems (see RFC 3921).">
Roster
</label>
</td>
</tr>
<tr>
<td>
<strong>
Read
</strong>
</td>
<td>
<input id="read-authorize"
{% if access_models['read'] == 'authorize' %}checked=""{% endif %}
disabled=""
name="read"
type="radio"/>
<label for="read-authorize"
title="The node owner must approve all
subscription requests, and only subscribers may retrieve items from the node.">
Authorize
</label>
</td>
<td>
<input id="read-whitelist"
{% if access_models['read'] == 'whitelist' %}checked=""{% endif %}
disabled=""
name="read"
type="radio"/>
<label for="read-whitelist"
title="An entity may subscribe or
retrieve items only if on a whitelist managed by the node owner.">
Whitelist
</label>
</td>
</tr>
</table>
<input class="submit"
disabled=""
type="submit"
value="Save Permissions"/>
<input class="submit"
disabled=""
type="reset"
value="Reset Permissions"/>
</form>
<h4 id="routine">
Routine
</h4>
<p>
Choose a routine (i.e. default) directory (i.e. node).
</p>
<form action="/profile"
method="post">
<input id="routine-private"
{% if routine == 'private' %}checked=""{% endif %}
name="routine"
required=""
type="radio"
value="private"/>
<label for="routine-private">
Private
</label>
<input id="routine-public"
{% if not routine or routine == 'public' %}checked=""{% endif %}
name="routine"
type="radio"
value="public"/>
<label for="routine-public">
Public
</label>
<input id="routine-read"
{% if routine == 'read' %}checked=""{% endif %}
name="routine"
type="radio"
value="read"/>
<label for="routine-read">
Read
</label>
<br/>
<input class="submit"
type="submit"
value="Set Routine Directory"/>
</form>
<p class="warning">
Please <a href="#export">export</a> your bookmarks before
proceeding.
</p>
<hr/>
<h4 id="termination">
Termination
</h4>
<p>
Due to security concerns, Blasta does not have a built-in
mechanism to delete nodes.
</p>
<p class="warning">
Warning! The following actions are irreversible and are
committed at your own risk!
</p>
<p>
If you want to delete your Blasta nodes from your XMPP
account, you can execute the following commands, using the
XML Console of <a href="https://gajim.org">Gajim</a>,
<a href="https://psi-im.org">Psi</a>, or
<a href="https://psi-plus.com">Psi+</a>.
</p>
<h4>
Delete your public bookmarks
</h4>
<pre>
&lt;iq type='set'
from='{{jabber_id}}'
to='{{jabber_id}}'
id='delete1'&gt;
&lt;pubsub xmlns='http://jabber.org/protocol/pubsub#owner'&gt;
&lt;delete node='urn:xmpp:bibliography:0'/&gt;
&lt;/pubsub&gt;
&lt;/iq&gt;
</pre>
<h4>
Delete your private bookmarks
</h4>
<pre>
&lt;iq type='set'
from='{{jabber_id}}'
to='{{jabber_id}}'
id='delete2'&gt;
&lt;pubsub xmlns='http://jabber.org/protocol/pubsub#owner'&gt;
&lt;delete node='xmpp:bibliography:private:0'/&gt;
&lt;/pubsub&gt;
&lt;/iq&gt;
</pre>
<h4>
Delete your reading list
</h4>
<pre>
&lt;iq type='set'
from='{{jabber_id}}'
to='{{jabber_id}}'
id='delete3'&gt;
&lt;pubsub xmlns='http://jabber.org/protocol/pubsub#owner'&gt;
&lt;delete node='xmpp:bibliography:read:0'/&gt;
&lt;/pubsub&gt;
&lt;/iq&gt;
</pre>
<br/>
<p class="quote bottom">
“Blasta bookmarks are stored on your own XMPP account.”
</p>
</div>
</div>
<div id="footer" class="row">
<dl>
<dd>
<img src="/graphic/blasta.svg" alt="logo"/>
<a href="/">blasta</a>
</dd>
<dd>
<a href="/help/about">about</a>
</dd>
<dd>
<a href="/help/about/xmpp">xmpp</a>
</dd>
<dd>
<a href="/help/about/xmpp/pubsub">pubsub</a>
</dd>
<dd>
<a href="{{journal}}">journal</a>
</dd>
<dd>
<a href="/help">help</a>
</dd>
<dd>
<a href="/help/policy">policy</a>
</dd>
<dd>
<a href="/help/feeds">rss</a>
</dd>
<dd>
<a href="/contact">contact</a>
</dd>
</dl>
</div>
</div>
</body>
</html>