5e495579c2
Support display of a single pubsub node item; Update document README; Modularize code;
184 lines
6.9 KiB
HTML
184 lines
6.9 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">
|
|
<!-- 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" />
|
|
{% if selection %}
|
|
<style>
|
|
body {
|
|
/* background-repeat: no-repeat; */
|
|
background:
|
|
url(/img/background.svg),
|
|
linear-gradient(
|
|
to right,
|
|
rgba({{selection[0][2]}}, {{selection[0][1]}}, {{selection[0][0]}}, 0.7),
|
|
rgba({{selection[1][2]}}, {{selection[1][1]}}, {{selection[1][0]}}, 0.7)
|
|
);
|
|
}
|
|
@media (prefers-color-scheme: dark) {
|
|
body {
|
|
background:
|
|
url(/img/background.svg),
|
|
linear-gradient(
|
|
to right,
|
|
rgba({{selection[0][2]-50}}, {{selection[0][1]-50}}, {{selection[0][0]-50}}, 0.7),
|
|
rgba({{selection[1][2]-50}}, {{selection[1][1]-50}}, {{selection[1][0]-50}}, 0.7)
|
|
);
|
|
}
|
|
}
|
|
@media (max-width: 725px) and (prefers-color-scheme: dark) {
|
|
body {
|
|
background: #2b2a33;
|
|
}
|
|
}
|
|
@media (max-width: 725px) {
|
|
body {
|
|
background: #f5f5f5;
|
|
}
|
|
}
|
|
</style>
|
|
{% endif %}
|
|
</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>{{title}}</h1>
|
|
{% if filename %}
|
|
<div id="graphics">
|
|
<!-- a href="xmpp:{{jid_bare}}" -->
|
|
<img id="photo" src="/photo/{{filename}}" />
|
|
<img id="qrcode" src="/qr/{{jid_bare}}.png" />
|
|
<!-- /a -->
|
|
</div>
|
|
{% endif %}
|
|
<div id="vcard-note">
|
|
{% if note %}{{note}}{% endif %}
|
|
</div>
|
|
<!-- div>
|
|
<pre id="xmpp-uri">{{xmpp_uri}}</pre>
|
|
</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 id="conference">
|
|
{% if subject %}
|
|
<div id="subject">
|
|
<strong>🗣️ Subject</strong>
|
|
<pre>{{subject}}</pre>
|
|
</div>
|
|
{% endif %}
|
|
{% if messages %}
|
|
<div id="messages">
|
|
{% for message in messages %}
|
|
<div class="message"
|
|
id="{{message['id']}}">
|
|
<a href="#{{message['id']}}" title="{{message['timestamp']}}">💬️</a>
|
|
<strong>{{message['alias']}}</strong>
|
|
<div class="content">{{message['body']}}</div>
|
|
<!-- div class="date">{{message['timestamp']}}</div -->
|
|
<!--
|
|
% if reactions %
|
|
<div class="reactions">
|
|
% for reaction in reactions %
|
|
<span>{{reaction}}</span>
|
|
% endfor %
|
|
</div>
|
|
% endif %
|
|
-->
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% if number_of_pages %}
|
|
<div id="number-of-pages">
|
|
{% if number_of_pages > 3 %}
|
|
{% if page_number < 2 %}
|
|
<span class="inactive" id="first">First</span>
|
|
<span class="inactive">Back</span>
|
|
{% else %}
|
|
<a href="?page=1" id="first">First</a>
|
|
<a href="?page={{page_number-1}}">Back</a>
|
|
{% endif %}
|
|
<a href="?page={{page_number}}">{{page_number}}</a>
|
|
{% if page_number == number_of_pages %}
|
|
<span class="inactive">Proceed</span>
|
|
<span class="inactive" id="last">Last</span>
|
|
{% else %}
|
|
<a href="?page={{page_number+1}}">Proceed</a>
|
|
<a href="?page={{number_of_pages}}" id="last">Last</a>
|
|
{% endif %}
|
|
{% else %}
|
|
{% for number in range(number_of_pages) %}
|
|
<a href="?page={{number+1}}">{{number+1}}</a>
|
|
{% endfor %}
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
{% if previous %}
|
|
<div id="number-of-pages">
|
|
<a href="./">Previous</a>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
<div id="notice">
|
|
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
|
|
{% elif jid_kind == 'pubsub' %}
|
|
subscribe to
|
|
{% elif jid_kind == 'bot' %}
|
|
try
|
|
{% elif jid_kind == 'server' %}
|
|
explore
|
|
{% else %}
|
|
talk with
|
|
{% endif %}
|
|
<strong>{{title}}</strong>
|
|
right now.
|
|
</div>
|
|
</div>
|
|
{% if message %}
|
|
<div id="xmpp-message">{{message}}</div>
|
|
{% endif %}
|
|
</div>
|
|
</body>
|
|
</html>
|