mirror of https://github.com/acanas/swad-core.git
Version19.251
This commit is contained in:
parent
4e51c2192d
commit
d0ff85847a
|
@ -2392,7 +2392,7 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
|
|||
.DAT {color:#404040; font-size:13pt;}
|
||||
.DAT_NOBR {color:#404040; font-size:13pt; white-space:nowrap;}
|
||||
.DAT_BOLD {color:#404040; font-size:13pt; font-weight:bold;}
|
||||
.DAT_GREEN {color:darkgreen; font-size:13pt;}
|
||||
.DAT_GREEN {color:#246600; font-size:13pt;}
|
||||
.DAT_RED {color:#660000; font-size:13pt;}
|
||||
.DAT_LIGHT {color:#A0A0A0; font-size:13pt;}
|
||||
.DAT_N {color:black; font-size:13pt;}
|
||||
|
|
|
@ -1784,6 +1784,12 @@ void HTM_Txt (const char *Txt)
|
|||
fputs (Txt,Gbl.F.Out);
|
||||
}
|
||||
|
||||
void HTM_TxtColon (const char *Txt)
|
||||
{
|
||||
HTM_Txt (Txt);
|
||||
HTM_Colon ();
|
||||
}
|
||||
|
||||
void HTM_TxtColonNBSP (const char *Txt)
|
||||
{
|
||||
HTM_Txt (Txt);
|
||||
|
|
|
@ -185,6 +185,7 @@ void HTM_BR (void);
|
|||
|
||||
void HTM_TxtF (const char *fmt,...);
|
||||
void HTM_Txt (const char *Txt);
|
||||
void HTM_TxtColon (const char *Txt);
|
||||
void HTM_TxtColonNBSP (const char *Txt);
|
||||
void HTM_NBSP (void);
|
||||
void HTM_Colon (void);
|
||||
|
|
|
@ -340,7 +340,7 @@ static void Ann_DrawAnAnnouncement (long AnnCod,Ann_Status_t Status,
|
|||
if (ShowAllAnnouncements)
|
||||
{
|
||||
/* Users' roles who can view this announcement */
|
||||
HTM_TxtF ("%s:",Txt_Users);
|
||||
HTM_TxtColon (Txt_Users);
|
||||
for (Role = Rol_UNK, SomeRolesAreSelected = false;
|
||||
Role <= Rol_TCH;
|
||||
Role++)
|
||||
|
|
|
@ -1288,7 +1288,7 @@ void Asg_RequestCreatOrEditAsg (void)
|
|||
/* Data */
|
||||
HTM_TD_Begin ("class=\"LM\"");
|
||||
HTM_LABEL_Begin ("class=\"DAT\"");
|
||||
HTM_TxtF ("%s:",Txt_Folder);
|
||||
HTM_TxtColon (Txt_Folder);
|
||||
HTM_INPUT_TEXT ("Folder",Brw_MAX_CHARS_FOLDER,Asg.Folder,
|
||||
HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"Folder\" size=\"30\"");
|
||||
|
@ -1351,7 +1351,7 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Groups);
|
||||
HTM_TxtColon (Txt_Groups);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
|
|
|
@ -1253,7 +1253,7 @@ static void Att_ShowLstGrpsToEditAttEvent (long AttCod)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Groups);
|
||||
HTM_TxtColon (Txt_Groups);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
|
@ -3359,7 +3359,7 @@ static void Att_ListUsrsAttendanceTable (const struct Att_Events *Events,
|
|||
HTM_TD_Begin ("colspan=\"%u\" class=\"DAT_N_LINE_TOP RM\"",
|
||||
Gbl.Usrs.Listing.WithPhotos ? 4 :
|
||||
3);
|
||||
HTM_TxtF ("%s:",Txt_Number_of_users);
|
||||
HTM_TxtColon (Txt_Number_of_users);
|
||||
HTM_TD_End ();
|
||||
|
||||
for (NumAttEvent = 0, Total = 0;
|
||||
|
@ -3720,7 +3720,7 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
|
|||
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
|
||||
CommentStd,Cns_MAX_BYTES_TEXT,false);
|
||||
HTM_DT_Begin ();
|
||||
HTM_TxtF ("%s:",Txt_Student_comment);
|
||||
HTM_TxtColon (Txt_Student_comment);
|
||||
HTM_DT_End ();
|
||||
HTM_DD_Begin ();
|
||||
HTM_Txt (CommentStd);
|
||||
|
@ -3731,7 +3731,7 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
|
|||
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
|
||||
CommentTch,Cns_MAX_BYTES_TEXT,false);
|
||||
HTM_DT_Begin ();
|
||||
HTM_TxtF ("%s:",Txt_Teachers_comment);
|
||||
HTM_TxtColon (Txt_Teachers_comment);
|
||||
HTM_DT_End ();
|
||||
HTM_DD_Begin ();
|
||||
HTM_Txt (CommentTch);
|
||||
|
|
|
@ -556,15 +556,17 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
|||
En OpenSWAD:
|
||||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.250.3 (2020-06-18)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.251 (2020-06-18)"
|
||||
#define CSS_FILE "swad19.250.css"
|
||||
#define JS_FILE "swad19.246.1.js"
|
||||
/*
|
||||
TODO: Encarnación Hidalgo Tenorio: Antonio, ¿podría @swad_ugr mandar una notificación cuando el alumnado ha mandado su tarea?
|
||||
Se trataría de añadir un par de líneas "Nuevos archivos en actividades", "Nuevos archivos en otros trabajos".
|
||||
TODO: Fix bug: Un estudiante recibe una notificación de un archivo de calificaciones. Luego el archivo es ocultado por el profesor. Pero desde la notificación sigue estando accesible, cuando no debería ser así. Reported by Adrián José Martínez Navarro.
|
||||
TODO: Fix bug: Cuando se pulsa en ver fichas, y luego en una ficha en "Ver trabajos" o "Ver exámenes", o lo que sea, sale dos veces ese estudiante.
|
||||
TODO: No limitar el número de preguntas en un examen a ExaPrn_MAX_QUESTIONS_PER_EXAM_PRINT, sino asignar PrintedQuestions dinámicamente con malloc
|
||||
|
||||
Version 19.251: Jun 18, 2020 Changes in test, exam and match results. (303263 lines)
|
||||
Version 19.250.3: Jun 18, 2020 Show valid score and valid grade in listing of exam results. (303113 lines)
|
||||
Version 19.250.2: Jun 17, 2020 Show valid score and valid grade in one exam result. (303069 lines)
|
||||
Version 19.250.1: Jun 17, 2020 Fixed bug in attendance events, reported by Carlos A. Pozzo. (302977 lines)
|
||||
|
|
|
@ -1268,7 +1268,7 @@ static void Cty_ListCountriesForEdition (void)
|
|||
|
||||
/* Language */
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_TxtF ("%s:",Txt_STR_LANG_NAME[Lan]);
|
||||
HTM_TxtColon (Txt_STR_LANG_NAME[Lan]);
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Name */
|
||||
|
|
|
@ -2615,9 +2615,9 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TH_Begin (1,7,"LM");
|
||||
HTM_TxtF ("%s:",Str_BuildStringStr (Txt_USER_in_COURSE,
|
||||
Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role
|
||||
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]));
|
||||
HTM_TxtColon (Str_BuildStringStr (Txt_USER_in_COURSE,
|
||||
Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role
|
||||
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]));
|
||||
Str_FreeString ();
|
||||
HTM_TH_End ();
|
||||
|
||||
|
|
|
@ -1521,7 +1521,7 @@ void Exa_PutFormEditionExam (struct Exa_Exams *Exams,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RM\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Maximum_grade);
|
||||
HTM_TxtColon (Txt_Maximum_grade);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LM\"");
|
||||
|
@ -1535,7 +1535,7 @@ void Exa_PutFormEditionExam (struct Exa_Exams *Exams,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Result_visibility);
|
||||
HTM_TxtColon (Txt_Result_visibility);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LB\"");
|
||||
|
|
|
@ -162,12 +162,12 @@ static void ExaPrn_ResetPrintExceptEvtCodAndUsrCod (struct ExaPrn_Print *Print)
|
|||
Print->PrnCod = -1L;
|
||||
Print->TimeUTC[Dat_START_TIME] =
|
||||
Print->TimeUTC[Dat_END_TIME ] = (time_t) 0;
|
||||
Print->NumQsts =
|
||||
Print->NumQstsValid =
|
||||
Print->NumQstsNotBlank = 0;
|
||||
Print->NumQsts.All =
|
||||
Print->NumQsts.Valid =
|
||||
Print->NumQsts.NotBlank = 0;
|
||||
Print->Sent = false; // After creating an exam print, it's not sent
|
||||
Print->Score =
|
||||
Print->ScoreValid = 0.0;
|
||||
Print->Score.All =
|
||||
Print->Score.Valid = 0.0;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -204,7 +204,7 @@ void ExaPrn_ShowExamPrint (void)
|
|||
/***** Get questions from database *****/
|
||||
ExaPrn_GetQuestionsForNewPrintFromDB (&Print,Exam.ExaCod);
|
||||
|
||||
if (Print.NumQsts)
|
||||
if (Print.NumQsts.All)
|
||||
{
|
||||
/***** Create new exam print in database *****/
|
||||
ExaPrn_CreatePrintInDB (&Print);
|
||||
|
@ -268,20 +268,20 @@ void ExaPrn_GetDataOfPrintByCodAndUsrCod (struct ExaPrn_Print *Print)
|
|||
Print->TimeUTC[Dat_END_TIME ] = Dat_GetUNIXTimeFromStr (row[2]);
|
||||
|
||||
/* Get number of questions (row[3]) */
|
||||
if (sscanf (row[3],"%u",&Print->NumQsts) != 1)
|
||||
Print->NumQsts = 0;
|
||||
if (sscanf (row[3],"%u",&Print->NumQsts.All) != 1)
|
||||
Print->NumQsts.All = 0;
|
||||
|
||||
/* Get number of questions not blank (row[4]) */
|
||||
if (sscanf (row[4],"%u",&Print->NumQstsNotBlank) != 1)
|
||||
Print->NumQstsNotBlank = 0;
|
||||
if (sscanf (row[4],"%u",&Print->NumQsts.NotBlank) != 1)
|
||||
Print->NumQsts.NotBlank = 0;
|
||||
|
||||
/* Get if exam has been sent (row[5]) */
|
||||
Print->Sent = (row[5][0] == 'Y');
|
||||
|
||||
/* Get score (row[6]) */
|
||||
Str_SetDecimalPointToUS (); // To get the decimal point as a dot
|
||||
if (sscanf (row[6],"%lf",&Print->Score) != 1)
|
||||
Print->Score = 0.0;
|
||||
if (sscanf (row[6],"%lf",&Print->Score.All) != 1)
|
||||
Print->Score.All = 0.0;
|
||||
Str_SetDecimalPointToLocal (); // Return to local system
|
||||
}
|
||||
else
|
||||
|
@ -317,7 +317,7 @@ static void ExaPrn_GetQuestionsForNewPrintFromDB (struct ExaPrn_Print *Print,lon
|
|||
ExaCod);
|
||||
|
||||
/***** Get questions from all sets *****/
|
||||
Print->NumQsts = 0;
|
||||
Print->NumQsts.All = 0;
|
||||
if (NumSets)
|
||||
/***** For each set in exam... *****/
|
||||
for (NumSet = 0;
|
||||
|
@ -346,11 +346,11 @@ static void ExaPrn_GetQuestionsForNewPrintFromDB (struct ExaPrn_Print *Print,lon
|
|||
|
||||
/***** Questions in this set *****/
|
||||
NumQstsFromSet = ExaPrn_GetSomeQstsFromSetToPrint (Print,&Set,&NumQstInPrint);
|
||||
Print->NumQsts += NumQstsFromSet;
|
||||
Print->NumQsts.All += NumQstsFromSet;
|
||||
}
|
||||
|
||||
/***** Check *****/
|
||||
if (Print->NumQsts != NumQstInPrint)
|
||||
if (Print->NumQsts.All != NumQstInPrint)
|
||||
Lay_ShowErrorAndExit ("Wrong number of questions.");
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
|
@ -531,7 +531,7 @@ static void ExaPrn_CreatePrintInDB (struct ExaPrn_Print *Print)
|
|||
/***** Store all questions (with blank answers)
|
||||
of this exam print just generated in database *****/
|
||||
for (NumQst = 0;
|
||||
NumQst < Print->NumQsts;
|
||||
NumQst < Print->NumQsts.All;
|
||||
NumQst++)
|
||||
ExaPrn_StoreOneQstOfPrintInDB (Print,NumQst);
|
||||
}
|
||||
|
@ -547,7 +547,7 @@ void ExaPrn_GetPrintQuestionsFromDB (struct ExaPrn_Print *Print)
|
|||
unsigned NumQst;
|
||||
|
||||
/***** Get questions of an exam print from database *****/
|
||||
Print->NumQsts =
|
||||
Print->NumQsts.All =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get questions"
|
||||
" of an exam print",
|
||||
"SELECT QstCod," // row[0]
|
||||
|
@ -561,9 +561,9 @@ void ExaPrn_GetPrintQuestionsFromDB (struct ExaPrn_Print *Print)
|
|||
Print->PrnCod);
|
||||
|
||||
/***** Get questions *****/
|
||||
if (Print->NumQsts <= ExaPrn_MAX_QUESTIONS_PER_EXAM_PRINT)
|
||||
if (Print->NumQsts.All <= ExaPrn_MAX_QUESTIONS_PER_EXAM_PRINT)
|
||||
for (NumQst = 0;
|
||||
NumQst < Print->NumQsts;
|
||||
NumQst < Print->NumQsts.All;
|
||||
NumQst++)
|
||||
{
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -594,7 +594,7 @@ void ExaPrn_GetPrintQuestionsFromDB (struct ExaPrn_Print *Print)
|
|||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
if (Print->NumQsts > ExaPrn_MAX_QUESTIONS_PER_EXAM_PRINT)
|
||||
if (Print->NumQsts.All > ExaPrn_MAX_QUESTIONS_PER_EXAM_PRINT)
|
||||
Lay_ShowErrorAndExit ("Too many questions.");
|
||||
}
|
||||
|
||||
|
@ -620,7 +620,7 @@ static void ExaPrn_ShowExamPrintToFillIt (struct Exa_Exams *Exams,
|
|||
Gbl.Hierarchy.Crs.CrsCod);
|
||||
ExaPrn_GetAndWriteDescription (Exam->ExaCod);
|
||||
|
||||
if (Print->NumQsts)
|
||||
if (Print->NumQsts.All)
|
||||
{
|
||||
/***** Show table with questions to answer *****/
|
||||
HTM_DIV_Begin ("id=\"examprint\""); // Used for AJAX based refresh
|
||||
|
@ -668,7 +668,7 @@ static void ExaPrn_ShowTableWithQstsToFill (struct Exa_Exams *Exams,
|
|||
|
||||
/***** Write one row for each question *****/
|
||||
for (NumQst = 0;
|
||||
NumQst < Print->NumQsts;
|
||||
NumQst < Print->NumQsts.All;
|
||||
NumQst++)
|
||||
{
|
||||
/* Create test question */
|
||||
|
@ -1424,11 +1424,11 @@ static void ExaPrn_StoreOneQstOfPrintInDB (const struct ExaPrn_Print *Print,
|
|||
static void ExaPrn_GetNumQstsNotBlank (struct ExaPrn_Print *Print)
|
||||
{
|
||||
/***** Count number of questions not blank in exam print in database *****/
|
||||
Print->NumQstsNotBlank = (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of questions not blank",
|
||||
"SELECT COUNT(*) FROM exa_print_questions"
|
||||
" WHERE PrnCod=%ld AND Answers<>''",
|
||||
Print->PrnCod);
|
||||
Print->NumQsts.NotBlank = (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of questions not blank",
|
||||
"SELECT COUNT(*) FROM exa_print_questions"
|
||||
" WHERE PrnCod=%ld AND Answers<>''",
|
||||
Print->PrnCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1441,7 +1441,7 @@ static void ExaPrn_ComputeTotalScoreOfPrint (struct ExaPrn_Print *Print)
|
|||
MYSQL_ROW row;
|
||||
|
||||
/***** Default score *****/
|
||||
Print->Score = 0.0;
|
||||
Print->Score.All = 0.0;
|
||||
|
||||
/***** Compute total score of exam print *****/
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get score of exam print",
|
||||
|
@ -1456,8 +1456,8 @@ static void ExaPrn_ComputeTotalScoreOfPrint (struct ExaPrn_Print *Print)
|
|||
{
|
||||
/* Get score (row[0]) */
|
||||
Str_SetDecimalPointToUS (); // To get the decimal point as a dot
|
||||
if (sscanf (row[0],"%lf",&Print->Score) != 1)
|
||||
Print->Score = 0.0;
|
||||
if (sscanf (row[0],"%lf",&Print->Score.All) != 1)
|
||||
Print->Score.All = 0.0;
|
||||
Str_SetDecimalPointToLocal (); // Return to local system
|
||||
}
|
||||
}
|
||||
|
@ -1482,7 +1482,7 @@ static void ExaPrn_UpdatePrintInDB (const struct ExaPrn_Print *Print)
|
|||
"Score='%.15lg'"
|
||||
" WHERE PrnCod=%ld"
|
||||
" AND SesCod=%ld AND UsrCod=%ld", // Extra checks
|
||||
Print->NumQstsNotBlank,
|
||||
Print->NumQsts.NotBlank,
|
||||
Print->Sent ? 'Y' :
|
||||
'N',
|
||||
Print->Score,
|
||||
|
|
|
@ -35,19 +35,29 @@
|
|||
|
||||
#define ExaPrn_MAX_QUESTIONS_PER_EXAM_PRINT 100 // Absolute maximum number of questions in an exam print
|
||||
|
||||
struct ExaPrn_NumQuestions
|
||||
{
|
||||
unsigned All; // Total number of questions
|
||||
unsigned Valid; // Number of valid questions (not invalidated by teachers)
|
||||
unsigned NotBlank; // Number of answered questions (not blank)
|
||||
};
|
||||
|
||||
struct ExaPrn_Score
|
||||
{
|
||||
double All; // Total score of the exam print (counting valid and invalid questions)
|
||||
double Valid; // Total score of the exam print (counting only valid questions)
|
||||
};
|
||||
|
||||
struct ExaPrn_Print
|
||||
{
|
||||
long PrnCod; // Exam print code
|
||||
long SesCod; // Session code associated to this print
|
||||
long UsrCod; // User who answered the exam print
|
||||
long PrnCod; // Exam print code
|
||||
long SesCod; // Session code associated to this print
|
||||
long UsrCod; // User who answered the exam print
|
||||
time_t TimeUTC[Dat_NUM_START_END_TIME];
|
||||
unsigned NumQsts; // Number of questions
|
||||
unsigned NumQstsValid; // Number of valid questions (not invalidated by teachers)
|
||||
unsigned NumQstsNotBlank; // Number of questions not blank
|
||||
bool Sent; // This exam print has been sent or not?
|
||||
// "Sent" means that user has clicked "Send" button after finishing
|
||||
double Score; // Total score of the exam print
|
||||
double ScoreValid; // Total score taking into account only valid questions
|
||||
bool Sent; // This exam print has been sent or not?
|
||||
// "Sent" means that user has clicked "Send" button after finishing
|
||||
struct ExaPrn_NumQuestions NumQsts;
|
||||
struct ExaPrn_Score Score;
|
||||
struct TstPrn_PrintedQuestion PrintedQuestions[ExaPrn_MAX_QUESTIONS_PER_EXAM_PRINT];
|
||||
};
|
||||
|
||||
|
|
|
@ -103,11 +103,10 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
long ExaCod, // <= 0 ==> any
|
||||
const char *ExamsSelectedCommas);
|
||||
static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
|
||||
unsigned NumTotalQsts,
|
||||
unsigned NumTotalQstsValid,
|
||||
unsigned NumTotalQstsNotBlank,
|
||||
double TotalScoreOfAllResults,
|
||||
const struct ExaPrn_NumQuestions *NumTotalQsts,
|
||||
const struct ExaPrn_Score *TotalScore,
|
||||
double TotalGrade);
|
||||
static void ExaRes_ShowNumQsts (const struct ExaPrn_NumQuestions *NumQsts);
|
||||
|
||||
static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
||||
const struct ExaSes_Session *Session,
|
||||
|
@ -119,7 +118,7 @@ static bool ExaRes_CheckIfICanSeePrintResult (const struct Exa_Exam *Exam,
|
|||
long UsrCod);
|
||||
static bool ExaRes_CheckIfICanViewScore (bool ICanViewResult,unsigned Visibility);
|
||||
|
||||
static void ExaRes_ComputeScoreValid (struct ExaPrn_Print *Print);
|
||||
static void ExaRes_ComputeValidPrintScore (struct ExaPrn_Print *Print);
|
||||
|
||||
static void ExaRes_ShowExamAnswers (struct UsrData *UsrDat,
|
||||
struct ExaPrn_Print *Print,
|
||||
|
@ -700,21 +699,20 @@ static void ExaRes_ShowHeaderResults (Usr_MeOrOther_t MeOrOther)
|
|||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_Non_blank_BR_questions;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_from_0_to_1;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1;
|
||||
extern const char *Txt_Grade;
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TH (1,2,"CT",Txt_User[MeOrOther == Usr_ME ? Gbl.Usrs.Me.UsrDat.Sex :
|
||||
Usr_SEX_UNKNOWN]);
|
||||
Usr_SEX_UNKNOWN]);
|
||||
HTM_TH (1,1,"LT",Txt_START_END_TIME[Dat_START_TIME]);
|
||||
HTM_TH (1,1,"LT",Txt_START_END_TIME[Dat_END_TIME ]);
|
||||
HTM_TH (1,1,"LT",Txt_Session);
|
||||
HTM_TH (1,1,"RT",Txt_Questions);
|
||||
HTM_TH (1,1,"RT","Preguntas válidas"); // TODO: Need translation!!!!
|
||||
HTM_TH (1,1,"RT",Txt_Non_blank_BR_questions);
|
||||
HTM_TH (1,1,"RT",Txt_Score);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question_BR_from_0_to_1);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1);
|
||||
HTM_TH (1,1,"RT",Txt_Grade);
|
||||
HTM_TH_Empty (1);
|
||||
|
||||
|
@ -778,11 +776,8 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
struct ExaPrn_Print Print;
|
||||
struct ExaSes_Session Session;
|
||||
Dat_StartEndTime_t StartEndTime;
|
||||
unsigned NumTotalQsts = 0;
|
||||
unsigned NumTotalQstsValid = 0;
|
||||
unsigned NumTotalQstsNotBlank = 0;
|
||||
double TotalScoreOfAllResults = 0.0;
|
||||
double TotalScoreValidOfAllResults = 0.0;
|
||||
struct ExaPrn_NumQuestions NumTotalQsts;
|
||||
struct ExaPrn_Score TotalScore;
|
||||
double MaxGrade;
|
||||
double Grade;
|
||||
double TotalGrade = 0.0;
|
||||
|
@ -793,6 +788,13 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
ExaPrn_ResetPrint (&Print);
|
||||
ExaSes_ResetSession (&Session);
|
||||
|
||||
/***** Reset total number of questions and total score *****/
|
||||
NumTotalQsts.All =
|
||||
NumTotalQsts.Valid =
|
||||
NumTotalQsts.NotBlank = 0;
|
||||
TotalScore.All =
|
||||
TotalScore.Valid = 0.0;
|
||||
|
||||
/***** Set user *****/
|
||||
UsrDat = (MeOrOther == Usr_ME) ? &Gbl.Usrs.Me.UsrDat :
|
||||
&Gbl.Usrs.Other.UsrDat;
|
||||
|
@ -861,11 +863,9 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
"exa_prints.SesCod," // row[1]
|
||||
"UNIX_TIMESTAMP(exa_prints.StartTime)," // row[2]
|
||||
"UNIX_TIMESTAMP(exa_prints.EndTime)," // row[3]
|
||||
"exa_prints.NumQsts," // row[4]
|
||||
"exa_prints.NumQstsNotBlank," // row[5]
|
||||
"exa_prints.Score," // row[6]
|
||||
"exa_exams.MaxGrade," // row[7]
|
||||
"exa_exams.Visibility" // row[8]
|
||||
"exa_prints.NumQstsNotBlank," // row[4]
|
||||
"exa_exams.MaxGrade," // row[5]
|
||||
"exa_exams.Visibility" // row[6]
|
||||
" FROM exa_prints,exa_sessions,exa_exams"
|
||||
" WHERE exa_prints.UsrCod=%ld"
|
||||
"%s" // Session subquery
|
||||
|
@ -906,8 +906,8 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
Lay_ShowErrorAndExit ("Wrong code of session.");
|
||||
ExaSes_GetDataOfSessionByCod (&Session);
|
||||
|
||||
/* Get visibility (row[8]) */
|
||||
Visibility = TstVis_GetVisibilityFromStr (row[8]);
|
||||
/* Get visibility (row[6]) */
|
||||
Visibility = TstVis_GetVisibilityFromStr (row[6]);
|
||||
|
||||
/* Show session result? */
|
||||
ICanViewResult = true; // Filtering is already made in the query
|
||||
|
@ -943,27 +943,22 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
{
|
||||
/* Get questions and user's answers of exam print from database */
|
||||
ExaPrn_GetPrintQuestionsFromDB (&Print);
|
||||
NumTotalQsts += Print.NumQsts;
|
||||
NumTotalQsts.All += Print.NumQsts.All;
|
||||
|
||||
/* Compute score taking into account only valid questions */
|
||||
ExaRes_ComputeScoreValid (&Print);
|
||||
NumTotalQstsValid += Print.NumQstsValid;
|
||||
TotalScoreValidOfAllResults += Print.ScoreValid;
|
||||
ExaRes_ComputeValidPrintScore (&Print);
|
||||
NumTotalQsts.Valid += Print.NumQsts.Valid;
|
||||
TotalScore.Valid += Print.Score.Valid;
|
||||
|
||||
/* Get number of questions not blank (row[5]) */
|
||||
if (sscanf (row[5],"%u",&Print.NumQstsNotBlank) != 1)
|
||||
Print.NumQstsNotBlank = 0;
|
||||
NumTotalQstsNotBlank += Print.NumQstsNotBlank;
|
||||
/* Get number of questions not blank (row[4]) */
|
||||
if (sscanf (row[4],"%u",&Print.NumQsts.NotBlank) != 1)
|
||||
Print.NumQsts.NotBlank = 0;
|
||||
NumTotalQsts.NotBlank += Print.NumQsts.NotBlank;
|
||||
|
||||
Str_SetDecimalPointToUS (); // To get the decimal point as a dot
|
||||
|
||||
/* Get score (row[6]) */
|
||||
if (sscanf (row[6],"%lf",&Print.Score) != 1)
|
||||
Print.Score = 0.0;
|
||||
TotalScoreOfAllResults += Print.Score;
|
||||
|
||||
/* Get maximum grade (row[7]) */
|
||||
if (sscanf (row[7],"%lf",&MaxGrade) != 1)
|
||||
/* Get maximum grade (row[5]) */
|
||||
if (sscanf (row[5],"%lf",&MaxGrade) != 1)
|
||||
MaxGrade = 0.0;
|
||||
|
||||
Str_SetDecimalPointToLocal (); // Return to local system
|
||||
|
@ -972,15 +967,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
/* Write number of questions */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewScore)
|
||||
HTM_Unsigned (Print.NumQsts);
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write number of valid questions */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewScore)
|
||||
HTM_Unsigned (Print.NumQstsValid);
|
||||
ExaRes_ShowNumQsts (&Print.NumQsts);
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
@ -988,7 +975,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
/* Write number of questions not blank */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewScore)
|
||||
HTM_Unsigned (Print.NumQstsNotBlank);
|
||||
HTM_Unsigned (Print.NumQsts.NotBlank);
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
@ -996,7 +983,11 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
/* Write score valid (taking into account only valid questions) */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewScore)
|
||||
HTM_Double2Decimals (Print.ScoreValid);
|
||||
{
|
||||
HTM_Double2Decimals (Print.Score.Valid);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (Print.NumQsts.Valid);
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
@ -1004,9 +995,9 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
/* Write average score per question (taking into account only valid questions) */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewScore)
|
||||
HTM_Double2Decimals (Print.NumQstsValid ? Print.ScoreValid /
|
||||
(double) Print.NumQstsValid :
|
||||
0.0);
|
||||
HTM_Double2Decimals (Print.NumQsts.Valid ? Print.Score.Valid /
|
||||
(double) Print.NumQsts.Valid :
|
||||
0.0);
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
@ -1015,7 +1006,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewScore)
|
||||
{
|
||||
Grade = TstPrn_ComputeGrade (Print.NumQstsValid,Print.ScoreValid,MaxGrade);
|
||||
Grade = TstPrn_ComputeGrade (Print.NumQsts.Valid,Print.Score.Valid,MaxGrade);
|
||||
TstPrn_ShowGrade (Grade,MaxGrade);
|
||||
TotalGrade += Grade;
|
||||
}
|
||||
|
@ -1052,14 +1043,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
}
|
||||
|
||||
/***** Write totals for this user *****/
|
||||
// ExaRes_ShowResultsSummaryRow (NumResults,
|
||||
// NumTotalQsts,NumTotalQstsNotBlank,
|
||||
// TotalScoreOfAllResults,
|
||||
// TotalGrade);
|
||||
ExaRes_ShowResultsSummaryRow (NumResults,
|
||||
NumTotalQsts,NumTotalQstsValid,NumTotalQstsNotBlank,
|
||||
TotalScoreValidOfAllResults,
|
||||
TotalGrade);
|
||||
ExaRes_ShowResultsSummaryRow (NumResults,&NumTotalQsts,&TotalScore,TotalGrade);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1074,14 +1058,12 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** Show row with summary of user's sessions results **************/
|
||||
/**************** Show row with summary of user's exam results ***************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
|
||||
unsigned NumTotalQsts,
|
||||
unsigned NumTotalQstsValid,
|
||||
unsigned NumTotalQstsNotBlank,
|
||||
double TotalScoreOfAllResults,
|
||||
const struct ExaPrn_NumQuestions *NumTotalQsts,
|
||||
const struct ExaPrn_Score *TotalScore,
|
||||
double TotalGrade)
|
||||
{
|
||||
extern const char *Txt_Sessions;
|
||||
|
@ -1098,31 +1080,27 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
|
|||
/***** Write total number of questions *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumResults)
|
||||
HTM_Unsigned (NumTotalQsts);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total number of questions valid *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumResults)
|
||||
HTM_Unsigned (NumTotalQstsValid);
|
||||
ExaRes_ShowNumQsts (NumTotalQsts);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total number of questions not blank *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumResults)
|
||||
HTM_Unsigned (NumTotalQstsNotBlank);
|
||||
HTM_Unsigned (NumTotalQsts->NotBlank);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total score *****/
|
||||
/***** Write total valid score *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (TotalScoreOfAllResults);
|
||||
HTM_Double2Decimals (TotalScore->Valid);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (NumTotalQsts->Valid);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write average score per question *****/
|
||||
/***** Write average valid score per valid question *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (NumTotalQsts ? TotalScoreOfAllResults /
|
||||
(double) NumTotalQsts :
|
||||
0.0);
|
||||
HTM_Double2Decimals (NumTotalQsts->Valid ? TotalScore->Valid /
|
||||
(double) NumTotalQsts->Valid :
|
||||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total grade *****/
|
||||
|
@ -1142,6 +1120,39 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
|
|||
/*************************** Show one exam result ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void ExaRes_ShowNumQsts (const struct ExaPrn_NumQuestions *NumQsts)
|
||||
{
|
||||
extern const char *Txt_QUESTIONS_valid;
|
||||
extern const char *Txt_QUESTIONS_invalid;
|
||||
|
||||
HTM_Unsigned (NumQsts->All);
|
||||
|
||||
if (NumQsts->All !=
|
||||
NumQsts->Valid)
|
||||
{
|
||||
HTM_NBSP ();
|
||||
HTM_Txt ("(");
|
||||
|
||||
/* Valid questions */
|
||||
HTM_SPAN_Begin ("class=\"DAT_GREEN\" title=\"%s\"",Txt_QUESTIONS_valid);
|
||||
HTM_Unsigned (NumQsts->Valid);
|
||||
HTM_SPAN_End ();
|
||||
|
||||
HTM_Txt ("+");
|
||||
|
||||
/* Invalid questions */
|
||||
HTM_SPAN_Begin ("class=\"DAT_RED\" title=\"%s\"",Txt_QUESTIONS_invalid);
|
||||
HTM_Unsigned (NumQsts->All - NumQsts->Valid);
|
||||
HTM_SPAN_End ();
|
||||
|
||||
HTM_Txt (")");
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************************** Show one exam result ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void ExaRes_ShowOneExaResult (void)
|
||||
{
|
||||
struct Exa_Exams Exams;
|
||||
|
@ -1214,9 +1225,13 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_non_blank_QUESTIONS;
|
||||
extern const char *Txt_QUESTIONS_valid;
|
||||
extern const char *Txt_QUESTIONS_invalid;
|
||||
extern const char *Txt_QUESTIONS_non_blank;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_valid_score;
|
||||
extern const char *Txt_Grade;
|
||||
extern const char *Txt_valid_grade;
|
||||
bool ShowPhoto;
|
||||
char PhotoURL[PATH_MAX + 1];
|
||||
Dat_StartEndTime_t StartEndTime;
|
||||
|
@ -1257,7 +1272,7 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
|
||||
/***** Compute score taking into account only valid questions *****/
|
||||
if (ICanView.Score)
|
||||
ExaRes_ComputeScoreValid (Print);
|
||||
ExaRes_ComputeValidPrintScore (Print);
|
||||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Session->Title,
|
||||
|
@ -1271,8 +1286,8 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
/***** Begin table *****/
|
||||
HTM_TABLE_BeginWideMarginPadding (10);
|
||||
|
||||
/***** Header row *****/
|
||||
/* Get data of the user who answer the session */
|
||||
/***** User *****/
|
||||
/* Get data of the user who answered the exam print */
|
||||
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (UsrDat,Usr_DONT_GET_PREFS))
|
||||
Lay_ShowErrorAndExit (Txt_The_user_does_not_exist);
|
||||
if (!Usr_CheckIfICanViewTstExaMchResult (UsrDat))
|
||||
|
@ -1282,7 +1297,7 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs.Role][UsrDat->Sex]);
|
||||
HTM_TxtColon (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs.Role][UsrDat->Sex]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
|
@ -1301,7 +1316,7 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Start/end time (for user in this session) */
|
||||
/***** Start/end time (for user in this exam print) *****/
|
||||
for (StartEndTime = (Dat_StartEndTime_t) 0;
|
||||
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
|
||||
StartEndTime++)
|
||||
|
@ -1309,7 +1324,7 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_START_END_TIME[StartEndTime]);
|
||||
HTM_TxtColon (Txt_START_END_TIME[StartEndTime]);
|
||||
HTM_TD_End ();
|
||||
|
||||
if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0)
|
||||
|
@ -1324,23 +1339,38 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
HTM_TR_End ();
|
||||
}
|
||||
|
||||
/* Number of questions */
|
||||
/***** Number of questions *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Questions);
|
||||
HTM_TxtColon (Txt_Questions);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
if (ICanView.Result)
|
||||
{
|
||||
HTM_TxtF ("%u",Print->NumQsts);
|
||||
if (Print->NumQsts != Print->NumQstsValid)
|
||||
HTM_TxtF (" (%s: %u, %s: %u)",
|
||||
"válidas",Print->NumQstsValid, // TODO: Need translation!!!
|
||||
"anuladas",Print->NumQsts - Print->NumQstsValid); // TODO: Need translation!!!
|
||||
HTM_TxtF ("; %s: %u",
|
||||
Txt_non_blank_QUESTIONS,Print->NumQstsNotBlank);
|
||||
HTM_TxtF ("%u",Print->NumQsts.All);
|
||||
if (Print->NumQsts.All != Print->NumQsts.Valid)
|
||||
{
|
||||
HTM_Txt (" (");
|
||||
|
||||
/* Valid questions */
|
||||
HTM_SPAN_Begin ("class=\"DAT_GREEN\"");
|
||||
HTM_TxtColonNBSP (Txt_QUESTIONS_valid);
|
||||
HTM_Unsigned (Print->NumQsts.Valid);
|
||||
HTM_SPAN_End ();
|
||||
|
||||
HTM_TxtF (", ");
|
||||
|
||||
/* Invalid questions */
|
||||
HTM_SPAN_Begin ("class=\"DAT_RED\"");
|
||||
HTM_TxtColonNBSP (Txt_QUESTIONS_invalid);
|
||||
HTM_Unsigned (Print->NumQsts.All - Print->NumQsts.Valid);
|
||||
HTM_SPAN_End ();
|
||||
|
||||
HTM_Txt (")");
|
||||
}
|
||||
HTM_TxtF ("; %s: %u",Txt_QUESTIONS_non_blank,Print->NumQsts.NotBlank);
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
|
@ -1348,23 +1378,35 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Score */
|
||||
/***** Score *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Score);
|
||||
HTM_TxtColon (Txt_Score);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
if (ICanView.Score)
|
||||
{
|
||||
HTM_Double2Decimals (Print->Score);
|
||||
if (Print->NumQsts != Print->NumQstsValid)
|
||||
/* Score counting all questions */
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid)
|
||||
HTM_STRONG_Begin ();
|
||||
HTM_Double2Decimals (Print->Score.All);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (Print->NumQsts.All);
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid)
|
||||
HTM_STRONG_End ();
|
||||
|
||||
/* Scoure counting only valid questions */
|
||||
if (Print->NumQsts.All != Print->NumQsts.Valid)
|
||||
{
|
||||
HTM_Txt (" (");
|
||||
HTM_TxtColonNBSP ("Puntuación válida"); // TODO: Need translation!!!!
|
||||
HTM_Double2Decimals (Print->ScoreValid);
|
||||
HTM_Txt (")");
|
||||
HTM_Txt ("; ");
|
||||
HTM_TxtColonNBSP (Txt_valid_score);
|
||||
HTM_STRONG_Begin ();
|
||||
HTM_Double2Decimals (Print->Score.Valid);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (Print->NumQsts.Valid);
|
||||
HTM_STRONG_End ();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1373,25 +1415,31 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Grade */
|
||||
/***** Grade *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Grade);
|
||||
HTM_TxtColon (Txt_Grade);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
if (ICanView.Score)
|
||||
{
|
||||
TstPrn_ComputeAndShowGrade (Print->NumQsts,Print->Score,
|
||||
Exam->MaxGrade);
|
||||
if (Print->NumQsts != Print->NumQstsValid)
|
||||
/* Grade counting all questions */
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid)
|
||||
HTM_STRONG_Begin ();
|
||||
TstPrn_ComputeAndShowGrade (Print->NumQsts.All,Print->Score.All,Exam->MaxGrade);
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid)
|
||||
HTM_STRONG_End ();
|
||||
|
||||
/* Grade counting only valid questions */
|
||||
if (Print->NumQsts.All != Print->NumQsts.Valid)
|
||||
{
|
||||
HTM_Txt (" (");
|
||||
HTM_TxtColonNBSP ("Nota válida"); // TODO: Need translation!!!!
|
||||
TstPrn_ComputeAndShowGrade (Print->NumQstsValid,Print->ScoreValid,
|
||||
Exam->MaxGrade);
|
||||
HTM_Txt (")");
|
||||
HTM_Txt ("; ");
|
||||
HTM_TxtColonNBSP (Txt_valid_grade);
|
||||
HTM_STRONG_Begin ();
|
||||
TstPrn_ComputeAndShowGrade (Print->NumQsts.Valid,Print->Score.Valid,Exam->MaxGrade);
|
||||
HTM_STRONG_End ();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1407,38 +1455,6 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
/***** End table *****/
|
||||
HTM_TABLE_End ();
|
||||
|
||||
/***** Write total mark of session result *****/
|
||||
if (ICanView.Score)
|
||||
{
|
||||
HTM_DIV_Begin ("class=\"DAT_N_BOLD CM\"");
|
||||
|
||||
/* Score */
|
||||
HTM_TxtColonNBSP (Txt_Score);
|
||||
HTM_Double2Decimals (Print->Score);
|
||||
if (Print->NumQsts != Print->NumQstsValid)
|
||||
{
|
||||
HTM_Txt (" / ");
|
||||
HTM_TxtColonNBSP ("Puntuación válida"); // TODO: Need translation!!!!
|
||||
HTM_Double2Decimals (Print->ScoreValid);
|
||||
}
|
||||
|
||||
HTM_BR ();
|
||||
|
||||
/* Grade */
|
||||
HTM_TxtColonNBSP (Txt_Grade);
|
||||
TstPrn_ComputeAndShowGrade (Print->NumQsts,Print->Score,
|
||||
Exam->MaxGrade);
|
||||
if (Print->NumQsts != Print->NumQstsValid)
|
||||
{
|
||||
HTM_Txt (" / ");
|
||||
HTM_TxtColonNBSP ("Nota válida"); // TODO: Need translation!!!!
|
||||
TstPrn_ComputeAndShowGrade (Print->NumQstsValid,Print->ScoreValid,
|
||||
Exam->MaxGrade);
|
||||
}
|
||||
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
}
|
||||
|
@ -1501,10 +1517,10 @@ static bool ExaRes_CheckIfICanViewScore (bool ICanViewResult,unsigned Visibility
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******* Compute total score taking into account only valid questions ********/
|
||||
/****** Compute total score of exam print counting only valid questions ******/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void ExaRes_ComputeScoreValid (struct ExaPrn_Print *Print)
|
||||
static void ExaRes_ComputeValidPrintScore (struct ExaPrn_Print *Print)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -1513,11 +1529,11 @@ static void ExaRes_ComputeScoreValid (struct ExaPrn_Print *Print)
|
|||
bool QuestionExists;
|
||||
|
||||
/***** Initialize score valid *****/
|
||||
Print->NumQstsValid = 0;
|
||||
Print->ScoreValid = 0.0;
|
||||
Print->NumQsts.Valid = 0;
|
||||
Print->Score.Valid = 0.0;
|
||||
|
||||
for (NumQst = 0;
|
||||
NumQst < Print->NumQsts;
|
||||
NumQst < Print->NumQsts.All;
|
||||
NumQst++)
|
||||
{
|
||||
/***** Copy question code *****/
|
||||
|
@ -1550,8 +1566,8 @@ static void ExaRes_ComputeScoreValid (struct ExaPrn_Print *Print)
|
|||
if (Question.Validity == Tst_VALID_QUESTION)
|
||||
{
|
||||
ExaPrn_ComputeAnswerScore (&Print->PrintedQuestions[NumQst],&Question);
|
||||
Print->NumQstsValid++;
|
||||
Print->ScoreValid += Print->PrintedQuestions[NumQst].Score;
|
||||
Print->NumQsts.Valid++;
|
||||
Print->Score.Valid += Print->PrintedQuestions[NumQst].Score;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1568,7 +1584,7 @@ static void ExaRes_ShowExamAnswers (struct UsrData *UsrDat,
|
|||
struct Tst_Question Question;
|
||||
|
||||
for (NumQst = 0;
|
||||
NumQst < Print->NumQsts;
|
||||
NumQst < Print->NumQsts.All;
|
||||
NumQst++)
|
||||
{
|
||||
Gbl.RowEvenOdd = NumQst % 2;
|
||||
|
@ -1599,6 +1615,7 @@ static void ExaRes_WriteQstAndAnsExam (struct UsrData *UsrDat,
|
|||
unsigned Visibility)
|
||||
{
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Invalid_question;
|
||||
bool ICanView[TstVis_NUM_ITEMS_VISIBILITY];
|
||||
static char *ClassNumQst[Tst_NUM_VALIDITIES] =
|
||||
{
|
||||
|
@ -1690,7 +1707,7 @@ static void ExaRes_WriteQstAndAnsExam (struct UsrData *UsrDat,
|
|||
"ANS_0"); // Blank answer
|
||||
HTM_Double2Decimals (Print->PrintedQuestions[NumQst].Score);
|
||||
if (Question->Validity == Tst_INVALID_QUESTION)
|
||||
HTM_TxtF (" (%s)","Pregunta anulada"); // TODO: Need translation!!!!
|
||||
HTM_TxtF (" (%s)",Txt_Invalid_question);
|
||||
HTM_SPAN_End ();
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
|
|
@ -1349,7 +1349,7 @@ static void ExaSes_ShowLstGrpsToCreateSession (long SesCod)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Groups);
|
||||
HTM_TxtColon (Txt_Groups);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
|
|
|
@ -1273,6 +1273,8 @@ static void ExaSet_ListOneOrMoreQuestionsForEdition (struct Exa_Exams *Exams,
|
|||
MYSQL_RES *mysql_res,
|
||||
bool ICanEditQuestions)
|
||||
{
|
||||
extern const char *Txt_Invalid_question;
|
||||
extern const char *Txt_Valid_question;
|
||||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_No_INDEX;
|
||||
extern const char *Txt_Question;
|
||||
|
@ -1290,10 +1292,10 @@ static void ExaSet_ListOneOrMoreQuestionsForEdition (struct Exa_Exams *Exams,
|
|||
[Tst_INVALID_QUESTION] = "times-red.svg",
|
||||
[Tst_VALID_QUESTION ] = "check-green.svg",
|
||||
};
|
||||
static const char *Title[Tst_NUM_VALIDITIES] =
|
||||
const char *Title[Tst_NUM_VALIDITIES] =
|
||||
{
|
||||
[Tst_INVALID_QUESTION] = "Pregunta anulada", // TODO: Need translation!!!!
|
||||
[Tst_VALID_QUESTION ] = "Pregunta válida", // TODO: Need translation!!!!
|
||||
[Tst_INVALID_QUESTION] = Txt_Invalid_question,
|
||||
[Tst_VALID_QUESTION ] = Txt_Valid_question,
|
||||
};
|
||||
|
||||
/***** Write the heading *****/
|
||||
|
|
|
@ -3138,7 +3138,7 @@ static void Fig_GetAndShowTestsStats (void)
|
|||
extern const char *Txt_Number_of_BR_times_that_BR_questions_BR_have_been_BR_responded;
|
||||
extern const char *Txt_Average_BR_number_of_BR_times_that_BR_questions_BR_have_been_BR_responded_BR_per_course;
|
||||
extern const char *Txt_Average_BR_number_of_BR_times_that_BR_a_question_BR_has_been_BR_responded;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_from_0_to_1;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1;
|
||||
extern const char *Txt_TST_STR_ANSWER_TYPES[Tst_NUM_ANS_TYPES];
|
||||
extern const char *Txt_Total;
|
||||
Tst_AnswerType_t AnsType;
|
||||
|
@ -3160,7 +3160,7 @@ static void Fig_GetAndShowTestsStats (void)
|
|||
HTM_TH (1,1,"RM",Txt_Number_of_BR_times_that_BR_questions_BR_have_been_BR_responded);
|
||||
HTM_TH (1,1,"RM",Txt_Average_BR_number_of_BR_times_that_BR_questions_BR_have_been_BR_responded_BR_per_course);
|
||||
HTM_TH (1,1,"RM",Txt_Average_BR_number_of_BR_times_that_BR_a_question_BR_has_been_BR_responded);
|
||||
HTM_TH (1,1,"RM",Txt_Average_BR_score_BR_per_question_BR_from_0_to_1);
|
||||
HTM_TH (1,1,"RM",Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1);
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
|
|
|
@ -9556,7 +9556,7 @@ void Brw_ShowFileMetadata (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Filename);
|
||||
HTM_TxtColon (Txt_Filename);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
|
@ -9569,7 +9569,7 @@ void Brw_ShowFileMetadata (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Uploaded_by);
|
||||
HTM_TxtColon (Txt_Uploaded_by);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
|
@ -9601,7 +9601,7 @@ void Brw_ShowFileMetadata (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_File_size);
|
||||
HTM_TxtColon (Txt_File_size);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
|
@ -9614,7 +9614,7 @@ void Brw_ShowFileMetadata (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Date_of_creation);
|
||||
HTM_TxtColon (Txt_Date_of_creation);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("id=\"filedate\" class=\"DAT LB\"");
|
||||
|
@ -9687,7 +9687,7 @@ void Brw_ShowFileMetadata (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_My_views);
|
||||
HTM_TxtColon (Txt_My_views);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
|
@ -9701,7 +9701,7 @@ void Brw_ShowFileMetadata (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Identified_views);
|
||||
HTM_TxtColon (Txt_Identified_views);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
|
@ -9718,7 +9718,7 @@ void Brw_ShowFileMetadata (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Public_views);
|
||||
HTM_TxtColon (Txt_Public_views);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
|
|
|
@ -324,7 +324,7 @@ void Frm_LabelColumn (const char *TDClass,const char *Id,const char *Label)
|
|||
}
|
||||
else
|
||||
HTM_LABEL_Begin ("class=\"DAT\"");
|
||||
HTM_TxtF ("%s:",Label);
|
||||
HTM_TxtColon (Label);
|
||||
HTM_LABEL_End ();
|
||||
|
||||
/***** Column/cell end *****/
|
||||
|
|
|
@ -1433,7 +1433,7 @@ static void Gam_PutFormsEditionGame (struct Gam_Games *Games,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RM\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Maximum_grade);
|
||||
HTM_TxtColon (Txt_Maximum_grade);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LM\"");
|
||||
|
@ -1447,7 +1447,7 @@ static void Gam_PutFormsEditionGame (struct Gam_Games *Games,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Result_visibility);
|
||||
HTM_TxtColon (Txt_Result_visibility);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LB\"");
|
||||
|
|
|
@ -266,7 +266,7 @@ static void Hlp_ShowRowHelpWhatWouldYouLikeToDo (const char *Description,
|
|||
|
||||
/***** Description *****/
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_TxtF ("%s:",Description);
|
||||
HTM_TxtColon (Description);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Button *****/
|
||||
|
|
|
@ -188,7 +188,7 @@ void Ind_ReqIndicatorsCourses (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"RT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Number_of_indicators);
|
||||
HTM_TxtColon (Txt_Number_of_indicators);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
|
|
|
@ -1410,7 +1410,7 @@ static void Mch_ShowLstGrpsToCreateMatch (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Groups);
|
||||
HTM_TxtColon (Txt_Groups);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
|
|
|
@ -735,7 +735,7 @@ static void MchRes_ShowHeaderMchResults (Usr_MeOrOther_t MeOrOther)
|
|||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_Non_blank_BR_questions;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_from_0_to_1;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1;
|
||||
extern const char *Txt_Grade;
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -748,7 +748,7 @@ static void MchRes_ShowHeaderMchResults (Usr_MeOrOther_t MeOrOther)
|
|||
HTM_TH (1,1,"RT",Txt_Questions);
|
||||
HTM_TH (1,1,"RT",Txt_Non_blank_BR_questions);
|
||||
HTM_TH (1,1,"RT",Txt_Score);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question_BR_from_0_to_1);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1);
|
||||
HTM_TH (1,1,"RT",Txt_Grade);
|
||||
HTM_TH_Empty (1);
|
||||
|
||||
|
@ -989,7 +989,11 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
|
|||
/* Write score */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewScore)
|
||||
{
|
||||
HTM_Double2Decimals (ScoreInThisResult);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (NumQstsInThisResult);
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
@ -1046,9 +1050,9 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
|
|||
|
||||
/***** Write totals for this user *****/
|
||||
MchRes_ShowMchResultsSummaryRow (NumResults,
|
||||
NumTotalQsts,NumTotalQstsNotBlank,
|
||||
TotalScoreOfAllResults,
|
||||
TotalGrade);
|
||||
NumTotalQsts,NumTotalQstsNotBlank,
|
||||
TotalScoreOfAllResults,
|
||||
TotalGrade);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1098,6 +1102,8 @@ static void MchRes_ShowMchResultsSummaryRow (unsigned NumResults,
|
|||
/***** Write total score *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (TotalScoreOfAllResults);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (NumTotalQsts);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write average score per question *****/
|
||||
|
@ -1131,7 +1137,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_non_blank_QUESTIONS;
|
||||
extern const char *Txt_QUESTIONS_non_blank;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Grade;
|
||||
extern const char *Txt_Tags;
|
||||
|
@ -1222,7 +1228,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
/***** Begin table *****/
|
||||
HTM_TABLE_BeginWideMarginPadding (10);
|
||||
|
||||
/***** Header row *****/
|
||||
/***** User *****/
|
||||
/* Get data of the user who answer the match */
|
||||
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (UsrDat,Usr_DONT_GET_PREFS))
|
||||
Lay_ShowErrorAndExit (Txt_The_user_does_not_exist);
|
||||
|
@ -1233,7 +1239,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs.Role][UsrDat->Sex]);
|
||||
HTM_TxtColon (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs.Role][UsrDat->Sex]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
|
@ -1252,7 +1258,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Start/end time (for user in this match) */
|
||||
/***** Start/end time (for user in this match) *****/
|
||||
for (StartEndTime = (Dat_StartEndTime_t) 0;
|
||||
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
|
||||
StartEndTime++)
|
||||
|
@ -1260,7 +1266,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_START_END_TIME[StartEndTime]);
|
||||
HTM_TxtColon (Txt_START_END_TIME[StartEndTime]);
|
||||
HTM_TD_End ();
|
||||
|
||||
if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0)
|
||||
|
@ -1275,59 +1281,67 @@ void MchRes_ShowOneMchResult (void)
|
|||
HTM_TR_End ();
|
||||
}
|
||||
|
||||
/* Number of questions */
|
||||
/***** Number of questions *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Questions);
|
||||
HTM_TxtColon (Txt_Questions);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TxtF ("%u (%u %s)",
|
||||
Print.NumQsts,
|
||||
Print.NumQstsNotBlank,Txt_non_blank_QUESTIONS);
|
||||
HTM_TxtF ("%u; %s: %u",
|
||||
Print.NumQsts,Txt_QUESTIONS_non_blank,Print.NumQstsNotBlank);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Score */
|
||||
/***** Score *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Score);
|
||||
HTM_TxtColon (Txt_Score);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
if (ICanViewScore)
|
||||
{
|
||||
HTM_STRONG_Begin ();
|
||||
HTM_Double2Decimals (Print.Score);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (Print.NumQsts);
|
||||
HTM_STRONG_End ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Grade */
|
||||
/***** Grade *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Grade);
|
||||
HTM_TxtColon (Txt_Grade);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
if (ICanViewScore)
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,Print.Score,
|
||||
Game.MaxGrade);
|
||||
{
|
||||
HTM_STRONG_Begin ();
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,Print.Score,Game.MaxGrade);
|
||||
HTM_STRONG_End ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Tags present in this result */
|
||||
/***** Tags present in this result *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Tags);
|
||||
HTM_TxtColon (Txt_Tags);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
|
@ -1342,19 +1356,6 @@ void MchRes_ShowOneMchResult (void)
|
|||
/***** End table *****/
|
||||
HTM_TABLE_End ();
|
||||
|
||||
/***** Write total grade of match result *****/
|
||||
if (ICanViewScore)
|
||||
{
|
||||
HTM_DIV_Begin ("class=\"DAT_N_BOLD CM\"");
|
||||
HTM_TxtColonNBSP (Txt_Score);
|
||||
HTM_Double2Decimals (Print.Score);
|
||||
HTM_BR ();
|
||||
HTM_TxtColonNBSP (Txt_Grade);
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,Print.Score,
|
||||
Game.MaxGrade);
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
}
|
||||
|
|
|
@ -355,7 +355,7 @@ static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_MSG_To);
|
||||
HTM_TxtColon (Txt_MSG_To);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
|
@ -551,8 +551,8 @@ static void Msg_WriteFormUsrsIDsOrNicksOtherRecipients (void)
|
|||
|
||||
HTM_TH_Begin (1,ColSpan,"LM LIGHT_BLUE");
|
||||
HTM_LABEL_Begin ("for=\"OtherRecipients\"");
|
||||
HTM_TxtF ("%s:",StdsAndTchsWritten ? Txt_Other_recipients :
|
||||
Txt_Recipients);
|
||||
HTM_TxtColon (StdsAndTchsWritten ? Txt_Other_recipients :
|
||||
Txt_Recipients);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TH_End ();
|
||||
|
||||
|
|
|
@ -333,7 +333,7 @@ void Net_ShowFormMyWebsAndSocialNets (void)
|
|||
StrName,The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_IMG (Cfg_URL_ICON_PUBLIC,Net_WebsAndSocialNetworksIcons[NumURL],Net_WebsAndSocialNetworksTitle[NumURL],
|
||||
"class=\"CONTEXT_ICO_16x16\" style=\"margin-right:6px;\"");
|
||||
HTM_TxtF ("%s:",Net_WebsAndSocialNetworksTitle[NumURL]);
|
||||
HTM_TxtColon (Net_WebsAndSocialNetworksTitle[NumURL]);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -1942,7 +1942,7 @@ void Ntf_PutFormChangeNotifSentByEMail (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RM\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_NOTIFY_EVENTS_PLURAL[NotifyEvent]);
|
||||
HTM_TxtColon (Txt_NOTIFY_EVENTS_PLURAL[NotifyEvent]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"CM\"");
|
||||
|
|
|
@ -160,7 +160,7 @@ static void Pri_PutFormVisibility (const char *TxtLabel,
|
|||
|
||||
/***** Select visibility *****/
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",TxtLabel);
|
||||
HTM_TxtColon (TxtLabel);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Form with list of options *****/
|
||||
|
|
|
@ -1388,7 +1388,7 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
|
|||
ClassLabel);
|
||||
break;
|
||||
}
|
||||
HTM_TxtF ("%s:",Txt_Assigned_QUESTION);
|
||||
HTM_TxtColon (Txt_Assigned_QUESTION);
|
||||
HTM_TD_End ();
|
||||
|
||||
switch (ProjectView)
|
||||
|
@ -1428,7 +1428,7 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
|
|||
ClassLabel);
|
||||
break;
|
||||
}
|
||||
HTM_TxtF ("%s:",Txt_Number_of_students);
|
||||
HTM_TxtColon (Txt_Number_of_students);
|
||||
HTM_TD_End ();
|
||||
|
||||
switch (ProjectView)
|
||||
|
@ -1502,7 +1502,7 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
|
|||
HTM_TD_Begin ("colspan=\"2\" class=\"RT %s\"",ClassLabel);
|
||||
break;
|
||||
}
|
||||
HTM_TxtF ("%s:",Txt_Proposal);
|
||||
HTM_TxtColon (Txt_Proposal);
|
||||
HTM_TD_End ();
|
||||
|
||||
switch (ProjectView)
|
||||
|
@ -1862,7 +1862,7 @@ static void Prj_ShowOneProjectTxtField (struct Prj_Project *Prj,
|
|||
// Not applicable
|
||||
break;
|
||||
}
|
||||
HTM_TxtF ("%s:",Label);
|
||||
HTM_TxtColon (Label);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Change text format *****/
|
||||
|
@ -1957,7 +1957,7 @@ static void Prj_ShowOneProjectURL (const struct Prj_Project *Prj,
|
|||
// Not applicable
|
||||
break;
|
||||
}
|
||||
HTM_TxtF ("%s:",Txt_URL);
|
||||
HTM_TxtColon (Txt_URL);
|
||||
HTM_TD_End ();
|
||||
|
||||
switch (ProjectView)
|
||||
|
@ -2073,22 +2073,22 @@ static void Prj_ShowOneProjectMembersWithARole (struct Prj_Projects *Projects,
|
|||
case Prj_LIST_PROJECTS:
|
||||
HTM_TD_Begin ("colspan=\"4\" class=\"RT %s COLOR%u\"",
|
||||
ClassLabel,Gbl.RowEvenOdd);
|
||||
HTM_TxtF ("%s:",NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] :
|
||||
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
|
||||
HTM_TxtColon (NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] :
|
||||
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
|
||||
break;
|
||||
case Prj_FILE_BROWSER_PROJECT:
|
||||
HTM_TD_Begin ("colspan=\"3\" class=\"RT %s\"",ClassLabel);
|
||||
HTM_TxtF ("%s:",NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] :
|
||||
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
|
||||
HTM_TxtColon (NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] :
|
||||
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
|
||||
break;
|
||||
case Prj_PRINT_ONE_PROJECT:
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"RT %s\"",ClassLabel);
|
||||
HTM_TxtF ("%s:",NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] :
|
||||
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
|
||||
HTM_TxtColon (NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] :
|
||||
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
|
||||
break;
|
||||
case Prj_EDIT_ONE_PROJECT:
|
||||
HTM_TD_Begin ("class=\"RT ASG_LABEL\"");
|
||||
HTM_TxtF ("%s:",Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
|
||||
HTM_TxtColon (Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
|
||||
break;
|
||||
}
|
||||
HTM_TD_End ();
|
||||
|
@ -3702,7 +3702,7 @@ static void Prj_PutFormProject (struct Prj_Projects *Projects,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RM\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Assigned_QUESTION);
|
||||
HTM_TxtColon (Txt_Assigned_QUESTION);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LM\"");
|
||||
|
@ -3721,7 +3721,7 @@ static void Prj_PutFormProject (struct Prj_Projects *Projects,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RM\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Number_of_students);
|
||||
HTM_TxtColon (Txt_Number_of_students);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LM\"");
|
||||
|
@ -3736,7 +3736,7 @@ static void Prj_PutFormProject (struct Prj_Projects *Projects,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RM\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Proposal);
|
||||
HTM_TxtColon (Txt_Proposal);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LM\"");
|
||||
|
|
|
@ -1786,7 +1786,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
|
|||
ICanEditThisField ? The_ClassFormInBox[Gbl.Prefs.Theme] :
|
||||
"REC_DAT_SMALL",
|
||||
Gbl.RowEvenOdd);
|
||||
HTM_TxtF ("%s:",Gbl.Crs.Records.LstFields.Lst[NumField].Name);
|
||||
HTM_TxtColon (Gbl.Crs.Records.LstFields.Lst[NumField].Name);
|
||||
if (TypeOfView == Rec_CRS_LIST_ONE_RECORD ||
|
||||
TypeOfView == Rec_CRS_LIST_SEVERAL_RECORDS)
|
||||
{
|
||||
|
|
|
@ -316,7 +316,7 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"RT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Users);
|
||||
HTM_TxtColon (Txt_Users);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"%s LT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
|
@ -349,7 +349,7 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"RM %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Show);
|
||||
HTM_TxtColon (Txt_Show);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LM\"");
|
||||
|
|
|
@ -676,7 +676,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
|
|||
/* Users' roles who can answer the survey */
|
||||
HTM_DIV_Begin ("class=\"%s\"",Svy.Status.Visible ? "ASG_GRP" :
|
||||
"ASG_GRP_LIGHT");
|
||||
HTM_TxtF ("%s:",Txt_Users);
|
||||
HTM_TxtColon (Txt_Users);
|
||||
HTM_BR ();
|
||||
Rol_WriteSelectorRoles (1 << Rol_STD |
|
||||
1 << Rol_NET |
|
||||
|
@ -2007,7 +2007,7 @@ void Svy_RequestCreatOrEditSvy (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"RT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Users);
|
||||
HTM_TxtColon (Txt_Users);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LM\"");
|
||||
|
@ -2139,7 +2139,7 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Groups);
|
||||
HTM_TxtColon (Txt_Groups);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
|
@ -2783,7 +2783,7 @@ static void Svy_ShowFormEditOneQst (struct Svy_Surveys *Surveys,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Type);
|
||||
HTM_TxtColon (Txt_Type);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"%s LT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
|
|
|
@ -461,7 +461,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
|||
|
||||
/***** Label *****/
|
||||
HTM_TD_Begin ("class=\"RT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Tags);
|
||||
HTM_TxtColon (Txt_Tags);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Select all tags *****/
|
||||
|
|
18
swad_test.c
18
swad_test.c
|
@ -550,9 +550,7 @@ void Tst_AssessTest (void)
|
|||
HTM_Double2Decimals (Print.Score);
|
||||
HTM_BR ();
|
||||
HTM_TxtColonNBSP (Txt_Grade);
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,
|
||||
Print.Score,
|
||||
Tst_SCORE_MAX);
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,Print.Score,Tst_SCORE_MAX);
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
||||
|
@ -1434,7 +1432,7 @@ static void Tst_ShowFormConfigTst (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Plugins);
|
||||
HTM_TxtColon (Txt_Plugins);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LB\"");
|
||||
|
@ -1460,7 +1458,7 @@ static void Tst_ShowFormConfigTst (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Number_of_questions);
|
||||
HTM_TxtColon (Txt_Number_of_questions);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LB\"");
|
||||
|
@ -1499,7 +1497,7 @@ static void Tst_ShowFormConfigTst (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Result_visibility);
|
||||
HTM_TxtColon (Txt_Result_visibility);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LB\"");
|
||||
|
@ -1571,7 +1569,7 @@ static void Tst_ShowFormAnswerTypes (const struct Tst_AnswerTypes *AnswerTypes)
|
|||
|
||||
/***** Label *****/
|
||||
HTM_TD_Begin ("class=\"RT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Types_of_answers);
|
||||
HTM_TxtColon (Txt_Types_of_answers);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Select all types of answers *****/
|
||||
|
@ -3315,7 +3313,7 @@ static void Tst_PutFormEditOneQst (struct Tst_Question *Question)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"RT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Tags);
|
||||
HTM_TxtColon (Txt_Tags);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
|
@ -3423,7 +3421,7 @@ static void Tst_PutFormEditOneQst (struct Tst_Question *Question)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"RT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Type);
|
||||
HTM_TxtColon (Txt_Type);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"%s LT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
|
@ -3450,7 +3448,7 @@ static void Tst_PutFormEditOneQst (struct Tst_Question *Question)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"RT %s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Answers);
|
||||
HTM_TxtColon (Txt_Answers);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
|
|
|
@ -1925,7 +1925,7 @@ static void TstPrn_ShowHeaderPrints (void)
|
|||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_Non_blank_BR_questions;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_from_0_to_1;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1;
|
||||
extern const char *Txt_Grade;
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1936,7 +1936,7 @@ static void TstPrn_ShowHeaderPrints (void)
|
|||
HTM_TH (1,1,"RT",Txt_Questions);
|
||||
HTM_TH (1,1,"RT",Txt_Non_blank_BR_questions);
|
||||
HTM_TH (1,1,"RT",Txt_Score);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question_BR_from_0_to_1);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1);
|
||||
HTM_TH (1,1,"RT",Txt_Grade);
|
||||
HTM_TH_Empty (1);
|
||||
|
||||
|
@ -2110,7 +2110,11 @@ static void TstPrn_ShowUsrPrints (struct UsrData *UsrDat)
|
|||
/* Write score */
|
||||
HTM_TD_Begin ("class=\"%s RT COLOR%u\"",ClassDat,Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
{
|
||||
HTM_Double2Decimals (Print.Score);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (Print.NumQsts);
|
||||
}
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write average score per question */
|
||||
|
@ -2124,8 +2128,7 @@ static void TstPrn_ShowUsrPrints (struct UsrData *UsrDat)
|
|||
/* Write grade */
|
||||
HTM_TD_Begin ("class=\"%s RT COLOR%u\"",ClassDat,Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,Print.Score,
|
||||
Tst_SCORE_MAX);
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,Print.Score,Tst_SCORE_MAX);
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Link to show this test exam */
|
||||
|
@ -2240,21 +2243,24 @@ static void TstPrn_ShowPrintsSummaryRow (bool ItsMe,
|
|||
/***** Write total score *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewTotalScore)
|
||||
{
|
||||
HTM_Double2Decimals (TotalScoreOfAllTests);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (NumTotalQsts);
|
||||
}
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write average score per question *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewTotalScore)
|
||||
HTM_Double2Decimals (NumTotalQsts ? TotalScoreOfAllTests / (double) NumTotalQsts :
|
||||
0.0);
|
||||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write score over Tst_SCORE_MAX *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewTotalScore)
|
||||
TstPrn_ComputeAndShowGrade (NumTotalQsts,TotalScoreOfAllTests,
|
||||
Tst_SCORE_MAX);
|
||||
TstPrn_ComputeAndShowGrade (NumTotalQsts,TotalScoreOfAllTests,Tst_SCORE_MAX);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Last cell *****/
|
||||
|
@ -2277,7 +2283,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_non_blank_QUESTIONS;
|
||||
extern const char *Txt_QUESTIONS_non_blank;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Grade;
|
||||
extern const char *Txt_Tags;
|
||||
|
@ -2361,7 +2367,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
/***** Begin table *****/
|
||||
HTM_TABLE_BeginWideMarginPadding (10);
|
||||
|
||||
/***** Header row *****/
|
||||
/***** User *****/
|
||||
/* Get data of the user who made the test */
|
||||
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Usr_DONT_GET_PREFS))
|
||||
Lay_ShowErrorAndExit (Txt_The_user_does_not_exist);
|
||||
|
@ -2372,7 +2378,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role][Gbl.Usrs.Other.UsrDat.Sex]);
|
||||
HTM_TxtColon (Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role][Gbl.Usrs.Other.UsrDat.Sex]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
|
@ -2391,7 +2397,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Test date */
|
||||
/***** Start/end time (for user in this test print) *****/
|
||||
for (StartEndTime = (Dat_StartEndTime_t) 0;
|
||||
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
|
||||
StartEndTime++)
|
||||
|
@ -2402,7 +2408,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_START_END_TIME[StartEndTime]);
|
||||
HTM_TxtColon (Txt_START_END_TIME[StartEndTime]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("id=\"%s\" class=\"DAT LT\"",Id);
|
||||
|
@ -2416,57 +2422,65 @@ void TstPrn_ShowOnePrint (void)
|
|||
free (Id);
|
||||
}
|
||||
|
||||
/* Number of questions */
|
||||
/***** Number of questions *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Questions);
|
||||
HTM_TxtColon (Txt_Questions);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TxtF ("%u (%u %s)",
|
||||
Print.NumQsts,
|
||||
Print.NumQstsNotBlank,Txt_non_blank_QUESTIONS);
|
||||
HTM_TxtF ("%u; %s: %u",
|
||||
Print.NumQsts,Txt_QUESTIONS_non_blank,Print.NumQstsNotBlank);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Score */
|
||||
/***** Score *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Score);
|
||||
HTM_TxtColon (Txt_Score);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
if (ICanViewScore)
|
||||
{
|
||||
HTM_STRONG_Begin ();
|
||||
HTM_Double2Decimals (Print.Score);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (Print.NumQsts);
|
||||
HTM_STRONG_End ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Grade */
|
||||
/***** Grade *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Grade);
|
||||
HTM_TxtColon (Txt_Grade);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
if (ICanViewScore)
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,Print.Score,
|
||||
Tst_SCORE_MAX);
|
||||
{
|
||||
HTM_STRONG_Begin ();
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,Print.Score,Tst_SCORE_MAX);
|
||||
HTM_STRONG_End ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Tags present in this test */
|
||||
/***** Tags present in this test *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtF ("%s:",Txt_Tags);
|
||||
HTM_TxtColon (Txt_Tags);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
|
@ -2482,19 +2496,6 @@ void TstPrn_ShowOnePrint (void)
|
|||
/***** End table *****/
|
||||
HTM_TABLE_End ();
|
||||
|
||||
/***** Write total grade of test *****/
|
||||
if (ICanViewScore)
|
||||
{
|
||||
HTM_DIV_Begin ("class=\"DAT_N_BOLD CM\"");
|
||||
HTM_TxtColonNBSP (Txt_Score);
|
||||
HTM_Double2Decimals (Print.Score);
|
||||
HTM_BR ();
|
||||
HTM_TxtColonNBSP (Txt_Grade);
|
||||
TstPrn_ComputeAndShowGrade (Print.NumQsts,Print.Score,
|
||||
Tst_SCORE_MAX);
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
}
|
||||
|
|
272
swad_text.c
272
swad_text.c
|
@ -2819,25 +2819,25 @@ const char *Txt_AVERAGE_PHOTO_TYPES[Pho_NUM_AVERAGE_PHOTO_TYPES] =
|
|||
#endif
|
||||
};
|
||||
|
||||
const char *Txt_Average_BR_score_BR_per_question_BR_from_0_to_1 =
|
||||
const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1 =
|
||||
#if L==1 // ca
|
||||
"Puntuación<br />media<br />por pregunta<br />(de 0 a 1)"; // Necessita traduccio
|
||||
"Puntuació<br />mitjana<br />per pregunta<br />(≤1)";
|
||||
#elif L==2 // de
|
||||
"Average<br />score<br />per question<br />(from 0 to 1)"; // Need Übersetzung
|
||||
"Durchschnittliche<br />Punktzahl<br />pro Frage<br />(≤1)";
|
||||
#elif L==3 // en
|
||||
"Average<br />score<br />per question<br />(from 0 to 1)";
|
||||
"Average<br />score<br />per question<br />(≤1)";
|
||||
#elif L==4 // es
|
||||
"Puntuación<br />media<br />por pregunta<br />(de 0 a 1)";
|
||||
"Puntuación<br />media<br />por pregunta<br />(≤1)";
|
||||
#elif L==5 // fr
|
||||
"Average<br />score<br />per question<br />(from 0 to 1)"; // Besoin de traduction
|
||||
"Score<br />moyen<br />par question<br />(≤1)";
|
||||
#elif L==6 // gn
|
||||
"Puntuación<br />media<br />por pregunta<br />(de 0 a 1)"; // Okoteve traducción
|
||||
"Puntuación<br />media<br />por pregunta<br />(≤1)"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Average<br />score<br />per question<br />(from 0 to 1)"; // Bisogno di traduzione
|
||||
"Punteggio<br />medio<br />per domanda<br />(≤1)";
|
||||
#elif L==8 // pl
|
||||
"Average<br />score<br />per question<br />(from 0 to 1)"; // Potrzebujesz tlumaczenie
|
||||
"Średnia<br />ocena<br />za pytanie<br />(≤1)";
|
||||
#elif L==9 // pt
|
||||
"Pontuação<br />média por<br />pergunta<br />(de 0 a 1)";
|
||||
"Pontuação<br />média por<br />pergunta<br />(≤1)";
|
||||
#endif
|
||||
|
||||
const char *Txt_Average_type =
|
||||
|
@ -17850,6 +17850,27 @@ const char *Txt_Internationalization =
|
|||
"Internacionalização";
|
||||
#endif
|
||||
|
||||
const char *Txt_Invalid_question =
|
||||
#if L==1 // ca
|
||||
"Pregunta anul·lada";
|
||||
#elif L==2 // de
|
||||
"Frage storniert";
|
||||
#elif L==3 // en
|
||||
"Invalid question";
|
||||
#elif L==4 // es
|
||||
"Pregunta anulada";
|
||||
#elif L==5 // fr
|
||||
"Question annulée";
|
||||
#elif L==6 // gn
|
||||
"Pregunta anulada"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Domanda annullata";
|
||||
#elif L==8 // pl
|
||||
"Pytanie anulowane";
|
||||
#elif L==9 // pt
|
||||
"Pergunta cancelada";
|
||||
#endif
|
||||
|
||||
const char *Txt_IP = // Internet Protocol address
|
||||
#if L==1 // ca
|
||||
"IP";
|
||||
|
@ -27165,27 +27186,6 @@ const char *Txt_nobody_else_can_access_this_content =
|
|||
"ninguém mais pode acessar este conteúdo";
|
||||
#endif
|
||||
|
||||
const char *Txt_non_blank_QUESTIONS =
|
||||
#if L==1 // ca
|
||||
"contestades";
|
||||
#elif L==2 // de
|
||||
"Non-blank";
|
||||
#elif L==3 // en
|
||||
"non-blank";
|
||||
#elif L==4 // es
|
||||
"contestadas";
|
||||
#elif L==5 // fr
|
||||
"non vide";
|
||||
#elif L==6 // gn
|
||||
"contestadas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"risposte";
|
||||
#elif L==8 // pl
|
||||
"niepustych";
|
||||
#elif L==9 // pt
|
||||
"respondidas";
|
||||
#endif
|
||||
|
||||
const char *Txt_Non_blank_BR_questions =
|
||||
#if L==1 // ca
|
||||
"Preguntes<br />contestades";
|
||||
|
@ -32846,48 +32846,6 @@ const char *Txt_Publish_announcement_OF_EXAM =
|
|||
"Publicar chamada";
|
||||
#endif
|
||||
|
||||
const char *Txt_question =
|
||||
#if L==1 // ca
|
||||
"pregunta";
|
||||
#elif L==2 // de
|
||||
"Frage";
|
||||
#elif L==3 // en
|
||||
"question";
|
||||
#elif L==4 // es
|
||||
"pregunta";
|
||||
#elif L==5 // fr
|
||||
"question";
|
||||
#elif L==6 // gn
|
||||
"pregunta"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"domande";
|
||||
#elif L==8 // pl
|
||||
"pytanie";
|
||||
#elif L==9 // pt
|
||||
"pergunta";
|
||||
#endif
|
||||
|
||||
const char *Txt_questions =
|
||||
#if L==1 // ca
|
||||
"preguntes";
|
||||
#elif L==2 // de
|
||||
"Fragen";
|
||||
#elif L==3 // en
|
||||
"questions";
|
||||
#elif L==4 // es
|
||||
"preguntas";
|
||||
#elif L==5 // fr
|
||||
"questions";
|
||||
#elif L==6 // gn
|
||||
"preguntas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"domande";
|
||||
#elif L==8 // pl
|
||||
"pytania";
|
||||
#elif L==9 // pt
|
||||
"perguntas";
|
||||
#endif
|
||||
|
||||
const char *Txt_QR_code =
|
||||
#if L==1 // ca
|
||||
"Codi QR";
|
||||
|
@ -32909,6 +32867,27 @@ const char *Txt_QR_code =
|
|||
"Código QR";
|
||||
#endif
|
||||
|
||||
const char *Txt_question =
|
||||
#if L==1 // ca
|
||||
"pregunta";
|
||||
#elif L==2 // de
|
||||
"Frage";
|
||||
#elif L==3 // en
|
||||
"question";
|
||||
#elif L==4 // es
|
||||
"pregunta";
|
||||
#elif L==5 // fr
|
||||
"question";
|
||||
#elif L==6 // gn
|
||||
"pregunta"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"domande";
|
||||
#elif L==8 // pl
|
||||
"pytanie";
|
||||
#elif L==9 // pt
|
||||
"pergunta";
|
||||
#endif
|
||||
|
||||
const char *Txt_Question =
|
||||
#if L==1 // ca
|
||||
"Pregunta"; // Necessita traduccio
|
||||
|
@ -33014,6 +32993,27 @@ const char *Txt_Question_removed =
|
|||
"Pergunta removida.";
|
||||
#endif
|
||||
|
||||
const char *Txt_questions =
|
||||
#if L==1 // ca
|
||||
"preguntes";
|
||||
#elif L==2 // de
|
||||
"Fragen";
|
||||
#elif L==3 // en
|
||||
"questions";
|
||||
#elif L==4 // es
|
||||
"preguntas";
|
||||
#elif L==5 // fr
|
||||
"questions";
|
||||
#elif L==6 // gn
|
||||
"preguntas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"domande";
|
||||
#elif L==8 // pl
|
||||
"pytania";
|
||||
#elif L==9 // pt
|
||||
"perguntas";
|
||||
#endif
|
||||
|
||||
const char *Txt_Questions =
|
||||
#if L==1 // ca
|
||||
"Preguntes";
|
||||
|
@ -33056,6 +33056,48 @@ const char *Txt_Questions_and_problems =
|
|||
"Perguntas e problemas";
|
||||
#endif
|
||||
|
||||
const char *Txt_QUESTIONS_non_blank =
|
||||
#if L==1 // ca
|
||||
"contestades";
|
||||
#elif L==2 // de
|
||||
"Non-blank";
|
||||
#elif L==3 // en
|
||||
"non-blank";
|
||||
#elif L==4 // es
|
||||
"contestadas";
|
||||
#elif L==5 // fr
|
||||
"non vide";
|
||||
#elif L==6 // gn
|
||||
"contestadas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"risposte";
|
||||
#elif L==8 // pl
|
||||
"niepustych";
|
||||
#elif L==9 // pt
|
||||
"respondidas";
|
||||
#endif
|
||||
|
||||
const char *Txt_QUESTIONS_invalid =
|
||||
#if L==1 // ca
|
||||
"anul·lades";
|
||||
#elif L==2 // de
|
||||
"storniert";
|
||||
#elif L==3 // en
|
||||
"invalid";
|
||||
#elif L==4 // es
|
||||
"anuladas";
|
||||
#elif L==5 // fr
|
||||
"annulées";
|
||||
#elif L==6 // gn
|
||||
"anuladas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"cancellate";
|
||||
#elif L==8 // pl
|
||||
"anulowane";
|
||||
#elif L==9 // pt
|
||||
"canceladas";
|
||||
#endif
|
||||
|
||||
const char *Txt_Questions_removed_X = // Warning: it is very important to include %u in the following sentences
|
||||
#if L==1 // ca
|
||||
"Preguntas eliminadas: %u.";
|
||||
|
@ -33077,6 +33119,27 @@ const char *Txt_Questions_removed_X = // Warning: it is very important to includ
|
|||
"Perguntas removidas: %u.";
|
||||
#endif
|
||||
|
||||
const char *Txt_QUESTIONS_valid =
|
||||
#if L==1 // ca
|
||||
"vàlides";
|
||||
#elif L==2 // de
|
||||
"gültige";
|
||||
#elif L==3 // en
|
||||
"valid";
|
||||
#elif L==4 // es
|
||||
"válidas";
|
||||
#elif L==5 // fr
|
||||
"valides";
|
||||
#elif L==6 // gn
|
||||
"válidas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"valide";
|
||||
#elif L==8 // pl
|
||||
"ważne";
|
||||
#elif L==9 // pt
|
||||
"válidas";
|
||||
#endif
|
||||
|
||||
const char *Txt_Quota_exceeded =
|
||||
#if L==1 // ca
|
||||
"¡Cuota excedida!"; // Necessita traduccio
|
||||
|
@ -55945,6 +56008,69 @@ const char *Txt_Vacants =
|
|||
"Desocupados";
|
||||
#endif
|
||||
|
||||
const char *Txt_valid_grade =
|
||||
#if L==1 // ca
|
||||
"nota vàlida";
|
||||
#elif L==2 // de
|
||||
"Gültige Note";
|
||||
#elif L==3 // en
|
||||
"valid grade";
|
||||
#elif L==4 // es
|
||||
"nota válida";
|
||||
#elif L==5 // fr
|
||||
"note valide";
|
||||
#elif L==6 // gn
|
||||
"nota válida"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"voto valido";
|
||||
#elif L==8 // pl
|
||||
"ocena wynik";
|
||||
#elif L==9 // pt
|
||||
"nota válida";
|
||||
#endif
|
||||
|
||||
const char *Txt_Valid_question =
|
||||
#if L==1 // ca
|
||||
"Pregunta vàlida";
|
||||
#elif L==2 // de
|
||||
"Gültige Frage";
|
||||
#elif L==3 // en
|
||||
"Valid question";
|
||||
#elif L==4 // es
|
||||
"Pregunta válida";
|
||||
#elif L==5 // fr
|
||||
"Question valide";
|
||||
#elif L==6 // gn
|
||||
"Pregunta válida"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Domanda valida";
|
||||
#elif L==8 // pl
|
||||
"Ważne pytanie";
|
||||
#elif L==9 // pt
|
||||
"Pergunta válida";
|
||||
#endif
|
||||
|
||||
const char *Txt_valid_score =
|
||||
#if L==1 // ca
|
||||
"puntuació vàlida";
|
||||
#elif L==2 // de
|
||||
"Gültige Ergebnis";
|
||||
#elif L==3 // en
|
||||
"valid score";
|
||||
#elif L==4 // es
|
||||
"puntuación válida";
|
||||
#elif L==5 // fr
|
||||
"note valide";
|
||||
#elif L==6 // gn
|
||||
"puntuación válida"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"punteggio valido";
|
||||
#elif L==8 // pl
|
||||
"prawidłowy wynik";
|
||||
#elif L==9 // pt
|
||||
"pontuação válida";
|
||||
#endif
|
||||
|
||||
const char *Txt_View =
|
||||
#if L==1 // ca
|
||||
"Veure";
|
||||
|
|
|
@ -6357,7 +6357,7 @@ void Usr_PutFormToSelectUsrsToGoToAct (struct SelectedUsrs *SelectedUsrs,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Users);
|
||||
HTM_TxtColon (Txt_Users);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"%s LT\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
|
@ -6482,8 +6482,8 @@ static void Usr_PutCheckboxToSelectAllUsers (Rol_Role_t Role,
|
|||
else
|
||||
Rol_WrongRoleExit ();
|
||||
Sex = Usr_GetSexOfUsrsLst (Role);
|
||||
HTM_TxtF ("%s:",Gbl.Usrs.LstUsrs[Role].NumUsrs == 1 ? Txt_ROLES_SINGUL_Abc[Role][Sex] :
|
||||
Txt_ROLES_PLURAL_Abc[Role][Sex]);
|
||||
HTM_TxtColon (Gbl.Usrs.LstUsrs[Role].NumUsrs == 1 ? Txt_ROLES_SINGUL_Abc[Role][Sex] :
|
||||
Txt_ROLES_PLURAL_Abc[Role][Sex]);
|
||||
HTM_LABEL_End ();
|
||||
|
||||
HTM_TH_End ();
|
||||
|
|
|
@ -585,7 +585,7 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RM\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_Filename);
|
||||
HTM_TxtColon (Txt_Filename);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LM\"");
|
||||
|
@ -602,7 +602,7 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"%s RM\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
HTM_TxtF ("%s:",Txt_File_size);
|
||||
HTM_TxtColon (Txt_File_size);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LM\"");
|
||||
|
|
Loading…
Reference in New Issue