Version19.235.2

This commit is contained in:
acanas 2020-05-17 20:12:37 +02:00
parent b44885a767
commit 7c87e9f456
10 changed files with 149 additions and 122 deletions

View File

@ -693,13 +693,13 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActSeeMyExaEvtResCrs] = {1867,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInCrs ,NULL}, [ActSeeMyExaEvtResCrs] = {1867,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInCrs ,NULL},
[ActSeeMyExaEvtResExa] = {1868,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInExa ,NULL}, [ActSeeMyExaEvtResExa] = {1868,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInExa ,NULL},
[ActSeeMyExaEvtResEvt] = {1869,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInEvt ,NULL}, [ActSeeMyExaEvtResEvt] = {1869,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInSes ,NULL},
[ActSeeOneExaEvtResMe] = {1870,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowOneExaResult ,NULL}, [ActSeeOneExaEvtResMe] = {1870,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowOneExaResult ,NULL},
[ActReqSeeAllExaEvtRes] = {1871,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_SelUsrsToViewExaResults ,NULL}, [ActReqSeeAllExaEvtRes] = {1871,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_SelUsrsToViewExaResults ,NULL},
[ActSeeAllExaEvtResCrs] = {1872,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowAllExaResultsInCrs ,NULL}, [ActSeeAllExaEvtResCrs] = {1872,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowAllExaResultsInCrs ,NULL},
[ActSeeAllExaEvtResExa] = {1873,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowAllExaResultsInExa ,NULL}, [ActSeeAllExaEvtResExa] = {1873,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowAllExaResultsInExa ,NULL},
[ActSeeAllExaEvtResEvt] = {1874,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowAllExaResultsInEvt ,NULL}, [ActSeeAllExaEvtResEvt] = {1874,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowAllExaResultsInSes ,NULL},
[ActSeeOneExaEvtResOth] = {1875,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowOneExaResult ,NULL}, [ActSeeOneExaEvtResOth] = {1875,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowOneExaResult ,NULL},
[ActChgVisResExaEvtUsr] = {1876,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_ToggleVisResultsSesUsr ,NULL}, [ActChgVisResExaEvtUsr] = {1876,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_ToggleVisResultsSesUsr ,NULL},
@ -730,7 +730,6 @@ 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_1ST_TAB,NULL ,ExaPrn_ShowExamPrint ,NULL}, [ActSeeExaPrn ] = {1904,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaPrn_ShowExamPrint ,NULL},
[ActAnsExaPrn ] = {1906,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_RFRESH,NULL ,ExaPrn_ReceivePrintAnswer ,NULL}, [ActAnsExaPrn ] = {1906,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_RFRESH,NULL ,ExaPrn_ReceivePrintAnswer ,NULL},
[ActEndExaPrn ] = {1905,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaPrn_EndPrintAnswer ,NULL},
[ActSeeGam ] = {1650,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeOneGame ,NULL}, [ActSeeGam ] = {1650,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeOneGame ,NULL},
@ -3714,7 +3713,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActEdiOneExaEvt, // #1902 ActEdiOneExaEvt, // #1902
ActChgExaEvt, // #1903 ActChgExaEvt, // #1903
ActSeeExaPrn, // #1904 ActSeeExaPrn, // #1904
ActEndExaPrn, // #1905 -1, // #1905 (obsolete action)
ActAnsExaPrn, // #1906 ActAnsExaPrn, // #1906
ActEdiTag, // #1907 ActEdiTag, // #1907
}; };

View File

