doc-survival-kit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +248 -0
- package/admin.html +329 -0
- package/bin/cli.js +77 -0
- package/diagram.html +234 -0
- package/diagram.js +1572 -0
- package/diagrammes.js +231 -0
- package/i18n/en.js +186 -0
- package/i18n/fr.js +187 -0
- package/i18n/i18n.js +27 -0
- package/images/diagram-overview.png +0 -0
- package/images/img_1774270331723.png +0 -0
- package/index.html +340 -0
- package/liens.js +391 -0
- package/mesLiens.js +66 -0
- package/mesNotes.js +90 -0
- package/notes.js +561 -0
- package/package.json +42 -0
- package/style.css +1460 -0
- package/taches.js +96 -0
package/index.html
ADDED
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="fr">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title data-i18n="page_title">Dashboard</title>
|
|
7
|
+
<link rel="stylesheet" href="style.css" />
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<a href="diagram.html" class="btn-diagram" data-i18n-title="diag_page_title">
|
|
11
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
|
12
|
+
<rect x="1" y="1" width="6" height="4" rx="1"/>
|
|
13
|
+
<rect x="11" y="1" width="6" height="4" rx="1"/>
|
|
14
|
+
<rect x="5.5" y="13" width="7" height="4" rx="1"/>
|
|
15
|
+
<line x1="4" y1="5" x2="9" y2="13"/>
|
|
16
|
+
<line x1="14" y1="5" x2="9" y2="13"/>
|
|
17
|
+
</svg>
|
|
18
|
+
</a>
|
|
19
|
+
<a href="admin.html" class="btn-admin" title="Administration">⚙</a>
|
|
20
|
+
<div class="shell">
|
|
21
|
+
<!-- ╔══════════════════════════════════════╗
|
|
22
|
+
║ GAUCHE — Tâches (localStorage) ║
|
|
23
|
+
╚══════════════════════════════════════╝ -->
|
|
24
|
+
<div class="panel panel-left">
|
|
25
|
+
<div class="inner">
|
|
26
|
+
<h1><span data-i18n="panel_taches_title">mesTaches</span><span class="accent">.</span></h1>
|
|
27
|
+
<p class="subtitle" data-i18n="taches_subtitle">tout ce que je dois faire</p>
|
|
28
|
+
|
|
29
|
+
<!-- Ajout -->
|
|
30
|
+
<div class="add-bar">
|
|
31
|
+
<input
|
|
32
|
+
type="text"
|
|
33
|
+
id="taskInput"
|
|
34
|
+
data-i18n-placeholder="taches_input_placeholder"
|
|
35
|
+
placeholder="Nouvelle tâche…"
|
|
36
|
+
onkeydown="if (event.key === 'Enter') addTask();"
|
|
37
|
+
/>
|
|
38
|
+
<select id="taskPriority">
|
|
39
|
+
<option value="normal" data-i18n="taches_priority_normal">Normal</option>
|
|
40
|
+
<option value="urgent" data-i18n="taches_priority_urgent">Urgent</option>
|
|
41
|
+
<option value="later" data-i18n="taches_priority_later">Plus tard</option>
|
|
42
|
+
</select>
|
|
43
|
+
<button onclick="addTask()">+</button>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<!-- Filtres -->
|
|
47
|
+
<div class="filters">
|
|
48
|
+
<button class="active" onclick="setFilter('all', this)" data-i18n="taches_filter_all">Tout</button>
|
|
49
|
+
<button onclick="setFilter('todo', this)" data-i18n="taches_filter_todo">À faire</button>
|
|
50
|
+
<button onclick="setFilter('done', this)" data-i18n="taches_filter_done">Fait</button>
|
|
51
|
+
<button onclick="setFilter('urgent', this)" data-i18n="taches_filter_urgent">Urgent</button>
|
|
52
|
+
<button onclick="setFilter('normal', this)" data-i18n="taches_filter_normal">Normal</button>
|
|
53
|
+
<button onclick="setFilter('later', this)" data-i18n="taches_filter_later">Plus tard</button>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<!-- Liste -->
|
|
57
|
+
<div class="tasks" id="taskList"></div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<!-- ╔══════════════════════════════════════╗
|
|
62
|
+
║ MILIEU — Notes ║
|
|
63
|
+
╚══════════════════════════════════════╝ -->
|
|
64
|
+
<div class="panel panel-left">
|
|
65
|
+
<div class="inner">
|
|
66
|
+
<h1><span data-i18n="panel_notes_title">mesNotes</span><span class="accent">.</span></h1>
|
|
67
|
+
<p class="subtitle" data-i18n="notes_subtitle">tout ce que je dois hélas retenir</p>
|
|
68
|
+
|
|
69
|
+
<div class="liens-toolbar">
|
|
70
|
+
<button class="btn-save" id="btnSaveNotes" onclick="enregistrerModificationsNotes()" data-i18n="notes_btn_save">enregistrer les modifications</button>
|
|
71
|
+
<button class="btn-edit-mode" id="btnEditModeNotes" onclick="toggleEditModeNotes()" data-i18n="notes_btn_edit_mode">passer en mode édition</button>
|
|
72
|
+
<button class="btn-edit-mode" id="btnToggleAllNotes" onclick="toggleAllNotes()">tout développer</button>
|
|
73
|
+
<button class="btn-add-note" onclick="openModalNote()" data-i18n="notes_btn_add">+ nouvelle note</button>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<div id="notesContainer"></div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<!-- ╔══════════════════════════════════════╗
|
|
81
|
+
║ DROITE — Liens (localStorage) ║
|
|
82
|
+
╚══════════════════════════════════════╝ -->
|
|
83
|
+
<div class="panel">
|
|
84
|
+
<div class="inner">
|
|
85
|
+
<h1><span data-i18n="panel_liens_title">mesLiens</span><span class="accent">.</span></h1>
|
|
86
|
+
<p class="subtitle" data-i18n="liens_subtitle">tout ce que je ne veux pas perdre</p>
|
|
87
|
+
|
|
88
|
+
<div class="liens-toolbar">
|
|
89
|
+
<button class="btn-save" id="btnSave" onclick="enregistrerModifications()" data-i18n="liens_btn_save">enregistrer les modifications</button>
|
|
90
|
+
<button class="btn-edit-mode" id="btnEditMode" onclick="toggleEditMode()" data-i18n="liens_btn_edit_mode">passer en mode édition</button>
|
|
91
|
+
<button class="btn-edit-mode" id="btnToggleAllLiens" onclick="toggleAllLiens()">tout développer</button>
|
|
92
|
+
<button class="btn-add-cat" onclick="openModalCategorie()" data-i18n="liens_btn_add_cat">+ nouvelle catégorie</button>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<div id="linksContainer"></div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<!-- ── Modale ajout catégorie ── -->
|
|
101
|
+
<div class="modal-backdrop" id="modalCategorie">
|
|
102
|
+
<div class="modal">
|
|
103
|
+
<h3 data-i18n="modal_cat_title">Nouvelle catégorie</h3>
|
|
104
|
+
<label for="catNom" data-i18n="modal_cat_label_name">Nom</label>
|
|
105
|
+
<input type="text" id="catNom" data-i18n-placeholder="modal_cat_placeholder_name" placeholder="ex : Lectures…" onkeydown="if(event.key==='Enter') confirmerCategorie();" />
|
|
106
|
+
<label for="catCouleur" data-i18n="modal_cat_label_color">Couleur</label>
|
|
107
|
+
<select id="catCouleur">
|
|
108
|
+
<option value="t-green" data-i18n="color_green">Vert</option>
|
|
109
|
+
<option value="t-violet" data-i18n="color_violet">Violet</option>
|
|
110
|
+
<option value="t-amber" data-i18n="color_amber">Ambre</option>
|
|
111
|
+
<option value="t-sky" data-i18n="color_sky">Bleu ciel</option>
|
|
112
|
+
<option value="t-rose" data-i18n="color_rose">Rose</option>
|
|
113
|
+
<option value="t-teal" data-i18n="color_teal">Teal</option>
|
|
114
|
+
</select>
|
|
115
|
+
<div class="modal-actions">
|
|
116
|
+
<button class="btn-cancel" onclick="closeModalCategorie()" data-i18n="cancel">Annuler</button>
|
|
117
|
+
<button class="btn-confirm" onclick="confirmerCategorie()" data-i18n="modal_cat_btn_add">Ajouter</button>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
<!-- ── Modale ajout d'un lien dans une catégorie ── -->
|
|
123
|
+
<div class="modal-backdrop" id="modalLien">
|
|
124
|
+
<div class="modal">
|
|
125
|
+
<h3 data-i18n="modal_lien_title">Nouveau lien</h3>
|
|
126
|
+
<label for="lienNom" data-i18n="modal_lien_label_name">Nom</label>
|
|
127
|
+
<input type="text" id="lienNom" data-i18n-placeholder="modal_lien_placeholder_name" placeholder="ex : Figma" />
|
|
128
|
+
<label for="lienDesc" data-i18n="modal_lien_label_desc">Description</label>
|
|
129
|
+
<input type="text" id="lienDesc" data-i18n-placeholder="modal_lien_placeholder_desc" placeholder="ex : Outil de design UI" />
|
|
130
|
+
<label for="lienUrl" data-i18n="modal_lien_label_url">URL</label>
|
|
131
|
+
<input type="text" id="lienUrl" placeholder="https://…" onkeydown="if(event.key==='Enter') confirmerLien();" />
|
|
132
|
+
<div class="modal-actions">
|
|
133
|
+
<button class="btn-cancel" onclick="fermerModalLien()" data-i18n="cancel">Annuler</button>
|
|
134
|
+
<button class="btn-confirm" onclick="confirmerLien()" data-i18n="modal_lien_btn_add">Ajouter</button>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<!-- ── Modale édition d'un lien ── -->
|
|
140
|
+
<div class="modal-backdrop" id="modalEditLien">
|
|
141
|
+
<div class="modal">
|
|
142
|
+
<h3 data-i18n="modal_edit_lien_title">Modifier le lien</h3>
|
|
143
|
+
<label for="editLienNom" data-i18n="modal_lien_label_name">Nom</label>
|
|
144
|
+
<input type="text" id="editLienNom" data-i18n-placeholder="modal_lien_placeholder_name" placeholder="ex : Figma" />
|
|
145
|
+
<label for="editLienDesc" data-i18n="modal_lien_label_desc">Description</label>
|
|
146
|
+
<input type="text" id="editLienDesc" data-i18n-placeholder="modal_lien_placeholder_desc" placeholder="ex : Outil de design UI" />
|
|
147
|
+
<label for="editLienUrl" data-i18n="modal_lien_label_url">URL</label>
|
|
148
|
+
<input type="text" id="editLienUrl" placeholder="https://…" onkeydown="if(event.key==='Enter') confirmerEditLien();" />
|
|
149
|
+
<div class="modal-actions">
|
|
150
|
+
<button class="btn-cancel" onclick="fermerModalEditLien()" data-i18n="cancel">Annuler</button>
|
|
151
|
+
<button class="btn-confirm" onclick="confirmerEditLien()" data-i18n="modal_edit_lien_btn_save">Enregistrer</button>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
|
|
156
|
+
<!-- ── Modale confirmation suppression lien ── -->
|
|
157
|
+
<div class="modal-backdrop" id="modalConfirmSupprLien">
|
|
158
|
+
<div class="modal">
|
|
159
|
+
<h3 data-i18n="modal_suppr_lien_title">Supprimer le lien ?</h3>
|
|
160
|
+
<p style="font-size:0.875rem;color:#78716c;margin-bottom:24px;" data-i18n="irreversible">
|
|
161
|
+
Cette action est irréversible.
|
|
162
|
+
</p>
|
|
163
|
+
<div class="modal-actions">
|
|
164
|
+
<button class="btn-cancel" onclick="fermerConfirmSupprLien()" data-i18n="cancel">Annuler</button>
|
|
165
|
+
<button class="btn-confirm" style="background:#ef4444;" onclick="confirmerSupprLien()" data-i18n="irreversible_delete">Supprimer</button>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<!-- ── Modale confirmation suppression catégorie ── -->
|
|
171
|
+
<div class="modal-backdrop" id="modalConfirmSupprCat">
|
|
172
|
+
<div class="modal">
|
|
173
|
+
<h3 data-i18n="modal_suppr_cat_title">Supprimer la catégorie ?</h3>
|
|
174
|
+
<p style="font-size:0.875rem;color:#78716c;margin-bottom:24px;" data-i18n="modal_suppr_cat_msg">
|
|
175
|
+
Tous les liens de cette catégorie seront également supprimés. Cette action est irréversible.
|
|
176
|
+
</p>
|
|
177
|
+
<div class="modal-actions">
|
|
178
|
+
<button class="btn-cancel" onclick="fermerConfirmSupprCat()" data-i18n="cancel">Annuler</button>
|
|
179
|
+
<button class="btn-confirm" style="background:#ef4444;" onclick="supprimerCategorie()" data-i18n="irreversible_delete">Supprimer</button>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<!-- ── Modale première sauvegarde ── -->
|
|
185
|
+
<div class="modal-backdrop" id="modalPremiereSauvegarde">
|
|
186
|
+
<div class="modal">
|
|
187
|
+
<h3 data-i18n="modal_first_save_title">Première sauvegarde</h3>
|
|
188
|
+
<p style="font-size:0.875rem;color:#78716c;margin-bottom:12px;" data-i18n="modal_first_save_intro">
|
|
189
|
+
Une boîte de dialogue va s'ouvrir pour sélectionner le dossier du projet.
|
|
190
|
+
</p>
|
|
191
|
+
<p style="font-size:0.875rem;color:#292524;margin-bottom:8px;" data-i18n="modal_first_save_navigate">
|
|
192
|
+
Navigue jusqu'au dossier contenant le fichier :
|
|
193
|
+
</p>
|
|
194
|
+
<p style="font-family:'Cascadia Code','SF Mono',Consolas,monospace;font-size:0.8rem;background:#f5f5f4;padding:8px 12px;border-radius:6px;margin-bottom:24px;color:#059669;">
|
|
195
|
+
mesLiens.js
|
|
196
|
+
</p>
|
|
197
|
+
<p style="font-size:0.8rem;color:#a8a29e;margin-bottom:24px;" data-i18n="modal_first_save_once">
|
|
198
|
+
Cette étape n'aura lieu qu'une seule fois. Les sauvegardes suivantes seront directes.
|
|
199
|
+
</p>
|
|
200
|
+
<p id="erreurFichierLiens" style="display:none;font-size:0.8rem;color:#ef4444;background:#fef2f2;padding:8px 12px;border-radius:6px;margin-bottom:16px;" data-i18n-html="modal_first_save_error_liens">
|
|
201
|
+
Fichier introuvable dans ce dossier. Sélectionne le dossier qui contient <strong>mesLiens.js</strong>.
|
|
202
|
+
</p>
|
|
203
|
+
<div class="modal-actions">
|
|
204
|
+
<button class="btn-cancel" onclick="fermerModalPremiereSauvegarde()" data-i18n="cancel">Annuler</button>
|
|
205
|
+
<button class="btn-confirm" onclick="ouvrirSelecteurFichier()" data-i18n="modal_first_save_btn_choose">Choisir le dossier</button>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
<!-- ── Modale nouvelle note ── -->
|
|
211
|
+
<div class="modal-backdrop" id="modalNote">
|
|
212
|
+
<div class="modal">
|
|
213
|
+
<h3 data-i18n="modal_note_title">Nouvelle note</h3>
|
|
214
|
+
<label for="noteNom" data-i18n="modal_note_label_titre">Titre</label>
|
|
215
|
+
<input type="text" id="noteNom" data-i18n-placeholder="modal_note_placeholder" placeholder="ex : Raccourcis Git…" onkeydown="if(event.key==='Enter') confirmerNote();" />
|
|
216
|
+
<label for="noteCouleur" data-i18n="modal_note_label_color">Couleur</label>
|
|
217
|
+
<select id="noteCouleur">
|
|
218
|
+
<option value="t-green" data-i18n="color_green">Vert</option>
|
|
219
|
+
<option value="t-violet" data-i18n="color_violet">Violet</option>
|
|
220
|
+
<option value="t-amber" data-i18n="color_amber">Ambre</option>
|
|
221
|
+
<option value="t-sky" data-i18n="color_sky">Bleu ciel</option>
|
|
222
|
+
<option value="t-rose" data-i18n="color_rose">Rose</option>
|
|
223
|
+
<option value="t-teal" data-i18n="color_teal">Teal</option>
|
|
224
|
+
</select>
|
|
225
|
+
<div class="modal-actions">
|
|
226
|
+
<button class="btn-cancel" onclick="closeModalNote()" data-i18n="cancel">Annuler</button>
|
|
227
|
+
<button class="btn-confirm" onclick="confirmerNote()" data-i18n="modal_note_btn_create">Créer</button>
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
231
|
+
|
|
232
|
+
<!-- ── Modale édition note ── -->
|
|
233
|
+
<div class="modal-backdrop" id="modalEditNote">
|
|
234
|
+
<div class="modal">
|
|
235
|
+
<h3 data-i18n="modal_edit_note_title">Modifier la note</h3>
|
|
236
|
+
<label for="editNoteNom" data-i18n="modal_note_label_titre">Titre</label>
|
|
237
|
+
<input type="text" id="editNoteNom" data-i18n-placeholder="modal_note_placeholder" placeholder="ex : Raccourcis Git…" onkeydown="if(event.key==='Enter') confirmerEditNote();" />
|
|
238
|
+
<label for="editNoteCouleur" data-i18n="modal_note_label_color">Couleur</label>
|
|
239
|
+
<select id="editNoteCouleur">
|
|
240
|
+
<option value="t-green" data-i18n="color_green">Vert</option>
|
|
241
|
+
<option value="t-violet" data-i18n="color_violet">Violet</option>
|
|
242
|
+
<option value="t-amber" data-i18n="color_amber">Ambre</option>
|
|
243
|
+
<option value="t-sky" data-i18n="color_sky">Bleu ciel</option>
|
|
244
|
+
<option value="t-rose" data-i18n="color_rose">Rose</option>
|
|
245
|
+
<option value="t-teal" data-i18n="color_teal">Teal</option>
|
|
246
|
+
</select>
|
|
247
|
+
<div class="modal-actions">
|
|
248
|
+
<button class="btn-cancel" onclick="fermerModalEditNote()" data-i18n="cancel">Annuler</button>
|
|
249
|
+
<button class="btn-confirm" onclick="confirmerEditNote()" data-i18n="modal_edit_note_btn_save">Enregistrer</button>
|
|
250
|
+
</div>
|
|
251
|
+
</div>
|
|
252
|
+
</div>
|
|
253
|
+
|
|
254
|
+
<!-- ── Modale confirmation suppression note ── -->
|
|
255
|
+
<div class="modal-backdrop" id="modalConfirmSupprNote">
|
|
256
|
+
<div class="modal">
|
|
257
|
+
<h3 data-i18n="modal_suppr_note_title">Supprimer la note ?</h3>
|
|
258
|
+
<p style="font-size:0.875rem;color:#78716c;margin-bottom:24px;" data-i18n="modal_suppr_note_msg">
|
|
259
|
+
Tous les blocs de cette note seront également supprimés. Cette action est irréversible.
|
|
260
|
+
</p>
|
|
261
|
+
<div class="modal-actions">
|
|
262
|
+
<button class="btn-cancel" onclick="fermerConfirmSupprNote()" data-i18n="cancel">Annuler</button>
|
|
263
|
+
<button class="btn-confirm" style="background:#ef4444;" onclick="supprimerNote()" data-i18n="irreversible_delete">Supprimer</button>
|
|
264
|
+
</div>
|
|
265
|
+
</div>
|
|
266
|
+
</div>
|
|
267
|
+
|
|
268
|
+
<!-- ── Modale ajout / édition bloc ── -->
|
|
269
|
+
<div class="modal-backdrop" id="modalBloc">
|
|
270
|
+
<div class="modal">
|
|
271
|
+
<h3 id="modalBlocTitre" data-i18n="modal_bloc_new">Nouveau bloc</h3>
|
|
272
|
+
<label for="blocType" data-i18n="modal_bloc_label_type">Type</label>
|
|
273
|
+
<select id="blocType" onchange="updateBlocPlaceholder()">
|
|
274
|
+
<option value="b" data-i18n="modal_bloc_type_b">Titre</option>
|
|
275
|
+
<option value="p" data-i18n="modal_bloc_type_p">Texte</option>
|
|
276
|
+
<option value="pre" data-i18n="modal_bloc_type_pre">Code</option>
|
|
277
|
+
<option value="ul" data-i18n="modal_bloc_type_ul">Liste à puces</option>
|
|
278
|
+
<option value="table" data-i18n="modal_bloc_type_table">Tableau</option>
|
|
279
|
+
</select>
|
|
280
|
+
<label for="blocContent" data-i18n="modal_bloc_label_content">Contenu</label>
|
|
281
|
+
<input type="text" id="blocContentInput" placeholder="Texte…" onkeydown="if(event.key==='Enter') confirmerBloc();" />
|
|
282
|
+
<textarea id="blocContent" rows="6" placeholder="Texte…"></textarea>
|
|
283
|
+
<div class="modal-actions">
|
|
284
|
+
<button class="btn-cancel" onclick="fermerModalBloc()" data-i18n="cancel">Annuler</button>
|
|
285
|
+
<button class="btn-confirm" onclick="confirmerBloc()" data-i18n="modal_bloc_btn_save">Enregistrer</button>
|
|
286
|
+
</div>
|
|
287
|
+
</div>
|
|
288
|
+
</div>
|
|
289
|
+
|
|
290
|
+
<!-- ── Modale confirmation suppression bloc ── -->
|
|
291
|
+
<div class="modal-backdrop" id="modalConfirmSupprBloc">
|
|
292
|
+
<div class="modal">
|
|
293
|
+
<h3 data-i18n="modal_suppr_bloc_title">Supprimer le bloc ?</h3>
|
|
294
|
+
<p style="font-size:0.875rem;color:#78716c;margin-bottom:24px;" data-i18n="irreversible">
|
|
295
|
+
Cette action est irréversible.
|
|
296
|
+
</p>
|
|
297
|
+
<div class="modal-actions">
|
|
298
|
+
<button class="btn-cancel" onclick="fermerConfirmSupprBloc()" data-i18n="cancel">Annuler</button>
|
|
299
|
+
<button class="btn-confirm" style="background:#ef4444;" onclick="supprimerBloc()" data-i18n="irreversible_delete">Supprimer</button>
|
|
300
|
+
</div>
|
|
301
|
+
</div>
|
|
302
|
+
</div>
|
|
303
|
+
|
|
304
|
+
<!-- ── Modale première sauvegarde notes ── -->
|
|
305
|
+
<div class="modal-backdrop" id="modalPremiereSauvegardeNotes">
|
|
306
|
+
<div class="modal">
|
|
307
|
+
<h3 data-i18n="modal_first_save_title">Première sauvegarde</h3>
|
|
308
|
+
<p style="font-size:0.875rem;color:#78716c;margin-bottom:12px;" data-i18n="modal_first_save_intro">
|
|
309
|
+
Une boîte de dialogue va s'ouvrir pour sélectionner le dossier du projet.
|
|
310
|
+
</p>
|
|
311
|
+
<p style="font-size:0.875rem;color:#292524;margin-bottom:8px;" data-i18n="modal_first_save_navigate">
|
|
312
|
+
Navigue jusqu'au dossier contenant le fichier :
|
|
313
|
+
</p>
|
|
314
|
+
<p style="font-family:'Cascadia Code','SF Mono',Consolas,monospace;font-size:0.8rem;background:#f5f5f4;padding:8px 12px;border-radius:6px;margin-bottom:24px;color:#059669;">
|
|
315
|
+
mesNotes.js
|
|
316
|
+
</p>
|
|
317
|
+
<p style="font-size:0.8rem;color:#a8a29e;margin-bottom:24px;" data-i18n="modal_first_save_once">
|
|
318
|
+
Cette étape n'aura lieu qu'une seule fois. Les sauvegardes suivantes seront directes.
|
|
319
|
+
</p>
|
|
320
|
+
<p id="erreurFichierNotes" style="display:none;font-size:0.8rem;color:#ef4444;background:#fef2f2;padding:8px 12px;border-radius:6px;margin-bottom:16px;" data-i18n-html="modal_first_save_error_notes">
|
|
321
|
+
Fichier introuvable dans ce dossier. Sélectionne le dossier qui contient <strong>mesNotes.js</strong>.
|
|
322
|
+
</p>
|
|
323
|
+
<div class="modal-actions">
|
|
324
|
+
<button class="btn-cancel" onclick="fermerModalPremiereSauvegardeNotes()" data-i18n="cancel">Annuler</button>
|
|
325
|
+
<button class="btn-confirm" onclick="ouvrirSelecteurFichierNotes()" data-i18n="modal_first_save_btn_choose">Choisir le dossier</button>
|
|
326
|
+
</div>
|
|
327
|
+
</div>
|
|
328
|
+
</div>
|
|
329
|
+
|
|
330
|
+
<!-- Scripts : i18n → données → liens → tâches → notes -->
|
|
331
|
+
<script src="i18n/fr.js"></script>
|
|
332
|
+
<script src="i18n/en.js"></script>
|
|
333
|
+
<script src="i18n/i18n.js"></script>
|
|
334
|
+
<script src="mesLiens.js"></script>
|
|
335
|
+
<script src="mesNotes.js"></script>
|
|
336
|
+
<script src="liens.js"></script>
|
|
337
|
+
<script src="taches.js"></script>
|
|
338
|
+
<script src="notes.js"></script>
|
|
339
|
+
</body>
|
|
340
|
+
</html>
|