Version19.239.9

This commit is contained in:
acanas 2020-05-21 16:59:14 +02:00
parent 3b6a4f4443
commit 86efca6412
4 changed files with 23 additions and 15 deletions

View File

@ -557,10 +557,11 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD: En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 19.239.8 (2020-05-21)" #define Log_PLATFORM_VERSION "SWAD 19.239.9 (2020-05-21)"
#define CSS_FILE "swad19.238.2.css" #define CSS_FILE "swad19.238.2.css"
#define JS_FILE "swad19.239.6.js" #define JS_FILE "swad19.239.6.js"
/* /*
Version 19.239.9: May 21, 2020 Fixed issue in exam sessions: exam prints in sessions of hidden exams are no accesible. (301441 lines)
Version 19.239.8: May 21, 2020 Fixed issue in exam sessions: a student can not see hidden sessions. (301433 lines) Version 19.239.8: May 21, 2020 Fixed issue in exam sessions: a student can not see hidden sessions. (301433 lines)
Version 19.239.7: May 21, 2020 Fixed bug in permissions to see exam results. Reported by Eduardo Ros Vidal. (301412 lines) Version 19.239.7: May 21, 2020 Fixed bug in permissions to see exam results. Reported by Eduardo Ros Vidal. (301412 lines)
Version 19.239.6: May 21, 2020 Code refactoring in JS function to escape chars. (301411 lines) Version 19.239.6: May 21, 2020 Code refactoring in JS function to escape chars. (301411 lines)

View File

@ -185,7 +185,7 @@ void ExaPrn_ShowExamPrint (void)
ExaSes_GetAndCheckParameters (&Exams,&Exam,&Session); ExaSes_GetAndCheckParameters (&Exams,&Exam,&Session);
/***** Check if I can access to this session *****/ /***** Check if I can access to this session *****/
if (ExaSes_CheckIfICanAnswerThisSession (&Session)) if (ExaSes_CheckIfICanAnswerThisSession (&Exam,&Session))
{ {
/***** Get print data from database *****/ /***** Get print data from database *****/
Print.SesCod = Session.SesCod; Print.SesCod = Session.SesCod;

View File

@ -91,6 +91,7 @@ static void ExaSes_ListOneOrMoreSessionsAuthor (const struct ExaSes_Session *Ses
static void ExaSes_ListOneOrMoreSessionsTimes (const struct ExaSes_Session *Session, static void ExaSes_ListOneOrMoreSessionsTimes (const struct ExaSes_Session *Session,
unsigned UniqueId); unsigned UniqueId);
static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams, static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams,
const struct Exa_Exam *Exam,
const struct ExaSes_Session *Session, const struct ExaSes_Session *Session,
const char *Anchor); const char *Anchor);
static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSes_Session *Session); static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSes_Session *Session);
@ -145,9 +146,9 @@ void ExaSes_ResetSession (struct ExaSes_Session *Session)
/*****************************************************************************/ /*****************************************************************************/
void ExaSes_ListSessions (struct Exa_Exams *Exams, void ExaSes_ListSessions (struct Exa_Exams *Exams,
struct Exa_Exam *Exam, struct Exa_Exam *Exam,
struct ExaSes_Session *Session, struct ExaSes_Session *Session,
bool PutFormSession) bool PutFormSession)
{ {
extern const char *Hlp_ASSESSMENT_Exams_sessions; extern const char *Hlp_ASSESSMENT_Exams_sessions;
extern const char *Txt_Sessions; extern const char *Txt_Sessions;
@ -440,7 +441,7 @@ static void ExaSes_ListOneOrMoreSessions (struct Exa_Exams *Exams,
ExaSes_ListOneOrMoreSessionsTimes (&Session,UniqueId); ExaSes_ListOneOrMoreSessionsTimes (&Session,UniqueId);
/* Title and groups */ /* Title and groups */
ExaSes_ListOneOrMoreSessionsTitleGrps (Exams,&Session,Anchor); ExaSes_ListOneOrMoreSessionsTitleGrps (Exams,Exam,&Session,Anchor);
/* Session result visible? */ /* Session result visible? */
ExaSes_ListOneOrMoreSessionsResult (Exams,&Session); ExaSes_ListOneOrMoreSessionsResult (Exams,&Session);
@ -616,8 +617,9 @@ static void ExaSes_ListOneOrMoreSessionsTimes (const struct ExaSes_Session *Sess
/*****************************************************************************/ /*****************************************************************************/
static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams, static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams,
const struct ExaSes_Session *Session, const struct Exa_Exam *Exam,
const char *Anchor) const struct ExaSes_Session *Session,
const char *Anchor)
{ {
extern const char *Txt_Play; extern const char *Txt_Play;
extern const char *Txt_Resume; extern const char *Txt_Resume;
@ -626,7 +628,7 @@ static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams,
/***** Session title *****/ /***** Session title *****/
HTM_ARTICLE_Begin (Anchor); HTM_ARTICLE_Begin (Anchor);
if (ExaSes_CheckIfICanAnswerThisSession (Session)) if (ExaSes_CheckIfICanAnswerThisSession (Exam,Session))
{ {
Frm_StartForm (ActSeeExaPrn); Frm_StartForm (ActSeeExaPrn);
Exa_PutParams (Exams); Exa_PutParams (Exams);
@ -634,7 +636,7 @@ static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams,
HTM_BUTTON_SUBMIT_Begin (Gbl.Usrs.Me.Role.Logged == Rol_STD ? Txt_Play : HTM_BUTTON_SUBMIT_Begin (Gbl.Usrs.Me.Role.Logged == Rol_STD ? Txt_Play :
Txt_Resume, Txt_Resume,
Session->Hidden ? "BT_LINK LT ASG_TITLE_LIGHT": Session->Hidden ? "BT_LINK LT ASG_TITLE_LIGHT":
"BT_LINK LT ASG_TITLE", "BT_LINK LT ASG_TITLE",
NULL); NULL);
HTM_Txt (Session->Title); HTM_Txt (Session->Title);
HTM_BUTTON_End (); HTM_BUTTON_End ();
@ -643,7 +645,7 @@ static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams,
else else
{ {
HTM_SPAN_Begin ("class=\"%s\"",Session->Hidden ? "LT ASG_TITLE_LIGHT": HTM_SPAN_Begin ("class=\"%s\"",Session->Hidden ? "LT ASG_TITLE_LIGHT":
"LT ASG_TITLE"); "LT ASG_TITLE");
HTM_Txt (Session->Title); HTM_Txt (Session->Title);
HTM_SPAN_End (); HTM_SPAN_End ();
} }
@ -1653,12 +1655,16 @@ unsigned ExaSes_GetNumOpenSessionsInExam (long ExaCod)
/******** Check if I belong to any of the groups of an exam session **********/ /******** Check if I belong to any of the groups of an exam session **********/
/*****************************************************************************/ /*****************************************************************************/
bool ExaSes_CheckIfICanAnswerThisSession (const struct ExaSes_Session *Session) bool ExaSes_CheckIfICanAnswerThisSession (const struct Exa_Exam *Exam,
const struct ExaSes_Session *Session)
{ {
/***** Hidden or closed sessions are not accesible *****/ /***** 1. Sessions in hidden exams are not accesible
if (Session->Hidden || !Session->Open) 2. Hidden or closed sessions are not accesible *****/
if (Exam->Hidden || Session->Hidden || !Session->Open)
return false; return false;
/***** Exam is visible, session is visible and open ==>
==> I can answer this session if I can list it based on groups *****/
return ExaSes_CheckIfICanListThisSessionBasedOnGrps (Session->SesCod); return ExaSes_CheckIfICanListThisSessionBasedOnGrps (Session->SesCod);
} }

View File

@ -86,7 +86,8 @@ void ExaSes_RemoveGroupsOfType (long GrpTypCod);
unsigned ExaSes_GetNumSessionsInExam (long ExaCod); unsigned ExaSes_GetNumSessionsInExam (long ExaCod);
unsigned ExaSes_GetNumOpenSessionsInExam (long ExaCod); unsigned ExaSes_GetNumOpenSessionsInExam (long ExaCod);
bool ExaSes_CheckIfICanAnswerThisSession (const struct ExaSes_Session *Session); bool ExaSes_CheckIfICanAnswerThisSession (const struct Exa_Exam *Exam,
const struct ExaSes_Session *Session);
bool ExaSes_CheckIfICanListThisSessionBasedOnGrps (long SesCod); bool ExaSes_CheckIfICanListThisSessionBasedOnGrps (long SesCod);
#endif #endif