@ -695,83 +695,82 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActSeeExaPrn (ActChgCrsTT1stDay + 164) #define ActSeeExaPrn (ActChgCrsTT1stDay + 164)
#define ActAnsExaPrn (ActChgCrsTT1stDay + 165) #define ActAnsExaPrn (ActChgCrsTT1stDay + 165)
#define ActEndExaPrn (ActChgCrsTT1stDay + 166)
#define ActSeeGam (ActChgCrsTT1stDay + 167) #define ActSeeGam (ActChgCrsTT1stDay + 166)
#define ActReqRemMch (ActChgCrsTT1stDay + 168) #define ActReqRemMch (ActChgCrsTT1stDay + 167)
#define ActRemMch (ActChgCrsTT1stDay + 169) #define ActRemMch (ActChgCrsTT1stDay + 168)
#define ActReqNewMch (ActChgCrsTT1stDay + 170) #define ActReqNewMch (ActChgCrsTT1stDay + 169)
#define ActNewMch (ActChgCrsTT1stDay + 171) #define ActNewMch (ActChgCrsTT1stDay + 170)
#define ActResMch (ActChgCrsTT1stDay + 172) #define ActResMch (ActChgCrsTT1stDay + 171)
#define ActBckMch (ActChgCrsTT1stDay + 173) #define ActBckMch (ActChgCrsTT1stDay + 172)
#define ActPlyPauMch (ActChgCrsTT1stDay + 174) #define ActPlyPauMch (ActChgCrsTT1stDay + 173)
#define ActFwdMch (ActChgCrsTT1stDay + 175) #define ActFwdMch (ActChgCrsTT1stDay + 174)
#define ActChgNumColMch (ActChgCrsTT1stDay + 176) #define ActChgNumColMch (ActChgCrsTT1stDay + 175)
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 177) #define ActChgVisResMchQst (ActChgCrsTT1stDay + 176)
#define ActMchCntDwn (ActChgCrsTT1stDay + 178) #define ActMchCntDwn (ActChgCrsTT1stDay + 177)
#define ActRefMchTch (ActChgCrsTT1stDay + 179) #define ActRefMchTch (ActChgCrsTT1stDay + 178)
#define ActJoiMch (ActChgCrsTT1stDay + 180) #define ActJoiMch (ActChgCrsTT1stDay + 179)
#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 181) #define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 180)
#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 182) #define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 181)
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 183) #define ActAnsMchQstStd (ActChgCrsTT1stDay + 182)
#define ActRefMchStd (ActChgCrsTT1stDay + 184) #define ActRefMchStd (ActChgCrsTT1stDay + 183)
#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 185) #define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 184)
#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 186) #define ActSeeMyMchResGam (ActChgCrsTT1stDay + 185)
#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 187) #define ActSeeMyMchResMch (ActChgCrsTT1stDay + 186)
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 188) #define ActSeeOneMchResMe (ActChgCrsTT1stDay + 187)
#define ActReqSeeAllMchRes (ActChgCrsTT1stDay + 189) #define ActReqSeeAllMchRes (ActChgCrsTT1stDay + 188)
#define ActSeeAllMchResCrs (ActChgCrsTT1stDay + 190) #define ActSeeAllMchResCrs (ActChgCrsTT1stDay + 189)
#define ActSeeAllMchResGam (ActChgCrsTT1stDay + 191) #define ActSeeAllMchResGam (ActChgCrsTT1stDay + 190)
#define ActSeeAllMchResMch (ActChgCrsTT1stDay + 192) #define ActSeeAllMchResMch (ActChgCrsTT1stDay + 191)
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 193) #define ActSeeOneMchResOth (ActChgCrsTT1stDay + 192)
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 194) #define ActChgVisResMchUsr (ActChgCrsTT1stDay + 193)
#define ActFrmNewGam (ActChgCrsTT1stDay + 195) #define ActFrmNewGam (ActChgCrsTT1stDay + 194)
#define ActEdiOneGam (ActChgCrsTT1stDay + 196) #define ActEdiOneGam (ActChgCrsTT1stDay + 195)
#define ActNewGam (ActChgCrsTT1stDay + 197) #define ActNewGam (ActChgCrsTT1stDay + 196)
#define ActChgGam (ActChgCrsTT1stDay + 198) #define ActChgGam (ActChgCrsTT1stDay + 197)
#define ActReqRemGam (ActChgCrsTT1stDay + 199) #define ActReqRemGam (ActChgCrsTT1stDay + 198)
#define ActRemGam (ActChgCrsTT1stDay + 200) #define ActRemGam (ActChgCrsTT1stDay + 199)
#define ActHidGam (ActChgCrsTT1stDay + 201) #define ActHidGam (ActChgCrsTT1stDay + 200)
#define ActShoGam (ActChgCrsTT1stDay + 202) #define ActShoGam (ActChgCrsTT1stDay + 201)
#define ActAddOneGamQst (ActChgCrsTT1stDay + 203) #define ActAddOneGamQst (ActChgCrsTT1stDay + 202)
#define ActGamLstTstQst (ActChgCrsTT1stDay + 204) #define ActGamLstTstQst (ActChgCrsTT1stDay + 203)
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 205) #define ActAddTstQstToGam (ActChgCrsTT1stDay + 204)
#define ActReqRemGamQst (ActChgCrsTT1stDay + 206) #define ActReqRemGamQst (ActChgCrsTT1stDay + 205)
#define ActRemGamQst (ActChgCrsTT1stDay + 207) #define ActRemGamQst (ActChgCrsTT1stDay + 206)
#define ActUp_GamQst (ActChgCrsTT1stDay + 208) #define ActUp_GamQst (ActChgCrsTT1stDay + 207)
#define ActDwnGamQst (ActChgCrsTT1stDay + 209) #define ActDwnGamQst (ActChgCrsTT1stDay + 208)
#define ActSeeSvy (ActChgCrsTT1stDay + 210) #define ActSeeSvy (ActChgCrsTT1stDay + 209)
#define ActAnsSvy (ActChgCrsTT1stDay + 211) #define ActAnsSvy (ActChgCrsTT1stDay + 210)
#define ActFrmNewSvy (ActChgCrsTT1stDay + 212) #define ActFrmNewSvy (ActChgCrsTT1stDay + 211)
#define ActEdiOneSvy (ActChgCrsTT1stDay + 213) #define ActEdiOneSvy (ActChgCrsTT1stDay + 212)
#define ActNewSvy (ActChgCrsTT1stDay + 214) #define ActNewSvy (ActChgCrsTT1stDay + 213)
#define ActChgSvy (ActChgCrsTT1stDay + 215) #define ActChgSvy (ActChgCrsTT1stDay + 214)
#define ActReqRemSvy (ActChgCrsTT1stDay + 216) #define ActReqRemSvy (ActChgCrsTT1stDay + 215)
#define ActRemSvy (ActChgCrsTT1stDay + 217) #define ActRemSvy (ActChgCrsTT1stDay + 216)
#define ActReqRstSvy (ActChgCrsTT1stDay + 218) #define ActReqRstSvy (ActChgCrsTT1stDay + 217)
#define ActRstSvy (ActChgCrsTT1stDay + 219) #define ActRstSvy (ActChgCrsTT1stDay + 218)
#define ActHidSvy (ActChgCrsTT1stDay + 220) #define ActHidSvy (ActChgCrsTT1stDay + 219)
#define ActShoSvy (ActChgCrsTT1stDay + 221) #define ActShoSvy (ActChgCrsTT1stDay + 220)
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 222) #define ActEdiOneSvyQst (ActChgCrsTT1stDay + 221)
#define ActRcvSvyQst (ActChgCrsTT1stDay + 223) #define ActRcvSvyQst (ActChgCrsTT1stDay + 222)
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 224) #define ActReqRemSvyQst (ActChgCrsTT1stDay + 223)
#define ActRemSvyQst (ActChgCrsTT1stDay + 225) #define ActRemSvyQst (ActChgCrsTT1stDay + 224)
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 226) #define ActSeeOneExaAnn (ActChgCrsTT1stDay + 225)
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 227) #define ActSeeDatExaAnn (ActChgCrsTT1stDay + 226)
#define ActEdiExaAnn (ActChgCrsTT1stDay + 228) #define ActEdiExaAnn (ActChgCrsTT1stDay + 227)
#define ActRcvExaAnn (ActChgCrsTT1stDay + 229) #define ActRcvExaAnn (ActChgCrsTT1stDay + 228)
#define ActPrnExaAnn (ActChgCrsTT1stDay + 230) #define ActPrnExaAnn (ActChgCrsTT1stDay + 229)
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 231) #define ActReqRemExaAnn (ActChgCrsTT1stDay + 230)
#define ActRemExaAnn (ActChgCrsTT1stDay + 232) #define ActRemExaAnn (ActChgCrsTT1stDay + 231)
#define ActHidExaAnn (ActChgCrsTT1stDay + 233) #define ActHidExaAnn (ActChgCrsTT1stDay + 232)
#define ActShoExaAnn (ActChgCrsTT1stDay + 234) #define ActShoExaAnn (ActChgCrsTT1stDay + 233)
/*****************************************************************************/ /*****************************************************************************/
/******************************** Files tab **********************************/ /******************************** Files tab **********************************/

