Version 21.95.5: May 12, 2022 Fixing design of dark theme.

This commit is contained in:
acanas 2022-05-12 14:42:15 +02:00
parent 8222a051cb
commit c8430ea406
12 changed files with 211 additions and 147 deletions

View File

@ -110,7 +110,7 @@ a:link, a:visited, a:active
}
a:hover /* Default ==> underlined */
{
text-decoration:underline;
text-decoration:underline; opacity:1;
}
/****************** Layout (the whole page with a background) ****************/
@ -1673,7 +1673,6 @@ a:hover img.CENTER_PHOTO_SHOW
.BT_LINK:hover
{
cursor:pointer;
/* text-decoration:underline; */
}
/****************************** Course program *******************************/
@ -3933,18 +3932,21 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
}
/************************************* Log ***********************************/
.LOG
{
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif;
font-size:11pt;
color:#404040;
}
.LOG_R
{
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif;
font-size:11pt;
color:red;
}
.LOG_WHITE,
.LOG_GREY,
.LOG_PURPLE,
.LOG_BLUE,
.LOG_YELLOW,
.LOG_PINK {color:#404040; font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; font-size:11pt;}
.LOG_DARK {color:#d0d0d0; font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; font-size:11pt;}
.LOG_R_WHITE,
.LOG_R_GREY,
.LOG_R_PURPLE,
.LOG_R_BLUE,
.LOG_R_YELLOW,
.LOG_R_PINK {color:#660000; font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; font-size:11pt;}
.LOG_R_DARK {color:#ff8080; font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; font-size:11pt;}
/***************************** Exam announcement *****************************/
/* Bottom space is used for signatures */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 B

BIN
icon/y30x1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 B

BIN
icon/y30x30.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

BIN
icon/y30x60.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

View File

@ -606,12 +606,19 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
TODO: Attach pdf files in multimedia.
*/
#define Log_PLATFORM_VERSION "SWAD 21.95.4 (2022-05-12)"
#define CSS_FILE "swad21.95.4.css"
#define Log_PLATFORM_VERSION "SWAD 21.95.5 (2022-05-12)"
#define CSS_FILE "swad21.95.5.css"
#define JS_FILE "swad21.92.js"
/*
Version 21.95.4: May 12, 2022 SWADroid image updated. (323445 lines)
Version 21.95.5: May 12, 2022 Some messages translated.
Fixing design of dark theme. (? lines)
Copy the following icons to icon public directory:
sudo cp icon/y30x1.png /var/www/html/swad/icon/
sudo cp icon/y30x30.png /var/www/html/swad/icon/
sudo cp icon/y30x60.png /var/www/html/swad/icon/
Version 21.95.4: May 12, 2022 SWADroid image updated. (323445 lines)
Copy the following icon to icon public directory:
sudo cp icon/SWADroid300x650.png /var/www/html/swad/icon/
Version 21.95.3: May 09, 2022 Fixed bug inserting automatic links. Reported by Javier Fernández Baldomero and others. (323439 lines)

View File

@ -242,6 +242,10 @@
/* Email */
#define Cfg_AUTOMATIC_EMAIL_PASSWORD DONT_PUBLISH_SMTP_PASSWORD // Email user's password for automatic emails
/* SWADroid */
#define Cfg_SWADROID_URL "https://play.google.com/store/apps/details?id=es.ugr.swad.swadroid"
#define Cfg_SWADROID_ICO "SWADroid300x650.png"
/* About SWAD */
#define Cfg_ABOUT_SWAD_URL "https://github.com/acanas/swad-core/wiki/UserGuide.en"

View File

@ -1159,10 +1159,10 @@ static void Lay_ShowRightColumn (void)
{
/***** SWADroid advertisement *****/
HTM_DIV_Begin ("class=\"LEFT_RIGHT_CELL\"");
HTM_A_Begin ("href=\"https://play.google.com/store/apps/details?id=es.ugr.swad.swadroid\""
" target=\"_blank\" title=\"%s\"",
HTM_A_Begin ("href=\"%s\" target=\"_blank\" title=\"%s\"",
Cfg_SWADROID_URL,
Txt_If_you_have_an_Android_device_try_SWADroid);
HTM_IMG (Cfg_URL_ICON_PUBLIC,"SWADroid300x650.png","SWADroid",
HTM_IMG (Cfg_URL_ICON_PUBLIC,Cfg_SWADROID_ICO,NULL,
"class=\"SWADROID\"");
HTM_A_End ();
HTM_DIV_End ();

View File

@ -133,9 +133,9 @@ static void Sta_ShowNumHitsPerYear (Sta_CountType_t CountType,
static void Sta_ShowNumHitsPerHour (unsigned NumHits,
MYSQL_RES *mysql_res);
static void Sta_WriteAccessHour (unsigned Hour,struct Sta_Hits *Hits,unsigned ColumnWidth);
static void Sta_ShowAverageAccessesPerMinute (unsigned NumHits,MYSQL_RES *mysql_res);
static void Sta_ShowNumHitsPerMinute (unsigned NumHits,MYSQL_RES *mysql_res);
static void Sta_WriteLabelsXAxisAccMin (double IncX,const char *Format);
static void Sta_WriteAccessMinute (unsigned Minute,double HitsNum,double MaxX);
static void Sta_WriteHitsMinute (unsigned Minute,double HitsNum,double MaxX);
static void Sta_ShowNumHitsPerAction (Sta_CountType_t CountTypes,
unsigned NumHits,
MYSQL_RES *mysql_res);
@ -780,7 +780,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
/***** Set table where to find depending on initial date *****/
/* If initial day is older than current day minus Cfg_DAYS_IN_RECENT_LOG,
then use recent log table, else use historic log table */
LogTable = (Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&Gbl.Now.Date)
LogTable = (Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,
&Gbl.Now.Date)
<= Cfg_DAYS_IN_RECENT_LOG) ? "log_recent" :
"log";
@ -902,7 +903,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
}
/***** Check if range of dates is forbidden for me *****/
NumDays = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&Gbl.DateRange.DateEnd.Date);
NumDays = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,
&Gbl.DateRange.DateEnd.Date);
ICanQueryWholeRange = (Gbl.Usrs.Me.Role.Logged >= Rol_TCH && Stats.GlobalOrCourse == Sta_SHOW_COURSE_ACCESSES) ||
(Gbl.Usrs.Me.Role.Logged == Rol_TCH && Gbl.Scope.Current == HieLvl_CRS) ||
(Gbl.Usrs.Me.Role.Logged == Rol_DEG_ADM && (Gbl.Scope.Current == HieLvl_DEG ||
@ -972,7 +974,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
break;
case Sta_CLICKS_CRS_PER_MINUTE:
case Sta_CLICKS_GBL_PER_MINUTE:
Sta_ShowAverageAccessesPerMinute (NumHits,mysql_res);
Sta_ShowNumHitsPerMinute (NumHits,mysql_res);
break;
case Sta_CLICKS_CRS_PER_ACTION:
case Sta_CLICKS_GBL_PER_ACTION:
@ -1230,23 +1232,27 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
HTM_TR_Begin (NULL);
/* Write the number of row */
HTM_TD_Begin ("class=\"LOG RT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"RT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
HTM_TxtF ("%u&nbsp;",NumRow);
HTM_TD_End ();
/* Write the user's ID if user is a student */
HTM_TD_Begin ("class=\"LOG CT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"CT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
ID_WriteUsrIDs (&UsrDat,NULL);
HTM_NBSP ();
HTM_TD_End ();
/* Write the first name and the surnames */
HTM_TD_Begin ("class=\"LOG LT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"LT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
HTM_TxtF ("%s&nbsp;",UsrDat.FullName);
HTM_TD_End ();
/* Write the user's role */
HTM_TD_Begin ("class=\"LOG CT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"CT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
HTM_TxtF ("%s&nbsp;",RoleFromLog < Rol_NUM_ROLES ? Txt_ROLES_SINGUL_Abc[RoleFromLog][UsrDat.Sex] :
"?");
HTM_TD_End ();
@ -1254,8 +1260,8 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
/* Write the date-time (row[3]) */
if (asprintf (&Id,"log_date_%u",UniqueId) < 0)
Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LOG RT %s\"",
Id,The_GetColorRows ());
HTM_TD_Begin ("id=\"%s\" class=\"RT LOG_%s %s\"",
Id,The_GetSuffix (),The_GetColorRows ());
Dat_WriteLocalDateHMSFromUTC (Id,Dat_GetUNIXTimeFromStr (row[3]),
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,false,0x7);
@ -1265,7 +1271,8 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
/* Write the action */
if (sscanf (row[4],"%ld",&ActCod) != 1)
Err_WrongActionExit ();
HTM_TD_Begin ("class=\"LOG LT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"LT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
if (ActCod >= 0)
HTM_TxtF ("%s&nbsp;",Act_GetActionText (Act_FromActCodToAction[ActCod]));
else
@ -1273,7 +1280,8 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
HTM_TD_End ();
/* Write the comments of the access */
HTM_TD_Begin ("class=\"LOG LT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"LT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
Sta_WriteLogComments (LogCod);
HTM_TD_End ();
@ -1357,7 +1365,8 @@ static void Sta_ShowNumHitsPerUsr (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write the number of row */
HTM_TD_Begin ("class=\"LOG RT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"RT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
HTM_TxtF ("%u&nbsp;",NumHit);
HTM_TD_End ();
@ -1369,18 +1378,21 @@ static void Sta_ShowNumHitsPerUsr (Sta_CountType_t CountType,
HTM_TD_End ();
/* Write the user's ID if user is a student in current course */
HTM_TD_Begin ("class=\"LOG LT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"LT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
ID_WriteUsrIDs (&UsrDat,NULL);
HTM_NBSP ();
HTM_TD_End ();
/* Write the name and the surnames */
HTM_TD_Begin ("class=\"LOG LT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"LT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
HTM_TxtF ("%s&nbsp;",UsrDat.FullName);
HTM_TD_End ();
/* Write user's role */
HTM_TD_Begin ("class=\"LOG CT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"CT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
HTM_TxtF ("%s&nbsp;",Txt_ROLES_SINGUL_Abc[UsrDat.Roles.InCurrentCrs][UsrDat.Sex]);
HTM_TD_End ();
@ -1397,7 +1409,8 @@ static void Sta_ShowNumHitsPerUsr (Sta_CountType_t CountType,
else
BarWidth = 0;
HTM_TD_Begin ("class=\"LOG LT %s\"",The_GetColorRows ());
HTM_TD_Begin ("class=\"LT LOG_%s %s\"",
The_GetSuffix (),The_GetColorRows ());
if (BarWidth)
{
HTM_IMG (Cfg_URL_ICON_PUBLIC,
@ -1456,7 +1469,7 @@ static void Sta_ShowNumHitsPerDay (Sta_CountType_t CountType,
/***** Write rows beginning by the most recent day and ending by the oldest *****/
mysql_data_seek (mysql_res,0);
for (NumHit = 1;
for (NumHit = 1;
NumHit <= NumHits;
NumHit++)
{
@ -1470,7 +1483,8 @@ static void Sta_ShowNumHitsPerDay (Sta_CountType_t CountType,
Hits.Num = Str_GetDoubleFromStr (row[1]);
Dat_AssignDate (&Date,&LastDate);
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&ReadDate,&LastDate);
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&ReadDate,
&LastDate);
/* In the next loop (NumDaysFromLastDateToCurrDate-1) días (the more recent) with 0 clicks are shown
and a last day (the oldest) with Hits.Num */
for (D = 1;
@ -1483,14 +1497,18 @@ static void Sta_ShowNumHitsPerDay (Sta_CountType_t CountType,
/* Write the date */
Dat_ConvDateToDateStr (&Date,StrDate);
HTM_TD_Begin ("class=\"%s RT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"RT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",StrDate);
HTM_TD_End ();
/* Write the day of the week */
HTM_TD_Begin ("class=\"%s LT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"LT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",Txt_DAYS_SMALL[NumDayWeek]);
HTM_TD_End ();
@ -1508,7 +1526,8 @@ static void Sta_ShowNumHitsPerDay (Sta_CountType_t CountType,
}
Dat_AssignDate (&LastDate,&Date);
}
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&LastDate);
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,
&LastDate);
/***** Finally NumDaysFromLastDateToCurrDate days are shown with 0 clicks
(the oldest days from the requested initial day until the first with clicks) *****/
@ -1522,14 +1541,18 @@ static void Sta_ShowNumHitsPerDay (Sta_CountType_t CountType,
/* Write the date */
Dat_ConvDateToDateStr (&Date,StrDate);
HTM_TD_Begin ("class=\"%s RT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"RT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",StrDate);
HTM_TD_End ();
/* Write the day of the week */
HTM_TD_Begin ("class=\"%s LT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"LT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",Txt_DAYS_SMALL[NumDayWeek]);
HTM_TD_End ();
@ -1651,7 +1674,8 @@ static void Sta_ShowDistrAccessesPerDayAndHour (const struct Sta_Stats *Stats,
Hour < 24;
Hour++)
{
HTM_TD_Begin ("class=\"LOG CT\" style=\"width:%upx;\"",
HTM_TD_Begin ("class=\"CT LOG_%s\" style=\"width:%upx;\"",
The_GetSuffix (),
GRAPH_DISTRIBUTION_PER_HOUR_HOUR_WIDTH);
HTM_TxtF ("%02uh",Hour);
HTM_TD_End ();
@ -1690,7 +1714,8 @@ static void Sta_ShowDistrAccessesPerDayAndHour (const struct Sta_Stats *Stats,
/* In the next loop we show (NumDaysFromLastDateToCurrDate-1) days with 0 clicks
and a last day (older) with Hits.Num */
Dat_AssignDate (&Date,&LastDate);
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&PreviousReadDate,&LastDate);
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&PreviousReadDate,
&LastDate);
for (D = 1;
D <= NumDaysFromLastDateToCurrDate;
D++)
@ -1701,14 +1726,18 @@ static void Sta_ShowDistrAccessesPerDayAndHour (const struct Sta_Stats *Stats,
/* Write the date */
Dat_ConvDateToDateStr (&Date,StrDate);
HTM_TD_Begin ("class=\"%s RT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"RT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",StrDate);
HTM_TD_End ();
/* Write the day of the week */
HTM_TD_Begin ("class=\"%s LT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"LT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",Txt_DAYS_SMALL[NumDayWeek]);
HTM_TD_End ();
@ -1739,7 +1768,8 @@ static void Sta_ShowDistrAccessesPerDayAndHour (const struct Sta_Stats *Stats,
/* In the next loop we show (NumDaysFromLastDateToCurrDate-1) days (more recent) with 0 clicks
and a last day (older) with Hits.Num clicks */
Dat_AssignDate (&Date,&LastDate);
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&PreviousReadDate,&LastDate);
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&PreviousReadDate,
&LastDate);
for (D = 1;
D <= NumDaysFromLastDateToCurrDate;
D++)
@ -1750,14 +1780,18 @@ static void Sta_ShowDistrAccessesPerDayAndHour (const struct Sta_Stats *Stats,
/* Write the date */
Dat_ConvDateToDateStr (&Date,StrDate);
HTM_TD_Begin ("class=\"%s RT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"RT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",StrDate);
HTM_TD_End ();
/* Write the day of the week */
HTM_TD_Begin ("class=\"%s LT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"LT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",Txt_DAYS_SMALL[NumDayWeek]);
HTM_TD_End ();
@ -1776,7 +1810,8 @@ static void Sta_ShowDistrAccessesPerDayAndHour (const struct Sta_Stats *Stats,
/***** Finally NumDaysFromLastDateToCurrDate days are shown with 0 clicks
(the oldest days since the initial day requested by the user until the first with clicks) *****/
Dat_AssignDate (&LastDate,&Date);
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&LastDate);
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,
&LastDate);
for (D = 1;
D <= NumDaysFromLastDateToCurrDate;
D++)
@ -1787,14 +1822,18 @@ static void Sta_ShowDistrAccessesPerDayAndHour (const struct Sta_Stats *Stats,
/* Write the date */
Dat_ConvDateToDateStr (&Date,StrDate);
HTM_TD_Begin ("class=\"%s RT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"RT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",StrDate);
HTM_TD_End ();
/* Write the day of the week */
HTM_TD_Begin ("class=\"%s LT\"",NumDayWeek == 6 ? "LOG_R" :
"LOG");
HTM_TD_Begin ("class=\"LT %s_%s\"",
NumDayWeek == 6 ? "LOG_R" :
"LOG",
The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",Txt_DAYS_SMALL[NumDayWeek]);
HTM_TD_End ();
@ -1846,8 +1885,9 @@ static void Sta_DrawBarColors (Sta_ColorType_t ColorType,double HitsMax)
HTM_TABLE_BeginWide ();
HTM_TR_Begin (NULL);
HTM_TD_Begin ("colspan=\"%u\" class=\"LOG LB\" style=\"width:%upx;\"",
HTM_TD_Begin ("colspan=\"%u\" class=\"LB LOG_%s\" style=\"width:%upx;\"",
(GRAPH_DISTRIBUTION_PER_HOUR_TOTAL_WIDTH/5)/2,
The_GetSuffix (),
(GRAPH_DISTRIBUTION_PER_HOUR_TOTAL_WIDTH/5)/2);
HTM_Unsigned (0);
HTM_TD_End ();
@ -1856,15 +1896,17 @@ static void Sta_DrawBarColors (Sta_ColorType_t ColorType,double HitsMax)
Interval <= 4;
Interval++)
{
HTM_TD_Begin ("colspan=\"%u\" class=\"LOG CB\" style=\"width:%upx;\"",
HTM_TD_Begin ("colspan=\"%u\" class=\"CB LOG_%s\" style=\"width:%upx;\"",
GRAPH_DISTRIBUTION_PER_HOUR_TOTAL_WIDTH/5,
The_GetSuffix (),
GRAPH_DISTRIBUTION_PER_HOUR_TOTAL_WIDTH/5);
HTM_DoubleFewDigits ((double) Interval * HitsMax / 5.0);
HTM_TD_End ();
}
HTM_TD_Begin ("colspan=\"%u\" class=\"LOG RB\" style=\"width:%upx;\"",
HTM_TD_Begin ("colspan=\"%u\" class=\"RB LOG_%s\" style=\"width:%upx;\"",
(GRAPH_DISTRIBUTION_PER_HOUR_TOTAL_WIDTH/5)/2,
The_GetSuffix (),
(GRAPH_DISTRIBUTION_PER_HOUR_TOTAL_WIDTH/5)/2);
HTM_DoubleFewDigits (HitsMax);
HTM_TD_End ();
@ -1912,9 +1954,10 @@ static void Sta_DrawAccessesPerHourForADay (Sta_ColorType_t ColorType,double Hit
Str_DoubleNumToStrFewDigits (&Str,HitsNum[Hour]);
/***** Write cell *****/
HTM_TD_Begin ("class=\"LOG LM\" title=\"%s\""
HTM_TD_Begin ("class=\"LM LOG_%s\" title=\"%s\""
" style=\"width:%upx; background-color:#%02X%02X%02X;\"",
Str,GRAPH_DISTRIBUTION_PER_HOUR_HOUR_WIDTH,R,G,B);
The_GetSuffix (),Str,
GRAPH_DISTRIBUTION_PER_HOUR_HOUR_WIDTH,R,G,B);
HTM_TD_End ();
/***** Free memory allocated for string *****/
@ -2054,7 +2097,7 @@ static void Sta_ShowNumHitsPerWeek (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write week */
HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TD_Begin ("class=\"LT LOG_%s\"",The_GetSuffix ());
HTM_TxtF ("%04u-%02u&nbsp;",Date.Year,Date.Week);
HTM_TD_End ();
@ -2083,7 +2126,7 @@ static void Sta_ShowNumHitsPerWeek (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write week */
HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TD_Begin ("class=\"LT LOG_%s\"",The_GetSuffix ());
HTM_TxtF ("%04u-%02u&nbsp;",Date.Year,Date.Week);
HTM_TD_End ();
@ -2154,7 +2197,7 @@ static void Sta_ShowNumHitsPerMonth (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write the month */
HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TD_Begin ("class=\"LT LOG_%s\"",The_GetSuffix ());
HTM_TxtF ("%04u-%02u&nbsp;",Date.Year,Date.Month);
HTM_TD_End ();
@ -2182,7 +2225,7 @@ static void Sta_ShowNumHitsPerMonth (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write the month */
HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TD_Begin ("class=\"LT LOG_%s\"",The_GetSuffix ());
HTM_TxtF ("%04u-%02u&nbsp;",Date.Year,Date.Month);
HTM_TD_End ();
@ -2253,7 +2296,7 @@ static void Sta_ShowNumHitsPerYear (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write the year */
HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TD_Begin ("class=\"LT LOG_%s\"",The_GetSuffix ());
HTM_TxtF ("%04u&nbsp;",Date.Year);
HTM_TD_End ();
@ -2281,7 +2324,7 @@ static void Sta_ShowNumHitsPerYear (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write the year */
HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TD_Begin ("class=\"LT LOG_%s\"",The_GetSuffix ());
HTM_TxtF ("%04u&nbsp;",Date.Year);
HTM_TD_End ();
@ -2315,7 +2358,8 @@ static void Sta_ShowNumHitsPerHour (unsigned NumHits,
unsigned ColumnWidth;
MYSQL_ROW row;
if ((NumDays = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&Gbl.DateRange.DateEnd.Date)))
if ((NumDays = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,
&Gbl.DateRange.DateEnd.Date)))
{
/***** Compute maximum number of pages generated per hour *****/
Sta_ComputeMaxAndTotalHits (&Hits,NumHits,mysql_res,1,NumDays);
@ -2401,14 +2445,14 @@ static void Sta_WriteAccessHour (unsigned Hour,struct Sta_Hits *Hits,unsigned Co
}
/*****************************************************************************/
/**** Show a listing with the number of clicks in every minute of the day ***/
/**** Show a listing with the number of clicks in every minute of the day ****/
/*****************************************************************************/
#define Sta_NUM_MINUTES_PER_DAY (60 * 24) // 1440 minutes in a day
#define Sta_WIDTH_SEMIDIVISION_GRAPHIC 30
#define Sta_NUM_DIVISIONS_X 10
static void Sta_ShowAverageAccessesPerMinute (unsigned NumHits,MYSQL_RES *mysql_res)
static void Sta_ShowNumHitsPerMinute (unsigned NumHits,MYSQL_RES *mysql_res)
{
unsigned NumHit = 1;
MYSQL_ROW row;
@ -2425,7 +2469,8 @@ static void Sta_ShowAverageAccessesPerMinute (unsigned NumHits,MYSQL_RES *mysql_
double IncX;
char *Format;
if ((NumDays = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,&Gbl.DateRange.DateEnd.Date)))
if ((NumDays = Dat_GetNumDaysBetweenDates (&Gbl.DateRange.DateIni.Date,
&Gbl.DateRange.DateEnd.Date)))
{
/***** Compute number of clicks (and máximo) in every minute *****/
Hits.Max = 0.0;
@ -2483,7 +2528,7 @@ static void Sta_ShowAverageAccessesPerMinute (unsigned NumHits,MYSQL_RES *mysql_
for (i = 0;
i < Sta_NUM_MINUTES_PER_DAY;
i++)
Sta_WriteAccessMinute (i,NumClicksPerMin[i],MaxX);
Sta_WriteHitsMinute (i,NumClicksPerMin[i],MaxX);
/***** X axis *****/
HTM_TR_Begin (NULL);
@ -2491,7 +2536,7 @@ static void Sta_ShowAverageAccessesPerMinute (unsigned NumHits,MYSQL_RES *mysql_
/* First division (left) */
HTM_TD_Begin ("class=\"LM\" style=\"width:%upx;\"",
Sta_WIDTH_SEMIDIVISION_GRAPHIC);
HTM_IMG (Cfg_URL_ICON_PUBLIC,"ejexizq24x1.gif",NULL,
HTM_IMG (Cfg_URL_ICON_PUBLIC,"y30x1.png",NULL,
"style=\"display:block;width:%upx;height:1px;\"",
Sta_WIDTH_SEMIDIVISION_GRAPHIC);
HTM_TD_End ();
@ -2540,8 +2585,8 @@ static void Sta_WriteLabelsXAxisAccMin (double IncX,const char *Format)
i <= Sta_NUM_DIVISIONS_X;
i++, NumX += IncX)
{
HTM_TD_Begin ("colspan=\"2\" class=\"LOG CB\" style=\"width:%upx;\"",
Sta_WIDTH_DIVISION_GRAPHIC);
HTM_TD_Begin ("colspan=\"2\" class=\"CB LOG_%s\" style=\"width:%upx;\"",
The_GetSuffix (),Sta_WIDTH_DIVISION_GRAPHIC);
HTM_TxtF (Format,NumX);
HTM_TD_End ();
}
@ -2554,7 +2599,7 @@ static void Sta_WriteLabelsXAxisAccMin (double IncX,const char *Format)
#define Sta_WIDTH_GRAPHIC (Sta_WIDTH_DIVISION_GRAPHIC * Sta_NUM_DIVISIONS_X) // 60 * 10 = 600
static void Sta_WriteAccessMinute (unsigned Minute,double HitsNum,double MaxX)
static void Sta_WriteHitsMinute (unsigned Minute,double HitsNum,double MaxX)
{
unsigned BarWidth;
@ -2565,11 +2610,12 @@ static void Sta_WriteAccessMinute (unsigned Minute,double HitsNum,double MaxX)
if (!Minute)
{
// If minute 0
HTM_TD_Begin ("rowspan=\"30\" class=\"LOG LT\""
HTM_TD_Begin ("rowspan=\"30\" class=\"LT LOG_%s\""
" style=\"width:%upx;"
" background-image:url('%s/ejey24x30.gif');"
" background-image:url('%s/y30x30.png');"
" background-size:30px 30px;"
" background-repeat:repeat;\"",
The_GetSuffix (),
Sta_WIDTH_SEMIDIVISION_GRAPHIC,Cfg_URL_ICON_PUBLIC);
HTM_Txt ("00h");
HTM_TD_End ();
@ -2577,11 +2623,12 @@ static void Sta_WriteAccessMinute (unsigned Minute,double HitsNum,double MaxX)
else if (Minute == (Sta_NUM_MINUTES_PER_DAY - 30))
{
// If 23:30
HTM_TD_Begin ("rowspan=\"30\" class=\"LOG LB\""
HTM_TD_Begin ("rowspan=\"30\" class=\"LB LOG_%s\""
" style=\"width:%upx;"
" background-image:url('%s/ejey24x30.gif');"
" background-image:url('%s/y30x30.png');"
" background-size:30px 30px;"
" background-repeat:repeat;\"",
The_GetSuffix (),
Sta_WIDTH_SEMIDIVISION_GRAPHIC,Cfg_URL_ICON_PUBLIC);
HTM_Txt ("24h");
HTM_TD_End ();
@ -2589,11 +2636,12 @@ static void Sta_WriteAccessMinute (unsigned Minute,double HitsNum,double MaxX)
else if (!(Minute % 30) && (Minute % 60))
{
// If minute is multiple of 30 but not of 60 (i.e.: 30, 90, 150...)
HTM_TD_Begin ("rowspan=\"60\" class=\"LOG LM\""
HTM_TD_Begin ("rowspan=\"60\" class=\"LM LOG_%s\""
" style=\"width:%upx;"
" background-image:url('%s/ejey24x60.gif');"
" background-image:url('%s/y30x60.png');"
" background-size:30px 60px;"
" background-repeat:repeat;\"",
The_GetSuffix (),
Sta_WIDTH_SEMIDIVISION_GRAPHIC,Cfg_URL_ICON_PUBLIC);
HTM_TxtF ("%02uh",(Minute + 30) / 60);
HTM_TD_End ();
@ -2662,7 +2710,7 @@ static void Sta_ShowNumHitsPerAction (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LOG RT\"");
HTM_TD_Begin ("class=\"RT LOG_%s\"",The_GetSuffix ());
if (ActCod >= 0)
HTM_TxtF ("%s&nbsp;",Act_GetActionText (Act_FromActCodToAction[ActCod]));
else
@ -2715,7 +2763,7 @@ static void Sta_ShowNumHitsPerPlugin (Sta_CountType_t CountType,
/* Write the plugin */
if (sscanf (row[0],"%ld",&Plg.PlgCod) != 1)
Err_WrongPluginExit ();
HTM_TD_Begin ("class=\"LOG RT\"");
HTM_TD_Begin ("class=\"RT LOG_%s\"",The_GetSuffix ());
if (Plg_GetDataOfPluginByCod (&Plg))
HTM_Txt (Plg.Name);
else
@ -2770,7 +2818,7 @@ static void Sta_ShowNumHitsPerWSFunction (Sta_CountType_t CountType,
if (sscanf (row[0],"%ld",&FunCod) != 1)
Err_ShowErrorAndExit ("Wrong function code.");
HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TD_Begin ("class=\"LT LOG_%s\"",The_GetSuffix ());
HTM_TxtF ("%s&nbsp;",API_GetFunctionNameFromFunCod (FunCod));
HTM_TD_End ();
@ -2834,7 +2882,7 @@ static void Sta_ShowNumHitsPerBanner (Sta_CountType_t CountType,
if (sscanf (row[0],"%ld",&(Ban.BanCod)) != 1)
Err_WrongBannerExit ();
Ban_GetDataOfBannerByCod (&Ban);
HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TD_Begin ("class=\"LT LOG_%s\"",The_GetSuffix ());
HTM_A_Begin ("href=\"%s\" title=\"%s\" target=\"_blank\""
" class=\"DAT_%s\"",
Ban.WWW,
@ -2894,7 +2942,7 @@ static void Sta_ShowNumHitsPerCountry (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write ranking of this country */
HTM_TD_Begin ("class=\"LOG RM\"");
HTM_TD_Begin ("class=\"RM LOG_%s\"",The_GetSuffix ());
if (CtyCod > 0)
HTM_Unsigned (++Ranking);
HTM_NBSP ();
@ -2921,7 +2969,7 @@ static void Sta_WriteCountry (long CtyCod)
struct Cty_Countr Cty;
/***** Begin cell *****/
HTM_TD_Begin ("class=\"LOG LM\"");
HTM_TD_Begin ("class=\"LM LOG_%s\"",The_GetSuffix ());
if (CtyCod > 0) // Hit with a country selected
{
@ -2982,7 +3030,7 @@ static void Sta_ShowNumHitsPerInstitution (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write ranking of this institution */
HTM_TD_Begin ("class=\"LOG RT\"");
HTM_TD_Begin ("class=\"RT LOG_%s\"",The_GetSuffix ());
if (InsCod > 0)
HTM_Unsigned (++Ranking);
HTM_NBSP ();
@ -3016,7 +3064,8 @@ static void Sta_WriteInstit (long InsCod)
Ins_GetDataOfInstitByCod (&Ins);
/***** Title in cell *****/
HTM_TD_Begin ("class=\"LOG LM\" title=\"%s\"",Ins.FullName);
HTM_TD_Begin ("class=\"LM LOG_%s\" title=\"%s\"",
The_GetSuffix (),Ins.FullName);
/***** Form to go to institution *****/
Ins_DrawInstitLogoAndNameWithLink (&Ins,ActSeeInsInf,"CT");
@ -3024,7 +3073,7 @@ static void Sta_WriteInstit (long InsCod)
else // Hit with no institution selected
{
/***** No institution selected *****/
HTM_TD_Begin ("class=\"LOG LM\"");
HTM_TD_Begin ("class=\"LM LOG_%s\"",The_GetSuffix ());
HTM_Txt ("&nbsp;-&nbsp;");
}
@ -3072,7 +3121,7 @@ static void Sta_ShowNumHitsPerCenter (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write ranking of this center */
HTM_TD_Begin ("class=\"LOG RT\"");
HTM_TD_Begin ("class=\"RT LOG_%s\"",The_GetSuffix ());
if (CtrCod > 0)
HTM_Unsigned (++Ranking);
HTM_NBSP ();
@ -3106,7 +3155,8 @@ static void Sta_WriteCenter (long CtrCod)
Ctr_GetDataOfCenterByCod (&Ctr);
/***** Title in cell *****/
HTM_TD_Begin ("class=\"LOG LM\" title=\"%s\"",Ctr.FullName);
HTM_TD_Begin ("class=\"LM LOG_%s\" title=\"%s\"",
The_GetSuffix (),Ctr.FullName);
/***** Form to go to center *****/
Ctr_DrawCenterLogoAndNameWithLink (&Ctr,ActSeeCtrInf,"CT");
@ -3114,7 +3164,7 @@ static void Sta_WriteCenter (long CtrCod)
else // Hit with no center selected
{
/***** No center selected *****/
HTM_TD_Begin ("class=\"LOG LM\"");
HTM_TD_Begin ("class=\"LM LOG_%s\"",The_GetSuffix ());
HTM_Txt ("&nbsp;-&nbsp;");
}
@ -3162,7 +3212,7 @@ static void Sta_ShowNumHitsPerDegree (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write ranking of this degree */
HTM_TD_Begin ("class=\"LOG RT\"");
HTM_TD_Begin ("class=\"RT LOG_%s\"",The_GetSuffix ());
if (DegCod > 0)
HTM_Unsigned (++Ranking);
HTM_NBSP ();
@ -3196,7 +3246,8 @@ static void Sta_WriteDegree (long DegCod)
Deg_GetDataOfDegreeByCod (&Deg);
/***** Title in cell *****/
HTM_TD_Begin ("class=\"LOG LM\" title=\"%s\"",Deg.FullName);
HTM_TD_Begin ("class=\"LM LOG_%s\" title=\"%s\"",
The_GetSuffix (),Deg.FullName);
/***** Form to go to degree *****/
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf,"CT");
@ -3204,7 +3255,7 @@ static void Sta_WriteDegree (long DegCod)
else // Hit with no degree selected
{
/***** No degree selected *****/
HTM_TD_Begin ("class=\"LOG LM\"");
HTM_TD_Begin ("class=\"LM LOG_%s\"",The_GetSuffix ());
HTM_Txt ("&nbsp;-&nbsp;");
}
@ -3263,7 +3314,7 @@ static void Sta_ShowNumHitsPerCourse (Sta_CountType_t CountType,
HTM_TR_Begin (NULL);
/* Write ranking of this course */
HTM_TD_Begin ("class=\"LOG RT\"");
HTM_TD_Begin ("class=\"RT LOG_%s\"",The_GetSuffix ());
if (CrsOK)
HTM_Unsigned (++Ranking);
HTM_NBSP ();
@ -3273,7 +3324,7 @@ static void Sta_ShowNumHitsPerCourse (Sta_CountType_t CountType,
Sta_WriteDegree (Crs.DegCod);
/* Write degree year */
HTM_TD_Begin ("class=\"LOG CT\"");
HTM_TD_Begin ("class=\"CT LOG_%s\"",The_GetSuffix ());
if (CrsOK)
HTM_Txt (Txt_YEAR_OF_DEGREE[Crs.Year]);
else
@ -3282,7 +3333,7 @@ static void Sta_ShowNumHitsPerCourse (Sta_CountType_t CountType,
HTM_TD_End ();
/* Write course, including link */
HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TD_Begin ("class=\"LT LOG_%s\"",The_GetSuffix ());
if (CrsOK)
{
Frm_BeginFormGoTo (ActSeeCrsInf);
@ -3354,7 +3405,7 @@ static void Sta_DrawBarNumHits (char Color,
unsigned BarWidth;
char *Icon;
HTM_TD_Begin ("class=\"LOG LM\"");
HTM_TD_Begin ("class=\"LM LOG_%s\"",The_GetSuffix ());
if (HitsNum != 0.0)
{

View File

@ -1326,13 +1326,13 @@ const char *Txt_all_degrees =
#if L==1 // ca
"Totes les titulacions";
#elif L==2 // de
"all degrees"; // Need Übersetzung
"alle Abschl&uuml;sse";
#elif L==3 // en
"all degrees";
#elif L==4 // es
"todas las titulaciones";
#elif L==5 // fr
"tous les degr&eacute;s";
"tous les &eacute;tudes";
#elif L==6 // gn
"todas las titulaciones"; // Okoteve traducción
#elif L==7 // it
@ -5129,7 +5129,7 @@ const char *Txt_Congratulations_You_have_created_your_account_X_Now_Y_will_reque
" Vous serez alors en mesure de demander l'inscription &agrave; des mati&egrave;res."
" Si une mati&egrave;re ne existe pas,"
" vous pouvez le cr&eacute;er avant de demander l'inscription en elle"
" (la m&ecirc;me chose se applique aux institutions, centers et degr&eacute;s).";
" (la m&ecirc;me chose se applique aux institutions, centers et &eacute;tudes).";
#elif L==6 // gn
"&iexcl;Enhorabuena! Ha creado su cuenta <strong>@%s</strong>."
" Ahora %s le solicitar&aacute; algunos datos para completar su perfil."
@ -35572,7 +35572,7 @@ const char *Txt_ROLE_STATS[Sta_NUM_ROLES_STAT] =
#elif L==4 // es
"administradores de titulaciones"
#elif L==5 // fr
"administrateurs de degr&eacute;s"
"administrateurs d'&eacute;tudes"
#elif L==6 // gn
"administradores de titulaciones" // Okoteve traducción
#elif L==7 // it
@ -43749,13 +43749,13 @@ const char *Txt_STAT_DEGREE_PHOTO_SIZE[Pho_NUM_HOW_COMPUTE_PHOTO_SIZES] =
#elif L==4 // es
"igual para todas las titulaciones"
#elif L==5 // fr
"same for all degrees" // Besoin de traduction
"identique pour tous les &eacute;tudes"
#elif L==6 // gn
"igual para todas las titulaciones" // Okoteve traducción
#elif L==7 // it
"uguale per tutte le lauree"
#elif L==8 // pl
"same for all degrees" // Potrzebujesz tlumaczenie
"to samo dla wszystkich stopni"
#elif L==9 // pt
"mesmo para todos os graus"
#endif
@ -43807,42 +43807,42 @@ const char *Txt_STAT_DEGREE_PHOTO_ORDER[Pho_NUM_HOW_ORDER_DEGREES] =
,
[Pho_PROPORTIONAL_TO_PERCENT] =
#if L==1 // ca
"porcentaje de estudiantes con fotograf&iacute;a" // Necessita traduccio
"percentatge d'estudiants amb fotografia"
#elif L==2 // de
"percentage of students with photo" // Need Übersetzung
"Prozentsatz der Sch&uuml;ler mit Foto"
#elif L==3 // en
"percentage of students with photo"
#elif L==4 // es
"porcentaje de estudiantes con fotograf&iacute;a"
#elif L==5 // fr
"percentage of students with photo" // Besoin de traduction
"pourcentage d'&eacute;tudiants avec photo"
#elif L==6 // gn
"porcentaje de estudiantes con fotograf&iacute;a" // Okoteve traducción
#elif L==7 // it
"percentuale di studenti con foto"
#elif L==8 // pl
"percentage of students with photo" // Potrzebujesz tlumaczenie
"odsetek uczni&oacute;w ze zdj&eogon;ciem"
#elif L==9 // pt
"porcentagem de estudantes com foto"
#endif
,
[Pho_UNIQUE_SIZE] =
#if L==1 // ca
"nombre de titulaci&oacute;n" // Necessita traduccio
"nom de titulaci&oacute;"
#elif L==2 // de
"degree name" // Need Übersetzung
"Grad Name"
#elif L==3 // en
"degree name"
#elif L==4 // es
"nombre de titulaci&oacute;n"
#elif L==5 // fr
"degree name" // Besoin de traduction
"nom d'&eacute;tude"
#elif L==6 // gn
"nombre de titulaci&oacute;n" // Okoteve traducción
#elif L==7 // it
"nome laurea"
#elif L==8 // pl
"degree name" // Potrzebujesz tlumaczenie
"nazwa stopnia"
#elif L==9 // pt
"nome do grau"
#endif
@ -43852,7 +43852,7 @@ const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_COUNT_TYPES] =
{
[Sta_TOTAL_CLICKS] =
#if L==1 // ca
"N.&ordm; total de clics" // Necessita traduccio
"Nombre total de clics"
#elif L==2 // de
"Gesamtzahl der Klicks"
#elif L==3 // en
@ -43866,14 +43866,14 @@ const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"Numero totale di scatti"
#elif L==8 // pl
"Total number of clicks" // Potrzebujesz tlumaczenie
"Ca&lstrok;kowita liczba klikni&eogon;&cacute;"
#elif L==9 // pt
"N&uacute;mero total de cliques"
#endif
,
[Sta_DISTINCT_USRS] =
#if L==1 // ca
"N.&ordm; de usuarios distintos" // Necessita traduccio
"Nombre d'usuaris diferents"
#elif L==2 // de
"Anzahl der unterschiedlichen Benutzer"
#elif L==3 // en
@ -43887,14 +43887,14 @@ const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"Numero di utenti distinti"
#elif L==8 // pl
"Number of distinct users" // Potrzebujesz tlumaczenie
"Liczba r&oacute;&zdot;nych u&zdot;ytkownik&oacute;w"
#elif L==9 // pt
"N&uacute;mero de utilizadores diferentes"
#endif
,
[Sta_CLICKS_PER_USR] =
#if L==1 // ca
"N.&ordm; de clics por usuario" // Necessita traduccio
"Nombre de clics per usuari"
#elif L==2 // de
"Anzahl der Klicks pro Benutzer"
#elif L==3 // en
@ -43908,14 +43908,14 @@ const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"Numero di scatti per utente"
#elif L==8 // pl
"Number of clicks per user" // Potrzebujesz tlumaczenie
"Liczba klikni&eogon;&cacute; na u&zdot;ytkownika"
#elif L==9 // pt
"N&uacute;mero de cliques por utilizador"
#endif
,
[Sta_GENERATION_TIME] =
#if L==1 // ca
"Tiempo de generaci&oacute;n de p&aacute;gina" // Necessita traduccio
"Temps de generaci&oacute; de p&agrave;gina"
#elif L==2 // de
"Zeit zur Erzeugung der Seite"
#elif L==3 // en
@ -43929,14 +43929,14 @@ const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"Tempo per generare pagina"
#elif L==8 // pl
"Time to generate page" // Potrzebujesz tlumaczenie
"Czas wygenerowa&cacute; stron&eogon;"
#elif L==9 // pt
"Tempo para gerar p&aacute;gina"
#endif
,
[Sta_SEND_TIME] =
#if L==1 // ca
"Tiempo de env&iacute;o de p&aacute;gina" // Necessita traduccio
"Temps d'enviament de p&agrave;gina"
#elif L==2 // de
"Zeit, um die Seite zu senden"
#elif L==3 // en
@ -43950,7 +43950,7 @@ const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"Tempo d'invio della pagina"
#elif L==8 // pl
"Time to send page" // Potrzebujesz tlumaczenie
"Czas wys&lstrok;a&cacute; stron&eogon;"
#elif L==9 // pt
"Tempo para enviar a p&aacute;gina"
#endif
@ -43960,7 +43960,7 @@ const char *Txt_STAT_TYPE_COUNT_SMALL[Sta_NUM_COUNT_TYPES] =
{
[Sta_TOTAL_CLICKS] =
#if L==1 // ca
"n&ordm; total de clics" // Necessita traduccio
"nombre total de clics"
#elif L==2 // de
"Gesamtzahl der Klicks"
#elif L==3 // en
@ -43974,14 +43974,14 @@ const char *Txt_STAT_TYPE_COUNT_SMALL[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"numero totale di scatti"
#elif L==8 // pl
"total number of clicks" // Potrzebujesz tlumaczenie
"ca&lstrok;kowita liczba klikni&eogon;&cacute;"
#elif L==9 // pt
"n&uacute;mero total de cliques"
#endif
,
[Sta_DISTINCT_USRS] =
#if L==1 // ca
"n&ordm; de usuarios distintos" // Necessita traduccio
"nombre d'usuaris diferents"
#elif L==2 // de
"Anzahl der unterschiedliche Benutzer"
#elif L==3 // en
@ -43995,14 +43995,14 @@ const char *Txt_STAT_TYPE_COUNT_SMALL[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"numero di utenti distinti"
#elif L==8 // pl
"number of distinct users" // Potrzebujesz tlumaczenie
"liczba r&oacute;&zdot;nych u&zdot;ytkownik&oacute;w"
#elif L==9 // pt
"n&uacute;mero de utilizadores diferentes"
#endif
,
[Sta_CLICKS_PER_USR] =
#if L==1 // ca
"n&ordm; de clics por usuario" // Necessita traduccio
"nombre de clics per usuari"
#elif L==2 // de
"Anzahl der Klicks pro Benutzer"
#elif L==3 // en
@ -44016,14 +44016,14 @@ const char *Txt_STAT_TYPE_COUNT_SMALL[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"numero di scatti per utente"
#elif L==8 // pl
"number of clicks per user" // Potrzebujesz tlumaczenie
"liczba klikni&eogon;&cacute; na u&zdot;ytkownika"
#elif L==9 // pt
"n&uacute;mero de cliques por utilizador"
#endif
,
[Sta_GENERATION_TIME] =
#if L==1 // ca
"tiempo de generaci&oacute;n" // Necessita traduccio
"temps de generaci&oacute;"
#elif L==2 // de
"Zeit zur Erzeugung"
#elif L==3 // en
@ -44037,14 +44037,14 @@ const char *Txt_STAT_TYPE_COUNT_SMALL[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"tempo per generare"
#elif L==8 // pl
"time to generate" // Potrzebujesz tlumaczenie
"czas na wygenerowanie"
#elif L==9 // pt
"tempo para gerar"
#endif
,
[Sta_SEND_TIME] =
#if L==1 // ca
"tiempo de env&iacute;o" // Necessita traduccio
"temps d'enviament"
#elif L==2 // de
"Zeit, um Seite"
#elif L==3 // en
@ -44058,7 +44058,7 @@ const char *Txt_STAT_TYPE_COUNT_SMALL[Sta_NUM_COUNT_TYPES] =
#elif L==7 // it
"tempo d'invio"
#elif L==8 // pl
"time to send" // Potrzebujesz tlumaczenie
"czas wys&lstrok;a&cacute;"
#elif L==9 // pt
"Tempo para enviar"
#endif
@ -44187,7 +44187,7 @@ const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES] =
#elif L==7 // it
"Cartelle e file"
#elif L==8 // pl
"Folders and files" // Potrzebujesz tlumaczenie
"Foldery i pliki"
#elif L==9 // pt
"Diret&oacute;rios e arquivos"
#endif
@ -51737,7 +51737,7 @@ const char *Txt_There_are_no_centers_with_requests_for_degrees_to_be_confirmed =
" pendientes de confirmar.";
#elif L==5 // fr
"Il n'y a pas de centers"
" avec demandes de degr&eacute;s"
" avec demandes d'&eacute;tudes"
" &agrave; confirmer.";
#elif L==6 // gn
"No hay centros"
@ -51814,7 +51814,7 @@ const char *Txt_There_are_no_degrees_with_requests_for_courses_to_be_confirmed =
" con solicitudes de asignaturas"
" pendientes de confirmar.";
#elif L==5 // fr
"Il n'y a pas de degr&eacute;s"
"Il n'y a pas d'&eacute;tudes"
" avec demandes de cours"
" &agrave; confirmer.";
#elif L==6 // gn