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:
|
||||
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 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: 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.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)
|
||||
|
|
|
@ -3714,7 +3714,7 @@ static void Sta_ShowNumHitsPerCentre (unsigned long NumRows,
|
|||
Sta_DrawBarNumHits ('o', // orange background
|
||||
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\">");
|
||||
if (DegCod > 0)
|
||||
fprintf (Gbl.F.Out,"%lu",++Ranking);
|
||||
fprintf (Gbl.F.Out," "
|
||||
"</td>");
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write degree */
|
||||
Sta_WriteDegree (DegCod);
|
||||
|
@ -3813,7 +3813,7 @@ static void Sta_ShowNumHitsPerDegree (unsigned long NumRows,
|
|||
Sta_DrawBarNumHits ('o', // orange background
|
||||
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
|
||||
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,"%%) ");
|
||||
|
||||
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\">"
|
||||
"writeLocalDateHMSFromUTC('svy_date_start_%u',%ld,"
|
||||
"%u,'<br />','%s',true,true,0x7);"
|
||||
"</script>"
|
||||
"</td>",
|
||||
"</script>",
|
||||
UniqueId,Svy.TimeUTC[Svy_START_TIME],
|
||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* End date/time */
|
||||
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\">"
|
||||
"writeLocalDateHMSFromUTC('svy_date_end_%u',%ld,"
|
||||
"%u,'<br />','%s',false,true,0x7);"
|
||||
"</script>"
|
||||
"</td>",
|
||||
"</script>",
|
||||
UniqueId,Svy.TimeUTC[Svy_END_TIME],
|
||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Survey title */
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP");
|
||||
|
@ -526,14 +526,14 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
|
|||
Lay_EndArticle ();
|
||||
|
||||
/* 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>"
|
||||
"</td>",
|
||||
fprintf (Gbl.F.Out,"<div class=\"%s\">%s: %u; %s: %u</div>",
|
||||
Svy.Status.Visible ? "ASG_GRP" :
|
||||
"ASG_GRP_LIGHT",
|
||||
Txt_No_of_questions,
|
||||
Svy.NumQsts,
|
||||
Txt_No_of_users,
|
||||
Svy.NumUsrs);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Status of the survey */
|
||||
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 *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"LEFT_TOP");
|
||||
if (!ShowOnlyThisSvyComplete)
|
||||
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 */
|
||||
Svy_WriteAuthor (&Svy);
|
||||
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"<td class=\"LEFT_TOP");
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP");
|
||||
if (!ShowOnlyThisSvyComplete)
|
||||
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
||||
fprintf (Gbl.F.Out,"\">");
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Scope of the survey */
|
||||
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,
|
||||
Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML
|
||||
Str_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
|
||||
fprintf (Gbl.F.Out,"<div class=\"PAR %s\">%s</div>"
|
||||
"</td>",
|
||||
fprintf (Gbl.F.Out,"<div class=\"PAR %s\">%s</div>",
|
||||
Svy.Status.Visible ? "DAT" :
|
||||
"DAT_LIGHT",
|
||||
Txt);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Write questions of this survey *****/
|
||||
|
@ -1858,31 +1862,37 @@ void Svy_RequestCreatOrEditSvy (void)
|
|||
|
||||
/***** Scope of the survey *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"ScopeSvy\" class=\"%s\">%s:</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">",
|
||||
"<label for=\"ScopeSvy\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Scope);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
|
||||
Svy_SetDefaultAndAllowedScope (&Svy);
|
||||
Sco_GetScope ("ScopeSvy");
|
||||
Sco_PutSelectorScope ("ScopeSvy",false);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Survey title *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"Title\" class=\"%s\">%s:</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">"
|
||||
"<label for=\"Title\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Title);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<input type=\"text\" id=\"Title\" name=\"Title\""
|
||||
" size=\"45\" maxlength=\"%u\" value=\"%s\""
|
||||
" required=\"required\" />"
|
||||
"</td>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Title,
|
||||
" required=\"required\" />",
|
||||
Svy_MAX_CHARS_SURVEY_TITLE,Svy.Title);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Survey start and end dates *****/
|
||||
|
@ -1890,33 +1900,39 @@ void Svy_RequestCreatOrEditSvy (void)
|
|||
|
||||
/***** Survey text *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"Txt\" class=\"%s\">%s:</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_TOP\">"
|
||||
"<textarea id=\"Txt\" name=\"Txt\""
|
||||
" cols=\"60\" rows=\"10\">",
|
||||
"<label for=\"Txt\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Description);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
"<textarea id=\"Txt\" name=\"Txt\""
|
||||
" cols=\"60\" rows=\"10\">");
|
||||
if (!ItsANewSurvey)
|
||||
fprintf (Gbl.F.Out,"%s",Txt);
|
||||
fprintf (Gbl.F.Out,"</textarea>"
|
||||
"</td>");
|
||||
fprintf (Gbl.F.Out,"</textarea>");
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Users' roles who can answer the survey *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">%s:"
|
||||
"</td>"
|
||||
"<td class=\"DAT LEFT_MIDDLE\">",
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Users);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
|
||||
Rol_WriteSelectorRoles (1 << Rol_STD |
|
||||
1 << Rol_NET |
|
||||
1 << Rol_TCH,
|
||||
Svy.Roles,
|
||||
false,false);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Groups *****/
|
||||
|
@ -2036,17 +2052,20 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
|||
{
|
||||
/***** Start box and table *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_TOP\">",
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Groups);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
|
||||
Box_StartBoxTable ("95%",NULL,NULL,
|
||||
NULL,Box_NOT_CLOSABLE,0);
|
||||
|
||||
/***** First row: checkbox to select the whole course *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"7\" class=\"DAT LEFT_MIDDLE\">"
|
||||
"<label>"
|
||||
"<input type=\"checkbox\""
|
||||
|
@ -2055,9 +2074,10 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
|||
fprintf (Gbl.F.Out," checked=\"checked\"");
|
||||
fprintf (Gbl.F.Out," onclick=\"uncheckChildren(this,'GrpCods')\" />"
|
||||
"%s %s"
|
||||
"</label>"
|
||||
"</td>",
|
||||
"</label>",
|
||||
Txt_The_whole_course,Gbl.Hierarchy.Crs.ShrtName);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** List the groups for each group type *****/
|
||||
|
@ -2679,27 +2699,32 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
|
|||
|
||||
/***** Stem *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"Txt\" class=\"%s\">%s:</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_TOP\">"
|
||||
"<label for=\"Txt\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Wording);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
"<textarea id=\"Txt\" name=\"Txt\""
|
||||
" cols=\"60\" rows=\"4\">"
|
||||
"%s"
|
||||
"</textarea>"
|
||||
"</td>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Wording,
|
||||
"</textarea>",
|
||||
Txt);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Type of answer *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"%s LEFT_TOP\">",
|
||||
"%s:",
|
||||
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]);
|
||||
for (AnsType = (Svy_AnswerType_t) 0;
|
||||
AnsType < Svy_NUM_ANS_TYPES;
|
||||
|
@ -2717,6 +2742,7 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
|
|||
Txt_SURVEY_STR_ANSWER_TYPES[AnsType]);
|
||||
}
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Answers *****/
|
||||
|
@ -2731,12 +2757,13 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
|
|||
NumAns < Svy_MAX_ANSWERS_PER_QUESTION;
|
||||
NumAns++)
|
||||
{
|
||||
/* Label with the number of the answer */
|
||||
Tbl_StartRow ();
|
||||
|
||||
/* Label with the number of the answer */
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"AnsStr%u\" class=\"%s\">%u)</label>"
|
||||
"</td>",
|
||||
"<label for=\"AnsStr%u\" class=\"%s\">%u)</label>",
|
||||
NumAns,The_ClassFormInBox[Gbl.Prefs.Theme],NumAns + 1);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Answer text */
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
|
@ -2745,8 +2772,9 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
|
|||
NumAns,NumAns);
|
||||
if (SvyQst->AnsChoice[NumAns].Text)
|
||||
fprintf (Gbl.F.Out,"%s",SvyQst->AnsChoice[NumAns].Text);
|
||||
fprintf (Gbl.F.Out,"</textarea>"
|
||||
"</td>");
|
||||
fprintf (Gbl.F.Out,"</textarea>");
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
Tbl_EndTable ();
|
||||
|
@ -3247,17 +3275,17 @@ static void Svy_ListSvyQuestions (struct Survey *Svy,
|
|||
if (sscanf (row[1],"%u",&(SvyQst->QstInd)) != 1)
|
||||
Lay_ShowErrorAndExit ("Error: wrong question index.");
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||
"%u"
|
||||
"</td>",
|
||||
"%u",
|
||||
Gbl.RowEvenOdd,SvyQst->QstInd + 1);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the question type (row[2]) */
|
||||
SvyQst->AnswerType = Svy_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
"%s",
|
||||
Gbl.RowEvenOdd,
|
||||
Txt_SURVEY_STR_ANSWER_TYPES[SvyQst->AnswerType]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the stem (row[3]) and the answers of this question */
|
||||
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
|
||||
fprintf (Gbl.F.Out,"checkbox\"");
|
||||
fprintf (Gbl.F.Out," id=\"Ans%010u_%010u\" name=\"Ans%010u\""
|
||||
" value=\"%u\" />"
|
||||
"</td>",
|
||||
" value=\"%u\" />",
|
||||
(unsigned) SvyQst->QstCod,NumAns,(unsigned) SvyQst->QstCod,
|
||||
NumAns);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
|
||||
/* Write the number of option */
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\" style=\"width:50px;\">"
|
||||
"<label for=\"Ans%010u_%010u\" class=\"DAT\">"
|
||||
"%u)"
|
||||
"</label>"
|
||||
"</td>",
|
||||
"</label>",
|
||||
(unsigned) SvyQst->QstCod,NumAns,NumAns + 1);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the text of the answer */
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
"<label for=\"Ans%010u_%010u\" class=\"DAT\">%s</label>"
|
||||
"</td>",
|
||||
"<label for=\"Ans%010u_%010u\" class=\"DAT\">%s</label>",
|
||||
(unsigned) SvyQst->QstCod,NumAns,
|
||||
SvyQst->AnsChoice[NumAns].Text);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Show stats of this answer */
|
||||
if (Svy->Status.ICanViewResults)
|
||||
|
@ -3497,8 +3525,10 @@ static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs)
|
|||
BarWidth);
|
||||
|
||||
/***** Write the number of users *****/
|
||||
fprintf (Gbl.F.Out,"%s</td>",
|
||||
fprintf (Gbl.F.Out,"%s",
|
||||
Gbl.Title);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
|
||||
|
|
|
@ -600,9 +600,11 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
|||
if (Gbl.Syllabus.EditionIsActive)
|
||||
{
|
||||
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);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
else
|
||||
{
|
||||
/***** Icon to remove the row *****/
|
||||
|
@ -702,9 +704,11 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
|||
{
|
||||
/***** Indent depending on the level *****/
|
||||
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);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
|
||||
/***** Code of the item *****/
|
||||
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);
|
||||
if (Level == 1)
|
||||
fprintf (Gbl.F.Out," ");
|
||||
fprintf (Gbl.F.Out,"%s </td>",StrItemCod);
|
||||
fprintf (Gbl.F.Out,"%s ",StrItemCod);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Text of the item *****/
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"%d\" class=\"%s LEFT_TOP COLOR%u\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
"%s",
|
||||
LstItemsSyllabus.NumLevels - Level + 1,
|
||||
StyleSyllabus[Level],
|
||||
Gbl.RowEvenOdd,
|
||||
Text);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
|
||||
/***** End of the row *****/
|
||||
|
@ -885,15 +890,19 @@ static void Syl_PutFormItemSyllabus (bool NewItem,unsigned NumItem,int Level,int
|
|||
|
||||
/***** Indent depending on the level *****/
|
||||
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);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
|
||||
/***** Write the code of the item *****/
|
||||
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);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
else
|
||||
{
|
||||
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)
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Syl_WriteNumItem (NULL,Gbl.F.Out,Level,CodItem);
|
||||
fprintf (Gbl.F.Out," </td>");
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
|
||||
/***** 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 ****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"NumQst\" class=\"%s\">"
|
||||
"%s:"
|
||||
"</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">"
|
||||
"</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_No_of_questions);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<input type=\"number\""
|
||||
" id=\"NumQst\" name=\"NumQst\""
|
||||
" min=\"%u\" max=\"%u\" value=\"%u\"",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_No_of_questions,
|
||||
Gbl.Test.Config.Min,
|
||||
Gbl.Test.Config.Max,
|
||||
Gbl.Test.Config.Def);
|
||||
if (Gbl.Test.Config.Min == Gbl.Test.Config.Max)
|
||||
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
||||
fprintf (Gbl.F.Out," />"
|
||||
"</td>");
|
||||
fprintf (Gbl.F.Out," />");
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
Tbl_EndTable ();
|
||||
|
@ -993,14 +996,17 @@ static void Tst_ShowTestResultAfterAssess (long TstCod,unsigned *NumQstsNotBlank
|
|||
{
|
||||
/***** Question does not exists *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
|
||||
"%u"
|
||||
"</td>"
|
||||
"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
Gbl.RowEvenOdd,NumQst + 1,
|
||||
"%u",
|
||||
Gbl.RowEvenOdd,NumQst + 1);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
||||
"%s",
|
||||
Gbl.RowEvenOdd,Txt_Question_removed);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
|
||||
|
@ -1036,8 +1042,9 @@ static void Tst_WriteQstAndAnsTest (Tst_ActionToDoWithQuestions_t ActionToDoWith
|
|||
Tst_QstConstructor ();
|
||||
Gbl.Test.QstCod = QstCod;
|
||||
|
||||
/***** Write number of question *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
/***** Write number of question *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">"
|
||||
"<div class=\"BIG_INDEX\">%u</div>",
|
||||
Gbl.RowEvenOdd,
|
||||
|
@ -1045,9 +1052,9 @@ static void Tst_WriteQstAndAnsTest (Tst_ActionToDoWithQuestions_t ActionToDoWith
|
|||
|
||||
/***** Write answer type (row[2]) *****/
|
||||
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
||||
fprintf (Gbl.F.Out,"<div class=\"DAT_SMALL\">%s</div>"
|
||||
"</td>",
|
||||
fprintf (Gbl.F.Out,"<div class=\"DAT_SMALL\">%s</div>",
|
||||
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write stem (row[4]) *****/
|
||||
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[2] TagHidden
|
||||
*/
|
||||
Tbl_StartRow ();
|
||||
|
||||
/***** Label *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||
"%s:"
|
||||
"</td>",
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Tags);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Select all tags *****/
|
||||
fprintf (Gbl.F.Out,"<td");
|
||||
|
@ -1710,6 +1717,7 @@ static void Tst_ShowFormSelTags (unsigned long NumRows,MYSQL_RES *mysql_res,
|
|||
Tbl_StartRow ();
|
||||
if (!ShowOnlyEnabledTags)
|
||||
Tbl_PutEmptyCells (1);
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<label class=\"%s\">"
|
||||
"<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," onclick=\"togglecheckChildren(this,'ChkTag');\" />"
|
||||
" %s"
|
||||
"</label>"
|
||||
"</td>",
|
||||
"</label>",
|
||||
Txt_All_tags);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** 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",
|
||||
Txt_Tag_allowed,
|
||||
Txt_Tag_allowed);
|
||||
fprintf (Gbl.F.Out,"\" class=\"ICO_HIDDEN ICO16x16\" />"
|
||||
"</td>");
|
||||
fprintf (Gbl.F.Out,"\" class=\"ICO_HIDDEN ICO16x16\" />");
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<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');\" />"
|
||||
" %s"
|
||||
"</label>"
|
||||
"</td>",
|
||||
"</label>",
|
||||
row[1]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
|
||||
|
@ -1913,12 +1923,14 @@ static void Tst_ShowFormConfigTst (void)
|
|||
/***** Tests are visible from plugins? *****/
|
||||
Tbl_StartTablePadding (2);
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_BOTTOM\">",
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Plugins);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_BOTTOM\">");
|
||||
for (Pluggable = Tst_PLUGGABLE_NO;
|
||||
Pluggable <= Tst_PLUGGABLE_YES;
|
||||
Pluggable++)
|
||||
|
@ -1934,16 +1946,19 @@ static void Tst_ShowFormConfigTst (void)
|
|||
Txt_TST_PLUGGABLE[Pluggable]);
|
||||
}
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Number of questions *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_BOTTOM\">",
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_No_of_questions);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_BOTTOM\">");
|
||||
Tbl_StartTablePadding (2);
|
||||
Tst_PutInputFieldNumQst ("NumQstMin",Txt_minimum,
|
||||
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
|
||||
Tbl_EndTable ();
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Minimum time between consecutive tests, per question *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"MinTimeNxtTstPerQst\" class=\"%s\">"
|
||||
"%s:"
|
||||
"</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_BOTTOM\">"
|
||||
"</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Minimum_time_seconds_per_question_between_two_tests);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_BOTTOM\">"
|
||||
"<input type=\"text\""
|
||||
" id=\"MinTimeNxtTstPerQst\" name=\"MinTimeNxtTstPerQst\""
|
||||
" size=\"7\" maxlength=\"7\" value=\"%lu\""
|
||||
" required=\"required\" />"
|
||||
"</td>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Minimum_time_seconds_per_question_between_two_tests,
|
||||
" required=\"required\" />",
|
||||
Gbl.Test.Config.MinTimeNxtTstPerQst);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Feedback to students *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_BOTTOM\">",
|
||||
"%s:",
|
||||
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;
|
||||
Feedback < Tst_NUM_TYPES_FEEDBACK;
|
||||
Feedback++)
|
||||
|
@ -1995,6 +2016,7 @@ static void Tst_ShowFormConfigTst (void)
|
|||
Txt_TST_STR_FEEDBACK[Feedback]);
|
||||
}
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
Tbl_EndTable ();
|
||||
|
||||
|
@ -2016,18 +2038,21 @@ static void Tst_PutInputFieldNumQst (const char *Field,const char *Label,
|
|||
unsigned Value)
|
||||
{
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"%s\" class=\"DAT\">%s</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">"
|
||||
"<label for=\"%s\" class=\"DAT\">%s</label>",
|
||||
Field,Label);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<input type=\"text\""
|
||||
" id=\"%s\" name=\"%s\""
|
||||
" size=\"3\" maxlength=\"3\" value=\"%u\""
|
||||
" required=\"required\" />"
|
||||
"</td>",
|
||||
Field,Label,
|
||||
" required=\"required\" />",
|
||||
Field,Field,
|
||||
Value);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
|
||||
|
@ -2313,12 +2338,13 @@ static void Tst_ShowFormAnswerTypes (unsigned NumCols)
|
|||
char UnsignedStr[10 + 1];
|
||||
const char *Ptr;
|
||||
|
||||
/***** Label *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
/***** Label *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||
"%s:"
|
||||
"</td>",
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Types_of_answers);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Select all types of answers *****/
|
||||
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," class=\"LEFT_TOP\">");
|
||||
Tbl_StartTablePadding (2);
|
||||
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<label class=\"%s\">"
|
||||
"<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," onclick=\"togglecheckChildren(this,'AnswerType');\" />"
|
||||
" %s"
|
||||
"</label>"
|
||||
"</td>",
|
||||
"</label>",
|
||||
Txt_All_types_of_answers);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Type of answer *****/
|
||||
|
@ -2346,6 +2375,7 @@ static void Tst_ShowFormAnswerTypes (unsigned NumCols)
|
|||
AnsType++)
|
||||
{
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<label class=\"DAT\">"
|
||||
"<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');\" />"
|
||||
" %s"
|
||||
"</label>"
|
||||
"</td>",
|
||||
"</label>",
|
||||
Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
|
||||
|
@ -2913,15 +2944,15 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
|
|||
|
||||
/* Write answer type (row[2]) */
|
||||
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
||||
fprintf (Gbl.F.Out,"<div class=\"DAT_SMALL\">%s</div>"
|
||||
"</td>",
|
||||
fprintf (Gbl.F.Out,"<div class=\"DAT_SMALL\">%s</div>",
|
||||
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write question code */
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||
"%ld "
|
||||
"</td>",
|
||||
"%ld ",
|
||||
Gbl.RowEvenOdd,Gbl.Test.QstCod);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the date (row[1] has the UTC date-time) */
|
||||
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
|
||||
|
@ -2930,11 +2961,11 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
|
|||
"<script type=\"text/javascript\">"
|
||||
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
|
||||
"%u,'<br />','%s',true,false,0x7);"
|
||||
"</script>"
|
||||
"</td>",
|
||||
"</script>",
|
||||
UniqueId,Gbl.RowEvenOdd,
|
||||
UniqueId,(long) TimeUTC,
|
||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the question tags */
|
||||
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 */
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||
"%lu"
|
||||
"</td>",
|
||||
"%lu",
|
||||
Gbl.RowEvenOdd,NumHitsThisQst);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write average score */
|
||||
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) */
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||
"%lu"
|
||||
"</td>",
|
||||
"%lu",
|
||||
Gbl.RowEvenOdd,
|
||||
NumHitsNotBlankThisQst);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write average score (not blank) */
|
||||
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 */
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||
"%lu "
|
||||
"</td>",
|
||||
"%lu ",
|
||||
Gbl.RowEvenOdd,NumRow + 1);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write question code */
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||
"%ld "
|
||||
"</td>",
|
||||
"%ld ",
|
||||
Gbl.RowEvenOdd,Gbl.Test.QstCod);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the date (row[1] has the UTC date-time) */
|
||||
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
|
||||
|
@ -3168,11 +3199,11 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
|
|||
"<script type=\"text/javascript\">"
|
||||
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
|
||||
"%u,'<br />','%s',true,false,0x7);"
|
||||
"</script>"
|
||||
"</td>",
|
||||
"</script>",
|
||||
UniqueId,Gbl.RowEvenOdd,
|
||||
UniqueId,(long) TimeUTC,
|
||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the question tags */
|
||||
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]) */
|
||||
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||
"%s "
|
||||
"</td>",
|
||||
"%s ",
|
||||
Gbl.RowEvenOdd,
|
||||
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write if shuffle is enabled (row[3]) */
|
||||
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 */
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL LEFT_TOP\">"
|
||||
"%c) "
|
||||
"</td>",
|
||||
"%c) ",
|
||||
'a' + (char) NumOpt);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the text of the answer and the image */
|
||||
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\">");
|
||||
if (LengthFeedback)
|
||||
fprintf (Gbl.F.Out,"%s",Feedback);
|
||||
fprintf (Gbl.F.Out,"</div>"
|
||||
"</td>");
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/* 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 *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
|
||||
snprintf (ParamName,sizeof (ParamName),
|
||||
"Ind%06u",
|
||||
|
@ -3775,17 +3808,18 @@ static void Tst_WriteChoiceAnsViewTest (unsigned NumQst,long QstCod,bool Shuffle
|
|||
NumQst,Gbl.Test.Answer.NumOptions);
|
||||
else // Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE
|
||||
fprintf (Gbl.F.Out,"checkbox\"");
|
||||
fprintf (Gbl.F.Out," id=\"Ans%06u_%u\" name=\"Ans%06u\" value=\"%u\" />"
|
||||
"</td>",
|
||||
fprintf (Gbl.F.Out," id=\"Ans%06u_%u\" name=\"Ans%06u\" value=\"%u\" />",
|
||||
NumQst,NumOpt,
|
||||
NumQst,Index);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
"<label for=\"Ans%06u_%u\" class=\"ANS_TXT\">"
|
||||
"%c) "
|
||||
"</label>"
|
||||
"</td>",
|
||||
"</label>",
|
||||
NumQst,NumOpt,
|
||||
'a' + (char) NumOpt);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write the option text *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
|
@ -3876,8 +3910,9 @@ static void Tst_WriteChoiceAnsAssessTest (struct UsrData *UsrDat,
|
|||
Ans.Class = "ANS_0";
|
||||
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);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
else // This answer has NOT been selected by the user
|
||||
Tbl_PutEmptyCells (1);
|
||||
|
@ -3887,19 +3922,25 @@ static void Tst_WriteChoiceAnsAssessTest (struct UsrData *UsrDat,
|
|||
Gbl.Test.Config.Feedback == Tst_FEEDBACK_FULL_FEEDBACK)
|
||||
{
|
||||
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);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
else
|
||||
Tbl_PutEmptyCells (1);
|
||||
}
|
||||
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,...) */
|
||||
fprintf (Gbl.F.Out,"<td class=\"ANS_TXT LEFT_TOP\">"
|
||||
"%c) "
|
||||
"</td>",
|
||||
"%c) ",
|
||||
'a' + (char) NumOpt);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Answer text and feedback */
|
||||
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\">"
|
||||
"<div class=\"MATCH_TCH_BUTTON BT_%c\">"
|
||||
"%c"
|
||||
"</div>"
|
||||
"</td>",
|
||||
"</div>",
|
||||
'A' + (char) NumOpt,
|
||||
'a' + (char) NumOpt);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write the option text and the result *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
|
@ -4377,9 +4418,9 @@ static void Tst_WriteTextAnsAssessTest (struct UsrData *UsrDat,
|
|||
{
|
||||
/* Answer letter (a, b, c,...) */
|
||||
fprintf (Gbl.F.Out,"<td class=\"ANS_0 LEFT_TOP\">"
|
||||
"%c) "
|
||||
"</td>",
|
||||
"%c) ",
|
||||
'a' + (char) NumOpt);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Answer text and feedback */
|
||||
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];
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_MIDDLE\">"
|
||||
"%s"
|
||||
"</td>"
|
||||
"<td class=\"DAT_SMALL CENTER_MIDDLE\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
Txt_User[UsrDat->Sex],
|
||||
"%s",
|
||||
Txt_User[UsrDat->Sex]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_MIDDLE\">"
|
||||
"%s",
|
||||
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)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"</span>"
|
||||
"</td>");
|
||||
fprintf (Gbl.F.Out,"</span>");
|
||||
Tbl_EndCell ();
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
|
||||
|
@ -5082,11 +5124,13 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
|||
|
||||
/***** Write the tags *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_TOP\">",
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Tags);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
|
||||
Tbl_StartTablePadding (2); // Table for tags
|
||||
|
||||
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>",
|
||||
Gbl.Test.Tags.Txt[NumTag],Gbl.Test.Tags.Txt[NumTag]);
|
||||
fprintf (Gbl.F.Out,"<option value=\"\">[%s]</option>"
|
||||
"</select>"
|
||||
"</td>",
|
||||
"</select>",
|
||||
Txt_new_tag);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Input of a new tag *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<input type=\"text\" id=\"TagTxt%u\" name=\"TagTxt%u\""
|
||||
" class=\"TAG_TXT\" maxlength=\"%u\" value=\"%s\""
|
||||
" onchange=\"changeSelTag('%u')\" />"
|
||||
"</td>",
|
||||
" onchange=\"changeSelTag('%u')\" />",
|
||||
NumTag,NumTag,Tst_MAX_CHARS_TAG,Gbl.Test.Tags.Txt[NumTag],NumTag);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
|
||||
Tbl_EndTable (); // Table for tags
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/* 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 *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"Stem\" class=\"%s\">%s:</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_TOP\">"
|
||||
"<label for=\"Stem\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Wording);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
"<textarea id=\"Stem\" name=\"Stem\""
|
||||
" class=\"STEM_TEXTAREA\" rows=\"5\" required=\"required\">"
|
||||
"%s"
|
||||
"</textarea><br />",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Wording,
|
||||
Stem);
|
||||
Tst_PutFormToEditQstMedia (&Gbl.Test.Media,-1,
|
||||
false);
|
||||
|
@ -5175,18 +5222,21 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
|||
if (Feedback[0])
|
||||
fprintf (Gbl.F.Out,"%s",Feedback);
|
||||
fprintf (Gbl.F.Out,"</textarea>"
|
||||
"</label>"
|
||||
"</td>");
|
||||
"</label>");
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Type of answer *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"%s LEFT_TOP\">",
|
||||
"%s:",
|
||||
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]);
|
||||
for (AnsType = (Tst_AnswerType_t) 0;
|
||||
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]);
|
||||
}
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Answers *****/
|
||||
/* Integer answer */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP %s\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_TOP\">"
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Answers);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
"<label class=\"%s\">"
|
||||
"%s: "
|
||||
"<input type=\"text\" name=\"AnsInt\""
|
||||
" size=\"11\" maxlength=\"11\" value=\"%ld\"",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Answers,
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Integer_number,
|
||||
Gbl.Test.Answer.Integer);
|
||||
if (Gbl.Test.AnswerType != Tst_ANS_INT)
|
||||
fprintf (Gbl.F.Out," disabled=\"disabled\"");
|
||||
fprintf (Gbl.F.Out," required=\"required\" />"
|
||||
"</label>"
|
||||
"</td>");
|
||||
"</label>");
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/* Floating point answer */
|
||||
|
@ -5248,7 +5302,9 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
|||
|
||||
/* Questions can be shuffled? */
|
||||
Tbl_StartRow ();
|
||||
|
||||
Tbl_PutEmptyCells (1);
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
"<label class=\"%s\">"
|
||||
"<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," />"
|
||||
"%s"
|
||||
"</label>"
|
||||
"</td>",
|
||||
"</label>",
|
||||
Txt_Shuffle);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/* 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
|
||||
AnswerHasContent;
|
||||
|
||||
/***** Left column: selectors *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
/***** Left column: selectors *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"TEST_EDI_ANS_LEFT_COL COLOR%u\">",
|
||||
Gbl.RowEvenOdd);
|
||||
|
||||
|
@ -5392,8 +5450,9 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
|||
"</label>");
|
||||
|
||||
/* End of right column */
|
||||
fprintf (Gbl.F.Out,"</div>"
|
||||
"</td>");
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
Tbl_EndTable (); // Table with choice answers
|
||||
|
@ -7453,12 +7512,15 @@ void Tst_SelUsrsToViewUsrsTstResults (void)
|
|||
|
||||
/***** Put list of users to select some of them *****/
|
||||
Tbl_StartTableCenterPadding (2);
|
||||
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td colspan=\"2\" class=\"%s LEFT_TOP\">",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Users,
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Users);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"%s LEFT_TOP\">",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
Tbl_StartTablePadding (2);
|
||||
Usr_ListUsersToSelect (Rol_TCH);
|
||||
|
@ -7466,6 +7528,7 @@ void Tst_SelUsrsToViewUsrsTstResults (void)
|
|||
Usr_ListUsersToSelect (Rol_STD);
|
||||
Tbl_EndTable ();
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Starting and ending dates in the search *****/
|
||||
|
@ -7799,11 +7862,11 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat)
|
|||
"<script type=\"text/javascript\">"
|
||||
"writeLocalDateHMSFromUTC('tst_date_%u',%ld,"
|
||||
"%u,', ','%s',true,false,0x7);"
|
||||
"</script>"
|
||||
"</td>",
|
||||
"</script>",
|
||||
UniqueId,ClassDat,Gbl.RowEvenOdd,
|
||||
UniqueId,(long) TimeUTC,
|
||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Get number of questions (row[3]) */
|
||||
if (sscanf (row[3],"%u",&NumQstsInThisTest) != 1)
|
||||
|
@ -7958,10 +8021,10 @@ static void Tst_ShowTestResultsSummaryRow (bool ItsMe,
|
|||
|
||||
/***** Row title *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N_LINE_TOP RIGHT_MIDDLE COLOR%u\">"
|
||||
"%s: %u"
|
||||
"</td>",
|
||||
"%s: %u",
|
||||
Gbl.RowEvenOdd,
|
||||
Txt_Visible_tests,NumExams);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write total number of questions *****/
|
||||
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 ();
|
||||
|
||||
/***** 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);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** End row *****/
|
||||
Tbl_EndRow ();
|
||||
|
@ -8117,11 +8181,13 @@ void Tst_ShowOneTstResult (void)
|
|||
|
||||
/* User */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"DAT LEFT_TOP\">",
|
||||
"%s:",
|
||||
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);
|
||||
fprintf (Gbl.F.Out," %s",
|
||||
Gbl.Usrs.Other.UsrDat.Surname1);
|
||||
|
@ -8137,42 +8203,52 @@ void Tst_ShowOneTstResult (void)
|
|||
NULL,
|
||||
"PHOTO45x60",Pho_ZOOM,false);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/* Test date */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td id=\"test\" class=\"DAT LEFT_TOP\">"
|
||||
"%s:",
|
||||
Txt_Date);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td id=\"test\" class=\"DAT LEFT_TOP\">"
|
||||
"<script type=\"text/javascript\">"
|
||||
"writeLocalDateHMSFromUTC('test',%ld,"
|
||||
"%u,', ','%s',true,true,0x7);"
|
||||
"</script>"
|
||||
"</td>",
|
||||
Txt_Date,TstTimeUTC,
|
||||
"</script>",
|
||||
TstTimeUTC,
|
||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/* Number of questions */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"DAT LEFT_TOP\">"
|
||||
"%u (%u %s)"
|
||||
"</td>",
|
||||
Txt_Questions,
|
||||
"%s:",
|
||||
Txt_Questions);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">"
|
||||
"%u (%u %s)",
|
||||
Gbl.Test.NumQsts,NumQstsNotBlank,Txt_non_blank_QUESTIONS);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/* Score */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"DAT LEFT_TOP\">",
|
||||
"%s:",
|
||||
Txt_Score);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">");
|
||||
if (ICanViewScore)
|
||||
fprintf (Gbl.F.Out,"%.2lf (%.2lf",
|
||||
TotalScore,
|
||||
|
@ -8180,19 +8256,24 @@ void Tst_ShowOneTstResult (void)
|
|||
0.0);
|
||||
else
|
||||
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);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/* Tags present in this test */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_TOP\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"DAT LEFT_TOP\">",
|
||||
"%s:",
|
||||
Txt_Tags);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">");
|
||||
Tst_ShowTstTagsPresentInATestResult (TstCod);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Write answers and solutions *****/
|
||||
|
@ -8265,14 +8346,17 @@ void Tst_ShowTestResult (struct UsrData *UsrDat,
|
|||
{
|
||||
/***** Question has been edited *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
|
||||
"%u"
|
||||
"</td>"
|
||||
"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
Gbl.RowEvenOdd,NumQst + 1,
|
||||
"%u",
|
||||
Gbl.RowEvenOdd,NumQst + 1);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
||||
"%s",
|
||||
Gbl.RowEvenOdd,Txt_Question_modified);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
else
|
||||
|
@ -8293,14 +8377,17 @@ void Tst_ShowTestResult (struct UsrData *UsrDat,
|
|||
{
|
||||
/***** Question does not exists *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
|
||||
"%u"
|
||||
"</td>"
|
||||
"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
Gbl.RowEvenOdd,NumQst + 1,
|
||||
"%u",
|
||||
Gbl.RowEvenOdd,NumQst + 1);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
|
||||
"%s",
|
||||
Gbl.RowEvenOdd,Txt_Question_removed);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
|
||||
|
|
|
@ -1021,8 +1021,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
|
|||
fprintf (Gbl.F.Out,"<td class=\"BT%u CENTER_TOP\">"
|
||||
"<img src=\"%s/%s\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
" class=\"CONTEXT_ICO_16x16\" />"
|
||||
"</td>",
|
||||
" class=\"CONTEXT_ICO_16x16\" />",
|
||||
Gbl.RowEvenOdd,
|
||||
Cfg_URL_ICON_PUBLIC,
|
||||
QuestionExists ? "tr16x16.gif" :
|
||||
|
@ -1031,6 +1030,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
|
|||
Txt_New_question,
|
||||
QuestionExists ? Txt_Existing_question :
|
||||
Txt_New_question);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write number of question *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP COLOR%u\">",
|
||||
|
@ -1051,14 +1051,17 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
|
|||
NumTag++)
|
||||
{
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">"
|
||||
" • "
|
||||
"</td>"
|
||||
"<td class=\"%s LEFT_TOP\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
ClassData,
|
||||
" • ",
|
||||
ClassData);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">"
|
||||
"%s",
|
||||
ClassData,Gbl.Test.Tags.Txt[NumTag]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
Tbl_EndTable ();
|
||||
|
@ -1071,10 +1074,10 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
|
|||
|
||||
/***** Write the question type *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP COLOR%u\">"
|
||||
"%s "
|
||||
"</td>",
|
||||
"%s ",
|
||||
ClassData,Gbl.RowEvenOdd,
|
||||
Txt_TST_STR_ANSWER_TYPES[Gbl.Test.AnswerType]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write if shuffle is enabled *****/
|
||||
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 */
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">"
|
||||
"%c) "
|
||||
"</td>",
|
||||
"%c) ",
|
||||
ClassData,'a' + (char) NumOpt);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the text and the feedback of the answer */
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
|
|
|
@ -1133,21 +1133,25 @@ static void TT_DrawTimeTable (void)
|
|||
|
||||
/***** Row with day names *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"TT_HOUR_BIG RIGHT_MIDDLE\""
|
||||
" style=\"width:%u%%;\">"
|
||||
"%02u:00"
|
||||
"</td>",
|
||||
"%02u:00",
|
||||
TT_PERCENT_WIDTH_OF_AN_HOUR_COLUMN,
|
||||
Gbl.TimeTable.Config.Range.Hours.Start);
|
||||
Tbl_EndCell ();
|
||||
|
||||
TT_DrawCellAlignTimeTable ();
|
||||
TT_TimeTableDrawDaysCells ();
|
||||
TT_DrawCellAlignTimeTable ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"TT_HOUR_BIG LEFT_MIDDLE\""
|
||||
" style=\"width:%u%%;\">"
|
||||
"%02u:00"
|
||||
"</td>",
|
||||
"%02u:00",
|
||||
TT_PERCENT_WIDTH_OF_AN_HOUR_COLUMN,
|
||||
Gbl.TimeTable.Config.Range.Hours.Start);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Get list of groups types and groups in this course *****/
|
||||
|
@ -1273,7 +1277,10 @@ static void TT_TimeTableDrawAdjustRow (void)
|
|||
unsigned Minicolumn;
|
||||
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"TT_HOURCOL\"></td>");
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"TT_HOURCOL\">");
|
||||
Tbl_EndCell ();
|
||||
|
||||
TT_DrawCellAlignTimeTable ();
|
||||
for (Weekday = 0;
|
||||
Weekday < TT_DAYS_PER_WEEK;
|
||||
|
@ -1281,9 +1288,15 @@ static void TT_TimeTableDrawAdjustRow (void)
|
|||
for (Minicolumn = 0;
|
||||
Minicolumn < TT_NUM_MINICOLUMNS_PER_DAY;
|
||||
Minicolumn++)
|
||||
fprintf (Gbl.F.Out,"<td class=\"TT_MINICOL\"></td>");
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"TT_MINICOL\">");
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
TT_DrawCellAlignTimeTable ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"TT_HOURCOL\"></td>");
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"TT_HOURCOL\">");
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
}
|
||||
|
||||
|
@ -1305,13 +1318,13 @@ static void TT_TimeTableDrawDaysCells (void)
|
|||
fprintf (Gbl.F.Out,"<td colspan=\"%u\""
|
||||
" class=\"%s CENTER_MIDDLE\""
|
||||
" style=\"width:%u%%;\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
"%s",
|
||||
TT_NUM_MINICOLUMNS_PER_DAY,
|
||||
Weekday == 6 ? "TT_SUNDAY" : // Sunday drawn in red
|
||||
"TT_DAY", // Monday to Saturday
|
||||
TT_PERCENT_WIDTH_OF_A_DAY,
|
||||
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)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"TT_HOUR %s %s\">"
|
||||
"%02u:%02u"
|
||||
"</td>",
|
||||
"%02u:%02u",
|
||||
Min ? "TT_HOUR_SMALL" :
|
||||
"TT_HOUR_BIG",
|
||||
Align,
|
||||
Hour,Min);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1412,7 +1425,8 @@ static unsigned TT_CalculateColsToDrawInCell (bool TopCall,
|
|||
|
||||
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
|
||||
fprintf (Gbl.F.Out,"BM%u",Gbl.RowEvenOdd);
|
||||
fprintf (Gbl.F.Out," %s\" title=\"%s\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
"%s",
|
||||
UsrDat->Accepted ? "USR_LIST_NUM_N" :
|
||||
"USR_LIST_NUM",
|
||||
UsrDat->Accepted ? Txt_Enrolment_confirmed :
|
||||
Txt_Enrolment_not_confirmed,
|
||||
UsrDat->Accepted ? "✓" :
|
||||
"✗");
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write number of user in the list *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
|
||||
"%u"
|
||||
"</td>",
|
||||
"%u",
|
||||
UsrDat->Accepted ? "USR_LIST_NUM_N" :
|
||||
"USR_LIST_NUM",
|
||||
BgColor,
|
||||
NumUsr);
|
||||
Tbl_EndCell ();
|
||||
|
||||
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\">",
|
||||
Gbl.RowEvenOdd);
|
||||
ID_WriteUsrIDs (UsrDat,NULL);
|
||||
fprintf (Gbl.F.Out," </td>");
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write rest of guest's main data *****/
|
||||
Ins.InsCod = UsrDat->InsCod;
|
||||
|
@ -3841,7 +3842,8 @@ static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
|
|||
"DAT_SMALL",
|
||||
Gbl.RowEvenOdd);
|
||||
ID_WriteUsrIDs (UsrDat,NULL);
|
||||
fprintf (Gbl.F.Out," </td>");
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write rest of main student's data *****/
|
||||
Ins.InsCod = UsrDat->InsCod;
|
||||
|
@ -3960,7 +3962,8 @@ static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
|
|||
"DAT_SMALL",
|
||||
Gbl.RowEvenOdd);
|
||||
ID_WriteUsrIDs (UsrDat,NULL);
|
||||
fprintf (Gbl.F.Out," </td>");
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write rest of main teacher's data *****/
|
||||
Ins.InsCod = UsrDat->InsCod;
|
||||
|
@ -4017,9 +4020,9 @@ static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
|
|||
|
||||
/***** Write number of user *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"USR_LIST_NUM_N CENTER_MIDDLE COLOR%u\">"
|
||||
"%u"
|
||||
"</td>",
|
||||
"%u",
|
||||
Gbl.RowEvenOdd,NumUsr);
|
||||
Tbl_EndCell ();
|
||||
|
||||
if (Gbl.Usrs.Listing.WithPhotos)
|
||||
{
|
||||
|
@ -4039,7 +4042,8 @@ static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
|
|||
"DAT_SMALL",
|
||||
Gbl.RowEvenOdd);
|
||||
ID_WriteUsrIDs (UsrDat,NULL);
|
||||
fprintf (Gbl.F.Out," </td>");
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write rest of main administrator's data *****/
|
||||
Ins.InsCod = UsrDat->InsCod;
|
||||
|
@ -4141,8 +4145,8 @@ static void Usr_WriteUsrData (const char *BgColor,
|
|||
fprintf (Gbl.F.Out,"</a>");
|
||||
|
||||
/***** End container and table cell *****/
|
||||
fprintf (Gbl.F.Out,"</div>"
|
||||
"</td>");
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -6937,8 +6941,10 @@ void Usr_ListAllDataStds (void)
|
|||
NumCol < NumColumnsCardAndGroups;
|
||||
NumCol++)
|
||||
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;
|
||||
NumField < Gbl.Crs.Records.LstFields.Num;
|
||||
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
|
||||
{
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"COLOR%u\"></td>"
|
||||
"<td colspan=\"%u\" class=\"COLOR%u\">",
|
||||
Gbl.RowEvenOdd,
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"COLOR%u\">",
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"%u\" class=\"COLOR%u\">",
|
||||
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
|
||||
Gbl.RowEvenOdd);
|
||||
if (Role == Rol_UNK)
|
||||
|
@ -7252,6 +7261,7 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,
|
|||
else
|
||||
Crs_GetAndWriteCrssOfAUsr (&UsrDat,Role);
|
||||
Tbl_EndCell ();
|
||||
|
||||
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\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
" class=\"ICO40x40\" />"
|
||||
"</a>"
|
||||
"</td>",
|
||||
"</a>",
|
||||
URL,FileName,
|
||||
CfG_URL_ICON_FILEXT_PUBLIC,
|
||||
Txt_ZIP_file,
|
||||
|
@ -587,30 +586,36 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
|
|||
Cfg_URL_ICON_PUBLIC,
|
||||
Txt_Download,
|
||||
Txt_Download);
|
||||
Tbl_EndCell ();
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Filename *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"<a href=\"%s\" class=\"DAT\" title=\"%s\" target=\"_blank\">%s</a>"
|
||||
"</td>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Filename,
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Filename);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"<a href=\"%s\" class=\"DAT\" title=\"%s\" target=\"_blank\">%s</a>",
|
||||
URL,FileName,FileName);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Write the file size *****/
|
||||
Fil_WriteFileSizeFull ((double) FileSize,FileSizeStr);
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"%s",
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_File_size,
|
||||
Txt_File_size);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"%s",
|
||||
FileSizeStr);
|
||||
if (UncompressedSize)
|
||||
{
|
||||
|
@ -619,6 +624,7 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
|
|||
FileSizeStr,Txt_FILE_uncompressed);
|
||||
}
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** End table and box *****/
|
||||
|
|
Loading…
Reference in New Issue