View File

@ -557,13 +557,14 @@ 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.235.1 (2020-05-17)" #define Log_PLATFORM_VERSION "SWAD 19.235.2 (2020-05-17)"
#define CSS_FILE "swad19.230.1.css" #define CSS_FILE "swad19.230.1.css"
#define JS_FILE "swad19.230.3.js" #define JS_FILE "swad19.230.3.js"
/* /*
TODO: Comprobar si el directorio público que devuelve Ses_GetPublicDirFromCache sigue existiendo. TODO: Comprobar si el directorio público que devuelve Ses_GetPublicDirFromCache sigue existiendo.
// Si no existe, hay que crear un nuevo directorio y meterlo en cache // Si no existe, hay que crear un nuevo directorio y meterlo en cache
Version 19.235.2: May 17, 2020 Changes in exam prints. (301216 lines)
Version 19.235.1: May 17, 2020 Changes in edition of bank of questions. (301193 lines) Version 19.235.1: May 17, 2020 Changes in edition of bank of questions. (301193 lines)
Version 19.235: May 17, 2020 New module swad_tag for question tags. (301147 lines) Version 19.235: May 17, 2020 New module swad_tag for question tags. (301147 lines)
Version 19.234: May 17, 2020 Option to edit tags in bank of questions. (301061 lines) Version 19.234: May 17, 2020 Option to edit tags in bank of questions. (301061 lines)

View File

@ -75,13 +75,14 @@ static void ExaPrn_GenerateChoiceIndexes (struct TstPrn_PrintedQuestion *Printed
bool Shuffle); bool Shuffle);
static void ExaPrn_CreatePrintInDB (struct ExaPrn_Print *Print); static void ExaPrn_CreatePrintInDB (struct ExaPrn_Print *Print);
static void ExaPrn_ShowExamPrintToFillIt (const char *Title, static void ExaPrn_ShowExamPrintToFillIt (struct Exa_Exams *Exams,
struct ExaPrn_Print *Print); const struct Exa_Exam *Exam,
static void ExaPrn_ShowTableWithQstsToFill (struct ExaPrn_Print *Print); const struct ExaPrn_Print *Print);
static void ExaPrn_WriteQstAndAnsToFill (struct ExaPrn_Print *Print, static void ExaPrn_ShowTableWithQstsToFill (const struct ExaPrn_Print *Print);
static void ExaPrn_WriteQstAndAnsToFill (const struct ExaPrn_Print *Print,
unsigned NumQst, unsigned NumQst,
const struct Tst_Question *Question); const struct Tst_Question *Question);
static void ExaPrn_WriteAnswersToFill (struct ExaPrn_Print *Print, static void ExaPrn_WriteAnswersToFill (const struct ExaPrn_Print *Print,
unsigned NumQst, unsigned NumQst,
const struct Tst_Question *Question); const struct Tst_Question *Question);
static void ExaPrn_WriteIntAnsToFill (const struct ExaPrn_Print *Print, static void ExaPrn_WriteIntAnsToFill (const struct ExaPrn_Print *Print,
@ -90,7 +91,7 @@ static void ExaPrn_WriteFloatAnsToFill (const struct ExaPrn_Print *Print,
unsigned NumQst); unsigned NumQst);
static void ExaPrn_WriteTFAnsToFill (const struct ExaPrn_Print *Print, static void ExaPrn_WriteTFAnsToFill (const struct ExaPrn_Print *Print,
unsigned NumQst); unsigned NumQst);
static void ExaPrn_WriteChoiceAnsToFill (struct ExaPrn_Print *Print, static void ExaPrn_WriteChoiceAnsToFill (const struct ExaPrn_Print *Print,
unsigned NumQst, unsigned NumQst,
const struct Tst_Question *Question); const struct Tst_Question *Question);
static void ExaPrn_WriteTextAnsToFill (const struct ExaPrn_Print *Print, static void ExaPrn_WriteTextAnsToFill (const struct ExaPrn_Print *Print,
@ -162,6 +163,7 @@ static void ExaPrn_ResetPrintExceptEvtCodAndUsrCod (struct ExaPrn_Print *Print)
void ExaPrn_ShowExamPrint (void) void ExaPrn_ShowExamPrint (void)
{ {
extern const char *Txt_You_dont_have_access_to_the_exam;
struct Exa_Exams Exams; struct Exa_Exams Exams;
struct Exa_Exam Exam; struct Exa_Exam Exam;
struct ExaSes_Session Session; struct ExaSes_Session Session;
@ -201,10 +203,10 @@ void ExaPrn_ShowExamPrint (void)
} }
/***** Show test exam to be answered *****/ /***** Show test exam to be answered *****/
ExaPrn_ShowExamPrintToFillIt (Exam.Title,&Print); ExaPrn_ShowExamPrintToFillIt (&Exams,&Exam,&Print);
} }
else else
Ale_ShowAlert (Ale_INFO,"Usted no tiene acceso al examen."); // TODO: Need translation!!!! Ale_ShowAlert (Ale_INFO,Txt_You_dont_have_access_to_the_exam);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -564,13 +566,15 @@ void ExaPrn_GetPrintQuestionsFromDB (struct ExaPrn_Print *Print)
/******************** Show an exam print to be answered **********************/ /******************** Show an exam print to be answered **********************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaPrn_ShowExamPrintToFillIt (const char *Title, static void ExaPrn_ShowExamPrintToFillIt (struct Exa_Exams *Exams,
struct ExaPrn_Print *Print) const struct Exa_Exam *Exam,
const struct ExaPrn_Print *Print)
{ {
extern const char *Hlp_ASSESSMENT_Exams; extern const char *Hlp_ASSESSMENT_Exams;
extern const char *Txt_I_have_finished;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Title, Box_BoxBegin (NULL,Exam->Title,
NULL,NULL, NULL,NULL,
Hlp_ASSESSMENT_Exams,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Exams,Box_NOT_CLOSABLE);
Lay_WriteHeaderClassPhoto (false,false, Lay_WriteHeaderClassPhoto (false,false,
@ -586,9 +590,9 @@ static void ExaPrn_ShowExamPrintToFillIt (const char *Title,
HTM_DIV_End (); // Used for AJAX based refresh HTM_DIV_End (); // Used for AJAX based refresh
/***** Form to end/close this exam print *****/ /***** Form to end/close this exam print *****/
Frm_StartForm (ActEndExaPrn); Frm_StartForm (ActSeeOneExaEvtResMe);
// ExaSes_PutParamSesCod (Print->SesCod); ExaSes_PutParamsEdit (Exams);
Btn_PutCreateButton ("He terminado"); // TODO: Need translations!!! Btn_PutCreateButton (Txt_I_have_finished);
Frm_EndForm (); Frm_EndForm ();
} }
@ -600,7 +604,7 @@ static void ExaPrn_ShowExamPrintToFillIt (const char *Title,
/********* Show the main part (table) of an exam print to be answered ********/ /********* Show the main part (table) of an exam print to be answered ********/
/*****************************************************************************/ /*****************************************************************************/
static void ExaPrn_ShowTableWithQstsToFill (struct ExaPrn_Print *Print) static void ExaPrn_ShowTableWithQstsToFill (const struct ExaPrn_Print *Print)
{ {
unsigned NumQst; unsigned NumQst;
struct Tst_Question Question; struct Tst_Question Question;
@ -635,7 +639,7 @@ static void ExaPrn_ShowTableWithQstsToFill (struct ExaPrn_Print *Print)
/********** Write a row of a test, with one question and its answer **********/ /********** Write a row of a test, with one question and its answer **********/
/*****************************************************************************/ /*****************************************************************************/
static void ExaPrn_WriteQstAndAnsToFill (struct ExaPrn_Print *Print, static void ExaPrn_WriteQstAndAnsToFill (const struct ExaPrn_Print *Print,
unsigned NumQst, unsigned NumQst,
const struct Tst_Question *Question) const struct Tst_Question *Question)
{ {
@ -697,7 +701,7 @@ static void ExaPrn_WriteQstAndAnsToFill (struct ExaPrn_Print *Print,
/***************** Write answers of a question to fill them ******************/ /***************** Write answers of a question to fill them ******************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaPrn_WriteAnswersToFill (struct ExaPrn_Print *Print, static void ExaPrn_WriteAnswersToFill (const struct ExaPrn_Print *Print,
unsigned NumQst, unsigned NumQst,
const struct Tst_Question *Question) const struct Tst_Question *Question)
{ {
@ -807,7 +811,7 @@ static void ExaPrn_WriteTFAnsToFill (const struct ExaPrn_Print *Print,
/******** Write single or multiple choice answer when seeing a test **********/ /******** Write single or multiple choice answer when seeing a test **********/
/*****************************************************************************/ /*****************************************************************************/
static void ExaPrn_WriteChoiceAnsToFill (struct ExaPrn_Print *Print, static void ExaPrn_WriteChoiceAnsToFill (const struct ExaPrn_Print *Print,
unsigned NumQst, unsigned NumQst,
const struct Tst_Question *Question) const struct Tst_Question *Question)
{ {
@ -908,6 +912,7 @@ static void ExaPrn_WriteTextAnsToFill (const struct ExaPrn_Print *Print,
void ExaPrn_ReceivePrintAnswer (void) void ExaPrn_ReceivePrintAnswer (void)
{ {
extern const char *Txt_You_dont_have_access_to_the_exam;
struct ExaPrn_Print Print; struct ExaPrn_Print Print;
unsigned NumQst; unsigned NumQst;
@ -945,7 +950,7 @@ void ExaPrn_ReceivePrintAnswer (void)
ExaPrn_ShowTableWithQstsToFill (&Print); ExaPrn_ShowTableWithQstsToFill (&Print);
} }
else else
Ale_ShowAlert (Ale_INFO,"Usted no tiene acceso al examen."); // TODO: Need translation!!!! Ale_ShowAlert (Ale_INFO,Txt_You_dont_have_access_to_the_exam);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1404,6 +1409,9 @@ static void ExaPrn_UpdatePrintInDB (const struct ExaPrn_Print *Print)
void ExaPrn_EndPrintAnswer (void) void ExaPrn_EndPrintAnswer (void)
{ {
Ale_ShowAlert (Ale_INFO,"Terminar de contestar el examen."); Ale_ShowAlert (Ale_INFO,"Terminar de contestar el examen.");
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -211,10 +211,10 @@ static void ExaRes_ListMySesResultsInExa (struct Exa_Exams *Exams,long ExaCod)
} }
/*****************************************************************************/ /*****************************************************************************/
/***************** Show my sessions results in a given session ******************/ /****************** Show my exam results in a given session ******************/
/*****************************************************************************/ /*****************************************************************************/
void ExaRes_ShowMyExaResultsInEvt (void) void ExaRes_ShowMyExaResultsInSes (void)
{ {
extern const char *Txt_Results_of_session_X; extern const char *Txt_Results_of_session_X;
struct Exa_Exams Exams; struct Exa_Exams Exams;
@ -459,7 +459,7 @@ static void ExaRes_ListAllSesResultsInExa (struct Exa_Exams *Exams,long ExaCod)
/** Show sessions results of a session for the users who answered in that session */ /** Show sessions results of a session for the users who answered in that session */
/*****************************************************************************/ /*****************************************************************************/
void ExaRes_ShowAllExaResultsInEvt (void) void ExaRes_ShowAllExaResultsInSes (void)
{ {
extern const char *Txt_Results_of_session_X; extern const char *Txt_Results_of_session_X;
struct Exa_Exams Exams; struct Exa_Exams Exams;

View File

@ -42,12 +42,12 @@
void ExaRes_ShowMyExaResultsInCrs (void); void ExaRes_ShowMyExaResultsInCrs (void);
void ExaRes_ShowMyExaResultsInExa (void); void ExaRes_ShowMyExaResultsInExa (void);
void ExaRes_ShowMyExaResultsInEvt (void); void ExaRes_ShowMyExaResultsInSes (void);
void ExaRes_ShowAllExaResultsInCrs (void); void ExaRes_ShowAllExaResultsInCrs (void);
void ExaRes_SelUsrsToViewExaResults (void); void ExaRes_SelUsrsToViewExaResults (void);
void ExaRes_ShowAllExaResultsInExa (void); void ExaRes_ShowAllExaResultsInExa (void);
void ExaRes_ShowAllExaResultsInEvt (void); void ExaRes_ShowAllExaResultsInSes (void);
void ExaRes_ShowOneExaResult (void); void ExaRes_ShowOneExaResult (void);

View File

@ -110,8 +110,6 @@ static void ExaSes_RemoveSessionsInExamFromTable (long ExaCod,const char *TableN
static void ExaSes_RemoveSessionInCourseFromTable (long CrsCod,const char *TableName); static void ExaSes_RemoveSessionInCourseFromTable (long CrsCod,const char *TableName);
static void ExaSes_RemoveUsrSesResultsInCrs (long UsrCod,long CrsCod,const char *TableName); static void ExaSes_RemoveUsrSesResultsInCrs (long UsrCod,long CrsCod,const char *TableName);
static void ExaSes_PutParamSesCod (long SesCod);
static void ExaSes_PutFormSession (const struct ExaSes_Session *Session); static void ExaSes_PutFormSession (const struct ExaSes_Session *Session);
static void ExaSes_ShowLstGrpsToCreateSession (long SesCod); static void ExaSes_ShowLstGrpsToCreateSession (long SesCod);
@ -1154,7 +1152,7 @@ void ExaSes_PutParamsEdit (void *Exams)
/**************** Write parameter with code of exam session ******************/ /**************** Write parameter with code of exam session ******************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaSes_PutParamSesCod (long SesCod) void ExaSes_PutParamSesCod (long SesCod)
{ {
Par_PutHiddenParamLong (NULL,"SesCod",SesCod); Par_PutHiddenParamLong (NULL,"SesCod",SesCod);
} }

View File

@ -70,6 +70,7 @@ void ExaSes_HideSession (void);
void ExaSes_UnhideSession (void); void ExaSes_UnhideSession (void);
void ExaSes_PutParamsEdit (void *Exams); void ExaSes_PutParamsEdit (void *Exams);
void ExaSes_PutParamSesCod (long SesCod);
void ExaSes_GetAndCheckParameters (struct Exa_Exams *Exams, void ExaSes_GetAndCheckParameters (struct Exa_Exams *Exams,
struct Exa_Exam *Exam, struct Exa_Exam *Exam,
struct ExaSes_Session *Session); struct ExaSes_Session *Session);

View File

@ -15813,6 +15813,27 @@ const char *Txt_I_understand_that_this_action_can_not_be_undone =
"Eu entendo que esta ação não pode ser desfeita."; "Eu entendo que esta ação não pode ser desfeita.";
#endif #endif
const char *Txt_I_have_finished =
#if L==1 // ca
"He acabat";
#elif L==2 // de
"Ich bin fertig";
#elif L==3 // en
"I have finished";
#elif L==4 // es
"He terminado";
#elif L==5 // fr
"J'ai fini";
#elif L==6 // gn
"He terminado"; // Okoteve traducción
#elif L==7 // it
"Ho finito";
#elif L==8 // pl
"Skończyłem";
#elif L==9 // pt
"Acabei";
#endif
const char *Txt_Icons = const char *Txt_Icons =
#if L==1 // ca #if L==1 // ca
"Icones"; "Icones";
@ -57866,6 +57887,27 @@ const char *Txt_You_dont_follow_any_user =
"Você não segue nenhum usuário."; "Você não segue nenhum usuário.";
#endif #endif
const char *Txt_You_dont_have_access_to_the_exam =
#if L==1 // ca
"No té accés a l'examen.";
#elif L==2 // de
"Sie haben keinen Zugang zur Prüfung.";
#elif L==3 // en
"You don't have access to the exam.";
#elif L==4 // es
"No tiene acceso al examen.";
#elif L==5 // fr
"Vous n'avez pas accès à l'examen.";
#elif L==6 // gn
"No tiene acceso al examen."; // Okoteve traducción
#elif L==7 // it
"Non hai accesso all'esame.";
#elif L==8 // pl
"Nie masz dostępu do egzaminu.";
#elif L==9 // pt
"Você não tem acesso ao exame.";
#endif
const char *Txt_You_dont_have_permission_to_perform_this_action = const char *Txt_You_dont_have_permission_to_perform_this_action =
#if L==1 // ca #if L==1 // ca
"Vostè no té permís" "Vostè no té permís"

View File

@ -10959,27 +10959,6 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie "" // Potrzebujesz tlumaczenie
#elif L==9 // pt #elif L==9 // pt
"" // Precisa de tradução "" // Precisa de tradução
#endif
,
[ActEndExaPrn] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"End exam print"
#elif L==4 // es
"Finalizar impresión de examen"
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif #endif
, ,
[ActSeeGam] = [ActSeeGam] =