diff --git a/icon/iconset/awesome/clipboard-list.svg b/icon/iconset/awesome/clipboard-list.svg
index bbf0d5b1..9f1076cd 100644
--- a/icon/iconset/awesome/clipboard-list.svg
+++ b/icon/iconset/awesome/clipboard-list.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/swad_assignment_resource.c b/swad_assignment_resource.c
index c2449665..24ef7c69 100644
--- a/swad_assignment_resource.c
+++ b/swad_assignment_resource.c
@@ -55,7 +55,7 @@ void AsgRsc_GetLinkToAssignment (void)
Assignments.CurrentPage = Pag_GetParPagNum (Pag_ASSIGNMENTS);
/***** Get assignment code *****/
- Assignments.Asg.AsgCod = ParCod_GetAndCheckPar (ParCod_Asg);
+ Assignments.Asg.AsgCod = ParCod_GetPar (ParCod_Asg);
/***** Get assignment title *****/
AsgRsc_GetTitleFromAsgCod (Assignments.Asg.AsgCod,Title,sizeof (Title) - 1);
diff --git a/swad_attendance_resource.c b/swad_attendance_resource.c
index ff8b5d39..9d9a7995 100644
--- a/swad_attendance_resource.c
+++ b/swad_attendance_resource.c
@@ -45,7 +45,7 @@ void AttRsc_GetLinkToEvent (void)
char Title[Att_MAX_BYTES_ATTENDANCE_EVENT_TITLE + 1];
/***** Get attendance event code *****/
- AttCod = ParCod_GetAndCheckPar (ParCod_Att);
+ AttCod = ParCod_GetPar (ParCod_Att);
/***** Get attendance event title *****/
AttRsc_GetTitleFromAttCod (AttCod,Title,sizeof (Title) - 1);
diff --git a/swad_browser_resource.c b/swad_browser_resource.c
index 853fa5cd..26614623 100644
--- a/swad_browser_resource.c
+++ b/swad_browser_resource.c
@@ -56,7 +56,7 @@ void BrwRsc_GetLinkToFile (void)
Brw_GetParAndInitFileBrowser ();
/***** Get file code *****/
- FilCod = ParCod_GetAndCheckPar (ParCod_Fil);
+ FilCod = ParCod_GetPar (ParCod_Fil);
/***** Get file title *****/
switch (Gbl.Action.Act)
diff --git a/swad_call_for_exam_resource.c b/swad_call_for_exam_resource.c
index 74a5a8ad..d9c19d41 100644
--- a/swad_call_for_exam_resource.c
+++ b/swad_call_for_exam_resource.c
@@ -46,7 +46,7 @@ void Cfe_GetLinkToCallForExam (void)
char Title[Cfe_MAX_BYTES_SESSION_AND_DATE];
/***** Get the code of the call for exam *****/
- ExaCod = ParCod_GetAndCheckPar (ParCod_Exa);
+ ExaCod = ParCod_GetPar (ParCod_Exa);
/***** Get session and date of the exam *****/
CfeRsc_GetTitleFromExaCod (ExaCod,Title,sizeof (Title) - 1);
diff --git a/swad_changelog.h b/swad_changelog.h
index 0bc407b0..3475fb4a 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -629,15 +629,26 @@ TODO: Emilce Barrera Mesa: Podr
TODO: Emilce Barrera Mesa: Mis estudiantes presentan muchas dificultades a la hora de poner la foto porque la plataforma es muy exigente respecto al fondo de la imagen.
*/
-#define Log_PLATFORM_VERSION "SWAD 22.86.1 (2023-03-29)"
+#define Log_PLATFORM_VERSION "SWAD 22.86.2 (2023-03-30)"
#define CSS_FILE "swad22.86.css"
#define JS_FILE "swad22.49.js"
/*
+ Version 22.86.2: Mar 30, 2023 New links to manual about resource clipboard.
+ Fixed bugs in links to resources. (338655 lines)
Version 22.86.1: Mar 29, 2023 Icon to remove resource clipboard only if there are resources. (338596 lines)
Version 22.86: Mar 29, 2023 New actions to see and remove the resource clipboard in rubrics. (338578 lines)
Version 22.85.1: Mar 29, 2023 Code refactoring in links to update sections. (338447 lines)
Version 22.85: Mar 29, 2023 New action to remove the resource clipboard in program. (338449 lines)
Version 22.84: Mar 29, 2023 New action to see the resource clipboard in program. (338356 lines)
+Copy the following icons to icon public directory:
+sudo cp -a icon/clipboard-user.svg /var/www/html/swad/icon/
+sudo cp -a icon/clipboard.svg /var/www/html/swad/icon/
+sudo cp -a icon/clipboard-check.svg /var/www/html/swad/icon/
+sudo cp -a icon/clipboard-question.svg /var/www/html/swad/icon/
+sudo cp -a icon/clipboard-list.svg /var/www/html/swad/icon/
+sudo cp -a icon/paste.svg /var/www/html/swad/icon/
+sudo cp -a icon/iconset/awesome/clipboard-list.svg /var/www/html/swad/icon/iconset/awesome/
+
Version 22.83.5: Mar 28, 2023 Fixed bugs in rubrics and exams. (338235 lines)
Version 22.83.4: Mar 28, 2023 Code refactoring in rubrics and exams. (338221 lines)
Version 22.83.3: Mar 27, 2023 Changes in rubric criteria. (338218 lines)
diff --git a/swad_exam.c b/swad_exam.c
index ebadd1f3..092ad405 100644
--- a/swad_exam.c
+++ b/swad_exam.c
@@ -199,7 +199,7 @@ void Exa_SeeAllExams (void)
Exa_ResetExams (&Exams);
/***** Get parameters *****/
- Exa_GetPars (&Exams,false); // Don't check exam code
+ Exa_GetPars (&Exams,Exa_DONT_CHECK_EXA_COD);
/***** Show all exams *****/
Exa_ListAllExams (&Exams);
@@ -414,7 +414,7 @@ void Exa_SeeOneExam (void)
ExaSes_ResetSession (&Session);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
/***** Get exam data *****/
Exa_GetExamDataByCod (&Exams.Exam);
@@ -729,12 +729,12 @@ void Exa_PutPars (void *Exams)
/******************* Get parameters used to edit an exam **********************/
/*****************************************************************************/
-void Exa_GetPars (struct Exa_Exams *Exams,bool CheckExaCod)
+void Exa_GetPars (struct Exa_Exams *Exams,Exa_CheckExaCod_t CheckExaCod)
{
long (*GetExaCo[2]) (ParCod_Param_t ParCode) =
{
- [false] = ParCod_GetPar,
- [true ] = ParCod_GetAndCheckPar,
+ [Exa_DONT_CHECK_EXA_COD] = ParCod_GetPar,
+ [Exa_CHECK_EXA_COD ] = ParCod_GetAndCheckPar,
};
/***** Get other parameters *****/
@@ -991,7 +991,7 @@ void Exa_AskRemExam (void)
Exa_ResetExam (&Exams.Exam);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
/***** Get data of the exam from database *****/
Exa_GetExamDataByCod (&Exams.Exam);
@@ -1213,7 +1213,7 @@ static void Exa_HideUnhideExam (bool Hide)
Exa_ResetExam (&Exams.Exam);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
/***** Get data of the exam from database *****/
Exa_GetExamDataByCod (&Exams.Exam);
@@ -1245,7 +1245,7 @@ void Exa_ReqCreatOrEditExam (void)
ExaSet_ResetSet (&Set);
/***** Get parameters *****/
- Exa_GetPars (&Exams,false); // Don't check exam code
+ Exa_GetPars (&Exams,Exa_DONT_CHECK_EXA_COD);
ItsANewExam = (Exams.Exam.ExaCod <= 0);
/***** Get exam data *****/
@@ -1418,7 +1418,7 @@ void Exa_ReceiveFormExam (void)
ExaSet_ResetSet (&Set);
/***** Get parameters *****/
- Exa_GetPars (&Exams,false); // Don't check exam code
+ Exa_GetPars (&Exams,Exa_DONT_CHECK_EXA_COD);
ItsANewExam = (Exams.Exam.ExaCod <= 0);
/***** Get all current exam data from database *****/
diff --git a/swad_exam.h b/swad_exam.h
index 8ea27527..6819cf5a 100644
--- a/swad_exam.h
+++ b/swad_exam.h
@@ -52,7 +52,7 @@ void Exa_ShowOnlyOneExamEnd (void);
void Exa_SetCurrentExaCod (long ExaCod);
void Exa_PutPars (void *Exams);
-void Exa_GetPars (struct Exa_Exams *Exams,bool CheckExaCod);
+void Exa_GetPars (struct Exa_Exams *Exams,Exa_CheckExaCod_t CheckExaCod);
void Exa_GetListExams (struct Exa_Exams *Exams,Exa_Order_t SelectedOrder);
void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams);
diff --git a/swad_exam_resource.c b/swad_exam_resource.c
index 2a3718b1..2a1c8019 100644
--- a/swad_exam_resource.c
+++ b/swad_exam_resource.c
@@ -49,7 +49,7 @@ void ExaRsc_GetLinkToExam (void)
Exa_ResetExams (&Exams);
/***** Get parameters *****/
- Exa_GetPars (&Exams,false);
+ Exa_GetPars (&Exams,Exa_DONT_CHECK_EXA_COD);
/***** Get exam title *****/
ExaRsc_GetTitleFromExaCod (Exams.Exam.ExaCod,Title,sizeof (Title) - 1);
diff --git a/swad_exam_result.c b/swad_exam_result.c
index 13ec5441..fd73902d 100644
--- a/swad_exam_result.c
+++ b/swad_exam_result.c
@@ -195,7 +195,7 @@ void ExaRes_ShowMyResultsInExa (void)
ExaSes_ResetSession (&Session);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
/***** Get exam data from database *****/
Exa_GetExamDataByCod (&Exams.Exam);
@@ -243,7 +243,7 @@ void ExaRes_ShowMyResultsInSes (void)
ExaSes_ResetSession (&Session);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
Session.SesCod = ParCod_GetAndCheckPar (ParCod_Ses);
Exa_GetExamDataByCod (&Exams.Exam);
ExaSes_GetSessionDataByCod (&Session);
@@ -389,7 +389,7 @@ void ExaRes_ShowAllResultsInExa (void)
ExaSes_ResetSession (&Session);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
Exa_GetExamDataByCod (&Exams.Exam);
/***** Exam begin *****/
@@ -457,7 +457,7 @@ void ExaRes_ShowAllResultsInSes (void)
ExaSes_ResetSession (&Session);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
Session.SesCod = ParCod_GetAndCheckPar (ParCod_Ses);
/***** Get exam data and session *****/
diff --git a/swad_exam_session.c b/swad_exam_session.c
index 4611ebfb..2dcc59e2 100644
--- a/swad_exam_session.c
+++ b/swad_exam_session.c
@@ -939,7 +939,7 @@ void ExaSes_GetAndCheckPars (struct Exa_Exams *Exams,
struct ExaSes_Session *Session)
{
/***** Get parameters *****/
- Exa_GetPars (Exams,true);
+ Exa_GetPars (Exams,Exa_CHECK_EXA_COD);
Grp_GetParWhichGroups ();
Session->SesCod = ParCod_GetAndCheckPar (ParCod_Ses);
@@ -1121,7 +1121,7 @@ void ExaSes_ReqCreatOrEditSes (void)
ExaSes_ResetSession (&Session);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
Grp_GetParWhichGroups ();
Session.SesCod = ParCod_GetPar (ParCod_Ses);
ItsANewSession = (Session.SesCod <= 0);
@@ -1167,7 +1167,7 @@ void ExaSes_ReceiveFormSession (void)
ExaSes_ResetSession (&Session);
/***** Get main parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
Grp_GetParWhichGroups ();
Session.SesCod = ParCod_GetPar (ParCod_Ses);
ItsANewSession = (Session.SesCod <= 0);
diff --git a/swad_exam_set.c b/swad_exam_set.c
index 672ecf3a..f70e0108 100644
--- a/swad_exam_set.c
+++ b/swad_exam_set.c
@@ -255,7 +255,7 @@ void ExaSet_ReceiveFormSet (void)
ExaSet_ResetSet (&Set);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
Set.ExaCod = Exams.Exam.ExaCod;
/***** Get exam data from database *****/
@@ -452,7 +452,7 @@ void ExaSet_ReqCreatOrEditSet (void)
ExaSet_ResetSet (&Set);
/***** Get parameters *****/
- Exa_GetPars (&Exams,true);
+ Exa_GetPars (&Exams,Exa_CHECK_EXA_COD);
Exams.SetCod = Set.SetCod = ParCod_GetPar (ParCod_Set);
ItsANewSet = (Set.SetCod <= 0);
@@ -1627,7 +1627,7 @@ static void ExaSet_GetAndCheckPars (struct Exa_Exams *Exams,
struct ExaSet_Set *Set)
{
/***** Get parameters *****/
- Exa_GetPars (Exams,true);
+ Exa_GetPars (Exams,Exa_CHECK_EXA_COD);
Grp_GetParWhichGroups ();
Set->SetCod = ParCod_GetAndCheckPar (ParCod_Set);
diff --git a/swad_exam_type.h b/swad_exam_type.h
index 541f401b..92cd2c61 100644
--- a/swad_exam_type.h
+++ b/swad_exam_type.h
@@ -56,6 +56,12 @@ typedef enum
} Exa_Order_t;
#define Exa_ORDER_DEFAULT Exa_ORDER_BY_START_DATE
+typedef enum
+ {
+ Exa_DONT_CHECK_EXA_COD,
+ Exa_CHECK_EXA_COD,
+ } Exa_CheckExaCod_t;
+
struct Exa_ExamSelected
{
long ExaCod; // Exam code
diff --git a/swad_help_URL.c b/swad_help_URL.c
index 32472377..00452611 100644
--- a/swad_help_URL.c
+++ b/swad_help_URL.c
@@ -1032,6 +1032,29 @@ const char *Hlp_COURSE_Program_edit_item =
"COURSE.Program.en#edit-item";
#endif
+const char *Hlp_COURSE_Program_resource_clipboard =
+#if L==1
+ "COURSE.Program.en#resource-clipboard";
+#elif L==2
+ "COURSE.Program.en#resource-clipboard";
+#elif L==3
+ "COURSE.Program.en#resource-clipboard";
+#elif L==4
+ "COURSE.Program.es#portapapeles-de-recursos";
+#elif L==5
+ "COURSE.Program.en#resource-clipboard";
+#elif L==6
+ "COURSE.Program.es#portapapeles-de-recursos";
+#elif L==7
+ "COURSE.Program.en#resource-clipboard";
+#elif L==8
+ "COURSE.Program.en#resource-clipboard";
+#elif L==9
+ "COURSE.Program.en#resource-clipboard";
+#elif L==10 // tr
+ "COURSE.Program.en#resource-clipboard";
+#endif
+
const char *Hlp_COURSE_Guide =
#if L==1
"COURSE.Guide.es";
@@ -2116,6 +2139,29 @@ const char *Hlp_ASSESSMENT_Rubrics_criteria =
"ASSESSMENT.Rubrics.en#criteria";
#endif
+const char *Hlp_ASSESSMENT_Rubrics_resource_clipboard =
+#if L==1
+ "ASSESSMENT.Rubrics.es#resource-clipboard";
+#elif L==2
+ "ASSESSMENT.Rubrics.en#resource-clipboard";
+#elif L==3
+ "ASSESSMENT.Rubrics.en#resource-clipboard";
+#elif L==4
+ "ASSESSMENT.Rubrics.es#portapapeles-de-recursos";
+#elif L==5
+ "ASSESSMENT.Rubrics.en#resource-clipboard";
+#elif L==6
+ "ASSESSMENT.Rubrics.es#portapapeles-de-recursos";
+#elif L==7
+ "ASSESSMENT.Rubrics.en#resource-clipboard";
+#elif L==8
+ "ASSESSMENT.Rubrics.en#resource-clipboard";
+#elif L==9
+ "ASSESSMENT.Rubrics.en#resource-clipboard";
+#elif L==10 // tr
+ "ASSESSMENT.Rubrics.en#resource-clipboard";
+#endif
+
/***** FILES tab *****/
const char *Hlp_FILES_Documents =
diff --git a/swad_program_resource.c b/swad_program_resource.c
index 640e66bb..5a835cf6 100644
--- a/swad_program_resource.c
+++ b/swad_program_resource.c
@@ -854,12 +854,12 @@ void PrgRsc_ViewResourceClipboard (void)
static void PrgRsc_ShowClipboard (void)
{
- extern const char *Hlp_COURSE_Program;
+ extern const char *Hlp_COURSE_Program_resource_clipboard;
extern const char *Txt_Resource_clipboard;
Box_BoxBegin (NULL,Txt_Resource_clipboard,
PrgRsc_PutIconsClipboard,NULL,
- Hlp_COURSE_Program,Box_CLOSABLE);
+ Hlp_COURSE_Program_resource_clipboard,Box_CLOSABLE);
Rsc_ShowClipboard ();
Box_BoxEnd ();
}
diff --git a/swad_project_resource.c b/swad_project_resource.c
index 84f6835b..2a320411 100644
--- a/swad_project_resource.c
+++ b/swad_project_resource.c
@@ -51,7 +51,7 @@ void PrjRsc_GetLinkToProject (void)
/***** Get parameters *****/
Prj_GetPars (&Projects);
- Projects.Prj.PrjCod = ParCod_GetAndCheckPar (ParCod_Prj);
+ Projects.Prj.PrjCod = ParCod_GetPar (ParCod_Prj);
/***** Get project title *****/
PrjRsc_GetTitleFromPrjCod (Projects.Prj.PrjCod,Title,sizeof (Title) - 1);
diff --git a/swad_rubric_resource.c b/swad_rubric_resource.c
index 4b5a84d9..36c69ef9 100644
--- a/swad_rubric_resource.c
+++ b/swad_rubric_resource.c
@@ -157,12 +157,12 @@ void RubRsc_ViewResourceClipboard (void)
static void RubRsc_ShowClipboard (void)
{
- extern const char *Hlp_ASSESSMENT_Rubrics;
+ extern const char *Hlp_ASSESSMENT_Rubrics_resource_clipboard;
extern const char *Txt_Resource_clipboard;
Box_BoxBegin (NULL,Txt_Resource_clipboard,
RubRsc_PutIconsClipboard,NULL,
- Hlp_ASSESSMENT_Rubrics,Box_CLOSABLE);
+ Hlp_ASSESSMENT_Rubrics_resource_clipboard,Box_CLOSABLE);
Rsc_ShowClipboard ();
Box_BoxEnd ();
}
diff --git a/swad_survey_resource.c b/swad_survey_resource.c
index cffeffd0..940a7ef7 100644
--- a/swad_survey_resource.c
+++ b/swad_survey_resource.c
@@ -49,7 +49,7 @@ void SvyRsc_GetLinkToSurvey (void)
Svy_ResetSurveys (&Surveys);
/***** Get survey code *****/
- Surveys.Svy.SvyCod = ParCod_GetAndCheckPar (ParCod_Svy);
+ Surveys.Svy.SvyCod = ParCod_GetPar (ParCod_Svy);
/***** Get survey title *****/
SvyRsc_GetTitleFromSvyCod (Surveys.Svy.SvyCod,Title,sizeof (Title) - 1);
diff --git a/swad_text_action.c b/swad_text_action.c
index 65720552..16cff800 100644
--- a/swad_text_action.c
+++ b/swad_text_action.c
@@ -11817,25 +11817,25 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
,
[ActSeeExa] =
#if L==1 // ca
- "See exams" // Necessita traducció
+ "Veure examen"
#elif L==2 // de
- "See exams" // Need Übersetzung
+ "Siehe Prüfung"
#elif L==3 // en
- "See exams"
+ "See exam"
#elif L==4 // es
- "Ver exámenes"
+ "Ver examen"
#elif L==5 // fr
- "See exams" // Besoin de traduction
+ "Voir examen"
#elif L==6 // gn
- "Ver exámenes" // Okoteve traducción
+ "Ehecha examen"
#elif L==7 // it
- "See exams" // Bisogno di traduzione
+ "Vedi esame"
#elif L==8 // pl
- "See exams" // Potrzebujesz tlumaczenie
+ "Zobacz egzamin"
#elif L==9 // pt
- "See exams" // Precisa de tradução
+ "Ver exame"
#elif L==10 // tr
- "See exams" // Çeviri lazim!
+ "Sınava bakın"
#endif
,
[ActFrmNewExa] =