Skip to content

Commit

Permalink
feat: update the meeting waiting screen wording
Browse files Browse the repository at this point in the history
Also split join.html in wait.html + join.html
  • Loading branch information
azmeuk committed Oct 11, 2023
1 parent 91ed669 commit 9300b62
Show file tree
Hide file tree
Showing 7 changed files with 105 additions and 136 deletions.
6 changes: 1 addition & 5 deletions web/flaskr/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@
from flaskr.models import MeetingFiles
from flaskr.models import MeetingFilesExternal
from flaskr.models import User
from flaskr.utils import retry_join_meeting
from netaddr import IPAddress
from netaddr import IPNetwork
from sqlalchemy import exc
Expand Down Expand Up @@ -1382,17 +1381,14 @@ def waiting_meeting(meeting_fake_id, user_id, h, fullname="", fullname_suffix=""
if not role:
return redirect(url_for("routes.index"))
return render_template(
"meeting/join.html",
"meeting/wait.html",
meeting=meeting,
meeting_fake_id=meeting_fake_id,
user_id=user_id,
h=h,
role=role,
fullname=fullname,
fullname_suffix=fullname_suffix,
retry_join_meeting=retry_join_meeting(
request.referrer, role, fullname, fullname_suffix
),
)


Expand Down
67 changes: 60 additions & 7 deletions web/flaskr/templates/meeting/join.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,69 @@
{% endblock %}

{% block main %}
{% include 'meeting/signin.html' %}
{% endblock %}
<h1 class="fr-h2">{% trans %}Rejoindre {{ the_meeting }}{% endtrans %}</h1>

<form id="joinMeetingForm" action="/meeting/join" method="POST">
{% include 'meeting/csrf.html' %}
<input type="hidden" id="meetingID" name="meeting_fake_id" value="{{ meeting_fake_id }}" />
<input type="hidden" id="user_id" name="user_id" value="{{ user_id }}" />
<input type="hidden" id="h" name="h" value="{{ h }}" />

<div class="fr-input-group">
<div class="fr-grid-row fr-grid-row--gutters">
<div class="fr-col">
<label for="fullname" class="fr-label" aria-describedby="text-input-desc">{% trans %}Votre nom{% endtrans %}</label>
{% if role != "authenticated" %}<p class="fr-hint-text" id="text-input-desc">{% trans %}Vous pouvez également préciser votre service ou votre fonction.{% endtrans %}</p>{% endif %}
<input type="text" required class="fr-input" id="fullname" name="fullname" {% if fullname %}value="{{ fullname }}"{% endif %} {% if fullname and not user %}readonly="readonly"{% endif %} />
</div>
</div>

{% block js %}
{% if retry_join_meeting %}
{% if role == "authenticated" %}
<div class="fr-grid-row fr-grid-row--gutters">
<div class="fr-col">
<label for="fullname_suffix" class="fr-label" aria-describedby="text-input-desc">Informations facultatives</label>
<p class="fr-hint-text" id="text-input-desc">Si ce champ est rempli, il sera affiché dans BBB.</p>
<input type="text" class="fr-input" id="fullname_suffix" name="fullname_suffix" value="{{ fullname_suffix }}" />
</div>
</div>
<p>Le nom affiché sera « <tt id="namePreview"></tt> ».</p>
{% endif %}

{% if not retry_join_meeting %}
<div class="fr-grid-row fr-grid-row--gutters">
<div class="fr-col">
<button type="submit" class="fr-btn fr-btn-primary" >{% trans %}Rejoindre{% endtrans %}</button>
</div>
</div>
{% endif %}
{% if role != "authenticated" and not user %}
<div class="fr-grid-row fr-grid-row--gutters">
<div class="fr-col">
{% trans %}Vous êtes propriétaire de cette salle ?{% endtrans %}
<a href="{{ url_for("routes.authenticate_then_signin_meeting", meeting_fake_id=meeting_fake_id, user_id=user_id, h=h ) }}">
{% trans %}S’identifier{% endtrans %}
</a>
</div>
</div>
{% endif %}
</div>
</form>

{% if role == "authenticated" %}
<script>
let joinMeeting = () => {
document.getElementById("joinMeetingForm").submit()
document.addEventListener('keyup', updatePreview);

function updatePreview(e) {
const fullnameField = document.getElementById('fullname')
const suffixField = document.getElementById('fullname_suffix')
const previewArea = document.getElementById('namePreview')
var namePreview = fullnameField.value
if (suffixField.value.length) {
namePreview += " - " + suffixField.value
}
setTimeout(joinMeeting, 10000)
previewArea.innerHTML = namePreview
}
updatePreview()
</script>
{% endif %}
{% endblock %}
77 changes: 0 additions & 77 deletions web/flaskr/templates/meeting/signin.html

This file was deleted.

44 changes: 44 additions & 0 deletions web/flaskr/templates/meeting/wait.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{% extends 'layout.html' %}

{% block jumbotron %}
{% include 'rie.html' %}
{% endblock %}

{% block main %}
<div class="fr-mt-4w fr-grid-row fr-grid-row--center">
<div class="fr-col-sm-12 fr-col-md-10 fr-col-lg-8 connected">
<h5 class="fr-h5">
{% trans %}Bonjour {{ fullname }}, vous pourrez bientôt entrer{% endtrans %}
</h5>

<div class="spinner">
<div class="bounce1"></div>
<div class="bounce2"></div>
<div class="bounce3"></div>
</div>

<p>
{% trans %}Votre hôte n’est pas encore arrivé. Vous entrerez automatiquement dans la salle de visio-conférence dès qu’il sera présent.{% endtrans %}
</p>

<form id="joinMeetingForm" action="/meeting/join" method="POST">
{% include 'meeting/csrf.html' %}
<input type="hidden" id="meetingID" name="meeting_fake_id" value="{{ meeting_fake_id }}" />
<input type="hidden" id="user_id" name="user_id" value="{{ user_id }}" />
<input type="hidden" id="h" name="h" value="{{ h }}" />
<input type="hidden" id="fullname" name="fullname" value="{{ fullname }}" />
<input type="hidden" id="fullname_suffix" name="fullname_suffix" value="{{ fullname_suffix }}" />
</form>
</div>
</div>
{% endblock %}

{% block js %}
<script>
const seconds_before_refresh = 10;
let joinMeeting = () => {
document.getElementById("joinMeetingForm").submit()
}
setTimeout(joinMeeting, seconds_before_refresh * 1000)
</script>
{% endblock %}
8 changes: 0 additions & 8 deletions web/flaskr/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,3 @@

def secret_key():
return current_app.config["SECRET_KEY"]


def retry_join_meeting(referrer, role, fullname, fullname_suffix):
return bool(
(referrer and "/meeting/wait/" in referrer)
or (role in ("attendee", "moderator") and fullname)
or (role == "authenticated" and fullname and fullname_suffix)
)
13 changes: 0 additions & 13 deletions web/instance/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,17 +173,6 @@
"reunion": lazy_gettext("une réunion à laquelle"),
"seminaire": "un séminaire auquel",
},
"A_MEETING_ATTENTE": {
"cours": lazy_gettext(
"Votre cours n'a pas encore été activé par un modérateur "
),
"reunion": lazy_gettext(
"Votre réunion n'a pas encore été activée par un modérateur "
),
"seminaire": lazy_gettext(
"Votre séminaire n'a pas encore été activé par un modérateur "
),
},
"WELCOME_PAGE_SUBTITLE": {
"cours": lazy_gettext(
"Créez un cours immédiatement avec des réglages standards. Ce cours ne sera pas enregistré dans votre liste de salons."
Expand Down Expand Up @@ -232,7 +221,6 @@
WORDING_A_MEETING_TO_WHICH = AVAILABLE_WORDINGS["A_MEETING_TO_WHICH"][
MEETING_KEY_WORDING
]
WORDING_A_MEETING_ATTENTE = AVAILABLE_WORDINGS["A_MEETING_ATTENTE"][MEETING_KEY_WORDING]
WELCOME_PAGE_SUBTITLE = AVAILABLE_WORDINGS["WELCOME_PAGE_SUBTITLE"][MEETING_KEY_WORDING]
MEETING_MAIL_SUBJECT = AVAILABLE_WORDINGS["MEETING_MAIL_SUBJECT"][MEETING_KEY_WORDING]

Expand Down Expand Up @@ -263,7 +251,6 @@
"to_the_meeting": WORDING_TO_THE_MEETING,
"meeting_undefined_article": WORDING_MEETING_UNDEFINED_ARTICLE,
"a_meeting_to_which": WORDING_A_MEETING_TO_WHICH,
"meeting_attente": WORDING_A_MEETING_ATTENTE,
"welcome_page_subtitle": WELCOME_PAGE_SUBTITLE,
"documentation_page_subtitle": DOCUMENTATION_PAGE_SUBTITLE,
"meeting_mail_subject": MEETING_MAIL_SUBJECT,
Expand Down
26 changes: 0 additions & 26 deletions web/tests/test_utils.py

This file was deleted.

0 comments on commit 9300b62

Please sign in to comment.