mirror of https://github.com/acanas/swad-core.git
Version19.239.9
This commit is contained in:
parent
3b6a4f4443
commit
86efca6412
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue