CSS : Various of modifications and several fixes;

Python : Improve caching system;
Python : Support XEP-0292: vCard4 Over XMPP (Thank you. Marvin W);
SVG    : Add new icons, including characters as temporary placeholders (Thank you. Tigase);
TOML   : Add more systems and modify properties of clients;
XHTML  : Improve design and add a new page of extended vcard.
This commit is contained in:
Schimon Jehudah, Adv. 2024-10-30 22:04:05 +02:00
parent 8675f295e6
commit 373b7b1f05
24 changed files with 2980 additions and 372 deletions

View file

@ -32,7 +32,17 @@
</div>
<div id="container-of-selection">
{% if client_selection %}
<h1>{{title}}</h1>
<div id="system-title">
<a class="system-menu" href="/selection">&lt; Systems</a>
<h1>{{title}}</h1>
{% if skipped %}
<a class="system-menu" href="/download/{{software}}/all">All clients &gt;</a>
{% elif not featured %}
<a class="system-menu" href="/download/{{software}}">Featured &gt;</a>
{% else %}
<span class="system-menu" />
{% endif %}
</div>
<div id="software-menu">
{% for client in client_selection %}
<a class="system" href="#{{client['iden']}}">
@ -158,16 +168,6 @@
</span>
</div>
{% endif %}
<div class="plain-note">
XMPP clients of other devices and systems can be found at the
<a href="/selection">main selection</a> page.
</div>
{% if skipped %}
<div class="plain-note">
Display the <a href="/download/{{software}}/all">
complete list</a> of XMPP clients for {{title}}.
</div>
{% endif %}
<br/>
<hr/>
<dl id="selection">
@ -201,6 +201,9 @@
{% if 'otr' in client['properties'] %}
<span>🔏️ OTR</span>
{% endif %}
{% if 'plugin' in client['properties'] %}
<span>🧩️ Plugins</span>
{% endif %}
{% if 'pubsub' in client['properties'] %}
<span>📡️ PubSub</span>
{% endif %}

View file

@ -6,15 +6,15 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<title>{{brand_name}}: {{action}} {{title}}</title>
<meta name="description" content="{{action}} {{title}}" />
<title>{{brand_name}}: {{action}} {% if alias %}{{alias}}{% else %}{{title}}{% endif %}</title>
<meta name="description" content="{{action}} {% if alias %}{{alias}}{% else %}{{title}}{% endif %}" />
<meta name="generator" content="Fast And Sleek Invite" />
<meta name="uri" content="{{xmpp_uri}}" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta property="og:description" content="{{action}} {{title}}" />
<meta property="og:description" content="{{action}} {% if alias %}{{alias}}{% else %}{{title}}{% endif %}" />
<meta property="og:image" content="/photo/{{filename}}" />
<meta property="og:site_name" content="{{brand_name}}" />
<meta property="og:title" content="{{title}}" />
<meta property="og:title" content="{% if alias %}{{alias}}{% else %}{{title}}{% endif %}" />
<meta property="og:type" content="website" />
<meta property="og:url" content="{{url}}" />
<link rel="alternate icon" href="/img/favicon.ico" type="image/x-icon" />
@ -77,12 +77,12 @@
<!-- /a -->
</div>
{% endif %}
{% if note %}
<h3>{{note}}</h3>
{% endif %}
<div>
<pre id="xmpp-uri">{{xmpp_uri}}</pre>
<div id="vcard-note">
{% if note %}{{note}}{% endif %}
</div>
<!-- div>
<pre id="xmpp-uri">{{xmpp_uri}}</pre>
</div -->
{% if exception %}
<div>
<code>{{exception}}</code>
@ -102,20 +102,18 @@
Preview journal OR Preview group chat
</a>
</div -->
{% if count or jid_kind in ('conference', 'mix', 'muc') %}
<div id="count">
<a href="{{view_href}}">
{% if count %}
{{count}} {{instance}}
{% elif jid_kind in ('conference', 'mix', 'muc') %}
Preview
{% endif %}
</a>
</div>
{% endif %}
<div id="count">
{% if count_item or count_message %}
<a href="{{view_href}}">{% if count_item %}{{count_item}} {{instance}}{% elif count_message %}Preview{% endif %}</a>
<span></span>
{% endif %}
{% if vcard4 %}
<a href="/c/{{jid_bare}}">my profile</a>
{% endif %}
</div>
</div>
<div id="notice">
If you already have <strong>{% if chat_client %}{{chat_client}}{% else %}an XMPP Client{% endif %}</strong> you can
If you already have <strong>{% if news_client and jid_kind == 'pubsub' %}{{news_client}}{% elif chat_client %}{{chat_client}}{% else %}an XMPP Client{% endif %}</strong> you can
<br/>
{% if jid_kind in ('conference', 'mix', 'muc') %}
join to

View file

@ -76,14 +76,10 @@
</div>
{% endif %}
<div class="link">
<a href="{{entry['href']}}">Source</a>
<a href="/d/{{jid_bare}}/{{node_name}}/{{entry['id']}}"
title="Permalink (i.e. permanent link)"
class="permalink">
🔗️
</a>
<a href="{{entry['href']}}">
{{entry['title']}}
</a>
class="permalink">Permalink</a>
</div>
</div>
{% endfor %}

