@hed-hog/lms 0.0.261 → 0.0.266
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/hedhog/data/menu.yaml +34 -1
- package/hedhog/frontend/app/courses/page.tsx.ejs +220 -183
- package/hedhog/frontend/app/exams/page.tsx.ejs +1122 -0
- package/hedhog/frontend/app/training/page.tsx.ejs +1164 -0
- package/hedhog/frontend/messages/en.json +469 -1
- package/hedhog/frontend/messages/pt.json +469 -1
- package/hedhog/table/exams.yaml +3 -0
- package/hedhog/table/training.yaml +3 -0
- package/package.json +5 -5
|
@@ -1,10 +1,478 @@
|
|
|
1
1
|
{
|
|
2
2
|
"DashboardPage": {
|
|
3
|
-
"title": "
|
|
3
|
+
"title": "Dashboard",
|
|
4
4
|
"description": "Manage your LMS integrations and settings.",
|
|
5
5
|
"breadcrumbs": {
|
|
6
6
|
"home": "Home",
|
|
7
7
|
"lms": "LMS"
|
|
8
8
|
}
|
|
9
|
+
},
|
|
10
|
+
"CoursesPage": {
|
|
11
|
+
"title": "Courses",
|
|
12
|
+
"description": "Manage your courses, categories, and levels easily and quickly.",
|
|
13
|
+
"breadcrumbs": {
|
|
14
|
+
"home": "Home",
|
|
15
|
+
"courses": "Courses"
|
|
16
|
+
},
|
|
17
|
+
"actions": {
|
|
18
|
+
"createCourse": "Create Course"
|
|
19
|
+
},
|
|
20
|
+
"filters": {
|
|
21
|
+
"searchPlaceholder": "Search by code, title, or internal name...",
|
|
22
|
+
"filtersLabel": "Filters:",
|
|
23
|
+
"allStatuses": "All Statuses",
|
|
24
|
+
"allLevels": "All Levels",
|
|
25
|
+
"allCategories": "All Categories",
|
|
26
|
+
"clear": "Clear"
|
|
27
|
+
},
|
|
28
|
+
"bulkActions": {
|
|
29
|
+
"selected": "{{count}} selected",
|
|
30
|
+
"archive": "Archive",
|
|
31
|
+
"delete": "Delete",
|
|
32
|
+
"clearSelection": "Clear selection"
|
|
33
|
+
},
|
|
34
|
+
"categories": {
|
|
35
|
+
"technology": "Technology",
|
|
36
|
+
"design": "Design",
|
|
37
|
+
"management": "Management",
|
|
38
|
+
"marketing": "Marketing",
|
|
39
|
+
"finance": "Finance",
|
|
40
|
+
"health": "Health",
|
|
41
|
+
"languages": "Languages",
|
|
42
|
+
"law": "Law"
|
|
43
|
+
},
|
|
44
|
+
"levels": {
|
|
45
|
+
"beginner": "Beginner",
|
|
46
|
+
"intermediate": "Intermediate",
|
|
47
|
+
"advanced": "Advanced"
|
|
48
|
+
},
|
|
49
|
+
"status": {
|
|
50
|
+
"active": "Active",
|
|
51
|
+
"draft": "Draft",
|
|
52
|
+
"archived": "Archived"
|
|
53
|
+
},
|
|
54
|
+
"table": {
|
|
55
|
+
"headers": {
|
|
56
|
+
"code": "Code",
|
|
57
|
+
"title": "Title",
|
|
58
|
+
"level": "Level",
|
|
59
|
+
"status": "Status",
|
|
60
|
+
"categories": "Categories",
|
|
61
|
+
"students": "Students"
|
|
62
|
+
},
|
|
63
|
+
"empty": {
|
|
64
|
+
"title": "No courses found",
|
|
65
|
+
"description": "Try adjusting the filters or create a new course."
|
|
66
|
+
},
|
|
67
|
+
"actions": {
|
|
68
|
+
"label": "Actions",
|
|
69
|
+
"viewDetails": "View details",
|
|
70
|
+
"edit": "Edit",
|
|
71
|
+
"copyCode": "Copy code",
|
|
72
|
+
"delete": "Delete"
|
|
73
|
+
},
|
|
74
|
+
"selectAll": "Select all",
|
|
75
|
+
"selectCourse": "Select {{title}}"
|
|
76
|
+
},
|
|
77
|
+
"pagination": {
|
|
78
|
+
"showing": "Showing",
|
|
79
|
+
"to": "to",
|
|
80
|
+
"of": "of",
|
|
81
|
+
"results": "results",
|
|
82
|
+
"previousPage": "Previous page",
|
|
83
|
+
"nextPage": "Next page"
|
|
84
|
+
},
|
|
85
|
+
"form": {
|
|
86
|
+
"title": {
|
|
87
|
+
"create": "Create New Course",
|
|
88
|
+
"edit": "Edit Course"
|
|
89
|
+
},
|
|
90
|
+
"description": {
|
|
91
|
+
"create": "Fill in the data to create a new course. After creation, you will be redirected to the course page.",
|
|
92
|
+
"edit": "Update the course information below."
|
|
93
|
+
},
|
|
94
|
+
"fields": {
|
|
95
|
+
"code": {
|
|
96
|
+
"label": "Course Code",
|
|
97
|
+
"placeholder": "Ex: REACT-ADV",
|
|
98
|
+
"description": "Unique course identifier (e.g.: REACT-ADV)"
|
|
99
|
+
},
|
|
100
|
+
"internalName": {
|
|
101
|
+
"label": "Internal Name",
|
|
102
|
+
"placeholder": "Ex: react-advanced",
|
|
103
|
+
"description": "Internal slug for system use"
|
|
104
|
+
},
|
|
105
|
+
"commercialTitle": {
|
|
106
|
+
"label": "Commercial Title",
|
|
107
|
+
"placeholder": "Ex: Advanced React"
|
|
108
|
+
},
|
|
109
|
+
"description": {
|
|
110
|
+
"label": "Description",
|
|
111
|
+
"placeholder": "Describe the course content and objectives..."
|
|
112
|
+
},
|
|
113
|
+
"level": {
|
|
114
|
+
"label": "Level",
|
|
115
|
+
"placeholder": "Select"
|
|
116
|
+
},
|
|
117
|
+
"status": {
|
|
118
|
+
"label": "Status",
|
|
119
|
+
"placeholder": "Select"
|
|
120
|
+
},
|
|
121
|
+
"categories": {
|
|
122
|
+
"label": "Categories",
|
|
123
|
+
"description": "Select one or more categories"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"flags": {
|
|
127
|
+
"title": "Main Flags",
|
|
128
|
+
"featured": {
|
|
129
|
+
"label": "Featured",
|
|
130
|
+
"description": "Display as featured course in showcase"
|
|
131
|
+
},
|
|
132
|
+
"certificate": {
|
|
133
|
+
"label": "Certificate",
|
|
134
|
+
"description": "Issue certificate upon course completion"
|
|
135
|
+
},
|
|
136
|
+
"listed": {
|
|
137
|
+
"label": "Listed",
|
|
138
|
+
"description": "Visible in the public course catalog"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"actions": {
|
|
142
|
+
"cancel": "Cancel",
|
|
143
|
+
"save": "Save Changes",
|
|
144
|
+
"create": "Create Course"
|
|
145
|
+
},
|
|
146
|
+
"validation": {
|
|
147
|
+
"codeMinLength": "Code must have at least 2 characters",
|
|
148
|
+
"codeMaxLength": "Code must have at most 16 characters",
|
|
149
|
+
"codePattern": "Only letters, numbers, and hyphens",
|
|
150
|
+
"internalNameMinLength": "Internal name must have at least 3 characters",
|
|
151
|
+
"commercialTitleMinLength": "Commercial title must have at least 3 characters",
|
|
152
|
+
"descriptionMinLength": "Description must have at least 10 characters",
|
|
153
|
+
"levelRequired": "Select a level",
|
|
154
|
+
"statusRequired": "Select a status",
|
|
155
|
+
"categoriesRequired": "Select at least one category"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"deleteDialog": {
|
|
159
|
+
"title": "Confirm Deletion",
|
|
160
|
+
"description": "Are you sure you want to delete the course",
|
|
161
|
+
"warning": "This course has {{count}} enrolled student(s). Deletion is irreversible.",
|
|
162
|
+
"actions": {
|
|
163
|
+
"cancel": "Cancel",
|
|
164
|
+
"delete": "Delete Course"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"toasts": {
|
|
168
|
+
"courseUpdated": "Course updated successfully!",
|
|
169
|
+
"courseCreated": "Course created successfully! Redirecting...",
|
|
170
|
+
"courseRemoved": "Course \"{{title}}\" removed.",
|
|
171
|
+
"coursesRemoved": "{{count}} course(s) removed.",
|
|
172
|
+
"coursesArchived": "{{count}} course(s) archived.",
|
|
173
|
+
"codeCopied": "Code \"{{code}}\" copied."
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"ExamsPage": {
|
|
177
|
+
"title": "Exams",
|
|
178
|
+
"description": "Manage tests, quizzes, and assessments",
|
|
179
|
+
"breadcrumbs": {
|
|
180
|
+
"home": "Home",
|
|
181
|
+
"exams": "Exams"
|
|
182
|
+
},
|
|
183
|
+
"actions": {
|
|
184
|
+
"createExam": "New Exam"
|
|
185
|
+
},
|
|
186
|
+
"filters": {
|
|
187
|
+
"searchPlaceholder": "Search by title or code...",
|
|
188
|
+
"allStatuses": "All statuses",
|
|
189
|
+
"clear": "Clear",
|
|
190
|
+
"search": "Search"
|
|
191
|
+
},
|
|
192
|
+
"status": {
|
|
193
|
+
"published": "Published",
|
|
194
|
+
"draft": "Draft",
|
|
195
|
+
"closed": "Closed"
|
|
196
|
+
},
|
|
197
|
+
"kpis": {
|
|
198
|
+
"totalExams": {
|
|
199
|
+
"label": "Total Exams",
|
|
200
|
+
"sub": "registered"
|
|
201
|
+
},
|
|
202
|
+
"published": {
|
|
203
|
+
"label": "Published",
|
|
204
|
+
"sub": "available"
|
|
205
|
+
},
|
|
206
|
+
"totalQuestions": {
|
|
207
|
+
"label": "Total Questions",
|
|
208
|
+
"sub": "across all exams"
|
|
209
|
+
},
|
|
210
|
+
"avgScore": {
|
|
211
|
+
"label": "Overall Average",
|
|
212
|
+
"sub": "average completion score"
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"cards": {
|
|
216
|
+
"tooltip": "Double click to manage questions",
|
|
217
|
+
"actions": {
|
|
218
|
+
"label": "Actions",
|
|
219
|
+
"manageQuestions": "Manage Questions",
|
|
220
|
+
"testExam": "Test Exam",
|
|
221
|
+
"edit": "Edit",
|
|
222
|
+
"delete": "Delete"
|
|
223
|
+
},
|
|
224
|
+
"randomLabel": "Random",
|
|
225
|
+
"questionsLabel": "Questions",
|
|
226
|
+
"completionsLabel": "Completions",
|
|
227
|
+
"durationLabel": "Duration",
|
|
228
|
+
"minScoreLabel": "Min score",
|
|
229
|
+
"avgScoreLabel": "Average score"
|
|
230
|
+
},
|
|
231
|
+
"empty": {
|
|
232
|
+
"title": "No exams found",
|
|
233
|
+
"description": "Adjust the filters or create a new exam.",
|
|
234
|
+
"action": "New Exam"
|
|
235
|
+
},
|
|
236
|
+
"pagination": {
|
|
237
|
+
"exams": "exam",
|
|
238
|
+
"examsPlural": "exams",
|
|
239
|
+
"found": "found",
|
|
240
|
+
"foundPlural": "found",
|
|
241
|
+
"page": "Page",
|
|
242
|
+
"of": "of",
|
|
243
|
+
"firstPage": "First",
|
|
244
|
+
"previousPage": "Previous",
|
|
245
|
+
"nextPage": "Next",
|
|
246
|
+
"lastPage": "Last",
|
|
247
|
+
"itemsPerPage": "Items per page"
|
|
248
|
+
},
|
|
249
|
+
"form": {
|
|
250
|
+
"title": {
|
|
251
|
+
"create": "New Exam",
|
|
252
|
+
"edit": "Edit Exam"
|
|
253
|
+
},
|
|
254
|
+
"description": {
|
|
255
|
+
"create": "Fill in the basic exam data. Questions are managed on the dedicated page.",
|
|
256
|
+
"edit": "Fill in the basic exam data. Questions are managed on the dedicated page."
|
|
257
|
+
},
|
|
258
|
+
"fields": {
|
|
259
|
+
"code": {
|
|
260
|
+
"label": "Code",
|
|
261
|
+
"placeholder": "EX-001",
|
|
262
|
+
"required": true
|
|
263
|
+
},
|
|
264
|
+
"title": {
|
|
265
|
+
"label": "Title",
|
|
266
|
+
"placeholder": "Final Exam - Advanced React",
|
|
267
|
+
"required": true
|
|
268
|
+
},
|
|
269
|
+
"minScore": {
|
|
270
|
+
"label": "Min Score",
|
|
271
|
+
"description": "From 0 to 10",
|
|
272
|
+
"required": true
|
|
273
|
+
},
|
|
274
|
+
"timeLimit": {
|
|
275
|
+
"label": "Limit (min)",
|
|
276
|
+
"description": "In minutes",
|
|
277
|
+
"required": true
|
|
278
|
+
},
|
|
279
|
+
"status": {
|
|
280
|
+
"label": "Status",
|
|
281
|
+
"required": true
|
|
282
|
+
},
|
|
283
|
+
"shuffle": {
|
|
284
|
+
"label": "Shuffle questions",
|
|
285
|
+
"description": "Random order for each attempt"
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"actions": {
|
|
289
|
+
"cancel": "Cancel",
|
|
290
|
+
"save": "Save",
|
|
291
|
+
"create": "Create Exam"
|
|
292
|
+
},
|
|
293
|
+
"validation": {
|
|
294
|
+
"codeMinLength": "Minimum 2 characters",
|
|
295
|
+
"titleMinLength": "Minimum 3 characters",
|
|
296
|
+
"minScoreMin": "Min 0",
|
|
297
|
+
"minScoreMax": "Max 10",
|
|
298
|
+
"timeLimitMin": "Minimum 1 minute",
|
|
299
|
+
"statusRequired": "Select a status"
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
"deleteDialog": {
|
|
303
|
+
"title": "Delete Exam",
|
|
304
|
+
"description": "Are you sure you want to delete",
|
|
305
|
+
"warning": "This exam has {{count}} completion(s). This action cannot be undone.",
|
|
306
|
+
"actions": {
|
|
307
|
+
"cancel": "Cancel",
|
|
308
|
+
"delete": "Delete"
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
"toasts": {
|
|
312
|
+
"examUpdated": "Exam updated!",
|
|
313
|
+
"examCreated": "Exam created! Redirecting to questions...",
|
|
314
|
+
"examRemoved": "Exam removed!"
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
"TrainingPage": {
|
|
318
|
+
"title": "Trainings",
|
|
319
|
+
"description": "Learning paths with multiple courses",
|
|
320
|
+
"breadcrumbs": {
|
|
321
|
+
"home": "Home",
|
|
322
|
+
"training": "Trainings"
|
|
323
|
+
},
|
|
324
|
+
"actions": {
|
|
325
|
+
"createTraining": "New Training"
|
|
326
|
+
},
|
|
327
|
+
"kpis": {
|
|
328
|
+
"totalTraining": {
|
|
329
|
+
"label": "Total Trainings",
|
|
330
|
+
"sub": "registered paths"
|
|
331
|
+
},
|
|
332
|
+
"activeTraining": {
|
|
333
|
+
"label": "Active",
|
|
334
|
+
"sub": "available now"
|
|
335
|
+
},
|
|
336
|
+
"enrolledStudents": {
|
|
337
|
+
"label": "Enrolled Students",
|
|
338
|
+
"sub": "across all trainings"
|
|
339
|
+
},
|
|
340
|
+
"coveredCourses": {
|
|
341
|
+
"label": "Covered Courses",
|
|
342
|
+
"sub": "distinct courses"
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
"filters": {
|
|
346
|
+
"searchPlaceholder": "Search trainings by name or description...",
|
|
347
|
+
"allAreas": "All areas",
|
|
348
|
+
"allLevels": "All levels",
|
|
349
|
+
"clear": "Clear",
|
|
350
|
+
"search": "Search"
|
|
351
|
+
},
|
|
352
|
+
"areas": {
|
|
353
|
+
"technology": "Technology",
|
|
354
|
+
"design": "Design",
|
|
355
|
+
"management": "Management",
|
|
356
|
+
"marketing": "Marketing",
|
|
357
|
+
"finance": "Finance"
|
|
358
|
+
},
|
|
359
|
+
"levels": {
|
|
360
|
+
"beginner": "Beginner",
|
|
361
|
+
"intermediate": "Intermediate",
|
|
362
|
+
"advanced": "Advanced"
|
|
363
|
+
},
|
|
364
|
+
"status": {
|
|
365
|
+
"active": "Active",
|
|
366
|
+
"draft": "Draft",
|
|
367
|
+
"closed": "Closed"
|
|
368
|
+
},
|
|
369
|
+
"empty": {
|
|
370
|
+
"title": "No trainings found",
|
|
371
|
+
"description": "Adjust the filters or create a new training.",
|
|
372
|
+
"action": "New Training"
|
|
373
|
+
},
|
|
374
|
+
"cards": {
|
|
375
|
+
"tooltip": "Double click to open",
|
|
376
|
+
"coursesLabel": "courses",
|
|
377
|
+
"hoursLabel": "h",
|
|
378
|
+
"studentsLabel": "students",
|
|
379
|
+
"actions": {
|
|
380
|
+
"label": "Actions",
|
|
381
|
+
"viewDetails": "View details",
|
|
382
|
+
"edit": "Edit",
|
|
383
|
+
"delete": "Delete"
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
"pagination": {
|
|
387
|
+
"formacao": "training",
|
|
388
|
+
"formacoes": "trainings",
|
|
389
|
+
"found": "found",
|
|
390
|
+
"foundPlural": "found",
|
|
391
|
+
"page": "Page",
|
|
392
|
+
"of": "of",
|
|
393
|
+
"firstPage": "First",
|
|
394
|
+
"previousPage": "Previous",
|
|
395
|
+
"nextPage": "Next",
|
|
396
|
+
"lastPage": "Last",
|
|
397
|
+
"itemsPerPage": "Items per page"
|
|
398
|
+
},
|
|
399
|
+
"form": {
|
|
400
|
+
"title": {
|
|
401
|
+
"create": "New Training",
|
|
402
|
+
"edit": "Edit Training"
|
|
403
|
+
},
|
|
404
|
+
"description": {
|
|
405
|
+
"create": "Define the learning path and the courses that compose it.",
|
|
406
|
+
"edit": "Define the learning path and the courses that compose it."
|
|
407
|
+
},
|
|
408
|
+
"fields": {
|
|
409
|
+
"nome": {
|
|
410
|
+
"label": "Name",
|
|
411
|
+
"placeholder": "Full Stack Developer",
|
|
412
|
+
"required": true
|
|
413
|
+
},
|
|
414
|
+
"descricao": {
|
|
415
|
+
"label": "Description",
|
|
416
|
+
"placeholder": "Describe the training...",
|
|
417
|
+
"required": true
|
|
418
|
+
},
|
|
419
|
+
"area": {
|
|
420
|
+
"label": "Area",
|
|
421
|
+
"placeholder": "Select",
|
|
422
|
+
"required": true
|
|
423
|
+
},
|
|
424
|
+
"nivel": {
|
|
425
|
+
"label": "Level",
|
|
426
|
+
"placeholder": "Select",
|
|
427
|
+
"required": true
|
|
428
|
+
},
|
|
429
|
+
"status": {
|
|
430
|
+
"label": "Status",
|
|
431
|
+
"placeholder": "Select",
|
|
432
|
+
"required": true
|
|
433
|
+
},
|
|
434
|
+
"prerequisitos": {
|
|
435
|
+
"label": "Prerequisites",
|
|
436
|
+
"placeholder": "Ex: Basic JavaScript"
|
|
437
|
+
},
|
|
438
|
+
"cursos": {
|
|
439
|
+
"label": "Training Courses",
|
|
440
|
+
"description": "Select the courses for the training"
|
|
441
|
+
}
|
|
442
|
+
},
|
|
443
|
+
"validation": {
|
|
444
|
+
"nomeMinLength": "Minimum 3 characters",
|
|
445
|
+
"descricaoMinLength": "Minimum 10 characters",
|
|
446
|
+
"areaRequired": "Select an area",
|
|
447
|
+
"nivelRequired": "Select a level",
|
|
448
|
+
"statusRequired": "Select a status"
|
|
449
|
+
},
|
|
450
|
+
"actions": {
|
|
451
|
+
"cancel": "Cancel",
|
|
452
|
+
"save": "Save",
|
|
453
|
+
"create": "Create Training"
|
|
454
|
+
}
|
|
455
|
+
},
|
|
456
|
+
"coursesSummary": {
|
|
457
|
+
"courses": "course(s)",
|
|
458
|
+
"hours": "h total",
|
|
459
|
+
"dot": "·"
|
|
460
|
+
},
|
|
461
|
+
"deleteDialog": {
|
|
462
|
+
"title": "Delete Training",
|
|
463
|
+
"description": "Are you sure you want to delete",
|
|
464
|
+
"warning": "This training has {{count}} enrolled student(s). This action cannot be undone.",
|
|
465
|
+
"actions": {
|
|
466
|
+
"cancel": "Cancel",
|
|
467
|
+
"delete": "Delete"
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"toasts": {
|
|
471
|
+
"formacaoUpdated": "Training updated!",
|
|
472
|
+
"formacaoCriada": "Training created!",
|
|
473
|
+
"formacaoRemovida": "Training removed!",
|
|
474
|
+
"openingFormacao": "Opening \"{{nome}}\"...",
|
|
475
|
+
"openingDetails": "Opening training..."
|
|
476
|
+
}
|
|
9
477
|
}
|
|
10
478
|
}
|