From 7c8360bfc1756716f51fd4566659c3d824d1163e Mon Sep 17 00:00:00 2001 From: kdeterme Date: Wed, 2 Sep 2026 11:10:23 +0200 Subject: [PATCH] fix(teams): escape quotes and apostrophes in JavaScript translation tags --- .../templates/contracts/teams_index.html | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/loko/contracts/templates/contracts/teams_index.html b/loko/contracts/templates/contracts/teams_index.html index 0bcba2c..8380df5 100644 --- a/loko/contracts/templates/contracts/teams_index.html +++ b/loko/contracts/templates/contracts/teams_index.html @@ -1131,7 +1131,7 @@ function confirmMoveMember() { const selected = document.getElementById('moveToTeamId').value; if (!newName) { - showError('moveMemberError', "{% trans 'Le nom du membre est requis.' %}"); + showError('moveMemberError', "{% trans 'Le nom du membre est requis.'|escapejs %}"); return; } @@ -1154,8 +1154,8 @@ function confirmMoveMember() { function openAddMemberModal(teamId, teamName, teamCompanyId) { document.getElementById('addMemberTeamId').value = teamId !== null ? teamId : ''; const title = teamId !== null - ? `{% trans "Ajouter un membre" %} — ${teamName}` - : `{% trans "Ajouter un membre non assigné" %}`; + ? `{% trans "Ajouter un membre"|escapejs %} — ${teamName}` + : `{% trans "Ajouter un membre non assigné"|escapejs %}`; document.getElementById('addMemberModalTitle').textContent = title; document.getElementById('newMemberName').value = ''; document.getElementById('newMemberUser').value = ''; @@ -1203,7 +1203,7 @@ function createMember() { const teamId = document.getElementById('addMemberTeamId').value; document.getElementById('addMemberError').classList.add('d-none'); - if (!name) { showError('addMemberError', "{% trans 'Le nom du membre est requis.' %}"); return; } + if (!name) { showError('addMemberError', "{% trans 'Le nom du membre est requis.'|escapejs %}"); return; } if (!userId) { showError('addMemberError', '{% trans "L\'utilisateur est requis."|escapejs %}'); return; } postJSON( @@ -1218,7 +1218,7 @@ function createMember() { } function deleteMember(memberId, memberName) { - if (!confirm(`{% trans "Supprimer le membre" %} « ${memberName} » ? {% trans "Cette action est irréversible." %}`)) return; + if (!confirm(`{% trans "Supprimer le membre"|escapejs %} « ${memberName} » ? {% trans "Cette action est irréversible."|escapejs %}`)) return; postJSON( `/contracts/teams/members/${memberId}/delete/`, @@ -1382,7 +1382,7 @@ function renderPlanningMatrix(data) { // 1. Rendu des en-têtes const theadRow = document.getElementById('planning-table-header-row'); - theadRow.innerHTML = `{% trans "Équipes" %}`; + theadRow.innerHTML = `{% trans "Équipes"|escapejs %}`; days.forEach(day => { const th = document.createElement('th'); @@ -1396,15 +1396,15 @@ function renderPlanningMatrix(data) {
${escapeHtml(day.day_short)}
${escapeHtml(day.day_num)}
- ${day.is_today ? '{% trans "Aujourd\'hui" %}' : ''} + ${day.is_today ? `{% trans "Aujourd'hui"|escapejs %}` : ''}
${CAN_EDIT_TEAMS ? `