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 */ a:hover /* Default ==> underlined */
{ {
text-decoration:underline; text-decoration:underline; opacity:1;
} }
/****************** Layout (the whole page with a background) ****************/ /****************** Layout (the whole page with a background) ****************/
@ -1673,7 +1673,6 @@ a:hover img.CENTER_PHOTO_SHOW
.BT_LINK:hover .BT_LINK:hover
{ {
cursor:pointer; cursor:pointer;
/* text-decoration:underline; */
} }
/****************************** Course program *******************************/ /****************************** Course program *******************************/
@ -3933,18 +3932,21 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
} }
/************************************* Log ***********************************/ /************************************* Log ***********************************/
.LOG .LOG_WHITE,
{ .LOG_GREY,
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; .LOG_PURPLE,
font-size:11pt; .LOG_BLUE,
color:#404040; .LOG_YELLOW,
} .LOG_PINK {color:#404040; font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; font-size:11pt;}
.LOG_R .LOG_DARK {color:#d0d0d0; font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; font-size:11pt;}
{
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; .LOG_R_WHITE,
font-size:11pt; .LOG_R_GREY,
color:red; .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 *****************************/ /***************************** Exam announcement *****************************/
/* Bottom space is used for signatures */ /* 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. TODO: Attach pdf files in multimedia.
*/ */
#define Log_PLATFORM_VERSION "SWAD 21.95.4 (2022-05-12)" #define Log_PLATFORM_VERSION "SWAD 21.95.5 (2022-05-12)"
#define CSS_FILE "swad21.95.4.css" #define CSS_FILE "swad21.95.5.css"
#define JS_FILE "swad21.92.js" #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: 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/ 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) 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 */ /* Email */
#define Cfg_AUTOMATIC_EMAIL_PASSWORD DONT_PUBLISH_SMTP_PASSWORD // Email user's password for automatic emails #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 */ /* About SWAD */
#define Cfg_ABOUT_SWAD_URL "https://github.com/acanas/swad-core/wiki/UserGuide.en" #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 *****/ /***** SWADroid advertisement *****/
HTM_DIV_Begin ("class=\"LEFT_RIGHT_CELL\""); HTM_DIV_Begin ("class=\"LEFT_RIGHT_CELL\"");
HTM_A_Begin ("href=\"https://play.google.com/store/apps/details?id=es.ugr.swad.swadroid\"" HTM_A_Begin ("href=\"%s\" target=\"_blank\" title=\"%s\"",
" target=\"_blank\" title=\"%s\"", Cfg_SWADROID_URL,
Txt_If_you_have_an_Android_device_try_SWADroid); 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\""); "class=\"SWADROID\"");
HTM_A_End (); HTM_A_End ();
HTM_DIV_End (); HTM_DIV_End ();

View File

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

View File

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