2013-07-29 23:03:31 +02:00
|
|
|
{% extends "zerver/base.html" %}
|
2019-10-23 07:46:34 +02:00
|
|
|
{% set entrypoint = "app" %}
|
2012-10-16 06:03:29 +02:00
|
|
|
{# The app itself. #}
|
|
|
|
{# Includes some other templates as tabs. #}
|
2012-11-02 16:59:54 +01:00
|
|
|
|
2019-05-17 06:08:52 +02:00
|
|
|
{% block meta_viewport %}
|
2021-04-21 00:46:14 +02:00
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
2019-05-17 06:08:52 +02:00
|
|
|
{% endblock %}
|
|
|
|
|
2012-09-24 17:17:41 +02:00
|
|
|
{% block customhead %}
|
2021-04-21 00:46:14 +02:00
|
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
2023-01-25 00:08:42 +01:00
|
|
|
<link href="{{ static('images/logo/apple-touch-icon-precomposed.png') }}" rel="apple-touch-icon-precomposed" />
|
2018-07-06 23:31:53 +02:00
|
|
|
<style>
|
2019-09-20 06:43:04 +02:00
|
|
|
#app-loading {
|
2021-06-25 04:39:29 +02:00
|
|
|
font-size: 16px;
|
2023-03-24 00:09:48 +01:00
|
|
|
background-color: hsl(0, 0%, 94%);
|
2018-05-01 18:46:38 +02:00
|
|
|
position: fixed;
|
|
|
|
height: 100%;
|
|
|
|
width: 100%;
|
|
|
|
padding: 10px;
|
|
|
|
top: 0px;
|
|
|
|
left: 0px;
|
2024-06-23 03:43:37 +02:00
|
|
|
z-index: 200;
|
2018-05-01 18:46:38 +02:00
|
|
|
}
|
2021-06-25 04:39:29 +02:00
|
|
|
#app-loading-middle-content, #app-loading-bottom-content {
|
|
|
|
position: absolute;
|
|
|
|
left: 50%;
|
|
|
|
top: 50%;
|
|
|
|
transform: translate(-50%, -50%);
|
|
|
|
padding: 10px;
|
|
|
|
}
|
|
|
|
#app-loading-middle-content h3 {
|
|
|
|
text-align: center;
|
|
|
|
}
|
2022-06-03 19:02:17 +02:00
|
|
|
@keyframes showAtEnd {
|
|
|
|
99% {
|
|
|
|
visibility: hidden;
|
|
|
|
}
|
|
|
|
100% {
|
|
|
|
visibility: visible;
|
|
|
|
}
|
|
|
|
}
|
2021-06-25 04:39:29 +02:00
|
|
|
#app-loading-bottom-content {
|
|
|
|
top: unset;
|
|
|
|
bottom: 20px;
|
2022-06-03 19:02:17 +02:00
|
|
|
animation: 7s showAtEnd;
|
|
|
|
animation-fill-mode: forwards;
|
|
|
|
visibility: hidden;
|
2021-11-06 05:01:39 +01:00
|
|
|
}
|
2023-06-26 01:24:01 +02:00
|
|
|
#app-loading-error {
|
|
|
|
display: flex;
|
|
|
|
height: 100vh;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
visibility: hidden;
|
|
|
|
}
|
2022-11-25 21:55:06 +01:00
|
|
|
:root.dark-theme #app-loading {
|
2023-03-24 00:09:48 +01:00
|
|
|
background-color: hsl(0, 0%, 11%);
|
2021-07-06 23:57:17 +02:00
|
|
|
color: hsl(236, 33%, 90%);
|
2021-06-25 04:39:29 +02:00
|
|
|
}
|
2023-05-09 23:21:22 +02:00
|
|
|
@media (prefers-color-scheme: dark) {
|
|
|
|
:root.color-scheme-automatic #app-loading {
|
2023-05-10 02:21:31 +02:00
|
|
|
background-color: hsl(0, 0%, 11%);
|
2023-05-09 23:21:22 +02:00
|
|
|
color: hsl(236, 33%, 90%);
|
|
|
|
}
|
|
|
|
}
|
2023-01-24 09:43:10 +01:00
|
|
|
|
|
|
|
.app-loading-spinner-container {
|
|
|
|
position: relative;
|
|
|
|
margin: auto;
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
.app-loading-logo {
|
|
|
|
height: 64px;
|
|
|
|
padding: 10px;
|
|
|
|
}
|
|
|
|
@keyframes zspinner {
|
|
|
|
to {transform: rotate(360deg);}
|
|
|
|
}
|
|
|
|
.app-loading-spinner:before {
|
|
|
|
content: '';
|
|
|
|
box-sizing: border-box;
|
|
|
|
position: absolute;
|
|
|
|
width: 84px;
|
|
|
|
height: 84px;
|
|
|
|
border-radius: 50%;
|
|
|
|
border: 4px solid hsl(0,0%,94%);
|
|
|
|
border-top-color: hsl(0,0%,52%);
|
|
|
|
animation: zspinner 1s linear infinite;
|
|
|
|
}
|
2023-05-02 05:08:01 +02:00
|
|
|
|
|
|
|
/* Bootstrap 'a' tag styles for styling reload link */
|
|
|
|
a#reload-lnk:focus {
|
|
|
|
outline: thin dotted #333;
|
|
|
|
outline: 5px auto -webkit-focus-ring-color;
|
|
|
|
outline-offset: -2px;
|
|
|
|
}
|
|
|
|
a#reload-lnk:hover,
|
|
|
|
a#reload-lnk:active {
|
|
|
|
outline: 0;
|
|
|
|
}
|
|
|
|
a#reload-lnk {
|
|
|
|
color: #0088cc;
|
|
|
|
text-decoration: none;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
a#reload-lnk:hover,
|
|
|
|
a#reload-lnk:focus {
|
|
|
|
color: #005580;
|
|
|
|
text-decoration: underline;
|
|
|
|
}
|
2018-05-01 18:46:38 +02:00
|
|
|
</style>
|
2012-09-24 17:17:41 +02:00
|
|
|
{% endblock %}
|
2018-05-01 18:46:38 +02:00
|
|
|
|
2012-09-24 17:17:41 +02:00
|
|
|
{% block content %}
|
2018-12-21 18:21:37 +01:00
|
|
|
<div id="feedback_container" class="new-style">
|
|
|
|
</div>
|
2017-11-01 22:11:15 +01:00
|
|
|
|
2019-09-20 06:43:04 +02:00
|
|
|
<div id="app-loading">
|
2021-06-25 04:39:29 +02:00
|
|
|
<div id="app-loading-middle-content">
|
2023-01-24 09:43:10 +01:00
|
|
|
<div class="app-loading-spinner-container">
|
|
|
|
<div class="app-loading-spinner"></div>
|
2023-02-03 19:48:00 +01:00
|
|
|
<svg class="app-loading-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 773.12 773.12"><linearGradient id="a" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#50adff"/><stop offset="1" stop-color="#7877fc"/></linearGradient><circle cx="386.56" cy="386.56" r="386.56" fill="url(#a)"/><path d="M566.66 527.25c0 33.03-24.23 60.05-53.84 60.05H260.29c-29.61 0-53.84-27.02-53.84-60.05 0-20.22 9.09-38.2 22.93-49.09l134.37-120c2.5-2.14 5.74 1.31 3.94 4.19l-49.29 98.69c-1.38 2.76.41 6.16 3.25 6.16h191.18c29.61 0 53.83 27.03 53.83 60.05zm0-281.39c0 20.22-9.09 38.2-22.93 49.09l-134.37 120c-2.5 2.14-5.74-1.31-3.94-4.19l49.29-98.69c1.38-2.76-.41-6.16-3.25-6.16H260.29c-29.61 0-53.84-27.02-53.84-60.05s24.23-60.05 53.84-60.05h252.54c29.61 0 53.83 27.02 53.83 60.05z" fill="#fff"/></svg>
|
2021-06-25 04:39:29 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="app-loading-bottom-content">
|
2023-06-26 01:24:01 +02:00
|
|
|
<p>{% trans %}If this message does not go away, try <a class="reload-lnk">reloading</a> the page.{% endtrans %}</p>
|
|
|
|
</div>
|
|
|
|
<div id="app-loading-error">
|
|
|
|
<p>{% trans %}Error loading Zulip. Try <a class="reload-lnk">reloading</a> the page.{% endtrans %}</p>
|
2021-06-25 04:39:29 +02:00
|
|
|
</div>
|
2023-06-26 01:24:01 +02:00
|
|
|
<script nonce="{{ csp_nonce }}">
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
|
|
function reload() {
|
2024-06-08 00:39:47 +02:00
|
|
|
window.location.reload(true);
|
2023-06-26 01:24:01 +02:00
|
|
|
}
|
|
|
|
document.querySelectorAll('.reload-lnk').forEach(lnk => lnk.addEventListener('click', reload));
|
|
|
|
});
|
|
|
|
</script>
|
2013-11-25 23:05:08 +01:00
|
|
|
</div>
|
|
|
|
|
2023-04-28 02:19:36 +02:00
|
|
|
<div id="tooltip-templates-container"></div>
|
2024-04-30 15:03:47 +02:00
|
|
|
<div id="channels_overlay_container"></div>
|
2023-04-18 04:48:39 +02:00
|
|
|
<div id="groups_overlay_container"></div>
|
2021-06-10 19:31:22 +02:00
|
|
|
<div id="drafts_table"></div>
|
2023-04-14 21:35:56 +02:00
|
|
|
<div id="scheduled_messages_overlay_container"></div>
|
2017-06-22 12:43:49 +02:00
|
|
|
<div id="settings_overlay_container" class="overlay" data-overlay="settings" aria-hidden="true">
|
2016-12-03 01:12:52 +01:00
|
|
|
</div>
|
2024-03-01 15:05:41 +01:00
|
|
|
<div id="message-edit-history-overlay-container"></div>
|
2023-05-17 19:38:03 +02:00
|
|
|
<div class="informational-overlays overlay new-style" data-overlay="informationalOverlays" aria-hidden="true">
|
2023-10-16 17:49:57 +02:00
|
|
|
<div class="overlay-content overlay-container">
|
2023-05-17 19:38:03 +02:00
|
|
|
<div class="overlay-tabs">
|
|
|
|
<span class="exit">×</span>
|
|
|
|
</div>
|
|
|
|
<div class="overlay-body">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2023-05-19 23:41:19 +02:00
|
|
|
|
2023-05-19 12:25:09 +02:00
|
|
|
<div id="user-profile-modal-holder"></div>
|
2023-05-19 23:41:19 +02:00
|
|
|
|
2023-11-08 18:59:33 +01:00
|
|
|
<div id="about-zulip-modal-container"></div>
|
|
|
|
|
2024-02-13 11:46:05 +01:00
|
|
|
<div id="read-receipts-modal-container"></div>
|
|
|
|
|
2023-05-19 23:41:19 +02:00
|
|
|
<audio id="user-notification-sound-audio">
|
|
|
|
<source class="notification-sound-source-ogg" type="audio/ogg" />
|
|
|
|
<source class="notification-sound-source-mp3" type="audio/mpeg" />
|
|
|
|
</audio>
|
|
|
|
<audio id="realm-default-notification-sound-audio">
|
|
|
|
<source class="notification-sound-source-ogg" type="audio/ogg" />
|
|
|
|
<source class="notification-sound-source-mp3" type="audio/mpeg" />
|
|
|
|
</audio>
|
|
|
|
|
2023-05-19 12:38:29 +02:00
|
|
|
<div class="alert-box">
|
|
|
|
<div class="alert alert_sidebar alert-error home-error-bar" id="connection-error">
|
|
|
|
<div class="exit"></div>
|
|
|
|
<strong class="message">{{ _('Unable to connect to Zulip.') }}</strong>
|
|
|
|
{{ _('Updates may be delayed.') }}
|
|
|
|
{{ _('Retrying soon…') }}
|
|
|
|
<a class="restart_get_events_button">{{ _('Try now.') }}</a>
|
|
|
|
</div>
|
|
|
|
<div class="alert alert_sidebar alert-error home-error-bar" id="zephyr-mirror-error">
|
|
|
|
<div class="exit"></div>
|
|
|
|
{# The below isn't tagged for translation
|
|
|
|
intentionally, because the feature is only used at
|
|
|
|
MIT. #}
|
|
|
|
<strong>Your Zephyr mirror is not working.</strong>
|
|
|
|
<span id="normal-zephyr-mirror-error-text">
|
|
|
|
We recommend that
|
|
|
|
you <a class="webathena_login">give Zulip the ability to mirror the messages for you via
|
|
|
|
Webathena</a>. If you'd prefer, you can instead
|
2024-01-11 22:13:43 +01:00
|
|
|
<a href="/zephyr-mirror/" target="_blank" rel="noopener noreferrer">run the
|
2023-05-19 12:38:29 +02:00
|
|
|
Zephyr mirror script yourself</a> in a screen
|
|
|
|
session.
|
|
|
|
</span>
|
|
|
|
<span id="desktop-zephyr-mirror-error-text" class="notdisplayed">
|
|
|
|
To fix this, you'll need to use the web interface.
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div class="alert alert_sidebar alert-error home-error-bar" id="home-error"></div>
|
|
|
|
<div class="alert alert_sidebar alert-error home-error-bar" id="reloading-application"></div>
|
|
|
|
<div class="alert alert_sidebar" id="request-progress-status-banner">
|
|
|
|
<div class="alert-zulip-logo">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 773.12 773.12">
|
|
|
|
<circle cx="386.56" cy="386.56" r="386.56"></circle>
|
|
|
|
<path d="M566.66 527.25c0 33.03-24.23 60.05-53.84 60.05H260.29c-29.61 0-53.84-27.02-53.84-60.05 0-20.22 9.09-38.2 22.93-49.09l134.37-120c2.5-2.14 5.74 1.31 3.94 4.19l-49.29 98.69c-1.38 2.76.41 6.16 3.25 6.16h191.18c29.61 0 53.83 27.03 53.83 60.05zm0-281.39c0 20.22-9.09 38.2-22.93 49.09l-134.37 120c-2.5 2.14-5.74-1.31-3.94-4.19l49.29-98.69c1.38-2.76-.41-6.16-3.25-6.16H260.29c-29.61 0-53.84-27.02-53.84-60.05s24.23-60.05 53.84-60.05h252.54c29.61 0 53.83 27.02 53.83 60.05z"></path>
|
|
|
|
</svg>
|
|
|
|
</div>
|
|
|
|
<div class="loading-indicator"></div>
|
|
|
|
<div class="success-indicator">
|
|
|
|
<i class="fa fa-check"></i>
|
|
|
|
</div>
|
|
|
|
<div class="alert-content"></div>
|
|
|
|
<div class="exit"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2017-11-01 22:11:15 +01:00
|
|
|
|
2023-05-20 16:30:21 +02:00
|
|
|
<div id="navbar-fixed-container">
|
|
|
|
<div id="navbar_alerts_wrapper"></div>
|
|
|
|
<div id="header-container"></div>
|
|
|
|
</div>
|
2014-01-15 17:11:37 +01:00
|
|
|
|
2014-02-13 22:40:40 +01:00
|
|
|
<div class="app">
|
2018-01-27 18:30:55 +01:00
|
|
|
<div class="app-main">
|
2021-06-29 09:48:40 +02:00
|
|
|
<div class="column-left" id="left-sidebar-container">
|
2018-01-27 18:30:55 +01:00
|
|
|
</div>
|
|
|
|
<div class="column-middle">
|
2022-11-21 03:52:18 +01:00
|
|
|
<div class="column-middle-inner">
|
2023-09-06 23:39:16 +02:00
|
|
|
<div id="recent_view">
|
2023-09-06 23:40:00 +02:00
|
|
|
<div class="recent_view_container">
|
2023-09-06 23:38:15 +02:00
|
|
|
<div id="recent_view_table"></div>
|
2024-06-03 12:05:29 +02:00
|
|
|
</div>
|
|
|
|
<table id="recent-view-content-table">
|
|
|
|
<tbody data-empty="{{ _('No conversations match your filters.') }}" id="recent-view-content-tbody"></tbody>
|
|
|
|
</table>
|
|
|
|
<div id="recent_view_bottom_whitespace">
|
|
|
|
<div class="bottom-messages-logo">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 773.12 773.12">
|
|
|
|
<circle cx="386.56" cy="386.56" r="386.56"/>
|
|
|
|
<path d="M566.66 527.25c0 33.03-24.23 60.05-53.84 60.05H260.29c-29.61 0-53.84-27.02-53.84-60.05 0-20.22 9.09-38.2 22.93-49.09l134.37-120c2.5-2.14 5.74 1.31 3.94 4.19l-49.29 98.69c-1.38 2.76.41 6.16 3.25 6.16h191.18c29.61 0 53.83 27.03 53.83 60.05zm0-281.39c0 20.22-9.09 38.2-22.93 49.09l-134.37 120c-2.5 2.14-5.74-1.31-3.94-4.19l49.29-98.69c1.38-2.76-.41-6.16-3.25-6.16H260.29c-29.61 0-53.84-27.02-53.84-60.05s24.23-60.05 53.84-60.05h252.54c29.61 0 53.83 27.02 53.83 60.05z"/>
|
|
|
|
</svg>
|
2022-02-25 06:08:08 +01:00
|
|
|
</div>
|
2024-06-03 12:05:29 +02:00
|
|
|
<div id="recent_view_loading_messages_indicator"></div>
|
|
|
|
</div>
|
|
|
|
<!-- Don't show the banner until we have some messages loaded. -->
|
|
|
|
<div class="recent-view-load-more-container main-view-banner info notvisible">
|
|
|
|
<div class="last-fetched-message banner_content">{{ _('This view is still loading messages.') }}</div>
|
|
|
|
<button class="fetch-messages-button main-view-banner-action-button right_edge notvisible">
|
|
|
|
<div class="loading-indicator"></div>
|
|
|
|
<span class="button-label">{{ _('Load more') }}</span>
|
|
|
|
</button>
|
2020-07-05 12:19:09 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
2023-08-09 07:23:30 +02:00
|
|
|
<div id="inbox-view">
|
|
|
|
<div class="inbox-container">
|
|
|
|
<div id="inbox-pane"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2022-11-21 03:52:18 +01:00
|
|
|
<div id="message_feed_container">
|
2023-08-14 20:32:53 +02:00
|
|
|
<div class="message-feed" id="main_div">
|
2021-07-07 18:41:35 +02:00
|
|
|
<div class="top-messages-logo">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 773.12 773.12">
|
|
|
|
<circle cx="386.56" cy="386.56" r="386.56"/>
|
|
|
|
<path d="M566.66 527.25c0 33.03-24.23 60.05-53.84 60.05H260.29c-29.61 0-53.84-27.02-53.84-60.05 0-20.22 9.09-38.2 22.93-49.09l134.37-120c2.5-2.14 5.74 1.31 3.94 4.19l-49.29 98.69c-1.38 2.76.41 6.16 3.25 6.16h191.18c29.61 0 53.83 27.03 53.83 60.05zm0-281.39c0 20.22-9.09 38.2-22.93 49.09l-134.37 120c-2.5 2.14-5.74-1.31-3.94-4.19l49.29-98.69c1.38-2.76-.41-6.16-3.25-6.16H260.29c-29.61 0-53.84-27.02-53.84-60.05s24.23-60.05 53.84-60.05h252.54c29.61 0 53.83 27.02 53.83 60.05z"/>
|
|
|
|
</svg>
|
|
|
|
</div>
|
|
|
|
<div id="loading_older_messages_indicator"></div>
|
|
|
|
<div id="page_loading_indicator"></div>
|
2022-01-19 11:03:00 +01:00
|
|
|
<div id="message_feed_errors_container"></div>
|
2024-01-17 07:53:40 +01:00
|
|
|
<div id="message-lists-container"></div>
|
2023-09-26 19:33:53 +02:00
|
|
|
<div id="scheduled_message_indicator">
|
|
|
|
</div>
|
2024-06-07 12:02:51 +02:00
|
|
|
<div id="mark_read_on_scroll_state_banner">
|
|
|
|
</div>
|
2021-07-07 18:41:35 +02:00
|
|
|
<div id="typing_notifications">
|
|
|
|
</div>
|
2024-06-07 12:02:51 +02:00
|
|
|
<div id="mark_read_on_scroll_state_banner_place_holder">
|
2021-08-02 20:09:56 +02:00
|
|
|
</div>
|
2021-07-07 18:41:35 +02:00
|
|
|
<div id="bottom_whitespace">
|
|
|
|
</div>
|
2021-07-07 18:35:14 +02:00
|
|
|
</div>
|
2014-02-18 17:41:49 +01:00
|
|
|
</div>
|
2021-06-10 16:52:29 +02:00
|
|
|
<div id="compose" {% if embedded %}data-embedded{% endif %}>
|
|
|
|
<div id="compose-container"></div>
|
|
|
|
</div>
|
2024-01-28 23:46:29 +01:00
|
|
|
</div>
|
2018-01-27 18:30:55 +01:00
|
|
|
</div>
|
2021-06-29 12:47:35 +02:00
|
|
|
<div class="column-right" id="right-sidebar-container">
|
2018-01-27 18:30:55 +01:00
|
|
|
</div><!--/right sidebar-->
|
2024-01-28 23:55:06 +01:00
|
|
|
</div>
|
2023-11-08 20:01:20 +01:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="hidden">
|
|
|
|
<form id="logout_form" action="/accounts/logout/" method="POST">{{ csrf_input }}
|
|
|
|
</form>
|
2013-02-28 19:04:58 +01:00
|
|
|
</div>
|
2012-08-28 18:44:51 +02:00
|
|
|
{% endblock %}
|