Version 14.40.10

This commit is contained in:
Antonio Cañas Vargas 2014-12-25 21:00:12 +01:00
parent a711b1ba0a
commit 1e4ded7122
2 changed files with 355 additions and 140 deletions

View File

@ -35,11 +35,12 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 14.40.9 (2014/12/25)" #define Log_PLATFORM_VERSION "SWAD 14.40.10 (2014/12/25)"
// Number of lines (includes comments but not blank lines) has been got with the following command: // Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h | tail -1 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h | tail -1
/* /*
Version 14.40.10 :Dic 25, 2014 Changes in HTML and CSS to validate HTML5 in W3C validator. (173201 lines)
Version 14.40.9 :Dic 25, 2014 Changes in HTML and CSS to validate HTML5 in W3C validator. (172986 lines) Version 14.40.9 :Dic 25, 2014 Changes in HTML and CSS to validate HTML5 in W3C validator. (172986 lines)
Version 14.40.8 :Dic 24, 2014 Changes in HTML and CSS to validate HTML5 in W3C validator. (172653 lines) Version 14.40.8 :Dic 24, 2014 Changes in HTML and CSS to validate HTML5 in W3C validator. (172653 lines)
Version 14.40.7 :Dic 23, 2014 Changes in HTML and CSS to validate HTML5 in W3C validator. (172552 lines) Version 14.40.7 :Dic 23, 2014 Changes in HTML and CSS to validate HTML5 in W3C validator. (172552 lines)

View File

@ -2701,7 +2701,8 @@ static void Sta_WriteAccessHour (unsigned Hour,float NumPagesGenerated,float Max
if (NumPagesGenerated > 0.0) if (NumPagesGenerated > 0.0)
{ {
fprintf (Gbl.F.Out,"%u%%<br />", fprintf (Gbl.F.Out,"%u%%<br />",
(unsigned) (((NumPagesGenerated * 100.0) / TotalPagesGenerated) + 0.5)); (unsigned) (((NumPagesGenerated * 100.0) /
TotalPagesGenerated) + 0.5));
Sta_WriteFloatNum (NumPagesGenerated); Sta_WriteFloatNum (NumPagesGenerated);
fprintf (Gbl.F.Out,"<br />"); fprintf (Gbl.F.Out,"<br />");
AltoBarra = (unsigned) (((NumPagesGenerated * 400.0) / MaxPagesGenerated) + 0.5); AltoBarra = (unsigned) (((NumPagesGenerated * 400.0) / MaxPagesGenerated) + 0.5);
@ -3460,7 +3461,8 @@ static void Sta_DrawBarNumClicks (char Color,float NumPagesGenerated,float MaxPa
/* Write the number of clicks */ /* Write the number of clicks */
Sta_WriteFloatNum (NumPagesGenerated); Sta_WriteFloatNum (NumPagesGenerated);
fprintf (Gbl.F.Out,"&nbsp;(%u", fprintf (Gbl.F.Out,"&nbsp;(%u",
(unsigned) (((NumPagesGenerated * 100.0) / TotalPagesGenerated) + 0.5)); (unsigned) (((NumPagesGenerated * 100.0) /
TotalPagesGenerated) + 0.5));
} }
else else
/* Write the number of clicks */ /* Write the number of clicks */
@ -4451,7 +4453,8 @@ static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *Na
struct Sta_SizeOfFileZones SizeOfFileZones; struct Sta_SizeOfFileZones SizeOfFileZones;
char *ClassData = (FileZone == Brw_FILE_BRW_UNKNOWN) ? "DAT_N" : char *ClassData = (FileZone == Brw_FILE_BRW_UNKNOWN) ? "DAT_N" :
"DAT"; "DAT";
char *StyleTableCell = (FileZone == Brw_FILE_BRW_UNKNOWN) ? " style=\"border-style:solid none none none;border-width:1px;\"" : char *StyleTableCell = (FileZone == Brw_FILE_BRW_UNKNOWN) ? " border-style:solid none none none;"
" border-width:1px;" :
""; "";
Sta_GetSizeOfFileZoneFromDB (Gbl.Scope.Current,FileZone,&SizeOfFileZones); Sta_GetSizeOfFileZoneFromDB (Gbl.Scope.Current,FileZone,&SizeOfFileZones);
@ -4465,10 +4468,12 @@ static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *Na
{ {
sprintf (StrNumCrss,"%d",SizeOfFileZones.NumCrss); sprintf (StrNumCrss,"%d",SizeOfFileZones.NumCrss);
sprintf (StrNumFoldersPerCrs,"%.1f", sprintf (StrNumFoldersPerCrs,"%.1f",
SizeOfFileZones.NumCrss ? (double) SizeOfFileZones.NumFolders / (double) SizeOfFileZones.NumCrss : SizeOfFileZones.NumCrss ? (double) SizeOfFileZones.NumFolders /
(double) SizeOfFileZones.NumCrss :
0.0); 0.0);
sprintf (StrNumFilesPerCrs,"%.1f", sprintf (StrNumFilesPerCrs,"%.1f",
SizeOfFileZones.NumCrss ? (double) SizeOfFileZones.NumFiles / (double) SizeOfFileZones.NumCrss : SizeOfFileZones.NumCrss ? (double) SizeOfFileZones.NumFiles /
(double) SizeOfFileZones.NumCrss :
0.0); 0.0);
} }
if (SizeOfFileZones.NumUsrs == -1) if (SizeOfFileZones.NumUsrs == -1)
@ -4481,32 +4486,34 @@ static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *Na
{ {
sprintf (StrNumUsrs,"%d",SizeOfFileZones.NumUsrs); sprintf (StrNumUsrs,"%d",SizeOfFileZones.NumUsrs);
sprintf (StrNumFoldersPerUsr,"%.1f", sprintf (StrNumFoldersPerUsr,"%.1f",
SizeOfFileZones.NumUsrs ? (double) SizeOfFileZones.NumFolders / (double) SizeOfFileZones.NumUsrs : SizeOfFileZones.NumUsrs ? (double) SizeOfFileZones.NumFolders /
(double) SizeOfFileZones.NumUsrs :
0.0); 0.0);
sprintf (StrNumFilesPerUsr,"%.1f", sprintf (StrNumFilesPerUsr,"%.1f",
SizeOfFileZones.NumUsrs ? (double) SizeOfFileZones.NumFiles / (double) SizeOfFileZones.NumUsrs : SizeOfFileZones.NumUsrs ? (double) SizeOfFileZones.NumFiles /
(double) SizeOfFileZones.NumUsrs :
0.0); 0.0);
} }
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" class=\"%s\"%s>" "<td class=\"%s\" style=\"text-align:left; %s\">"
"%s" "%s"
"</td>" "</td>"
"<td align=\"right\" class=\"%s\"%s>" "<td class=\"%s\" style=\"text-align:right; %s\">"
"%s" "%s"
"</td>" "</td>"
"<td align=\"right\" class=\"%s\"%s>" "<td class=\"%s\" style=\"text-align:right; %s\">"
"%s" "%s"
"</td>" "</td>"
"<td align=\"right\" class=\"%s\"%s>" "<td class=\"%s\" style=\"text-align:right; %s\">"
"%u" "%u"
"</td>" "</td>"
"<td align=\"right\" class=\"%s\"%s>" "<td class=\"%s\" style=\"text-align:right; %s\">"
"%lu" "%lu"
"</td>" "</td>"
"<td align=\"right\" class=\"%s\"%s>" "<td class=\"%s\" style=\"text-align:right; %s\">"
"%lu" "%lu"
"</td>" "</td>"
"<td align=\"right\" class=\"%s\"%s>", "<td class=\"%s\" style=\"text-align:right; %s\">",
ClassData,StyleTableCell,NameOfFileZones, ClassData,StyleTableCell,NameOfFileZones,
ClassData,StyleTableCell,StrNumCrss, ClassData,StyleTableCell,StrNumCrss,
ClassData,StyleTableCell,StrNumUsrs, ClassData,StyleTableCell,StrNumUsrs,
@ -4516,28 +4523,38 @@ static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *Na
ClassData,StyleTableCell); ClassData,StyleTableCell);
Str_WriteSizeInBytesFull ((double) SizeOfFileZones.Size); Str_WriteSizeInBytesFull ((double) SizeOfFileZones.Size);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"<td align=\"right\" class=\"%s\"%s>%s</td>" "<td class=\"%s\" style=\"text-align:right; %s\">"
"<td align=\"right\" class=\"%s\"%s>%s</td>" "%s"
"<td align=\"right\" class=\"%s\"%s>", "</td>"
"<td class=\"%s\" style=\"text-align:right; %s\">"
"%s"
"</td>"
"<td class=\"%s\" style=\"text-align:right; %s\">",
ClassData,StyleTableCell,StrNumFoldersPerCrs, ClassData,StyleTableCell,StrNumFoldersPerCrs,
ClassData,StyleTableCell,StrNumFilesPerCrs, ClassData,StyleTableCell,StrNumFilesPerCrs,
ClassData,StyleTableCell); ClassData,StyleTableCell);
if (SizeOfFileZones.NumCrss == -1) if (SizeOfFileZones.NumCrss == -1)
fprintf (Gbl.F.Out,"-"); fprintf (Gbl.F.Out,"-");
else else
Str_WriteSizeInBytesFull (SizeOfFileZones.NumCrss ? (double) SizeOfFileZones.Size / (double) SizeOfFileZones.NumCrss : Str_WriteSizeInBytesFull (SizeOfFileZones.NumCrss ? (double) SizeOfFileZones.Size /
(double) SizeOfFileZones.NumCrss :
0.0); 0.0);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"<td align=\"right\" class=\"%s\"%s>%s</td>" "<td class=\"%s\" style=\"text-align:right; %s\">"
"<td align=\"right\" class=\"%s\"%s>%s</td>" "%s"
"<td align=\"right\" class=\"%s\"%s>", "</td>"
"<td class=\"%s\" style=\"text-align:right; %s\">"
"%s"
"</td>"
"<td class=\"%s\" style=\"text-align:right; %s\">",
ClassData,StyleTableCell,StrNumFoldersPerUsr, ClassData,StyleTableCell,StrNumFoldersPerUsr,
ClassData,StyleTableCell,StrNumFilesPerUsr, ClassData,StyleTableCell,StrNumFilesPerUsr,
ClassData,StyleTableCell); ClassData,StyleTableCell);
if (SizeOfFileZones.NumUsrs == -1) if (SizeOfFileZones.NumUsrs == -1)
fprintf (Gbl.F.Out,"-"); fprintf (Gbl.F.Out,"-");
else else
Str_WriteSizeInBytesFull (SizeOfFileZones.NumUsrs ? (double) SizeOfFileZones.Size / (double) SizeOfFileZones.NumUsrs : Str_WriteSizeInBytesFull (SizeOfFileZones.NumUsrs ? (double) SizeOfFileZones.Size /
(double) SizeOfFileZones.NumUsrs :
0.0); 0.0);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"</tr>"); "</tr>");
@ -4792,9 +4809,15 @@ static void Sta_ShowOERs (void)
Sta_GetNumberOfOERFromDB (Gbl.Scope.Current,License,NumFiles); Sta_GetNumberOfOERFromDB (Gbl.Scope.Current,License,NumFiles);
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" class=\"DAT\">%s</td>" "<td class=\"DAT\" style=\"text-align:left;\">"
"<td align=\"right\" class=\"DAT\">%lu</td>" "%s"
"<td align=\"right\" class=\"DAT\">%lu</td>" "</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%lu"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%lu"
"</td>"
"</tr>", "</tr>",
Txt_LICENSES[License], Txt_LICENSES[License],
NumFiles[0], NumFiles[0],
@ -4936,10 +4959,18 @@ static void Sta_ShowAssignmentsStats (void)
/***** Write number of assignments *****/ /***** Write number of assignments *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"right\" class=\"DAT\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%u"
"<td align=\"right\" class=\"DAT\">%.2f</td>" "</td>"
"<td align=\"right\" class=\"DAT\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%.2f"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"</tr>", "</tr>",
NumAssignments, NumAssignments,
NumCoursesWithAssignments, NumCoursesWithAssignments,
@ -4969,6 +5000,8 @@ static void Sta_ShowTestsStats (void)
extern const char *Txt_Total; extern const char *Txt_Total;
Tst_AnswerType_t AnsType; Tst_AnswerType_t AnsType;
struct Tst_Stats Stats; struct Tst_Stats Stats;
char *StyleTableCell = " border-style:solid none none none;"
" border-width:1px;";
/***** Table start *****/ /***** Table start *****/
Lay_StartRoundFrameTable10 (NULL,2,NULL); Lay_StartRoundFrameTable10 (NULL,2,NULL);
@ -5005,20 +5038,39 @@ static void Sta_ShowTestsStats (void)
/***** Write number of assignments *****/ /***** Write number of assignments *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" class=\"DAT\">%s</td>" "<td class=\"DAT\" style=\"text-align:left;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%s"
"<td align=\"right\" class=\"DAT\">%u (%.1f%%)</td>" "</td>"
"<td align=\"right\" class=\"DAT\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%.2f</td>" "%u"
"<td align=\"right\" class=\"DAT\">%lu</td>" "</td>"
"<td align=\"right\" class=\"DAT\">%.2f</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%.2f</td>" "%u (%.1f%%)"
"<td align=\"right\" class=\"DAT\">%.2f</td>" "</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%.2f"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%lu"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%.2f"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%.2f"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%.2f"
"</td>"
"</tr>", "</tr>",
Txt_TST_STR_ANSWER_TYPES[AnsType], Txt_TST_STR_ANSWER_TYPES[AnsType],
Stats.NumCoursesWithQuestions, Stats.NumCoursesWithQuestions,
Stats.NumCoursesWithPluggableQuestions, Stats.NumCoursesWithPluggableQuestions,
Stats.NumCoursesWithQuestions ? (float) Stats.NumCoursesWithPluggableQuestions * 100.0 / (float) Stats.NumCoursesWithQuestions : Stats.NumCoursesWithQuestions ? (float) Stats.NumCoursesWithPluggableQuestions * 100.0 /
(float) Stats.NumCoursesWithQuestions :
0.0, 0.0,
Stats.NumQsts, Stats.NumQsts,
Stats.AvgQstsPerCourse, Stats.AvgQstsPerCourse,
@ -5034,27 +5086,46 @@ static void Sta_ShowTestsStats (void)
/***** Write number of assignments *****/ /***** Write number of assignments *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%s</td>" "<td class=\"DAT_N\" style=\"text-align:left; %s\">"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u</td>" "%s"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u (%.1f%%)</td>" "</td>"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u</td>" "<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%.2f</td>" "%u"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%lu</td>" "</td>"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%.2f</td>" "<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%.2f</td>" "%u (%.1f%%)"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%.2f</td>" "</td>"
"<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"%.2f"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"%lu"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"%.2f"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"%.2f"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"%.2f"
"</td>"
"</tr>", "</tr>",
Txt_Total, StyleTableCell,Txt_Total,
Stats.NumCoursesWithQuestions, StyleTableCell,Stats.NumCoursesWithQuestions,
Stats.NumCoursesWithPluggableQuestions, StyleTableCell,Stats.NumCoursesWithPluggableQuestions,
Stats.NumCoursesWithQuestions ? (float) Stats.NumCoursesWithPluggableQuestions * 100.0 / (float) Stats.NumCoursesWithQuestions : Stats.NumCoursesWithQuestions ? (float) Stats.NumCoursesWithPluggableQuestions * 100.0 /
(float) Stats.NumCoursesWithQuestions :
0.0, 0.0,
Stats.NumQsts, StyleTableCell,Stats.NumQsts,
Stats.AvgQstsPerCourse, StyleTableCell,Stats.AvgQstsPerCourse,
Stats.NumHits, StyleTableCell,Stats.NumHits,
Stats.AvgHitsPerCourse, StyleTableCell,Stats.AvgHitsPerCourse,
Stats.AvgHitsPerQuestion, StyleTableCell,Stats.AvgHitsPerQuestion,
Stats.AvgScorePerQuestion); StyleTableCell,Stats.AvgScorePerQuestion);
/***** End table *****/ /***** End table *****/
Lay_EndRoundFrameTable10 (); Lay_EndRoundFrameTable10 ();
@ -5111,11 +5182,21 @@ static void Sta_ShowNoticesStats (void)
/***** Write number of notices *****/ /***** Write number of notices *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"right\" class=\"DAT\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%u"
"<td align=\"right\" class=\"DAT\">%u</td>" "</td>"
"<td align=\"right\" class=\"DAT_N\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"</tr>", "</tr>",
NumNotices[Not_ACTIVE_NOTICE], NumNotices[Not_ACTIVE_NOTICE],
NumNotices[Not_OBSOLETE_NOTICE], NumNotices[Not_OBSOLETE_NOTICE],
@ -5171,18 +5252,38 @@ static void Sta_ShowMsgsStats (void)
/***** Write number of messages *****/ /***** Write number of messages *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" class=\"DAT\">%s</td>" "<td class=\"DAT\" style=\"text-align:left;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%s"
"<td align=\"right\" class=\"DAT\">%u</td>" "</td>"
"<td align=\"right\" class=\"DAT_N\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">-</td>" "%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"-"
"</td>"
"</tr>" "</tr>"
"<tr>" "<tr>"
"<td align=\"left\" class=\"DAT\">%s</td>" "<td class=\"DAT\" style=\"text-align:left;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%s"
"<td align=\"right\" class=\"DAT\">%u</td>" "</td>"
"<td align=\"right\" class=\"DAT_N\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"</tr>", "</tr>",
Txt_MSGS_Sent, Txt_MSGS_Sent,
NumMsgsSentNotDeleted, NumMsgsSentNotDeleted,
@ -5422,17 +5523,42 @@ static void Sta_WriteForumTitleAndStats (For_ForumType_t ForumType,
/***** Write forum name and stats *****/ /***** Write forum name and stats *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" valign=\"top\" width=\"16\">" "<td style=\"width:16px;"
" text-align:left; vertical-align:top;\">"
"<img src=\"%s/%s\" alt=\"\" class=\"ICON16x16\" />" "<img src=\"%s/%s\" alt=\"\" class=\"ICON16x16\" />"
"</td>" "</td>"
"<td align=\"left\" valign=\"top\" class=\"DAT\">%s%s</td>" "<td class=\"DAT\""
"<td align=\"right\" valign=\"top\" class=\"DAT\">%u</td>" " style=\"text-align:left; vertical-align:top;\">"
"<td align=\"right\" valign=\"top\" class=\"DAT\">%u</td>" "%s%s"
"<td align=\"right\" valign=\"top\" class=\"DAT\">%u</td>" "</td>"
"<td align=\"right\" valign=\"top\" class=\"DAT\">%u</td>" "<td class=\"DAT\""
"<td align=\"right\" valign=\"top\" class=\"DAT\">%.2f</td>" " style=\"text-align:right; vertical-align:top;\">"
"<td align=\"right\" valign=\"top\" class=\"DAT\">%.2f</td>" "%u"
"<td align=\"right\" valign=\"top\" class=\"DAT\">%.2f</td>" "</td>"
"<td class=\"DAT\""
" style=\"text-align:right; vertical-align:top;\">"
"%u"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:right; vertical-align:top;\">"
"%u"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:right; vertical-align:top;\">"
"%u"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:right; vertical-align:top;\">"
"%.2f"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:right; vertical-align:top;\">"
"%.2f"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:right; vertical-align:top;\">"
"%.2f"
"</td>"
"</tr>", "</tr>",
Gbl.Prefs.IconsURL,Icon, Gbl.Prefs.IconsURL,Icon,
ForumName1,ForumName2, ForumName1,ForumName2,
@ -5450,6 +5576,8 @@ static void Sta_WriteForumTotalStats (struct Sta_StatsForum *StatsForum)
float NumThrsPerForum; float NumThrsPerForum;
float NumPostsPerThread; float NumPostsPerThread;
float NumPostsPerForum; float NumPostsPerForum;
char *StyleTableCell = " border-style:solid none none none;"
" border-width:1px;";
/***** Compute number of threads per forum, number of posts per forum and number of posts per thread *****/ /***** Compute number of threads per forum, number of posts per forum and number of posts per thread *****/
NumThrsPerForum = (StatsForum->NumForums ? (float) StatsForum->NumThreads / (float) StatsForum->NumForums : NumThrsPerForum = (StatsForum->NumForums ? (float) StatsForum->NumThreads / (float) StatsForum->NumForums :
@ -5461,20 +5589,42 @@ static void Sta_WriteForumTotalStats (struct Sta_StatsForum *StatsForum)
/***** Write forum name and stats *****/ /***** Write forum name and stats *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" valign=\"top\" width=\"16\" style=\"border-style:solid none none none;border-width:1px;\">" "<td width=\"16\" style=\"width:16px; %s\">"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:left; vertical-align:top; %s\">"
"%s"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; vertical-align:top; %s\">"
"%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; vertical-align:top; %s\">"
"%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; vertical-align:top; %s\">"
"%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; vertical-align:top; %s\">"
"%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; vertical-align:top; %s\">"
"%.2f"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; vertical-align:top; %s\">"
"%.2f"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; vertical-align:top; %s\">"
"%.2f"
"</td>" "</td>"
"<td align=\"left\" valign=\"top\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%s</td>"
"<td align=\"right\" valign=\"top\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u</td>"
"<td align=\"right\" valign=\"top\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u</td>"
"<td align=\"right\" valign=\"top\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u</td>"
"<td align=\"right\" valign=\"top\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u</td>"
"<td align=\"right\" valign=\"top\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%.2f</td>"
"<td align=\"right\" valign=\"top\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%.2f</td>"
"<td align=\"right\" valign=\"top\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%.2f</td>"
"</tr>", "</tr>",
Txt_Total, StyleTableCell,
StatsForum->NumForums,StatsForum->NumThreads,StatsForum->NumPosts,StatsForum->NumUsrsToBeNotifiedByEMail, StyleTableCell,Txt_Total,
NumThrsPerForum,NumPostsPerThread,NumPostsPerForum); StyleTableCell,StatsForum->NumForums,
StyleTableCell,StatsForum->NumThreads,
StyleTableCell,StatsForum->NumPosts,
StyleTableCell,StatsForum->NumUsrsToBeNotifiedByEMail,
StyleTableCell,NumThrsPerForum,
StyleTableCell,NumPostsPerThread,
StyleTableCell,NumPostsPerForum);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -5522,11 +5672,21 @@ static void Sta_ShowSurveysStats (void)
/***** Write number of surveys *****/ /***** Write number of surveys *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"right\" class=\"DAT\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%u"
"<td align=\"right\" class=\"DAT\">%.2f</td>" "</td>"
"<td align=\"right\" class=\"DAT\">%.2f</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%.2f"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%.2f"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"</tr>", "</tr>",
NumSurveys, NumSurveys,
NumCoursesWithSurveys, NumCoursesWithSurveys,
@ -5636,12 +5796,19 @@ static void Sta_GetAndShowNumUsrsPerLanguage (void)
Lan < Txt_NUM_LANGUAGES; Lan < Txt_NUM_LANGUAGES;
Lan++) Lan++)
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" class=\"DAT\">%s</td>" "<td class=\"DAT\" style=\"text-align:left;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%s"
"<td align=\"right\" class=\"DAT\">%5.2f%%</td>" "</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%5.2f%%"
"</td>"
"</tr>", "</tr>",
Txt_STR_LANG_NAME[Lan],NumUsrs[Lan], Txt_STR_LANG_NAME[Lan],NumUsrs[Lan],
NumUsrsTotal ? 100.0 * (float) NumUsrs[Lan] / (float) NumUsrsTotal : NumUsrsTotal ? (float) NumUsrs[Lan] * 100.0 /
(float) NumUsrsTotal :
0); 0);
Lay_EndRoundFrameTable10 (); Lay_EndRoundFrameTable10 ();
@ -5741,15 +5908,20 @@ static void Sta_GetAndShowNumUsrsPerLayout (void)
Layout < Lay_NUM_LAYOUTS; Layout < Lay_NUM_LAYOUTS;
Layout++) Layout++)
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"center\">" "<td style=\"text-align:center;\">"
"<img src=\"%s/%s32x32.gif\" alt=\"%s\" class=\"ICON32x32\" />" "<img src=\"%s/%s32x32.gif\" alt=\"%s\" class=\"ICON32x32\" />"
"</td>" "</td>"
"<td align=\"right\" class=\"DAT\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%5.2f%%</td>" "%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%5.2f%%"
"</td>"
"</tr>", "</tr>",
Gbl.Prefs.IconsURL,Lay_LayoutIcons[Layout],Txt_LAYOUT_NAMES[Layout], Gbl.Prefs.IconsURL,Lay_LayoutIcons[Layout],Txt_LAYOUT_NAMES[Layout],
NumUsrs[Layout], NumUsrs[Layout],
NumUsrsTotal ? 100.0 * (float) NumUsrs[Layout] / (float) NumUsrsTotal : NumUsrsTotal ? (float) NumUsrs[Layout] * 100.0 /
(float) NumUsrsTotal :
0); 0);
Lay_EndRoundFrameTable10 (); Lay_EndRoundFrameTable10 ();
@ -5849,15 +6021,21 @@ static void Sta_GetAndShowNumUsrsPerTheme (void)
Theme < The_NUM_THEMES; Theme < The_NUM_THEMES;
Theme++) Theme++)
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"center\">" "<td style=\"text-align:center;\">"
"<img src=\"%s/%s/%s/theme_32x20.gif\" alt=\"%s\" width=\"32\" height=\"20\" />" "<img src=\"%s/%s/%s/theme_32x20.gif\" alt=\"%s\""
" style=\"width:32px; height:20px;\" />"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%5.2f%%"
"</td>" "</td>"
"<td align=\"right\" class=\"DAT\">%u</td>"
"<td align=\"right\" class=\"DAT\">%5.2f%%</td>"
"</tr>", "</tr>",
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_THEMES,The_ThemeId[Theme],The_ThemeNames[Theme], Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_THEMES,The_ThemeId[Theme],The_ThemeNames[Theme],
NumUsrs[Theme], NumUsrs[Theme],
NumUsrsTotal ? 100.0 * (float) NumUsrs[Theme] / (float) NumUsrsTotal : NumUsrsTotal ? (float) NumUsrs[Theme] * 100.0 /
(float) NumUsrsTotal :
0); 0);
Lay_EndRoundFrameTable10 (); Lay_EndRoundFrameTable10 ();
@ -5954,15 +6132,21 @@ static void Sta_GetAndShowNumUsrsPerColumns (void)
SideCols <= 3; SideCols <= 3;
SideCols++) SideCols++)
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"center\">" "<td style=\"text-align:center;\">"
"<img src=\"%s/layout%u%u_32x20.gif\" alt=\"%s\" width=\"32\" height=\"20\" />" "<img src=\"%s/layout%u%u_32x20.gif\" alt=\"%s\""
" style=\"width:32px; height:20px;\" />"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%5.2f%%"
"</td>" "</td>"
"<td align=\"right\" class=\"DAT\">%u</td>"
"<td align=\"right\" class=\"DAT\">%5.2f%%</td>"
"</tr>", "</tr>",
Gbl.Prefs.IconsURL,SideCols >> 1,SideCols & 1,Txt_LAYOUT_SIDE_COLUMNS[SideCols], Gbl.Prefs.IconsURL,SideCols >> 1,SideCols & 1,Txt_LAYOUT_SIDE_COLUMNS[SideCols],
NumUsrs[SideCols], NumUsrs[SideCols],
NumUsrsTotal ? 100.0 * (float) NumUsrs[SideCols] / (float) NumUsrsTotal : NumUsrsTotal ? (float) NumUsrs[SideCols] * 100.0 /
(float) NumUsrsTotal :
0); 0);
Lay_EndRoundFrameTable10 (); Lay_EndRoundFrameTable10 ();
@ -6061,11 +6245,16 @@ static void Sta_GetAndShowNumUsrsPerIconSet (void)
IconSet < Ico_NUM_ICON_SETS; IconSet < Ico_NUM_ICON_SETS;
IconSet++) IconSet++)
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\">" "<td style=\"text-align:left;\">"
"<img src=\"%s/%s/%s/%s/heart32x32.gif\" alt=\"%s\" width=\"32\" height=\"32\" />" "<img src=\"%s/%s/%s/%s/heart32x32.gif\" alt=\"%s\""
" style=\"wisth:32px; height:32px;\" />"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%5.2f%%"
"</td>" "</td>"
"<td align=\"right\" class=\"DAT\">%u</td>"
"<td align=\"right\" class=\"DAT\">%5.2f%%</td>"
"</tr>", "</tr>",
Gbl.Prefs.IconsURL, Gbl.Prefs.IconsURL,
Cfg_ICON_FOLDER_ICON_SETS, Cfg_ICON_FOLDER_ICON_SETS,
@ -6073,7 +6262,8 @@ static void Sta_GetAndShowNumUsrsPerIconSet (void)
Cfg_ICON_ACTION_32x32, Cfg_ICON_ACTION_32x32,
Ico_IconSetNames[IconSet], Ico_IconSetNames[IconSet],
NumUsrs[IconSet], NumUsrs[IconSet],
NumUsrsTotal ? 100.0 * (float) NumUsrs[IconSet] / (float) NumUsrsTotal : NumUsrsTotal ? (float) NumUsrs[IconSet] * 100.0 /
(float) NumUsrsTotal :
0); 0);
Lay_EndRoundFrameTable10 (); Lay_EndRoundFrameTable10 ();
@ -6103,6 +6293,8 @@ static void Sta_GetAndShowNumUsrsPerNotifyEvent (void)
unsigned NumEvents[Ntf_NUM_NOTIFY_EVENTS]; unsigned NumEvents[Ntf_NUM_NOTIFY_EVENTS];
unsigned NumMailsTotal = 0; unsigned NumMailsTotal = 0;
unsigned NumMails[Ntf_NUM_NOTIFY_EVENTS]; unsigned NumMails[Ntf_NUM_NOTIFY_EVENTS];
char *StyleTableCell = " border-style:solid none none none;"
" border-width:1px;";
Lay_StartRoundFrameTable10 (NULL,2,NULL); Lay_StartRoundFrameTable10 (NULL,2,NULL);
@ -6308,33 +6500,55 @@ static void Sta_GetAndShowNumUsrsPerNotifyEvent (void)
NotifyEvent < Ntf_NUM_NOTIFY_EVENTS; NotifyEvent < Ntf_NUM_NOTIFY_EVENTS;
NotifyEvent++) // 0 is reserved for Ntf_EVENT_UNKNOWN NotifyEvent++) // 0 is reserved for Ntf_EVENT_UNKNOWN
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" class=\"DAT\">%s</td>" "<td class=\"DAT\" style=\"text-align:left;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%s"
"<td align=\"right\" class=\"DAT\">%5.2f%%</td>" "</td>"
"<td align=\"right\" class=\"DAT\">%u</td>" "<td class=\"DAT\" style=\"text-align:right;\">"
"<td align=\"right\" class=\"DAT\">%u</td>" "%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%5.2f%%"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"<td class=\"DAT\" style=\"text-align:right;\">"
"%u"
"</td>"
"</tr>", "</tr>",
Txt_NOTIFY_EVENTS_PLURAL[NotifyEvent], Txt_NOTIFY_EVENTS_PLURAL[NotifyEvent],
NumUsrs[NotifyEvent], NumUsrs[NotifyEvent],
NumUsrsTotalInPlatform ? 100.0 * (float) NumUsrs[NotifyEvent] / (float) NumUsrsTotalInPlatform : NumUsrsTotalInPlatform ? (float) NumUsrs[NotifyEvent] * 100.0 /
(float) NumUsrsTotalInPlatform :
0.0, 0.0,
NumEvents[NotifyEvent], NumEvents[NotifyEvent],
NumMails[NotifyEvent]); NumMails[NotifyEvent]);
/***** Write total number of users who want to be notified by e-mail on some event *****/ /***** Write total number of users who want to be notified by e-mail on some event *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td align=\"left\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%s</td>" "<td class=\"DAT_N\" style=\"text-align:left; %s\">"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u</td>" "%s"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%5.2f%%</td>" "</td>"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u</td>" "<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"<td align=\"right\" class=\"DAT_N\" style=\"border-style:solid none none none;border-width:1px;\">%u</td>" "%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"%5.2f%%"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"%u"
"</td>"
"<td class=\"DAT_N\" style=\"text-align:right; %s\">"
"%u"
"</td>"
"</tr>", "</tr>",
Txt_Total, StyleTableCell,Txt_Total,
NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent, StyleTableCell,NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent,
NumUsrsTotalInPlatform ? 100.0 * (float) NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent / (float) NumUsrsTotalInPlatform : StyleTableCell,NumUsrsTotalInPlatform ? (float) NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent * 100.0 /
0.0, (float) NumUsrsTotalInPlatform :
NumEventsTotal, 0.0,
NumMailsTotal); StyleTableCell,NumEventsTotal,
StyleTableCell,NumMailsTotal);
Lay_EndRoundFrameTable10 (); Lay_EndRoundFrameTable10 ();
} }