mirror of https://github.com/acanas/swad-core.git
Version19.31.17
This commit is contained in:
parent
291920e560
commit
3cfb2c0753
|
@ -487,7 +487,7 @@ 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.31.16 (2019-10-07)"
|
#define Log_PLATFORM_VERSION "SWAD 19.31.17 (2019-10-07)"
|
||||||
#define CSS_FILE "swad19.29.css"
|
#define CSS_FILE "swad19.29.css"
|
||||||
#define JS_FILE "swad19.30.js"
|
#define JS_FILE "swad19.30.js"
|
||||||
/*
|
/*
|
||||||
|
@ -495,6 +495,7 @@ ps2pdf source.ps destination.pdf
|
||||||
// TODO: Un TFG preasignado sin estudiante tiene que salir un triángulo amarillo
|
// TODO: Un TFG preasignado sin estudiante tiene que salir un triángulo amarillo
|
||||||
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
|
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
|
||||||
|
|
||||||
|
Version 19.31.17: Oct 07, 2019 Code refactoring in HTML tables. (247221 lines)
|
||||||
Version 19.31.16: Oct 07, 2019 Code refactoring in HTML tables. (247185 lines)
|
Version 19.31.16: Oct 07, 2019 Code refactoring in HTML tables. (247185 lines)
|
||||||
Version 19.31.15: Oct 07, 2019 Code refactoring in HTML tables. (247153 lines)
|
Version 19.31.15: Oct 07, 2019 Code refactoring in HTML tables. (247153 lines)
|
||||||
Version 19.31.14: Oct 07, 2019 Code refactoring in HTML tables. (247138 lines)
|
Version 19.31.14: Oct 07, 2019 Code refactoring in HTML tables. (247138 lines)
|
||||||
|
|
|
@ -3714,7 +3714,7 @@ static void Sta_ShowNumHitsPerCentre (unsigned long NumRows,
|
||||||
Sta_DrawBarNumHits ('o', // orange background
|
Sta_DrawBarNumHits ('o', // orange background
|
||||||
Hits.Num,Hits.Max,Hits.Total,375);
|
Hits.Num,Hits.Max,Hits.Total,375);
|
||||||
|
|
||||||
Tbl_StartRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3802,8 +3802,8 @@ static void Sta_ShowNumHitsPerDegree (unsigned long NumRows,
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LOG RIGHT_TOP\">");
|
fprintf (Gbl.F.Out,"<td class=\"LOG RIGHT_TOP\">");
|
||||||
if (DegCod > 0)
|
if (DegCod > 0)
|
||||||
fprintf (Gbl.F.Out,"%lu",++Ranking);
|
fprintf (Gbl.F.Out,"%lu",++Ranking);
|
||||||
fprintf (Gbl.F.Out," "
|
fprintf (Gbl.F.Out," ");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write degree */
|
/* Write degree */
|
||||||
Sta_WriteDegree (DegCod);
|
Sta_WriteDegree (DegCod);
|
||||||
|
@ -3813,7 +3813,7 @@ static void Sta_ShowNumHitsPerDegree (unsigned long NumRows,
|
||||||
Sta_DrawBarNumHits ('o', // orange background
|
Sta_DrawBarNumHits ('o', // orange background
|
||||||
Hits.Num,Hits.Max,Hits.Total,375);
|
Hits.Num,Hits.Max,Hits.Total,375);
|
||||||
|
|
||||||
Tbl_StartRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3958,7 +3958,7 @@ static void Sta_ShowNumHitsPerCourse (unsigned long NumRows,
|
||||||
Sta_DrawBarNumHits ('o', // orange background
|
Sta_DrawBarNumHits ('o', // orange background
|
||||||
Hits.Num,Hits.Max,Hits.Total,375);
|
Hits.Num,Hits.Max,Hits.Total,375);
|
||||||
|
|
||||||
Tbl_StartRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4032,6 +4032,7 @@ static void Sta_DrawBarNumHits (char Color,
|
||||||
fprintf (Gbl.F.Out,"0 (0");
|
fprintf (Gbl.F.Out,"0 (0");
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"%%) ");
|
fprintf (Gbl.F.Out,"%%) ");
|
||||||
|
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
152
swad_survey.c
152
swad_survey.c
|
@ -483,10 +483,10 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
"<script type=\"text/javascript\">"
|
"<script type=\"text/javascript\">"
|
||||||
"writeLocalDateHMSFromUTC('svy_date_start_%u',%ld,"
|
"writeLocalDateHMSFromUTC('svy_date_start_%u',%ld,"
|
||||||
"%u,'<br />','%s',true,true,0x7);"
|
"%u,'<br />','%s',true,true,0x7);"
|
||||||
"</script>"
|
"</script>",
|
||||||
"</td>",
|
|
||||||
UniqueId,Svy.TimeUTC[Svy_START_TIME],
|
UniqueId,Svy.TimeUTC[Svy_START_TIME],
|
||||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* End date/time */
|
/* End date/time */
|
||||||
fprintf (Gbl.F.Out,"<td id=\"svy_date_end_%u\" class=\"%s LEFT_TOP",
|
fprintf (Gbl.F.Out,"<td id=\"svy_date_end_%u\" class=\"%s LEFT_TOP",
|
||||||
|
@ -501,10 +501,10 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
"<script type=\"text/javascript\">"
|
"<script type=\"text/javascript\">"
|
||||||
"writeLocalDateHMSFromUTC('svy_date_end_%u',%ld,"
|
"writeLocalDateHMSFromUTC('svy_date_end_%u',%ld,"
|
||||||
"%u,'<br />','%s',false,true,0x7);"
|
"%u,'<br />','%s',false,true,0x7);"
|
||||||
"</script>"
|
"</script>",
|
||||||
"</td>",
|
|
||||||
UniqueId,Svy.TimeUTC[Svy_END_TIME],
|
UniqueId,Svy.TimeUTC[Svy_END_TIME],
|
||||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Survey title */
|
/* Survey title */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP");
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP");
|
||||||
|
@ -526,14 +526,14 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
Lay_EndArticle ();
|
Lay_EndArticle ();
|
||||||
|
|
||||||
/* Number of questions and number of distinct users who have already answered this survey */
|
/* Number of questions and number of distinct users who have already answered this survey */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"%s\">%s: %u; %s: %u</div>"
|
fprintf (Gbl.F.Out,"<div class=\"%s\">%s: %u; %s: %u</div>",
|
||||||
"</td>",
|
|
||||||
Svy.Status.Visible ? "ASG_GRP" :
|
Svy.Status.Visible ? "ASG_GRP" :
|
||||||
"ASG_GRP_LIGHT",
|
"ASG_GRP_LIGHT",
|
||||||
Txt_No_of_questions,
|
Txt_No_of_questions,
|
||||||
Svy.NumQsts,
|
Svy.NumQsts,
|
||||||
Txt_No_of_users,
|
Txt_No_of_users,
|
||||||
Svy.NumUsrs);
|
Svy.NumUsrs);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Status of the survey */
|
/* Status of the survey */
|
||||||
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"LEFT_TOP");
|
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"LEFT_TOP");
|
||||||
|
@ -581,6 +581,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
|
|
||||||
/***** Write second row of data of this survey *****/
|
/***** Write second row of data of this survey *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"LEFT_TOP");
|
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"LEFT_TOP");
|
||||||
if (!ShowOnlyThisSvyComplete)
|
if (!ShowOnlyThisSvyComplete)
|
||||||
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
||||||
|
@ -589,11 +590,13 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
/* Author of the survey */
|
/* Author of the survey */
|
||||||
Svy_WriteAuthor (&Svy);
|
Svy_WriteAuthor (&Svy);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
Tbl_EndCell ();
|
||||||
"<td class=\"LEFT_TOP");
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP");
|
||||||
if (!ShowOnlyThisSvyComplete)
|
if (!ShowOnlyThisSvyComplete)
|
||||||
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
||||||
fprintf (Gbl.F.Out,"\">");
|
fprintf (Gbl.F.Out,"\">");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Scope of the survey */
|
/* Scope of the survey */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"%s\">%s: ",
|
fprintf (Gbl.F.Out,"<div class=\"%s\">%s: ",
|
||||||
|
@ -654,11 +657,12 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
|
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
|
||||||
Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML
|
Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML
|
||||||
Str_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
|
Str_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
|
||||||
fprintf (Gbl.F.Out,"<div class=\"PAR %s\">%s</div>"
|
fprintf (Gbl.F.Out,"<div class=\"PAR %s\">%s</div>",
|
||||||
"</td>",
|
|
||||||
Svy.Status.Visible ? "DAT" :
|
Svy.Status.Visible ? "DAT" :
|
||||||
"DAT_LIGHT",
|
"DAT_LIGHT",
|
||||||
Txt);
|
Txt);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Write questions of this survey *****/
|
/***** Write questions of this survey *****/
|
||||||
|
@ -1858,31 +1862,37 @@ void Svy_RequestCreatOrEditSvy (void)
|
||||||
|
|
||||||
/***** Scope of the survey *****/
|
/***** Scope of the survey *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<label for=\"ScopeSvy\" class=\"%s\">%s:</label>"
|
"<label for=\"ScopeSvy\" class=\"%s\">%s:</label>",
|
||||||
"</td>"
|
|
||||||
"<td class=\"LEFT_MIDDLE\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
Txt_Scope);
|
Txt_Scope);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
|
||||||
Svy_SetDefaultAndAllowedScope (&Svy);
|
Svy_SetDefaultAndAllowedScope (&Svy);
|
||||||
Sco_GetScope ("ScopeSvy");
|
Sco_GetScope ("ScopeSvy");
|
||||||
Sco_PutSelectorScope ("ScopeSvy",false);
|
Sco_PutSelectorScope ("ScopeSvy",false);
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Survey title *****/
|
/***** Survey title *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<label for=\"Title\" class=\"%s\">%s:</label>"
|
"<label for=\"Title\" class=\"%s\">%s:</label>",
|
||||||
"</td>"
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
"<td class=\"LEFT_MIDDLE\">"
|
Txt_Title);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||||
"<input type=\"text\" id=\"Title\" name=\"Title\""
|
"<input type=\"text\" id=\"Title\" name=\"Title\""
|
||||||
" size=\"45\" maxlength=\"%u\" value=\"%s\""
|
" size=\"45\" maxlength=\"%u\" value=\"%s\""
|
||||||
" required=\"required\" />"
|
" required=\"required\" />",
|
||||||
"</td>",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
|
||||||
Txt_Title,
|
|
||||||
Svy_MAX_CHARS_SURVEY_TITLE,Svy.Title);
|
Svy_MAX_CHARS_SURVEY_TITLE,Svy.Title);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Survey start and end dates *****/
|
/***** Survey start and end dates *****/
|
||||||
|
@ -1890,33 +1900,39 @@ void Svy_RequestCreatOrEditSvy (void)
|
||||||
|
|
||||||
/***** Survey text *****/
|
/***** Survey text *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||||
"<label for=\"Txt\" class=\"%s\">%s:</label>"
|
"<label for=\"Txt\" class=\"%s\">%s:</label>",
|
||||||
"</td>"
|
|
||||||
"<td class=\"LEFT_TOP\">"
|
|
||||||
"<textarea id=\"Txt\" name=\"Txt\""
|
|
||||||
" cols=\"60\" rows=\"10\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
Txt_Description);
|
Txt_Description);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
|
"<textarea id=\"Txt\" name=\"Txt\""
|
||||||
|
" cols=\"60\" rows=\"10\">");
|
||||||
if (!ItsANewSurvey)
|
if (!ItsANewSurvey)
|
||||||
fprintf (Gbl.F.Out,"%s",Txt);
|
fprintf (Gbl.F.Out,"%s",Txt);
|
||||||
fprintf (Gbl.F.Out,"</textarea>"
|
fprintf (Gbl.F.Out,"</textarea>");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Users' roles who can answer the survey *****/
|
/***** Users' roles who can answer the survey *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">%s:"
|
|
||||||
"</td>"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">%s:",
|
||||||
"<td class=\"DAT LEFT_MIDDLE\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
Txt_Users);
|
Txt_Users);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
|
||||||
Rol_WriteSelectorRoles (1 << Rol_STD |
|
Rol_WriteSelectorRoles (1 << Rol_STD |
|
||||||
1 << Rol_NET |
|
1 << Rol_NET |
|
||||||
1 << Rol_TCH,
|
1 << Rol_TCH,
|
||||||
Svy.Roles,
|
Svy.Roles,
|
||||||
false,false);
|
false,false);
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Groups *****/
|
/***** Groups *****/
|
||||||
|
@ -2036,17 +2052,20 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
||||||
{
|
{
|
||||||
/***** Start box and table *****/
|
/***** Start box and table *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"LEFT_TOP\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
Txt_Groups);
|
Txt_Groups);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
|
||||||
Box_StartBoxTable ("95%",NULL,NULL,
|
Box_StartBoxTable ("95%",NULL,NULL,
|
||||||
NULL,Box_NOT_CLOSABLE,0);
|
NULL,Box_NOT_CLOSABLE,0);
|
||||||
|
|
||||||
/***** First row: checkbox to select the whole course *****/
|
/***** First row: checkbox to select the whole course *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td colspan=\"7\" class=\"DAT LEFT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td colspan=\"7\" class=\"DAT LEFT_MIDDLE\">"
|
||||||
"<label>"
|
"<label>"
|
||||||
"<input type=\"checkbox\""
|
"<input type=\"checkbox\""
|
||||||
|
@ -2055,9 +2074,10 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
||||||
fprintf (Gbl.F.Out," checked=\"checked\"");
|
fprintf (Gbl.F.Out," checked=\"checked\"");
|
||||||
fprintf (Gbl.F.Out," onclick=\"uncheckChildren(this,'GrpCods')\" />"
|
fprintf (Gbl.F.Out," onclick=\"uncheckChildren(this,'GrpCods')\" />"
|
||||||
"%s %s"
|
"%s %s"
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>",
|
|
||||||
Txt_The_whole_course,Gbl.Hierarchy.Crs.ShrtName);
|
Txt_The_whole_course,Gbl.Hierarchy.Crs.ShrtName);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** List the groups for each group type *****/
|
/***** List the groups for each group type *****/
|
||||||
|
@ -2679,27 +2699,32 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
|
|
||||||
/***** Stem *****/
|
/***** Stem *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||||
"<label for=\"Txt\" class=\"%s\">%s:</label>"
|
"<label for=\"Txt\" class=\"%s\">%s:</label>",
|
||||||
"</td>"
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Wording);
|
||||||
"<td class=\"LEFT_TOP\">"
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
"<textarea id=\"Txt\" name=\"Txt\""
|
"<textarea id=\"Txt\" name=\"Txt\""
|
||||||
" cols=\"60\" rows=\"4\">"
|
" cols=\"60\" rows=\"4\">"
|
||||||
"%s"
|
"%s"
|
||||||
"</textarea>"
|
"</textarea>",
|
||||||
"</td>",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Wording,
|
|
||||||
Txt);
|
Txt);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Type of answer *****/
|
/***** Type of answer *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"%s LEFT_TOP\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
Txt_Type,
|
Txt_Type);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||||
for (AnsType = (Svy_AnswerType_t) 0;
|
for (AnsType = (Svy_AnswerType_t) 0;
|
||||||
AnsType < Svy_NUM_ANS_TYPES;
|
AnsType < Svy_NUM_ANS_TYPES;
|
||||||
|
@ -2717,6 +2742,7 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
Txt_SURVEY_STR_ANSWER_TYPES[AnsType]);
|
Txt_SURVEY_STR_ANSWER_TYPES[AnsType]);
|
||||||
}
|
}
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Answers *****/
|
/***** Answers *****/
|
||||||
|
@ -2731,12 +2757,13 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
NumAns < Svy_MAX_ANSWERS_PER_QUESTION;
|
NumAns < Svy_MAX_ANSWERS_PER_QUESTION;
|
||||||
NumAns++)
|
NumAns++)
|
||||||
{
|
{
|
||||||
/* Label with the number of the answer */
|
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
|
/* Label with the number of the answer */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||||
"<label for=\"AnsStr%u\" class=\"%s\">%u)</label>"
|
"<label for=\"AnsStr%u\" class=\"%s\">%u)</label>",
|
||||||
"</td>",
|
|
||||||
NumAns,The_ClassFormInBox[Gbl.Prefs.Theme],NumAns + 1);
|
NumAns,The_ClassFormInBox[Gbl.Prefs.Theme],NumAns + 1);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Answer text */
|
/* Answer text */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||||
|
@ -2745,8 +2772,9 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
|
||||||
NumAns,NumAns);
|
NumAns,NumAns);
|
||||||
if (SvyQst->AnsChoice[NumAns].Text)
|
if (SvyQst->AnsChoice[NumAns].Text)
|
||||||
fprintf (Gbl.F.Out,"%s",SvyQst->AnsChoice[NumAns].Text);
|
fprintf (Gbl.F.Out,"%s",SvyQst->AnsChoice[NumAns].Text);
|
||||||
fprintf (Gbl.F.Out,"</textarea>"
|
fprintf (Gbl.F.Out,"</textarea>");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
Tbl_EndTable ();
|
Tbl_EndTable ();
|
||||||
|
@ -3247,17 +3275,17 @@ static void Svy_ListSvyQuestions (struct Survey *Svy,
|
||||||
if (sscanf (row[1],"%u",&(SvyQst->QstInd)) != 1)
|
if (sscanf (row[1],"%u",&(SvyQst->QstInd)) != 1)
|
||||||
Lay_ShowErrorAndExit ("Error: wrong question index.");
|
Lay_ShowErrorAndExit ("Error: wrong question index.");
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||||
"%u"
|
"%u",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,SvyQst->QstInd + 1);
|
Gbl.RowEvenOdd,SvyQst->QstInd + 1);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write the question type (row[2]) */
|
/* Write the question type (row[2]) */
|
||||||
SvyQst->AnswerType = Svy_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
SvyQst->AnswerType = Svy_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||||
"%s"
|
"%s",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
Txt_SURVEY_STR_ANSWER_TYPES[SvyQst->AnswerType]);
|
Txt_SURVEY_STR_ANSWER_TYPES[SvyQst->AnswerType]);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write the stem (row[3]) and the answers of this question */
|
/* Write the stem (row[3]) and the answers of this question */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP COLOR%u\">",
|
||||||
|
@ -3418,26 +3446,26 @@ static void Svy_WriteAnswersOfAQst (struct Survey *Svy,
|
||||||
else // SvyQst->AnswerType == Svy_ANS_MULTIPLE_CHOICE
|
else // SvyQst->AnswerType == Svy_ANS_MULTIPLE_CHOICE
|
||||||
fprintf (Gbl.F.Out,"checkbox\"");
|
fprintf (Gbl.F.Out,"checkbox\"");
|
||||||
fprintf (Gbl.F.Out," id=\"Ans%010u_%010u\" name=\"Ans%010u\""
|
fprintf (Gbl.F.Out," id=\"Ans%010u_%010u\" name=\"Ans%010u\""
|
||||||
" value=\"%u\" />"
|
" value=\"%u\" />",
|
||||||
"</td>",
|
|
||||||
(unsigned) SvyQst->QstCod,NumAns,(unsigned) SvyQst->QstCod,
|
(unsigned) SvyQst->QstCod,NumAns,(unsigned) SvyQst->QstCod,
|
||||||
NumAns);
|
NumAns);
|
||||||
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write the number of option */
|
/* Write the number of option */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\" style=\"width:50px;\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\" style=\"width:50px;\">"
|
||||||
"<label for=\"Ans%010u_%010u\" class=\"DAT\">"
|
"<label for=\"Ans%010u_%010u\" class=\"DAT\">"
|
||||||
"%u)"
|
"%u)"
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>",
|
|
||||||
(unsigned) SvyQst->QstCod,NumAns,NumAns + 1);
|
(unsigned) SvyQst->QstCod,NumAns,NumAns + 1);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write the text of the answer */
|
/* Write the text of the answer */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
"<label for=\"Ans%010u_%010u\" class=\"DAT\">%s</label>"
|
"<label for=\"Ans%010u_%010u\" class=\"DAT\">%s</label>",
|
||||||
"</td>",
|
|
||||||
(unsigned) SvyQst->QstCod,NumAns,
|
(unsigned) SvyQst->QstCod,NumAns,
|
||||||
SvyQst->AnsChoice[NumAns].Text);
|
SvyQst->AnsChoice[NumAns].Text);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Show stats of this answer */
|
/* Show stats of this answer */
|
||||||
if (Svy->Status.ICanViewResults)
|
if (Svy->Status.ICanViewResults)
|
||||||
|
@ -3497,8 +3525,10 @@ static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs)
|
||||||
BarWidth);
|
BarWidth);
|
||||||
|
|
||||||
/***** Write the number of users *****/
|
/***** Write the number of users *****/
|
||||||
fprintf (Gbl.F.Out,"%s</td>",
|
fprintf (Gbl.F.Out,"%s",
|
||||||
Gbl.Title);
|
Gbl.Title);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -600,9 +600,11 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
||||||
if (Gbl.Syllabus.EditionIsActive)
|
if (Gbl.Syllabus.EditionIsActive)
|
||||||
{
|
{
|
||||||
if (NewItem)
|
if (NewItem)
|
||||||
fprintf (Gbl.F.Out,"<td colspan=\"5\" class=\"COLOR%u\">"
|
{
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td colspan=\"5\" class=\"COLOR%u\">",
|
||||||
Gbl.RowEvenOdd);
|
Gbl.RowEvenOdd);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Icon to remove the row *****/
|
/***** Icon to remove the row *****/
|
||||||
|
@ -702,9 +704,11 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
||||||
{
|
{
|
||||||
/***** Indent depending on the level *****/
|
/***** Indent depending on the level *****/
|
||||||
if (Level > 1)
|
if (Level > 1)
|
||||||
fprintf (Gbl.F.Out,"<td colspan=\"%d\" class=\"COLOR%u\">"
|
{
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td colspan=\"%d\" class=\"COLOR%u\">",
|
||||||
Level - 1,Gbl.RowEvenOdd);
|
Level - 1,Gbl.RowEvenOdd);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
}
|
||||||
|
|
||||||
/***** Code of the item *****/
|
/***** Code of the item *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP COLOR%u\""
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP COLOR%u\""
|
||||||
|
@ -713,16 +717,17 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
||||||
Level * Syl_WIDTH_NUM_SYLLABUS);
|
Level * Syl_WIDTH_NUM_SYLLABUS);
|
||||||
if (Level == 1)
|
if (Level == 1)
|
||||||
fprintf (Gbl.F.Out," ");
|
fprintf (Gbl.F.Out," ");
|
||||||
fprintf (Gbl.F.Out,"%s </td>",StrItemCod);
|
fprintf (Gbl.F.Out,"%s ",StrItemCod);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Text of the item *****/
|
/***** Text of the item *****/
|
||||||
fprintf (Gbl.F.Out,"<td colspan=\"%d\" class=\"%s LEFT_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td colspan=\"%d\" class=\"%s LEFT_TOP COLOR%u\">"
|
||||||
"%s"
|
"%s",
|
||||||
"</td>",
|
|
||||||
LstItemsSyllabus.NumLevels - Level + 1,
|
LstItemsSyllabus.NumLevels - Level + 1,
|
||||||
StyleSyllabus[Level],
|
StyleSyllabus[Level],
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
Text);
|
Text);
|
||||||
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** End of the row *****/
|
/***** End of the row *****/
|
||||||
|
@ -885,15 +890,19 @@ static void Syl_PutFormItemSyllabus (bool NewItem,unsigned NumItem,int Level,int
|
||||||
|
|
||||||
/***** Indent depending on the level *****/
|
/***** Indent depending on the level *****/
|
||||||
if (Level > 1)
|
if (Level > 1)
|
||||||
fprintf (Gbl.F.Out,"<td colspan=\"%d\" class=\"COLOR%u\">"
|
{
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td colspan=\"%d\" class=\"COLOR%u\">",
|
||||||
Level - 1,Gbl.RowEvenOdd);
|
Level - 1,Gbl.RowEvenOdd);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
}
|
||||||
|
|
||||||
/***** Write the code of the item *****/
|
/***** Write the code of the item *****/
|
||||||
if (NewItem) // If the item is new (not stored in the file) ==> it has not a number
|
if (NewItem) // If the item is new (not stored in the file) ==> it has not a number
|
||||||
fprintf (Gbl.F.Out,"<td class=\"COLOR%u\" style=\"width:%dpx;\">"
|
{
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td class=\"COLOR%u\" style=\"width:%dpx;\">",
|
||||||
Gbl.RowEvenOdd,Level * Syl_WIDTH_NUM_SYLLABUS);
|
Gbl.RowEvenOdd,Level * Syl_WIDTH_NUM_SYLLABUS);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_MIDDLE COLOR%u\""
|
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_MIDDLE COLOR%u\""
|
||||||
|
@ -903,7 +912,8 @@ static void Syl_PutFormItemSyllabus (bool NewItem,unsigned NumItem,int Level,int
|
||||||
if (Level == 1)
|
if (Level == 1)
|
||||||
fprintf (Gbl.F.Out," ");
|
fprintf (Gbl.F.Out," ");
|
||||||
Syl_WriteNumItem (NULL,Gbl.F.Out,Level,CodItem);
|
Syl_WriteNumItem (NULL,Gbl.F.Out,Level,CodItem);
|
||||||
fprintf (Gbl.F.Out," </td>");
|
fprintf (Gbl.F.Out," ");
|
||||||
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Text of the item *****/
|
/***** Text of the item *****/
|
||||||
|
|
423
swad_test.c
423
swad_test.c
|
@ -354,23 +354,26 @@ void Tst_ShowFormAskTst (void)
|
||||||
|
|
||||||
/***** Number of questions to generate ****/
|
/***** Number of questions to generate ****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<label for=\"NumQst\" class=\"%s\">"
|
"<label for=\"NumQst\" class=\"%s\">"
|
||||||
"%s:"
|
"%s:"
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>"
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_No_of_questions);
|
||||||
"<td class=\"LEFT_MIDDLE\">"
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||||
"<input type=\"number\""
|
"<input type=\"number\""
|
||||||
" id=\"NumQst\" name=\"NumQst\""
|
" id=\"NumQst\" name=\"NumQst\""
|
||||||
" min=\"%u\" max=\"%u\" value=\"%u\"",
|
" min=\"%u\" max=\"%u\" value=\"%u\"",
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_No_of_questions,
|
|
||||||
Gbl.Test.Config.Min,
|
Gbl.Test.Config.Min,
|
||||||
Gbl.Test.Config.Max,
|
Gbl.Test.Config.Max,
|
||||||
Gbl.Test.Config.Def);
|
Gbl.Test.Config.Def);
|
||||||
if (Gbl.Test.Config.Min == Gbl.Test.Config.Max)
|
if (Gbl.Test.Config.Min == Gbl.Test.Config.Max)
|
||||||
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
||||||
fprintf (Gbl.F.Out," />"
|
fprintf (Gbl.F.Out," />");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
Tbl_EndTable ();
|
Tbl_EndTable ();
|
||||||
|
@ -993,14 +996,17 @@ static void Tst_ShowTestResultAfterAssess (long TstCod,unsigned *NumQstsNotBlank
|
||||||
{
|
{
|
||||||
/***** Question does not exists *****/
|
/***** Question does not exists *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
|
||||||
"%u"
|
"%u",
|
||||||
"</td>"
|
Gbl.RowEvenOdd,NumQst + 1);
|
||||||
"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
Tbl_EndCell ();
|
||||||
"%s"
|
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
||||||
Gbl.RowEvenOdd,NumQst + 1,
|
"%s",
|
||||||
Gbl.RowEvenOdd,Txt_Question_removed);
|
Gbl.RowEvenOdd,Txt_Question_removed);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1036,8 +1042,9 @@ static void Tst_WriteQstAndAnsTest (Tst_ActionToDoWithQuestions_t ActionToDoWith
|
||||||
Tst_QstConstructor ();
|
Tst_QstConstructor ();
|
||||||
Gbl.Test.QstCod = QstCod;
|
Gbl.Test.QstCod = QstCod;
|
||||||
|
|
||||||
/***** Write number of question *****/
|
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
|
/***** Write number of question *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">"
|
||||||
"<div class=\"BIG_INDEX\">%u</div>",
|
"<div class=\"BIG_INDEX\">%u</div>",
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
|
@ -1045,9 +1052,9 @@ static void Tst_WriteQstAndAnsTest (Tst_ActionToDoWithQuestions_t ActionToDoWith
|
||||||
|
|
||||||
/***** Write answer type (row[2]) *****/
|
/***** Write answer type (row[2]) *****/
|
||||||
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT_SMALL\">%s</div>"
|
fprintf (Gbl.F.Out,"<div class=\"DAT_SMALL\">%s</div>",
|
||||||
"</td>",
|
|
||||||
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write stem (row[4]) *****/
|
/***** Write stem (row[4]) *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">",
|
||||||
|
@ -1693,13 +1700,13 @@ static void Tst_ShowFormSelTags (unsigned long NumRows,MYSQL_RES *mysql_res,
|
||||||
row[1] TagTxt
|
row[1] TagTxt
|
||||||
row[2] TagHidden
|
row[2] TagHidden
|
||||||
*/
|
*/
|
||||||
|
Tbl_StartRow ();
|
||||||
|
|
||||||
/***** Label *****/
|
/***** Label *****/
|
||||||
Tbl_StartRow ();
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Tags);
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Tags);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Select all tags *****/
|
/***** Select all tags *****/
|
||||||
fprintf (Gbl.F.Out,"<td");
|
fprintf (Gbl.F.Out,"<td");
|
||||||
|
@ -1710,6 +1717,7 @@ static void Tst_ShowFormSelTags (unsigned long NumRows,MYSQL_RES *mysql_res,
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
if (!ShowOnlyEnabledTags)
|
if (!ShowOnlyEnabledTags)
|
||||||
Tbl_PutEmptyCells (1);
|
Tbl_PutEmptyCells (1);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||||
"<label class=\"%s\">"
|
"<label class=\"%s\">"
|
||||||
"<input type=\"checkbox\" name=\"AllTags\" value=\"Y\"",
|
"<input type=\"checkbox\" name=\"AllTags\" value=\"Y\"",
|
||||||
|
@ -1718,9 +1726,10 @@ static void Tst_ShowFormSelTags (unsigned long NumRows,MYSQL_RES *mysql_res,
|
||||||
fprintf (Gbl.F.Out," checked=\"checked\"");
|
fprintf (Gbl.F.Out," checked=\"checked\"");
|
||||||
fprintf (Gbl.F.Out," onclick=\"togglecheckChildren(this,'ChkTag');\" />"
|
fprintf (Gbl.F.Out," onclick=\"togglecheckChildren(this,'ChkTag');\" />"
|
||||||
" %s"
|
" %s"
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>",
|
|
||||||
Txt_All_tags);
|
Txt_All_tags);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Select tags one by one *****/
|
/***** Select tags one by one *****/
|
||||||
|
@ -1744,8 +1753,8 @@ static void Tst_ShowFormSelTags (unsigned long NumRows,MYSQL_RES *mysql_res,
|
||||||
fprintf (Gbl.F.Out,"eye.svg\" alt=\"%s\" title=\"%s",
|
fprintf (Gbl.F.Out,"eye.svg\" alt=\"%s\" title=\"%s",
|
||||||
Txt_Tag_allowed,
|
Txt_Tag_allowed,
|
||||||
Txt_Tag_allowed);
|
Txt_Tag_allowed);
|
||||||
fprintf (Gbl.F.Out,"\" class=\"ICO_HIDDEN ICO16x16\" />"
|
fprintf (Gbl.F.Out,"\" class=\"ICO_HIDDEN ICO16x16\" />");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||||
"<label class=\"DAT\">"
|
"<label class=\"DAT\">"
|
||||||
|
@ -1763,9 +1772,10 @@ static void Tst_ShowFormSelTags (unsigned long NumRows,MYSQL_RES *mysql_res,
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out," onclick=\"checkParent(this,'AllTags');\" />"
|
fprintf (Gbl.F.Out," onclick=\"checkParent(this,'AllTags');\" />"
|
||||||
" %s"
|
" %s"
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>",
|
|
||||||
row[1]);
|
row[1]);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1913,12 +1923,14 @@ static void Tst_ShowFormConfigTst (void)
|
||||||
/***** Tests are visible from plugins? *****/
|
/***** Tests are visible from plugins? *****/
|
||||||
Tbl_StartTablePadding (2);
|
Tbl_StartTablePadding (2);
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"LEFT_BOTTOM\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
Txt_Plugins);
|
Txt_Plugins);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_BOTTOM\">");
|
||||||
for (Pluggable = Tst_PLUGGABLE_NO;
|
for (Pluggable = Tst_PLUGGABLE_NO;
|
||||||
Pluggable <= Tst_PLUGGABLE_YES;
|
Pluggable <= Tst_PLUGGABLE_YES;
|
||||||
Pluggable++)
|
Pluggable++)
|
||||||
|
@ -1934,16 +1946,19 @@ static void Tst_ShowFormConfigTst (void)
|
||||||
Txt_TST_PLUGGABLE[Pluggable]);
|
Txt_TST_PLUGGABLE[Pluggable]);
|
||||||
}
|
}
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Number of questions *****/
|
/***** Number of questions *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"LEFT_BOTTOM\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
Txt_No_of_questions);
|
Txt_No_of_questions);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_BOTTOM\">");
|
||||||
Tbl_StartTablePadding (2);
|
Tbl_StartTablePadding (2);
|
||||||
Tst_PutInputFieldNumQst ("NumQstMin",Txt_minimum,
|
Tst_PutInputFieldNumQst ("NumQstMin",Txt_minimum,
|
||||||
Gbl.Test.Config.Min); // Minimum number of questions
|
Gbl.Test.Config.Min); // Minimum number of questions
|
||||||
|
@ -1953,33 +1968,39 @@ static void Tst_ShowFormConfigTst (void)
|
||||||
Gbl.Test.Config.Max); // Maximum number of questions
|
Gbl.Test.Config.Max); // Maximum number of questions
|
||||||
Tbl_EndTable ();
|
Tbl_EndTable ();
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Minimum time between consecutive tests, per question *****/
|
/***** Minimum time between consecutive tests, per question *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||||
"<label for=\"MinTimeNxtTstPerQst\" class=\"%s\">"
|
"<label for=\"MinTimeNxtTstPerQst\" class=\"%s\">"
|
||||||
"%s:"
|
"%s:"
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>"
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
"<td class=\"LEFT_BOTTOM\">"
|
Txt_Minimum_time_seconds_per_question_between_two_tests);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_BOTTOM\">"
|
||||||
"<input type=\"text\""
|
"<input type=\"text\""
|
||||||
" id=\"MinTimeNxtTstPerQst\" name=\"MinTimeNxtTstPerQst\""
|
" id=\"MinTimeNxtTstPerQst\" name=\"MinTimeNxtTstPerQst\""
|
||||||
" size=\"7\" maxlength=\"7\" value=\"%lu\""
|
" size=\"7\" maxlength=\"7\" value=\"%lu\""
|
||||||
" required=\"required\" />"
|
" required=\"required\" />",
|
||||||
"</td>",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
|
||||||
Txt_Minimum_time_seconds_per_question_between_two_tests,
|
|
||||||
Gbl.Test.Config.MinTimeNxtTstPerQst);
|
Gbl.Test.Config.MinTimeNxtTstPerQst);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Feedback to students *****/
|
/***** Feedback to students *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"LEFT_BOTTOM\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Feedback_to_students);
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Feedback_to_students);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_BOTTOM\">");
|
||||||
for (Feedback = (Tst_Feedback_t) 0;
|
for (Feedback = (Tst_Feedback_t) 0;
|
||||||
Feedback < Tst_NUM_TYPES_FEEDBACK;
|
Feedback < Tst_NUM_TYPES_FEEDBACK;
|
||||||
Feedback++)
|
Feedback++)
|
||||||
|
@ -1995,6 +2016,7 @@ static void Tst_ShowFormConfigTst (void)
|
||||||
Txt_TST_STR_FEEDBACK[Feedback]);
|
Txt_TST_STR_FEEDBACK[Feedback]);
|
||||||
}
|
}
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
Tbl_EndTable ();
|
Tbl_EndTable ();
|
||||||
|
|
||||||
|
@ -2016,18 +2038,21 @@ static void Tst_PutInputFieldNumQst (const char *Field,const char *Label,
|
||||||
unsigned Value)
|
unsigned Value)
|
||||||
{
|
{
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<label for=\"%s\" class=\"DAT\">%s</label>"
|
"<label for=\"%s\" class=\"DAT\">%s</label>",
|
||||||
"</td>"
|
Field,Label);
|
||||||
"<td class=\"LEFT_MIDDLE\">"
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||||
"<input type=\"text\""
|
"<input type=\"text\""
|
||||||
" id=\"%s\" name=\"%s\""
|
" id=\"%s\" name=\"%s\""
|
||||||
" size=\"3\" maxlength=\"3\" value=\"%u\""
|
" size=\"3\" maxlength=\"3\" value=\"%u\""
|
||||||
" required=\"required\" />"
|
" required=\"required\" />",
|
||||||
"</td>",
|
|
||||||
Field,Label,
|
|
||||||
Field,Field,
|
Field,Field,
|
||||||
Value);
|
Value);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2313,12 +2338,13 @@ static void Tst_ShowFormAnswerTypes (unsigned NumCols)
|
||||||
char UnsignedStr[10 + 1];
|
char UnsignedStr[10 + 1];
|
||||||
const char *Ptr;
|
const char *Ptr;
|
||||||
|
|
||||||
/***** Label *****/
|
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
|
/***** Label *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Types_of_answers);
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Types_of_answers);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Select all types of answers *****/
|
/***** Select all types of answers *****/
|
||||||
fprintf (Gbl.F.Out,"<td");
|
fprintf (Gbl.F.Out,"<td");
|
||||||
|
@ -2326,7 +2352,9 @@ static void Tst_ShowFormAnswerTypes (unsigned NumCols)
|
||||||
fprintf (Gbl.F.Out," colspan=\"%u\"",NumCols);
|
fprintf (Gbl.F.Out," colspan=\"%u\"",NumCols);
|
||||||
fprintf (Gbl.F.Out," class=\"LEFT_TOP\">");
|
fprintf (Gbl.F.Out," class=\"LEFT_TOP\">");
|
||||||
Tbl_StartTablePadding (2);
|
Tbl_StartTablePadding (2);
|
||||||
|
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||||
"<label class=\"%s\">"
|
"<label class=\"%s\">"
|
||||||
"<input type=\"checkbox\" name=\"AllAnsTypes\" value=\"Y\"",
|
"<input type=\"checkbox\" name=\"AllAnsTypes\" value=\"Y\"",
|
||||||
|
@ -2335,9 +2363,10 @@ static void Tst_ShowFormAnswerTypes (unsigned NumCols)
|
||||||
fprintf (Gbl.F.Out," checked=\"checked\"");
|
fprintf (Gbl.F.Out," checked=\"checked\"");
|
||||||
fprintf (Gbl.F.Out," onclick=\"togglecheckChildren(this,'AnswerType');\" />"
|
fprintf (Gbl.F.Out," onclick=\"togglecheckChildren(this,'AnswerType');\" />"
|
||||||
" %s"
|
" %s"
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>",
|
|
||||||
Txt_All_types_of_answers);
|
Txt_All_types_of_answers);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Type of answer *****/
|
/***** Type of answer *****/
|
||||||
|
@ -2346,6 +2375,7 @@ static void Tst_ShowFormAnswerTypes (unsigned NumCols)
|
||||||
AnsType++)
|
AnsType++)
|
||||||
{
|
{
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||||
"<label class=\"DAT\">"
|
"<label class=\"DAT\">"
|
||||||
"<input type=\"checkbox\" name=\"AnswerType\" value=\"%u\"",
|
"<input type=\"checkbox\" name=\"AnswerType\" value=\"%u\"",
|
||||||
|
@ -2359,9 +2389,10 @@ static void Tst_ShowFormAnswerTypes (unsigned NumCols)
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out," onclick=\"checkParent(this,'AllAnsTypes');\" />"
|
fprintf (Gbl.F.Out," onclick=\"checkParent(this,'AllAnsTypes');\" />"
|
||||||
" %s"
|
" %s"
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>",
|
|
||||||
Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2913,15 +2944,15 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
|
||||||
|
|
||||||
/* Write answer type (row[2]) */
|
/* Write answer type (row[2]) */
|
||||||
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT_SMALL\">%s</div>"
|
fprintf (Gbl.F.Out,"<div class=\"DAT_SMALL\">%s</div>",
|
||||||
"</td>",
|
|
||||||
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write question code */
|
/* Write question code */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||||
"%ld "
|
"%ld ",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,Gbl.Test.QstCod);
|
Gbl.RowEvenOdd,Gbl.Test.QstCod);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write the date (row[1] has the UTC date-time) */
|
/* Write the date (row[1] has the UTC date-time) */
|
||||||
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
|
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
|
||||||
|
@ -2930,11 +2961,11 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
|
||||||
"<script type=\"text/javascript\">"
|
"<script type=\"text/javascript\">"
|
||||||
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
|
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
|
||||||
"%u,'<br />','%s',true,false,0x7);"
|
"%u,'<br />','%s',true,false,0x7);"
|
||||||
"</script>"
|
"</script>",
|
||||||
"</td>",
|
|
||||||
UniqueId,Gbl.RowEvenOdd,
|
UniqueId,Gbl.RowEvenOdd,
|
||||||
UniqueId,(long) TimeUTC,
|
UniqueId,(long) TimeUTC,
|
||||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write the question tags */
|
/* Write the question tags */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">",
|
||||||
|
@ -3001,9 +3032,9 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
|
||||||
|
|
||||||
/* Write number of times this question has been answered */
|
/* Write number of times this question has been answered */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||||
"%lu"
|
"%lu",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,NumHitsThisQst);
|
Gbl.RowEvenOdd,NumHitsThisQst);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write average score */
|
/* Write average score */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">",
|
||||||
|
@ -3017,10 +3048,10 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
|
||||||
|
|
||||||
/* Write number of times this question has been answered (not blank) */
|
/* Write number of times this question has been answered (not blank) */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||||
"%lu"
|
"%lu",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
NumHitsNotBlankThisQst);
|
NumHitsNotBlankThisQst);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write average score (not blank) */
|
/* Write average score (not blank) */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">",
|
||||||
|
@ -3151,15 +3182,15 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
|
||||||
|
|
||||||
/* Write number of question */
|
/* Write number of question */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||||
"%lu "
|
"%lu ",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,NumRow + 1);
|
Gbl.RowEvenOdd,NumRow + 1);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write question code */
|
/* Write question code */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||||
"%ld "
|
"%ld ",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,Gbl.Test.QstCod);
|
Gbl.RowEvenOdd,Gbl.Test.QstCod);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write the date (row[1] has the UTC date-time) */
|
/* Write the date (row[1] has the UTC date-time) */
|
||||||
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
|
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
|
||||||
|
@ -3168,11 +3199,11 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
|
||||||
"<script type=\"text/javascript\">"
|
"<script type=\"text/javascript\">"
|
||||||
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
|
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
|
||||||
"%u,'<br />','%s',true,false,0x7);"
|
"%u,'<br />','%s',true,false,0x7);"
|
||||||
"</script>"
|
"</script>",
|
||||||
"</td>",
|
|
||||||
UniqueId,Gbl.RowEvenOdd,
|
UniqueId,Gbl.RowEvenOdd,
|
||||||
UniqueId,(long) TimeUTC,
|
UniqueId,(long) TimeUTC,
|
||||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write the question tags */
|
/* Write the question tags */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">",
|
||||||
|
@ -3183,10 +3214,10 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
|
||||||
/* Write the question type (row[2]) */
|
/* Write the question type (row[2]) */
|
||||||
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||||
"%s "
|
"%s ",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write if shuffle is enabled (row[3]) */
|
/* Write if shuffle is enabled (row[3]) */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">",
|
||||||
|
@ -3428,9 +3459,9 @@ void Tst_WriteAnswersEdit (long QstCod)
|
||||||
|
|
||||||
/* Write the number of option */
|
/* Write the number of option */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL LEFT_TOP\">"
|
||||||
"%c) "
|
"%c) ",
|
||||||
"</td>",
|
|
||||||
'a' + (char) NumOpt);
|
'a' + (char) NumOpt);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write the text of the answer and the image */
|
/* Write the text of the answer and the image */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
|
@ -3446,8 +3477,9 @@ void Tst_WriteAnswersEdit (long QstCod)
|
||||||
fprintf (Gbl.F.Out,"<div class=\"TEST_EDI_LIGHT\">");
|
fprintf (Gbl.F.Out,"<div class=\"TEST_EDI_LIGHT\">");
|
||||||
if (LengthFeedback)
|
if (LengthFeedback)
|
||||||
fprintf (Gbl.F.Out,"%s",Feedback);
|
fprintf (Gbl.F.Out,"%s",Feedback);
|
||||||
fprintf (Gbl.F.Out,"</div>"
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/* Free memory allocated for the answer and the feedback */
|
/* Free memory allocated for the answer and the feedback */
|
||||||
|
@ -3763,6 +3795,7 @@ static void Tst_WriteChoiceAnsViewTest (unsigned NumQst,long QstCod,bool Shuffle
|
||||||
|
|
||||||
/***** Write selectors and letter of this option *****/
|
/***** Write selectors and letter of this option *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
|
||||||
snprintf (ParamName,sizeof (ParamName),
|
snprintf (ParamName,sizeof (ParamName),
|
||||||
"Ind%06u",
|
"Ind%06u",
|
||||||
|
@ -3775,17 +3808,18 @@ static void Tst_WriteChoiceAnsViewTest (unsigned NumQst,long QstCod,bool Shuffle
|
||||||
NumQst,Gbl.Test.Answer.NumOptions);
|
NumQst,Gbl.Test.Answer.NumOptions);
|
||||||
else // Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE
|
else // Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE
|
||||||
fprintf (Gbl.F.Out,"checkbox\"");
|
fprintf (Gbl.F.Out,"checkbox\"");
|
||||||
fprintf (Gbl.F.Out," id=\"Ans%06u_%u\" name=\"Ans%06u\" value=\"%u\" />"
|
fprintf (Gbl.F.Out," id=\"Ans%06u_%u\" name=\"Ans%06u\" value=\"%u\" />",
|
||||||
"</td>",
|
|
||||||
NumQst,NumOpt,
|
NumQst,NumOpt,
|
||||||
NumQst,Index);
|
NumQst,Index);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
"<label for=\"Ans%06u_%u\" class=\"ANS_TXT\">"
|
"<label for=\"Ans%06u_%u\" class=\"ANS_TXT\">"
|
||||||
"%c) "
|
"%c) "
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>",
|
|
||||||
NumQst,NumOpt,
|
NumQst,NumOpt,
|
||||||
'a' + (char) NumOpt);
|
'a' + (char) NumOpt);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write the option text *****/
|
/***** Write the option text *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
|
@ -3876,8 +3910,9 @@ static void Tst_WriteChoiceAnsAssessTest (struct UsrData *UsrDat,
|
||||||
Ans.Class = "ANS_0";
|
Ans.Class = "ANS_0";
|
||||||
Ans.Str = "•";
|
Ans.Str = "•";
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP\" title=\"%s\">%s</td>",
|
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP\" title=\"%s\">%s",
|
||||||
Ans.Class,Txt_TST_Answer_given_by_the_user,Ans.Str);
|
Ans.Class,Txt_TST_Answer_given_by_the_user,Ans.Str);
|
||||||
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
else // This answer has NOT been selected by the user
|
else // This answer has NOT been selected by the user
|
||||||
Tbl_PutEmptyCells (1);
|
Tbl_PutEmptyCells (1);
|
||||||
|
@ -3887,19 +3922,25 @@ static void Tst_WriteChoiceAnsAssessTest (struct UsrData *UsrDat,
|
||||||
Gbl.Test.Config.Feedback == Tst_FEEDBACK_FULL_FEEDBACK)
|
Gbl.Test.Config.Feedback == Tst_FEEDBACK_FULL_FEEDBACK)
|
||||||
{
|
{
|
||||||
if (Gbl.Test.Answer.Options[Indexes[NumOpt]].Correct)
|
if (Gbl.Test.Answer.Options[Indexes[NumOpt]].Correct)
|
||||||
fprintf (Gbl.F.Out,"<td class=\"ANS_0 CENTER_TOP\" title=\"%s\">•</td>",
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"ANS_0 CENTER_TOP\" title=\"%s\">•",
|
||||||
Txt_TST_Answer_given_by_the_teachers);
|
Txt_TST_Answer_given_by_the_teachers);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
Tbl_PutEmptyCells (1);
|
Tbl_PutEmptyCells (1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fprintf (Gbl.F.Out,"<td class=\"ANS_0 CENTER_TOP\">?</td>");
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"ANS_0 CENTER_TOP\">?");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
}
|
||||||
|
|
||||||
/* Answer letter (a, b, c,...) */
|
/* Answer letter (a, b, c,...) */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"ANS_TXT LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"ANS_TXT LEFT_TOP\">"
|
||||||
"%c) "
|
"%c) ",
|
||||||
"</td>",
|
|
||||||
'a' + (char) NumOpt);
|
'a' + (char) NumOpt);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Answer text and feedback */
|
/* Answer text and feedback */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
|
@ -4211,10 +4252,10 @@ static void Tst_WriteChoiceAnsViewMatch (long MchCod,unsigned QstInd,long QstCod
|
||||||
fprintf (Gbl.F.Out,"<td class=\"MATCH_TCH_BUTTON_TD\">"
|
fprintf (Gbl.F.Out,"<td class=\"MATCH_TCH_BUTTON_TD\">"
|
||||||
"<div class=\"MATCH_TCH_BUTTON BT_%c\">"
|
"<div class=\"MATCH_TCH_BUTTON BT_%c\">"
|
||||||
"%c"
|
"%c"
|
||||||
"</div>"
|
"</div>",
|
||||||
"</td>",
|
|
||||||
'A' + (char) NumOpt,
|
'A' + (char) NumOpt,
|
||||||
'a' + (char) NumOpt);
|
'a' + (char) NumOpt);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write the option text and the result *****/
|
/***** Write the option text and the result *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||||
|
@ -4377,9 +4418,9 @@ static void Tst_WriteTextAnsAssessTest (struct UsrData *UsrDat,
|
||||||
{
|
{
|
||||||
/* Answer letter (a, b, c,...) */
|
/* Answer letter (a, b, c,...) */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"ANS_0 LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"ANS_0 LEFT_TOP\">"
|
||||||
"%c) "
|
"%c) ",
|
||||||
"</td>",
|
|
||||||
'a' + (char) NumOpt);
|
'a' + (char) NumOpt);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Answer text and feedback */
|
/* Answer text and feedback */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
|
@ -4686,13 +4727,14 @@ static void Tst_WriteHeadUserCorrect (struct UsrData *UsrDat)
|
||||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_MIDDLE\">"
|
||||||
"%s"
|
"%s",
|
||||||
"</td>"
|
Txt_User[UsrDat->Sex]);
|
||||||
"<td class=\"DAT_SMALL CENTER_MIDDLE\">"
|
Tbl_EndCell ();
|
||||||
"%s"
|
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_MIDDLE\">"
|
||||||
Txt_User[UsrDat->Sex],
|
"%s",
|
||||||
Txt_ROLES_PLURAL_Abc[Rol_TCH][Usr_SEX_UNKNOWN]);
|
Txt_ROLES_PLURAL_Abc[Rol_TCH][Usr_SEX_UNKNOWN]);
|
||||||
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -4711,8 +4753,8 @@ static void Tst_WriteScoreStart (unsigned ColSpan)
|
||||||
|
|
||||||
static void Tst_WriteScoreEnd (void)
|
static void Tst_WriteScoreEnd (void)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"</span>"
|
fprintf (Gbl.F.Out,"</span>");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5082,11 +5124,13 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
|
|
||||||
/***** Write the tags *****/
|
/***** Write the tags *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"LEFT_TOP\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Tags);
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Tags);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
|
||||||
Tbl_StartTablePadding (2); // Table for tags
|
Tbl_StartTablePadding (2); // Table for tags
|
||||||
|
|
||||||
for (NumTag = 0;
|
for (NumTag = 0;
|
||||||
|
@ -5126,23 +5170,24 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
fprintf (Gbl.F.Out,"<option value=\"%s\" selected=\"selected\">%s</option>",
|
fprintf (Gbl.F.Out,"<option value=\"%s\" selected=\"selected\">%s</option>",
|
||||||
Gbl.Test.Tags.Txt[NumTag],Gbl.Test.Tags.Txt[NumTag]);
|
Gbl.Test.Tags.Txt[NumTag],Gbl.Test.Tags.Txt[NumTag]);
|
||||||
fprintf (Gbl.F.Out,"<option value=\"\">[%s]</option>"
|
fprintf (Gbl.F.Out,"<option value=\"\">[%s]</option>"
|
||||||
"</select>"
|
"</select>",
|
||||||
"</td>",
|
|
||||||
Txt_new_tag);
|
Txt_new_tag);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Input of a new tag *****/
|
/***** Input of a new tag *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<input type=\"text\" id=\"TagTxt%u\" name=\"TagTxt%u\""
|
"<input type=\"text\" id=\"TagTxt%u\" name=\"TagTxt%u\""
|
||||||
" class=\"TAG_TXT\" maxlength=\"%u\" value=\"%s\""
|
" class=\"TAG_TXT\" maxlength=\"%u\" value=\"%s\""
|
||||||
" onchange=\"changeSelTag('%u')\" />"
|
" onchange=\"changeSelTag('%u')\" />",
|
||||||
"</td>",
|
|
||||||
NumTag,NumTag,Tst_MAX_CHARS_TAG,Gbl.Test.Tags.Txt[NumTag],NumTag);
|
NumTag,NumTag,Tst_MAX_CHARS_TAG,Gbl.Test.Tags.Txt[NumTag],NumTag);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
Tbl_EndTable (); // Table for tags
|
Tbl_EndTable (); // Table for tags
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/* Free structure that stores the query result */
|
/* Free structure that stores the query result */
|
||||||
|
@ -5150,16 +5195,18 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
|
|
||||||
/***** Stem and image *****/
|
/***** Stem and image *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||||
"<label for=\"Stem\" class=\"%s\">%s:</label>"
|
"<label for=\"Stem\" class=\"%s\">%s:</label>",
|
||||||
"</td>"
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
"<td class=\"LEFT_TOP\">"
|
Txt_Wording);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
"<textarea id=\"Stem\" name=\"Stem\""
|
"<textarea id=\"Stem\" name=\"Stem\""
|
||||||
" class=\"STEM_TEXTAREA\" rows=\"5\" required=\"required\">"
|
" class=\"STEM_TEXTAREA\" rows=\"5\" required=\"required\">"
|
||||||
"%s"
|
"%s"
|
||||||
"</textarea><br />",
|
"</textarea><br />",
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
|
||||||
Txt_Wording,
|
|
||||||
Stem);
|
Stem);
|
||||||
Tst_PutFormToEditQstMedia (&Gbl.Test.Media,-1,
|
Tst_PutFormToEditQstMedia (&Gbl.Test.Media,-1,
|
||||||
false);
|
false);
|
||||||
|
@ -5175,18 +5222,21 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
if (Feedback[0])
|
if (Feedback[0])
|
||||||
fprintf (Gbl.F.Out,"%s",Feedback);
|
fprintf (Gbl.F.Out,"%s",Feedback);
|
||||||
fprintf (Gbl.F.Out,"</textarea>"
|
fprintf (Gbl.F.Out,"</textarea>"
|
||||||
"</label>"
|
"</label>");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Type of answer *****/
|
/***** Type of answer *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"%s LEFT_TOP\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
Txt_Type,
|
Txt_Type);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||||
for (AnsType = (Tst_AnswerType_t) 0;
|
for (AnsType = (Tst_AnswerType_t) 0;
|
||||||
AnsType < Tst_NUM_ANS_TYPES;
|
AnsType < Tst_NUM_ANS_TYPES;
|
||||||
|
@ -5203,27 +5253,31 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
||||||
}
|
}
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Answers *****/
|
/***** Answers *****/
|
||||||
/* Integer answer */
|
/* Integer answer */
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Answers);
|
||||||
"<td class=\"LEFT_TOP\">"
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
"<label class=\"%s\">"
|
"<label class=\"%s\">"
|
||||||
"%s: "
|
"%s: "
|
||||||
"<input type=\"text\" name=\"AnsInt\""
|
"<input type=\"text\" name=\"AnsInt\""
|
||||||
" size=\"11\" maxlength=\"11\" value=\"%ld\"",
|
" size=\"11\" maxlength=\"11\" value=\"%ld\"",
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Answers,
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Integer_number,
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Integer_number,
|
||||||
Gbl.Test.Answer.Integer);
|
Gbl.Test.Answer.Integer);
|
||||||
if (Gbl.Test.AnswerType != Tst_ANS_INT)
|
if (Gbl.Test.AnswerType != Tst_ANS_INT)
|
||||||
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
||||||
fprintf (Gbl.F.Out," required=\"required\" />"
|
fprintf (Gbl.F.Out," required=\"required\" />"
|
||||||
"</label>"
|
"</label>");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/* Floating point answer */
|
/* Floating point answer */
|
||||||
|
@ -5248,7 +5302,9 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
|
|
||||||
/* Questions can be shuffled? */
|
/* Questions can be shuffled? */
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
Tbl_PutEmptyCells (1);
|
Tbl_PutEmptyCells (1);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
"<label class=\"%s\">"
|
"<label class=\"%s\">"
|
||||||
"<input type=\"checkbox\" name=\"Shuffle\" value=\"Y\"",
|
"<input type=\"checkbox\" name=\"Shuffle\" value=\"Y\"",
|
||||||
|
@ -5260,9 +5316,10 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
||||||
fprintf (Gbl.F.Out," />"
|
fprintf (Gbl.F.Out," />"
|
||||||
"%s"
|
"%s"
|
||||||
"</label>"
|
"</label>",
|
||||||
"</td>",
|
|
||||||
Txt_Shuffle);
|
Txt_Shuffle);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/* Simple or multiple choice answers */
|
/* Simple or multiple choice answers */
|
||||||
|
@ -5288,8 +5345,9 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
DisplayRightColumn = NumOpt < 2 || // Display at least the two first options
|
DisplayRightColumn = NumOpt < 2 || // Display at least the two first options
|
||||||
AnswerHasContent;
|
AnswerHasContent;
|
||||||
|
|
||||||
/***** Left column: selectors *****/
|
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
|
/***** Left column: selectors *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"TEST_EDI_ANS_LEFT_COL COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"TEST_EDI_ANS_LEFT_COL COLOR%u\">",
|
||||||
Gbl.RowEvenOdd);
|
Gbl.RowEvenOdd);
|
||||||
|
|
||||||
|
@ -5392,8 +5450,9 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
||||||
"</label>");
|
"</label>");
|
||||||
|
|
||||||
/* End of right column */
|
/* End of right column */
|
||||||
fprintf (Gbl.F.Out,"</div>"
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
Tbl_EndTable (); // Table with choice answers
|
Tbl_EndTable (); // Table with choice answers
|
||||||
|
@ -7453,12 +7512,15 @@ void Tst_SelUsrsToViewUsrsTstResults (void)
|
||||||
|
|
||||||
/***** Put list of users to select some of them *****/
|
/***** Put list of users to select some of them *****/
|
||||||
Tbl_StartTableCenterPadding (2);
|
Tbl_StartTableCenterPadding (2);
|
||||||
|
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Users);
|
||||||
"<td colspan=\"2\" class=\"%s LEFT_TOP\">",
|
Tbl_EndCell ();
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Users,
|
|
||||||
|
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"%s LEFT_TOP\">",
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||||
Tbl_StartTablePadding (2);
|
Tbl_StartTablePadding (2);
|
||||||
Usr_ListUsersToSelect (Rol_TCH);
|
Usr_ListUsersToSelect (Rol_TCH);
|
||||||
|
@ -7466,6 +7528,7 @@ void Tst_SelUsrsToViewUsrsTstResults (void)
|
||||||
Usr_ListUsersToSelect (Rol_STD);
|
Usr_ListUsersToSelect (Rol_STD);
|
||||||
Tbl_EndTable ();
|
Tbl_EndTable ();
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Starting and ending dates in the search *****/
|
/***** Starting and ending dates in the search *****/
|
||||||
|
@ -7799,11 +7862,11 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat)
|
||||||
"<script type=\"text/javascript\">"
|
"<script type=\"text/javascript\">"
|
||||||
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
|
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
|
||||||
"%u,', ','%s',true,false,0x7);"
|
"%u,', ','%s',true,false,0x7);"
|
||||||
"</script>"
|
"</script>",
|
||||||
"</td>",
|
|
||||||
UniqueId,ClassDat,Gbl.RowEvenOdd,
|
UniqueId,ClassDat,Gbl.RowEvenOdd,
|
||||||
UniqueId,(long) TimeUTC,
|
UniqueId,(long) TimeUTC,
|
||||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Get number of questions (row[3]) */
|
/* Get number of questions (row[3]) */
|
||||||
if (sscanf (row[3],"%u",&NumQstsInThisTest) != 1)
|
if (sscanf (row[3],"%u",&NumQstsInThisTest) != 1)
|
||||||
|
@ -7958,10 +8021,10 @@ static void Tst_ShowTestResultsSummaryRow (bool ItsMe,
|
||||||
|
|
||||||
/***** Row title *****/
|
/***** Row title *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N_LINE_TOP RIGHT_MIDDLE COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_N_LINE_TOP RIGHT_MIDDLE COLOR%u\">"
|
||||||
"%s: %u"
|
"%s: %u",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
Txt_Visible_tests,NumExams);
|
Txt_Visible_tests,NumExams);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write total number of questions *****/
|
/***** Write total number of questions *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N_LINE_TOP RIGHT_MIDDLE COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_N_LINE_TOP RIGHT_MIDDLE COLOR%u\">",
|
||||||
|
@ -8004,8 +8067,9 @@ static void Tst_ShowTestResultsSummaryRow (bool ItsMe,
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Last cell *****/
|
/***** Last cell *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N_LINE_TOP COLOR%u\"></td>",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_N_LINE_TOP COLOR%u\">",
|
||||||
Gbl.RowEvenOdd);
|
Gbl.RowEvenOdd);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** End row *****/
|
/***** End row *****/
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
@ -8117,11 +8181,13 @@ void Tst_ShowOneTstResult (void)
|
||||||
|
|
||||||
/* User */
|
/* User */
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"DAT LEFT_TOP\">",
|
|
||||||
Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role][Gbl.Usrs.Other.UsrDat.Sex]);
|
Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role][Gbl.Usrs.Other.UsrDat.Sex]);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">");
|
||||||
ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,NULL);
|
ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,NULL);
|
||||||
fprintf (Gbl.F.Out," %s",
|
fprintf (Gbl.F.Out," %s",
|
||||||
Gbl.Usrs.Other.UsrDat.Surname1);
|
Gbl.Usrs.Other.UsrDat.Surname1);
|
||||||
|
@ -8137,42 +8203,52 @@ void Tst_ShowOneTstResult (void)
|
||||||
NULL,
|
NULL,
|
||||||
"PHOTO45x60",Pho_ZOOM,false);
|
"PHOTO45x60",Pho_ZOOM,false);
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/* Test date */
|
/* Test date */
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
Txt_Date);
|
||||||
"<td id=\"test\" class=\"DAT LEFT_TOP\">"
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td id=\"test\" class=\"DAT LEFT_TOP\">"
|
||||||
"<script type=\"text/javascript\">"
|
"<script type=\"text/javascript\">"
|
||||||
"writeLocalDateHMSFromUTC('test',%ld,"
|
"writeLocalDateHMSFromUTC('test',%ld,"
|
||||||
"%u,', ','%s',true,true,0x7);"
|
"%u,', ','%s',true,true,0x7);"
|
||||||
"</script>"
|
"</script>",
|
||||||
"</td>",
|
TstTimeUTC,
|
||||||
Txt_Date,TstTimeUTC,
|
|
||||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/* Number of questions */
|
/* Number of questions */
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
Txt_Questions);
|
||||||
"<td class=\"DAT LEFT_TOP\">"
|
Tbl_EndCell ();
|
||||||
"%u (%u %s)"
|
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">"
|
||||||
Txt_Questions,
|
"%u (%u %s)",
|
||||||
Gbl.Test.NumQsts,NumQstsNotBlank,Txt_non_blank_QUESTIONS);
|
Gbl.Test.NumQsts,NumQstsNotBlank,Txt_non_blank_QUESTIONS);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/* Score */
|
/* Score */
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"DAT LEFT_TOP\">",
|
|
||||||
Txt_Score);
|
Txt_Score);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">");
|
||||||
if (ICanViewScore)
|
if (ICanViewScore)
|
||||||
fprintf (Gbl.F.Out,"%.2lf (%.2lf",
|
fprintf (Gbl.F.Out,"%.2lf (%.2lf",
|
||||||
TotalScore,
|
TotalScore,
|
||||||
|
@ -8180,19 +8256,24 @@ void Tst_ShowOneTstResult (void)
|
||||||
0.0);
|
0.0);
|
||||||
else
|
else
|
||||||
fprintf (Gbl.F.Out,"? (?"); // No feedback
|
fprintf (Gbl.F.Out,"? (?"); // No feedback
|
||||||
fprintf (Gbl.F.Out," %s %u)</td>",
|
fprintf (Gbl.F.Out," %s %u)",
|
||||||
Txt_out_of_PART_OF_A_SCORE,Tst_SCORE_MAX);
|
Txt_out_of_PART_OF_A_SCORE,Tst_SCORE_MAX);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/* Tags present in this test */
|
/* Tags present in this test */
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"DAT LEFT_TOP\">",
|
|
||||||
Txt_Tags);
|
Txt_Tags);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">");
|
||||||
Tst_ShowTstTagsPresentInATestResult (TstCod);
|
Tst_ShowTstTagsPresentInATestResult (TstCod);
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Write answers and solutions *****/
|
/***** Write answers and solutions *****/
|
||||||
|
@ -8265,14 +8346,17 @@ void Tst_ShowTestResult (struct UsrData *UsrDat,
|
||||||
{
|
{
|
||||||
/***** Question has been edited *****/
|
/***** Question has been edited *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
|
||||||
"%u"
|
"%u",
|
||||||
"</td>"
|
Gbl.RowEvenOdd,NumQst + 1);
|
||||||
"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
Tbl_EndCell ();
|
||||||
"%s"
|
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
||||||
Gbl.RowEvenOdd,NumQst + 1,
|
"%s",
|
||||||
Gbl.RowEvenOdd,Txt_Question_modified);
|
Gbl.RowEvenOdd,Txt_Question_modified);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -8293,14 +8377,17 @@ void Tst_ShowTestResult (struct UsrData *UsrDat,
|
||||||
{
|
{
|
||||||
/***** Question does not exists *****/
|
/***** Question does not exists *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
|
||||||
"%u"
|
"%u",
|
||||||
"</td>"
|
Gbl.RowEvenOdd,NumQst + 1);
|
||||||
"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
Tbl_EndCell ();
|
||||||
"%s"
|
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
||||||
Gbl.RowEvenOdd,NumQst + 1,
|
"%s",
|
||||||
Gbl.RowEvenOdd,Txt_Question_removed);
|
Gbl.RowEvenOdd,Txt_Question_removed);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1021,8 +1021,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
|
||||||
fprintf (Gbl.F.Out,"<td class=\"BT%u CENTER_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"BT%u CENTER_TOP\">"
|
||||||
"<img src=\"%s/%s\""
|
"<img src=\"%s/%s\""
|
||||||
" alt=\"%s\" title=\"%s\""
|
" alt=\"%s\" title=\"%s\""
|
||||||
" class=\"CONTEXT_ICO_16x16\" />"
|
" class=\"CONTEXT_ICO_16x16\" />",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
Cfg_URL_ICON_PUBLIC,
|
Cfg_URL_ICON_PUBLIC,
|
||||||
QuestionExists ? "tr16x16.gif" :
|
QuestionExists ? "tr16x16.gif" :
|
||||||
|
@ -1031,6 +1030,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
|
||||||
Txt_New_question,
|
Txt_New_question,
|
||||||
QuestionExists ? Txt_Existing_question :
|
QuestionExists ? Txt_Existing_question :
|
||||||
Txt_New_question);
|
Txt_New_question);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write number of question *****/
|
/***** Write number of question *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP COLOR%u\">",
|
||||||
|
@ -1051,14 +1051,17 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
|
||||||
NumTag++)
|
NumTag++)
|
||||||
{
|
{
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">"
|
||||||
" • "
|
" • ",
|
||||||
"</td>"
|
ClassData);
|
||||||
"<td class=\"%s LEFT_TOP\">"
|
Tbl_EndCell ();
|
||||||
"%s"
|
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">"
|
||||||
ClassData,
|
"%s",
|
||||||
ClassData,Gbl.Test.Tags.Txt[NumTag]);
|
ClassData,Gbl.Test.Tags.Txt[NumTag]);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
Tbl_EndTable ();
|
Tbl_EndTable ();
|
||||||
|
@ -1071,10 +1074,10 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
|
||||||
|
|
||||||
/***** Write the question type *****/
|
/***** Write the question type *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP COLOR%u\">"
|
||||||
"%s "
|
"%s ",
|
||||||
"</td>",
|
|
||||||
ClassData,Gbl.RowEvenOdd,
|
ClassData,Gbl.RowEvenOdd,
|
||||||
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write if shuffle is enabled *****/
|
/***** Write if shuffle is enabled *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP COLOR%u\">",
|
||||||
|
@ -1165,9 +1168,9 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
|
||||||
|
|
||||||
/* Write the number of option */
|
/* Write the number of option */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">"
|
||||||
"%c) "
|
"%c) ",
|
||||||
"</td>",
|
|
||||||
ClassData,'a' + (char) NumOpt);
|
ClassData,'a' + (char) NumOpt);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/* Write the text and the feedback of the answer */
|
/* Write the text and the feedback of the answer */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||||
|
|
|
@ -1133,21 +1133,25 @@ static void TT_DrawTimeTable (void)
|
||||||
|
|
||||||
/***** Row with day names *****/
|
/***** Row with day names *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"TT_HOUR_BIG RIGHT_MIDDLE\""
|
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"TT_HOUR_BIG RIGHT_MIDDLE\""
|
||||||
" style=\"width:%u%%;\">"
|
" style=\"width:%u%%;\">"
|
||||||
"%02u:00"
|
"%02u:00",
|
||||||
"</td>",
|
|
||||||
TT_PERCENT_WIDTH_OF_AN_HOUR_COLUMN,
|
TT_PERCENT_WIDTH_OF_AN_HOUR_COLUMN,
|
||||||
Gbl.TimeTable.Config.Range.Hours.Start);
|
Gbl.TimeTable.Config.Range.Hours.Start);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
TT_DrawCellAlignTimeTable ();
|
TT_DrawCellAlignTimeTable ();
|
||||||
TT_TimeTableDrawDaysCells ();
|
TT_TimeTableDrawDaysCells ();
|
||||||
TT_DrawCellAlignTimeTable ();
|
TT_DrawCellAlignTimeTable ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"TT_HOUR_BIG LEFT_MIDDLE\""
|
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"TT_HOUR_BIG LEFT_MIDDLE\""
|
||||||
" style=\"width:%u%%;\">"
|
" style=\"width:%u%%;\">"
|
||||||
"%02u:00"
|
"%02u:00",
|
||||||
"</td>",
|
|
||||||
TT_PERCENT_WIDTH_OF_AN_HOUR_COLUMN,
|
TT_PERCENT_WIDTH_OF_AN_HOUR_COLUMN,
|
||||||
Gbl.TimeTable.Config.Range.Hours.Start);
|
Gbl.TimeTable.Config.Range.Hours.Start);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Get list of groups types and groups in this course *****/
|
/***** Get list of groups types and groups in this course *****/
|
||||||
|
@ -1273,7 +1277,10 @@ static void TT_TimeTableDrawAdjustRow (void)
|
||||||
unsigned Minicolumn;
|
unsigned Minicolumn;
|
||||||
|
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
fprintf (Gbl.F.Out,"<td class=\"TT_HOURCOL\"></td>");
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"TT_HOURCOL\">");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
TT_DrawCellAlignTimeTable ();
|
TT_DrawCellAlignTimeTable ();
|
||||||
for (Weekday = 0;
|
for (Weekday = 0;
|
||||||
Weekday < TT_DAYS_PER_WEEK;
|
Weekday < TT_DAYS_PER_WEEK;
|
||||||
|
@ -1281,9 +1288,15 @@ static void TT_TimeTableDrawAdjustRow (void)
|
||||||
for (Minicolumn = 0;
|
for (Minicolumn = 0;
|
||||||
Minicolumn < TT_NUM_MINICOLUMNS_PER_DAY;
|
Minicolumn < TT_NUM_MINICOLUMNS_PER_DAY;
|
||||||
Minicolumn++)
|
Minicolumn++)
|
||||||
fprintf (Gbl.F.Out,"<td class=\"TT_MINICOL\"></td>");
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"TT_MINICOL\">");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
}
|
||||||
TT_DrawCellAlignTimeTable ();
|
TT_DrawCellAlignTimeTable ();
|
||||||
fprintf (Gbl.F.Out,"<td class=\"TT_HOURCOL\"></td>");
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"TT_HOURCOL\">");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1305,13 +1318,13 @@ static void TT_TimeTableDrawDaysCells (void)
|
||||||
fprintf (Gbl.F.Out,"<td colspan=\"%u\""
|
fprintf (Gbl.F.Out,"<td colspan=\"%u\""
|
||||||
" class=\"%s CENTER_MIDDLE\""
|
" class=\"%s CENTER_MIDDLE\""
|
||||||
" style=\"width:%u%%;\">"
|
" style=\"width:%u%%;\">"
|
||||||
"%s"
|
"%s",
|
||||||
"</td>",
|
|
||||||
TT_NUM_MINICOLUMNS_PER_DAY,
|
TT_NUM_MINICOLUMNS_PER_DAY,
|
||||||
Weekday == 6 ? "TT_SUNDAY" : // Sunday drawn in red
|
Weekday == 6 ? "TT_SUNDAY" : // Sunday drawn in red
|
||||||
"TT_DAY", // Monday to Saturday
|
"TT_DAY", // Monday to Saturday
|
||||||
TT_PERCENT_WIDTH_OF_A_DAY,
|
TT_PERCENT_WIDTH_OF_A_DAY,
|
||||||
Txt_DAYS_CAPS[Weekday]);
|
Txt_DAYS_CAPS[Weekday]);
|
||||||
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1322,12 +1335,12 @@ static void TT_TimeTableDrawDaysCells (void)
|
||||||
static void TT_TimeTableDrawHourCell (unsigned Hour,unsigned Min,const char *Align)
|
static void TT_TimeTableDrawHourCell (unsigned Hour,unsigned Min,const char *Align)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"TT_HOUR %s %s\">"
|
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"TT_HOUR %s %s\">"
|
||||||
"%02u:%02u"
|
"%02u:%02u",
|
||||||
"</td>",
|
|
||||||
Min ? "TT_HOUR_SMALL" :
|
Min ? "TT_HOUR_SMALL" :
|
||||||
"TT_HOUR_BIG",
|
"TT_HOUR_BIG",
|
||||||
Align,
|
Align,
|
||||||
Hour,Min);
|
Hour,Min);
|
||||||
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1412,7 +1425,8 @@ static unsigned TT_CalculateColsToDrawInCell (bool TopCall,
|
||||||
|
|
||||||
static void TT_DrawCellAlignTimeTable (void)
|
static void TT_DrawCellAlignTimeTable (void)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<td class=\"TT_ALIGN\"></td>");
|
fprintf (Gbl.F.Out,"<td class=\"TT_ALIGN\">");
|
||||||
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
44
swad_user.c
44
swad_user.c
|
@ -3657,23 +3657,23 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
|
||||||
else
|
else
|
||||||
fprintf (Gbl.F.Out,"BM%u",Gbl.RowEvenOdd);
|
fprintf (Gbl.F.Out,"BM%u",Gbl.RowEvenOdd);
|
||||||
fprintf (Gbl.F.Out," %s\" title=\"%s\">"
|
fprintf (Gbl.F.Out," %s\" title=\"%s\">"
|
||||||
"%s"
|
"%s",
|
||||||
"</td>",
|
|
||||||
UsrDat->Accepted ? "USR_LIST_NUM_N" :
|
UsrDat->Accepted ? "USR_LIST_NUM_N" :
|
||||||
"USR_LIST_NUM",
|
"USR_LIST_NUM",
|
||||||
UsrDat->Accepted ? Txt_Enrolment_confirmed :
|
UsrDat->Accepted ? Txt_Enrolment_confirmed :
|
||||||
Txt_Enrolment_not_confirmed,
|
Txt_Enrolment_not_confirmed,
|
||||||
UsrDat->Accepted ? "✓" :
|
UsrDat->Accepted ? "✓" :
|
||||||
"✗");
|
"✗");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write number of user in the list *****/
|
/***** Write number of user in the list *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
|
||||||
"%u"
|
"%u",
|
||||||
"</td>",
|
|
||||||
UsrDat->Accepted ? "USR_LIST_NUM_N" :
|
UsrDat->Accepted ? "USR_LIST_NUM_N" :
|
||||||
"USR_LIST_NUM",
|
"USR_LIST_NUM",
|
||||||
BgColor,
|
BgColor,
|
||||||
NumUsr);
|
NumUsr);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
if (Gbl.Usrs.Listing.WithPhotos)
|
if (Gbl.Usrs.Listing.WithPhotos)
|
||||||
{
|
{
|
||||||
|
@ -3737,7 +3737,8 @@ static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL LEFT_MIDDLE COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL LEFT_MIDDLE COLOR%u\">",
|
||||||
Gbl.RowEvenOdd);
|
Gbl.RowEvenOdd);
|
||||||
ID_WriteUsrIDs (UsrDat,NULL);
|
ID_WriteUsrIDs (UsrDat,NULL);
|
||||||
fprintf (Gbl.F.Out," </td>");
|
fprintf (Gbl.F.Out," ");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write rest of guest's main data *****/
|
/***** Write rest of guest's main data *****/
|
||||||
Ins.InsCod = UsrDat->InsCod;
|
Ins.InsCod = UsrDat->InsCod;
|
||||||
|
@ -3841,7 +3842,8 @@ static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
|
||||||
"DAT_SMALL",
|
"DAT_SMALL",
|
||||||
Gbl.RowEvenOdd);
|
Gbl.RowEvenOdd);
|
||||||
ID_WriteUsrIDs (UsrDat,NULL);
|
ID_WriteUsrIDs (UsrDat,NULL);
|
||||||
fprintf (Gbl.F.Out," </td>");
|
fprintf (Gbl.F.Out," ");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write rest of main student's data *****/
|
/***** Write rest of main student's data *****/
|
||||||
Ins.InsCod = UsrDat->InsCod;
|
Ins.InsCod = UsrDat->InsCod;
|
||||||
|
@ -3960,7 +3962,8 @@ static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
|
||||||
"DAT_SMALL",
|
"DAT_SMALL",
|
||||||
Gbl.RowEvenOdd);
|
Gbl.RowEvenOdd);
|
||||||
ID_WriteUsrIDs (UsrDat,NULL);
|
ID_WriteUsrIDs (UsrDat,NULL);
|
||||||
fprintf (Gbl.F.Out," </td>");
|
fprintf (Gbl.F.Out," ");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write rest of main teacher's data *****/
|
/***** Write rest of main teacher's data *****/
|
||||||
Ins.InsCod = UsrDat->InsCod;
|
Ins.InsCod = UsrDat->InsCod;
|
||||||
|
@ -4017,9 +4020,9 @@ static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
|
||||||
|
|
||||||
/***** Write number of user *****/
|
/***** Write number of user *****/
|
||||||
fprintf (Gbl.F.Out,"<td class=\"USR_LIST_NUM_N CENTER_MIDDLE COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"USR_LIST_NUM_N CENTER_MIDDLE COLOR%u\">"
|
||||||
"%u"
|
"%u",
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,NumUsr);
|
Gbl.RowEvenOdd,NumUsr);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
if (Gbl.Usrs.Listing.WithPhotos)
|
if (Gbl.Usrs.Listing.WithPhotos)
|
||||||
{
|
{
|
||||||
|
@ -4039,7 +4042,8 @@ static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
|
||||||
"DAT_SMALL",
|
"DAT_SMALL",
|
||||||
Gbl.RowEvenOdd);
|
Gbl.RowEvenOdd);
|
||||||
ID_WriteUsrIDs (UsrDat,NULL);
|
ID_WriteUsrIDs (UsrDat,NULL);
|
||||||
fprintf (Gbl.F.Out," </td>");
|
fprintf (Gbl.F.Out," ");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
/***** Write rest of main administrator's data *****/
|
/***** Write rest of main administrator's data *****/
|
||||||
Ins.InsCod = UsrDat->InsCod;
|
Ins.InsCod = UsrDat->InsCod;
|
||||||
|
@ -4141,8 +4145,8 @@ static void Usr_WriteUsrData (const char *BgColor,
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
|
|
||||||
/***** End container and table cell *****/
|
/***** End container and table cell *****/
|
||||||
fprintf (Gbl.F.Out,"</div>"
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
"</td>");
|
Tbl_EndCell ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -6937,8 +6941,10 @@ void Usr_ListAllDataStds (void)
|
||||||
NumCol < NumColumnsCardAndGroups;
|
NumCol < NumColumnsCardAndGroups;
|
||||||
NumCol++)
|
NumCol++)
|
||||||
if (NumCol != 1 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want it in listing
|
if (NumCol != 1 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want it in listing
|
||||||
fprintf (Gbl.F.Out,"<td class=\"VERY_LIGHT_BLUE\">"
|
{
|
||||||
"</td>");
|
fprintf (Gbl.F.Out,"<td class=\"VERY_LIGHT_BLUE\">");
|
||||||
|
Tbl_EndCell ();
|
||||||
|
}
|
||||||
for (NumField = 0;
|
for (NumField = 0;
|
||||||
NumField < Gbl.Crs.Records.LstFields.Num;
|
NumField < Gbl.Crs.Records.LstFields.Num;
|
||||||
NumField++)
|
NumField++)
|
||||||
|
@ -7238,9 +7244,12 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,
|
||||||
Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM) // Only admins can view the courses
|
Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM) // Only admins can view the courses
|
||||||
{
|
{
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"COLOR%u\"></td>"
|
|
||||||
"<td colspan=\"%u\" class=\"COLOR%u\">",
|
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"COLOR%u\">",
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td colspan=\"%u\" class=\"COLOR%u\">",
|
||||||
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
|
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
|
||||||
Gbl.RowEvenOdd);
|
Gbl.RowEvenOdd);
|
||||||
if (Role == Rol_UNK)
|
if (Role == Rol_UNK)
|
||||||
|
@ -7252,6 +7261,7 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,
|
||||||
else
|
else
|
||||||
Crs_GetAndWriteCrssOfAUsr (&UsrDat,Role);
|
Crs_GetAndWriteCrssOfAUsr (&UsrDat,Role);
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
32
swad_zip.c
32
swad_zip.c
|
@ -577,8 +577,7 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
|
||||||
"<img src=\"%s/download.svg\""
|
"<img src=\"%s/download.svg\""
|
||||||
" alt=\"%s\" title=\"%s\""
|
" alt=\"%s\" title=\"%s\""
|
||||||
" class=\"ICO40x40\" />"
|
" class=\"ICO40x40\" />"
|
||||||
"</a>"
|
"</a>",
|
||||||
"</td>",
|
|
||||||
URL,FileName,
|
URL,FileName,
|
||||||
CfG_URL_ICON_FILEXT_PUBLIC,
|
CfG_URL_ICON_FILEXT_PUBLIC,
|
||||||
Txt_ZIP_file,
|
Txt_ZIP_file,
|
||||||
|
@ -587,30 +586,36 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
|
||||||
Cfg_URL_ICON_PUBLIC,
|
Cfg_URL_ICON_PUBLIC,
|
||||||
Txt_Download,
|
Txt_Download,
|
||||||
Txt_Download);
|
Txt_Download);
|
||||||
|
Tbl_EndCell ();
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Filename *****/
|
/***** Filename *****/
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Filename);
|
||||||
"<td class=\"DAT LEFT_MIDDLE\">"
|
Tbl_EndCell ();
|
||||||
"<a href=\"%s\" class=\"DAT\" title=\"%s\" target=\"_blank\">%s</a>"
|
|
||||||
"</td>",
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Filename,
|
"<a href=\"%s\" class=\"DAT\" title=\"%s\" target=\"_blank\">%s</a>",
|
||||||
URL,FileName,FileName);
|
URL,FileName,FileName);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** Write the file size *****/
|
/***** Write the file size *****/
|
||||||
Fil_WriteFileSizeFull ((double) FileSize,FileSizeStr);
|
Fil_WriteFileSizeFull ((double) FileSize,FileSizeStr);
|
||||||
Tbl_StartRow ();
|
Tbl_StartRow ();
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||||
"%s:"
|
"%s:",
|
||||||
"</td>"
|
|
||||||
"<td class=\"DAT LEFT_MIDDLE\">"
|
|
||||||
"%s",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
Txt_File_size,
|
Txt_File_size);
|
||||||
|
Tbl_EndCell ();
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||||
|
"%s",
|
||||||
FileSizeStr);
|
FileSizeStr);
|
||||||
if (UncompressedSize)
|
if (UncompressedSize)
|
||||||
{
|
{
|
||||||
|
@ -619,6 +624,7 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
|
||||||
FileSizeStr,Txt_FILE_uncompressed);
|
FileSizeStr,Txt_FILE_uncompressed);
|
||||||
}
|
}
|
||||||
Tbl_EndCell ();
|
Tbl_EndCell ();
|
||||||
|
|
||||||
Tbl_EndRow ();
|
Tbl_EndRow ();
|
||||||
|
|
||||||
/***** End table and box *****/
|
/***** End table and box *****/
|
||||||
|
|
Loading…
Reference in New Issue