diff --git a/swad_action.c b/swad_action.c index f0b65cc8..41a4cb8a 100644 --- a/swad_action.c +++ b/swad_action.c @@ -730,7 +730,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [ActSeeExaPrn ] = {1904,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,ExaPrn_ShowExamPrint ,NULL}, [ActAnsExaPrn ] = {1906,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,ExaPrn_ReceivePrintAnswer ,NULL}, - [ActEndExaPrn ] = {1908,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,NULL ,ExaRes_ShowOneExaResult ,NULL}, + [ActEndExaPrn ] = {1908,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,NULL ,ExaRes_ShowExaResultAfterFinish,NULL}, [ActSeeMyExaResCrs ] = {1867,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyResultsInCrs ,NULL}, [ActSeeMyExaResExa ] = {1868,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyResultsInExa ,NULL}, diff --git a/swad_changelog.h b/swad_changelog.h index 4815bf6f..dbd1e861 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -452,8 +452,6 @@ Lo de mutear anuncios, en principio prefiero hacer una opci // TODO: Non-editing teacher should create attendance events and control attendance -// TODO: Reportado por Javier Fernández Baldomero. Un profesor debería poder cambiar la foto de un estudiante confirmado. Sale el icono, pero luego dice ue no hay permiso - // TODO: URGENTE: Reportado por Javier Fernández Baldomero. Al pasar lista con SWADroid, los estudiantes sin foto no salen en la lista de alumnos de SWADroid. // TODO: Sugerencia de Pedro A. García Sánchez: poner un enlace a horario externo, igual que con otras partes de la información @@ -555,7 +553,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 20.9 (2021-01-20)" +#define Log_PLATFORM_VERSION "SWAD 20.9.1 (2021-01-27)" #define CSS_FILE "swad20.8.css" #define JS_FILE "swad20.6.2.js" /* @@ -602,6 +600,9 @@ Juan Miguel. TODO: Fix bug: un profesor editor no puede ver las carpetas de TFG (proyectos) de otros. Debería poder. TODO: DNI de un estudiante sale erróneamente como ******* en lugar de mostrarse al ver los accesos de un estudiante a la asignatura. +TODO: Reportado por Javier Fernández Baldomero. Un profesor debería poder cambiar la foto de un estudiante confirmado. Sale el icono, pero luego dice ue no hay permiso + + Version 20.9.1: Jan 27, 2021 Code refactoring in exam results. (304865 lines) Version 20.9: Jan 20, 2021 Exam print ready to be answered is displayed in a new tab. Code refactoring in exam results. (304829 lines) Version 20.8: Dec 15, 2020 Fixed bug in file browser. Reported by Javier Fernández Baldomero. (304711 lines) diff --git a/swad_exam_result.c b/swad_exam_result.c index 1ae11daf..cf9c693e 100644 --- a/swad_exam_result.c +++ b/swad_exam_result.c @@ -1322,6 +1322,58 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults, HTM_TR_End (); } +/*****************************************************************************/ +/************** Show one exam result after finish answering it ***************/ +/*****************************************************************************/ + +void ExaRes_ShowExaResultAfterFinish (void) + { + struct Exa_Exams Exams; + struct Exa_Exam Exam; + struct ExaSes_Session Session; + struct ExaPrn_Print Print; + + /***** Reset exams context *****/ + Exa_ResetExams (&Exams); + Exa_ResetExam (&Exam); + ExaSes_ResetSession (&Session); + + /***** Get and check parameters *****/ + ExaSes_GetAndCheckParameters (&Exams,&Exam,&Session); + + /***** Get exam print data *****/ + Print.SesCod = Session.SesCod; + Print.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod; + ExaPrn_GetDataOfPrintBySesCodAndUsrCod (&Print); + + /***** Set log action and print code *****/ + // The user has clicked on the "I have finished" button in an exam print + ExaLog_SetAction (ExaLog_FINISH_EXAM); + ExaLog_SetPrnCod (Print.PrnCod); + ExaLog_SetIfCanAnswer (ExaSes_CheckIfICanAnswerThisSession (&Exam,&Session)); + + /***** Get questions and user's answers of exam print from database *****/ + ExaPrn_GetPrintQuestionsFromDB (&Print); + + /***** Show exam result *****/ + ExaRes_ShowExamResult (&Exam,&Session,&Print,&Gbl.Usrs.Me.UsrDat); + + /***** Show exam log *****/ + switch (Gbl.Usrs.Me.Role.Logged) + { + case Rol_NET: + case Rol_TCH: + case Rol_DEG_ADM: + case Rol_CTR_ADM: + case Rol_INS_ADM: + case Rol_SYS_ADM: + ExaLog_ShowExamLog (&Print); + break; + default: // Other users can not see log + return; + } + } + /*****************************************************************************/ /*************************** Show one exam result ****************************/ /*****************************************************************************/ @@ -1344,9 +1396,8 @@ void ExaRes_ShowOneExaResult (void) ExaSes_GetAndCheckParameters (&Exams,&Exam,&Session); /***** Pointer to user's data *****/ - MeOrOther = (Gbl.Action.Act == ActSeeOneExaResMe || - Gbl.Action.Act == ActEndExaPrn) ? Usr_ME : - Usr_OTHER; + MeOrOther = (Gbl.Action.Act == ActSeeOneExaResMe) ? Usr_ME : + Usr_OTHER; switch (MeOrOther) { case Usr_ME: @@ -1364,15 +1415,6 @@ void ExaRes_ShowOneExaResult (void) Print.UsrCod = UsrDat->UsrCod; ExaPrn_GetDataOfPrintBySesCodAndUsrCod (&Print); - /***** Set log action and print code *****/ - if (Gbl.Action.Act == ActEndExaPrn) - { - // The user has clicked on the "I have finished" button in an exam print - ExaLog_SetAction (ExaLog_FINISH_EXAM); - ExaLog_SetPrnCod (Print.PrnCod); - ExaLog_SetIfCanAnswer (ExaSes_CheckIfICanAnswerThisSession (&Exam,&Session)); - } - /***** Get questions and user's answers of exam print from database *****/ ExaPrn_GetPrintQuestionsFromDB (&Print); diff --git a/swad_exam_result.h b/swad_exam_result.h index 98f509a5..adfdd83b 100644 --- a/swad_exam_result.h +++ b/swad_exam_result.h @@ -49,6 +49,7 @@ void ExaRes_ShowAllResultsInCrs (void); void ExaRes_ShowAllResultsInExa (void); void ExaRes_ShowAllResultsInSes (void); +void ExaRes_ShowExaResultAfterFinish (void); void ExaRes_ShowOneExaResult (void); void ExaRes_ShowExamResultUser (struct UsrData *UsrDat);