135
xhtml/vcard.xhtml Normal file
View file

@ -0,0 +1,135 @@
<?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">
<!-- Kayla (Céile) XMPP Invite -->
<!-- Zenya (Xenia) XMPP Invite -->
<!-- Fast And Sleek Invite (FASI) -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<title>{{brand_name}}: {{action}} {% if alias %}{{alias}}{% else %}{{title}}{% endif %}</title>
<meta name="description" content="{{action}} {% if alias %}{{alias}}{% else %}{{title}}{% endif %}" />
<meta name="generator" content="Fast And Sleek Invite" />
<meta name="uri" content="{{xmpp_uri}}" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta property="og:description" content="{{action}} {% if alias %}{{alias}}{% else %}{{title}}{% endif %}" />
<meta property="og:image" content="/photo/{{filename}}" />
<meta property="og:site_name" content="{{brand_name}}" />
<meta property="og:title" content="{% if alias %}{{alias}}{% else %}{{title}}{% endif %}" />
<meta property="og:type" content="website" />
<meta property="og:url" content="{{url}}" />
<link rel="alternate icon" href="/img/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/img/favicon.svg" type="image/svg+xml" />
<link rel="stylesheet" href="/css/stylesheet.css" media="screen" type="text/css" />
</head>
<body>
<div id="overlay">
<div id="bar">
<a href="{{brand_site}}">
<img id="logo" src="/img/logo-wordmark-horizontal.svg" />
</a>
<a id="download" href="/download">
Download
</a>
</div>
<div id="container">
<div id="profile">
<h1>
{% if 'fn' in vcard_info and vcard_info['fn'] %}
{{vcard_info['fn']}}
{% else %}
{{jid_bare}}
{% endif %}
</h1>
{% if 'org' in vcard_info and vcard_info['org'] %}
<h2>{{vcard_info['org']}}</h2>
{% endif %}
{% if 'note' in vcard_info and vcard_info['note'] %}
<div id="vcard-note-full">{{vcard_info['note']}}</div>
{% endif %}
<div id="vcard-links">
{% if 'email' in vcard_info and vcard_info['email'] %}
<a class="vcard-link" href="mailto:{{vcard_info['email']}}">✉️</a>
{% endif %}
{% if 'impp' in vcard_info and vcard_info['impp'] %}
<a class="vcard-link" href="{{vcard_info['impp']}}">💬️</a>
{% endif %}
<a class="vcard-link" href="xmpp:{{xmpp_uri}}">💡️</a>
{% if 'url' in vcard_info and vcard_info['url'] %}
<a class="vcard-link" href="{{vcard_info['url']}}">🔗️</a>
{% endif %}
</div>
<div id="vcard-links-extra">
{% if 'movim' in vcard_info and vcard_info['movim'] %}
<h3>Movim</h3>
{% for i in vcard_info['movim'] %}
<a href="{{i['uri']}}">{{i['label']}}</a>
{% endfor %}
{% endif %}
{% if 'journal' in vcard_info and vcard_info['journal'] %}
<h3>Journal</h3>
{% for i in vcard_info['journal'] %}
<a href="{{i['uri']}}">{{i['label']}}</a>
{% endfor %}
{% endif %}
{% if 'gallery' in vcard_info and vcard_info['gallery'] %}
<h3>Gallery</h3>
{% for i in vcard_info['gallery'] %}
<a href="{{i['uri']}}">{{i['label']}}</a>
{% endfor %}
{% endif %}
{% if 'peertube' in vcard_info and vcard_info['peertube'] %}
<h3>PeerTube</h3>
{% for i in vcard_info['peertube'] %}
<a href="{{i['uri']}}">{{i['label']}}</a>
{% endfor %}
{% endif %}
{% if 'code' in vcard_info and vcard_info['code'] %}
<h3>Code</h3>
{% for i in vcard_info['code'] %}
<a href="{{i['uri']}}">{{i['label']}}</a>
{% endfor %}
{% endif %}
</div>
<div>
{% for i in vcard_info %}
<!-- a href="{{vcard_info[i]}}">{{i}}</a -->
{% endfor %}
</div>
{% if exception %}
<div>
<code>{{exception}}</code>
</div>
{% endif %}
{% if links %}
<div id="action">
{% for link in links %}
<a href="{{link['href']}}" id="{{link['iden']}}">
{{link['name']}}
</a>
{% endfor %}
</div>
{% endif %}
<!-- div>
<a id="preview" href="/view/{{jid_bare}}">
Preview journal OR Preview group chat
</a>
</div -->
{% if count or jid_kind in ('conference', 'mix', 'muc') %}
<div id="count">
<a href="{{view_href}}">
{% if count %}
{{count}} {{instance}}
{% elif jid_kind in ('conference', 'mix', 'muc') %}
Preview
{% endif %}
</a>
</div>
{% endif %}
</div>
</div>
{% if message %}
<div id="xmpp-message">{{message}}</div>
{% endif %}
</div>
</body>
</html>