Version 21.70: Dec 15, 2021 Working on design of dark theme.

This commit is contained in:
acanas 2021-12-15 14:02:49 +01:00
parent 4112c3fa55
commit 849708bfa0
69 changed files with 999 additions and 828 deletions

View File

@ -283,7 +283,7 @@ a:hover /* Default ==> underlined */
} }
.HEAD_ROW_2_GREY .HEAD_ROW_2_GREY
{ {
background-color:#383838; background-color:#404040;
} }
.HEAD_ROW_2_PURPLE .HEAD_ROW_2_PURPLE
{ {
@ -2306,7 +2306,7 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
.FORM_IN_BLUE {color:#4d88a1; font-size:13pt;} .FORM_IN_BLUE {color:#4d88a1; font-size:13pt;}
.FORM_IN_YELLOW {color:#7c4d2a; font-size:13pt;} .FORM_IN_YELLOW {color:#7c4d2a; font-size:13pt;}
.FORM_IN_PINK {color:#4d88a1; font-size:13pt;} .FORM_IN_PINK {color:#4d88a1; font-size:13pt;}
.FORM_IN_DARK {color:#4d88a1; font-size:13pt;} .FORM_IN_DARK {color:#c0e0ff; font-size:13pt;}
/* Outside white box */ /* Outside white box */
.FORM_OUT_WHITE {color:#4d88a1; font-size:13pt;} .FORM_OUT_WHITE {color:#4d88a1; font-size:13pt;}
@ -2317,9 +2317,6 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
.FORM_OUT_PINK {color:#63474e; font-size:13pt;} .FORM_OUT_PINK {color:#63474e; font-size:13pt;}
.FORM_OUT_DARK {color:#c0e0ff; font-size:13pt;} .FORM_OUT_DARK {color:#c0e0ff; font-size:13pt;}
.BOLD {font-weight:bold;}
.NOWRAP {white-space:nowrap;}
/****************************** Placing of objects ***************************/ /****************************** Placing of objects ***************************/
.LT {text-align:left; vertical-align:top; } /* Left Top */ .LT {text-align:left; vertical-align:top; } /* Left Top */
.LM {text-align:left; vertical-align:middle;} /* Left Middle */ .LM {text-align:left; vertical-align:middle;} /* Left Middle */
@ -2331,13 +2328,20 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
.RM {text-align:right; vertical-align:middle;} /* Right Middle */ .RM {text-align:right; vertical-align:middle;} /* Right Middle */
.RB {text-align:right; vertical-align:bottom;} /* Right Bottom */ .RB {text-align:right; vertical-align:bottom;} /* Right Bottom */
/***************** Colors used in headers,backgrounds,etc. *****************/ /***************** Colors used in headers, backgrounds, etc. *****************/
.COLOR0 {background-color:#F4F2EA;} .COLOR0 {background-color:#F4F2EA;}
.COLOR1 {background-color:#FBFAF7;} .COLOR1 {background-color:#FBFAF7;}
.LIGHT_GREEN {background-color:#C0FF40;} .LIGHT_GREEN {background-color:#C0FF40;}
.LIGHT_BLUE {background-color:#DDECF1;}
.VERY_LIGHT_BLUE {background-color:#EAF3F6;} .VERY_LIGHT_BLUE {background-color:#EAF3F6;}
.BG_HIGHLIGHT_WHITE {background-color:#ddecf1;}
.BG_HIGHLIGHT_GREY {background-color:#ddecf1;}
.BG_HIGHLIGHT_PURPLE {background-color:#ddecf1;}
.BG_HIGHLIGHT_BLUE {background-color:#ddecf1;}
.BG_HIGHLIGHT_YELLOW {background-color:#ddecf1;}
.BG_HIGHLIGHT_PINK {background-color:#ddecf1;}
.BG_HIGHLIGHT_DARK {background-color:#707070;}
/********************************* Course info *******************************/ /********************************* Course info *******************************/
#crs_info #crs_info
{ {
@ -2458,29 +2462,35 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
.T2 {color:#202020; font-size:13pt;} .T2 {color:#202020; font-size:13pt;}
.T3 {color:#202020; font-size:12pt;} .T3 {color:#202020; font-size:12pt;}
.DAT_WHITE {color:#404040; font-size:13pt;} .DAT_WHITE {color:#404040; font-size:13pt;}
.DAT_GREY {color:#404040; font-size:13pt;} .DAT_GREY {color:#404040; font-size:13pt;}
.DAT_PURPLE {color:#404040; font-size:13pt;} .DAT_PURPLE {color:#404040; font-size:13pt;}
.DAT_BLUE {color:#404040; font-size:13pt;} .DAT_BLUE {color:#404040; font-size:13pt;}
.DAT_YELLOW {color:#404040; font-size:13pt;} .DAT_YELLOW {color:#404040; font-size:13pt;}
.DAT_PINK {color:#404040; font-size:13pt;} .DAT_PINK {color:#404040; font-size:13pt;}
.DAT_DARK {color:#d0d0d0; font-size:13pt;} .DAT_DARK {color:#d0d0d0; font-size:13pt;}
.DAT_N_WHITE {color:black; font-size:13pt;} .DAT_STRONG_WHITE {color:black; font-size:13pt;}
.DAT_N_GREY {color:black; font-size:13pt;} .DAT_STRONG_GREY {color:black; font-size:13pt;}
.DAT_N_PURPLE {color:black; font-size:13pt;} .DAT_STRONG_PURPLE {color:black; font-size:13pt;}
.DAT_N_BLUE {color:black; font-size:13pt;} .DAT_STRONG_BLUE {color:black; font-size:13pt;}
.DAT_N_YELLOW {color:black; font-size:13pt;} .DAT_STRONG_YELLOW {color:black; font-size:13pt;}
.DAT_N_PINK {color:black; font-size:13pt;} .DAT_STRONG_PINK {color:black; font-size:13pt;}
.DAT_N_DARK {color:white; font-size:13pt;} .DAT_STRONG_DARK {color:white; font-size:13pt;}
.DAT_LIGHT_WHITE {color:#a0a0a0; font-size:13pt;}
.DAT_LIGHT_GREY {color:#a0a0a0; font-size:13pt;}
.DAT_LIGHT_PURPLE {color:#a0a0a0; font-size:13pt;}
.DAT_LIGHT_BLUE {color:#a0a0a0; font-size:13pt;}
.DAT_LIGHT_YELLOW {color:#a0a0a0; font-size:13pt;}
.DAT_LIGHT_PINK {color:#a0a0a0; font-size:13pt;}
.DAT_LIGHT_DARK {color:#909090; font-size:13pt;}
.DAT_NOBR {color:#404040; font-size:13pt; white-space:nowrap;}
.DAT_BOLD {color:#404040; font-size:13pt; font-weight:bold;}
.DAT_GREEN {color:#246600; font-size:13pt;} .DAT_GREEN {color:#246600; font-size:13pt;}
.DAT_RED {color:#660000; font-size:13pt;} .DAT_RED {color:#660000; font-size:13pt;}
.DAT_LIGHT {color:#A0A0A0; font-size:13pt;}
.DAT_NOBR_N {color:black; font-size:13pt; white-space:nowrap;} .NOWRAP {white-space:nowrap;}
.DAT_N_BOLD {color:black; font-size:13pt; font-weight:bold;} .BOLD {font-weight:bold;}
/*********************** Line in top part of a table row *********************/ /*********************** Line in top part of a table row *********************/
.LINE_TOP .LINE_TOP

View File

@ -577,7 +577,7 @@ static void ID_ShowFormChangeUsrID (bool ItsMe,bool IShouldFillInID)
HTM_SPAN_Begin ("class=\"%s\" title=\"%s\"", HTM_SPAN_Begin ("class=\"%s\" title=\"%s\"",
UsrDat->IDs.List[NumID].Confirmed ? "USR_ID_C" : UsrDat->IDs.List[NumID].Confirmed ? "USR_ID_C" :
"USR_ID_NC", "USR_ID_NC",
Str_BuildStringStr (UsrDat->IDs.List[NumID].Confirmed ? Txt_ID_X_confirmed : Str_BuildString (UsrDat->IDs.List[NumID].Confirmed ? Txt_ID_X_confirmed :
Txt_ID_X_not_confirmed, Txt_ID_X_not_confirmed,
UsrDat->IDs.List[NumID].ID)); UsrDat->IDs.List[NumID].ID));
Str_FreeStrings (); Str_FreeStrings ();

View File

@ -272,7 +272,7 @@ void Acc_CheckIfEmptyAccountExists (void)
static void Acc_WriteRowEmptyAccount (unsigned NumUsr,const char *ID,struct UsrData *UsrDat) static void Acc_WriteRowEmptyAccount (unsigned NumUsr,const char *ID,struct UsrData *UsrDat)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_ID; extern const char *Txt_ID;
extern const char *Txt_Name; extern const char *Txt_Name;
extern const char *Txt_yet_unnamed; extern const char *Txt_yet_unnamed;
@ -289,7 +289,7 @@ static void Acc_WriteRowEmptyAccount (unsigned NumUsr,const char *ID,struct UsrD
/***** Write user's ID and name *****/ /***** Write user's ID and name *****/
HTM_TD_Begin ("class=\"%s LT COLOR%u\"", HTM_TD_Begin ("class=\"%s LT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme], The_ClassDatStrong[Gbl.Prefs.Theme],
Gbl.RowEvenOdd); Gbl.RowEvenOdd);
HTM_TxtF ("%s: %s",Txt_ID,ID); HTM_TxtF ("%s: %s",Txt_ID,ID);
HTM_BR (); HTM_BR ();
@ -438,7 +438,7 @@ void Acc_ShowFormGoToRequestNewAccount (void)
extern const char *Txt_Create_account; extern const char *Txt_Create_account;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_New_on_PLATFORM_Sign_up, Box_BoxBegin (NULL,Str_BuildString (Txt_New_on_PLATFORM_Sign_up,
Cfg_PLATFORM_SHORT_NAME), Cfg_PLATFORM_SHORT_NAME),
NULL,NULL, NULL,NULL,
Hlp_PROFILE_SignUp,Box_NOT_CLOSABLE); Hlp_PROFILE_SignUp,Box_NOT_CLOSABLE);

View File

@ -386,12 +386,12 @@ void Agd_ShowUsrAgenda (void)
/***** Begin box *****/ /***** Begin box *****/
if (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod)) if (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod))
Box_BoxBegin ("100%",Str_BuildStringStr (Txt_Public_agenda_USER, Box_BoxBegin ("100%",Str_BuildString (Txt_Public_agenda_USER,
Gbl.Usrs.Me.UsrDat.FullName), Gbl.Usrs.Me.UsrDat.FullName),
Agd_PutIconsMyPublicAgenda,Gbl.Usrs.Me.UsrDat.EnUsrCod, Agd_PutIconsMyPublicAgenda,Gbl.Usrs.Me.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE); Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
else else
Box_BoxBegin ("100%",Str_BuildStringStr (Txt_Public_agenda_USER, Box_BoxBegin ("100%",Str_BuildString (Txt_Public_agenda_USER,
Gbl.Usrs.Other.UsrDat.FullName), Gbl.Usrs.Other.UsrDat.FullName),
Agd_PutIconsOtherPublicAgenda,Gbl.Usrs.Other.UsrDat.EnUsrCod, Agd_PutIconsOtherPublicAgenda,Gbl.Usrs.Other.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE); Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
@ -438,12 +438,12 @@ void Agd_ShowOtherAgendaAfterLogIn (void)
/***** Begin box *****/ /***** Begin box *****/
if (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod)) if (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod))
Box_BoxBegin ("100%",Str_BuildStringStr (Txt_Public_agenda_USER, Box_BoxBegin ("100%",Str_BuildString (Txt_Public_agenda_USER,
Gbl.Usrs.Me.UsrDat.FullName), Gbl.Usrs.Me.UsrDat.FullName),
Agd_PutIconToViewEditMyFullAgenda,Gbl.Usrs.Me.UsrDat.EnUsrCod, Agd_PutIconToViewEditMyFullAgenda,Gbl.Usrs.Me.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE); Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
else else
Box_BoxBegin ("100%",Str_BuildStringStr (Txt_Public_agenda_USER, Box_BoxBegin ("100%",Str_BuildString (Txt_Public_agenda_USER,
Gbl.Usrs.Other.UsrDat.FullName), Gbl.Usrs.Other.UsrDat.FullName),
Agd_PutIconsOtherPublicAgenda,Gbl.Usrs.Other.UsrDat.EnUsrCod, Agd_PutIconsOtherPublicAgenda,Gbl.Usrs.Other.UsrDat.EnUsrCod,
Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE); Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
@ -771,6 +771,7 @@ static void Agd_ShowOneEvent (struct Agd_Agenda *Agenda,
extern const char *Dat_TimeStatusClassVisible[Dat_NUM_TIME_STATUS]; extern const char *Dat_TimeStatusClassVisible[Dat_NUM_TIME_STATUS];
extern const char *Dat_TimeStatusClassHidden[Dat_NUM_TIME_STATUS]; extern const char *Dat_TimeStatusClassHidden[Dat_NUM_TIME_STATUS];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
char *Anchor = NULL; char *Anchor = NULL;
static unsigned UniqueId = 0; static unsigned UniqueId = 0;
char *Id; char *Id;
@ -857,7 +858,7 @@ static void Agd_ShowOneEvent (struct Agd_Agenda *Agenda,
/* Text of the event */ /* Text of the event */
HTM_TD_Begin ("colspan=\"2\" class=\"LT COLOR%u\"",Gbl.RowEvenOdd); HTM_TD_Begin ("colspan=\"2\" class=\"LT COLOR%u\"",Gbl.RowEvenOdd);
HTM_DIV_Begin ("class=\"PAR %s\"",AgdEvent.Hidden ? "DAT_LIGHT" : HTM_DIV_Begin ("class=\"PAR %s\"",AgdEvent.Hidden ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]); The_ClassDat[Gbl.Prefs.Theme]);
Agd_DB_GetEventTxt (&AgdEvent,Txt); Agd_DB_GetEventTxt (&AgdEvent,Txt);
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
@ -1616,7 +1617,7 @@ void Agd_PrintAgdQRCode (void)
extern const char *Txt_Where_s_USER; extern const char *Txt_Where_s_USER;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Where_s_USER, Box_BoxBegin (NULL,Str_BuildString (Txt_Where_s_USER,
Gbl.Usrs.Me.UsrDat.FullName), Gbl.Usrs.Me.UsrDat.FullName),
NULL,NULL, NULL,NULL,
NULL,Box_NOT_CLOSABLE); NULL,Box_NOT_CLOSABLE);

View File

@ -394,6 +394,7 @@ static void Asg_ShowOneAssignment (struct Asg_Assignments *Assignments,
long AsgCod,bool PrintView) long AsgCod,bool PrintView)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
char *Anchor = NULL; char *Anchor = NULL;
static unsigned UniqueId = 0; static unsigned UniqueId = 0;
char *Id; char *Id;
@ -503,7 +504,7 @@ static void Asg_ShowOneAssignment (struct Asg_Assignments *Assignments,
if (Gbl.Crs.Grps.NumGrps) if (Gbl.Crs.Grps.NumGrps)
Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (&Asg); Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (&Asg);
HTM_DIV_Begin ("class=\"PAR %s\"",Asg.Hidden ? "DAT_LIGHT" : HTM_DIV_Begin ("class=\"PAR %s\"",Asg.Hidden ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]); The_ClassDat[Gbl.Prefs.Theme]);
HTM_Txt (Txt); HTM_Txt (Txt);
HTM_DIV_End (); HTM_DIV_End ();

View File

@ -448,6 +448,7 @@ static void Att_ShowOneAttEvent (struct Att_Events *Events,
bool ShowOnlyThisAttEventComplete) bool ShowOnlyThisAttEventComplete)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_View_event; extern const char *Txt_View_event;
char *Anchor = NULL; char *Anchor = NULL;
static unsigned UniqueId = 0; static unsigned UniqueId = 0;
@ -561,7 +562,7 @@ static void Att_ShowOneAttEvent (struct Att_Events *Events,
if (Gbl.Crs.Grps.NumGrps) if (Gbl.Crs.Grps.NumGrps)
Att_GetAndWriteNamesOfGrpsAssociatedToAttEvent (Event); Att_GetAndWriteNamesOfGrpsAssociatedToAttEvent (Event);
HTM_DIV_Begin ("class=\"%s\"",Event->Hidden ? "DAT_LIGHT" : HTM_DIV_Begin ("class=\"%s\"",Event->Hidden ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]); The_ClassDat[Gbl.Prefs.Theme]);
HTM_Txt (Description); HTM_Txt (Description);
HTM_DIV_End (); HTM_DIV_End ();
@ -1684,7 +1685,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
struct Att_Event *Event) struct Att_Event *Event)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
static const char *ClassPhoto[Pho_NUM_SHAPES] = static const char *ClassPhoto[Pho_NUM_SHAPES] =
{ {
[Pho_SHAPE_CIRCLE ] = "PHOTOC45x60", [Pho_SHAPE_CIRCLE ] = "PHOTOC45x60",
@ -1751,7 +1752,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
/***** Write number of student in the list *****/ /***** Write number of student in the list *****/
HTM_TD_Begin ("class=\"%s RT COLOR%u\"", HTM_TD_Begin ("class=\"%s RT COLOR%u\"",
UsrDat->Accepted ? The_ClassDatN[Gbl.Prefs.Theme] : UsrDat->Accepted ? The_ClassDatStrong[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme], The_ClassDat[Gbl.Prefs.Theme],
Gbl.RowEvenOdd); Gbl.RowEvenOdd);
HTM_Unsigned (NumUsr); HTM_Unsigned (NumUsr);
@ -1929,7 +1930,7 @@ void Att_RegisterMeAsStdInAttEvent (void)
/***** Get comments for this student *****/ /***** Get comments for this student *****/
Present = Att_CheckIfUsrIsPresentInAttEventAndGetComments (Event.AttCod,Gbl.Usrs.Me.UsrDat.UsrCod, Present = Att_CheckIfUsrIsPresentInAttEventAndGetComments (Event.AttCod,Gbl.Usrs.Me.UsrDat.UsrCod,
CommentStd,CommentTch); CommentStd,CommentTch);
Par_GetParToHTML (Str_BuildStringStr ("CommentStd%s", Par_GetParToHTML (Str_BuildString ("CommentStd%s",
Gbl.Usrs.Me.UsrDat.EnUsrCod), Gbl.Usrs.Me.UsrDat.EnUsrCod),
CommentStd,Cns_MAX_BYTES_TEXT); CommentStd,Cns_MAX_BYTES_TEXT);
Str_FreeStrings (); Str_FreeStrings ();
@ -2046,7 +2047,7 @@ void Att_RegisterStudentsInAttEvent (void)
{ {
/***** Get comments for this student *****/ /***** Get comments for this student *****/
Att_CheckIfUsrIsPresentInAttEventAndGetComments (Event.AttCod,Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].UsrCod,CommentStd,CommentTch); Att_CheckIfUsrIsPresentInAttEventAndGetComments (Event.AttCod,Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].UsrCod,CommentStd,CommentTch);
Par_GetParToHTML (Str_BuildStringStr ("CommentTch%s", Par_GetParToHTML (Str_BuildString ("CommentTch%s",
Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].EnUsrCod), Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumUsr].EnUsrCod),
CommentTch,Cns_MAX_BYTES_TEXT); CommentTch,Cns_MAX_BYTES_TEXT);
Str_FreeStrings (); Str_FreeStrings ();
@ -2798,7 +2799,7 @@ static void Att_ListUsrsAttendanceTable (const struct Att_Events *Events,
unsigned NumUsrsInList, unsigned NumUsrsInList,
long *LstSelectedUsrCods) long *LstSelectedUsrCods)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Number_of_users; extern const char *Txt_Number_of_users;
struct UsrData UsrDat; struct UsrData UsrDat;
unsigned NumUsr; unsigned NumUsr;
@ -2844,7 +2845,7 @@ static void Att_ListUsrsAttendanceTable (const struct Att_Events *Events,
HTM_TD_Begin ("colspan=\"%u\" class=\"%s LINE_TOP RM\"", HTM_TD_Begin ("colspan=\"%u\" class=\"%s LINE_TOP RM\"",
Gbl.Usrs.Listing.WithPhotos ? 4 : Gbl.Usrs.Listing.WithPhotos ? 4 :
3, 3,
The_ClassDatN[Gbl.Prefs.Theme]); The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Number_of_users); HTM_TxtColon (Txt_Number_of_users);
HTM_TD_End (); HTM_TD_End ();
@ -2854,7 +2855,7 @@ static void Att_ListUsrsAttendanceTable (const struct Att_Events *Events,
if (Events->Lst[NumAttEvent].Selected) if (Events->Lst[NumAttEvent].Selected)
{ {
HTM_TD_Begin ("class=\"%s LINE_TOP RM\"", HTM_TD_Begin ("class=\"%s LINE_TOP RM\"",
The_ClassDatN[Gbl.Prefs.Theme]); The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (Events->Lst[NumAttEvent].NumStdsFromList); HTM_Unsigned (Events->Lst[NumAttEvent].NumStdsFromList);
HTM_TD_End (); HTM_TD_End ();
@ -2862,7 +2863,7 @@ static void Att_ListUsrsAttendanceTable (const struct Att_Events *Events,
} }
HTM_TD_Begin ("class=\"%s LINE_TOP RM\"", HTM_TD_Begin ("class=\"%s LINE_TOP RM\"",
The_ClassDatN[Gbl.Prefs.Theme]); The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (Total); HTM_Unsigned (Total);
HTM_TD_End (); HTM_TD_End ();
@ -2931,7 +2932,7 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
unsigned NumUsr,struct UsrData *UsrDat) unsigned NumUsr,struct UsrData *UsrDat)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
static const char *ClassPhoto[Pho_NUM_SHAPES] = static const char *ClassPhoto[Pho_NUM_SHAPES] =
{ {
[Pho_SHAPE_CIRCLE ] = "PHOTOC21x28", [Pho_SHAPE_CIRCLE ] = "PHOTOC21x28",
@ -2947,7 +2948,7 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"%s RM COLOR%u\"", HTM_TD_Begin ("class=\"%s RM COLOR%u\"",
UsrDat->Accepted ? The_ClassDatN[Gbl.Prefs.Theme] : UsrDat->Accepted ? The_ClassDatStrong[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme], The_ClassDat[Gbl.Prefs.Theme],
Gbl.RowEvenOdd); Gbl.RowEvenOdd);
HTM_Unsigned (NumUsr + 1); HTM_Unsigned (NumUsr + 1);
@ -3004,7 +3005,7 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
/***** Last column with the number of times this user is present *****/ /***** Last column with the number of times this user is present *****/
HTM_TD_Begin ("class=\"%s RM COLOR%u\"", HTM_TD_Begin ("class=\"%s RM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_Unsigned (NumTimesPresent); HTM_Unsigned (NumTimesPresent);
HTM_TD_End (); HTM_TD_End ();
@ -3093,7 +3094,7 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
unsigned NumUsr,struct UsrData *UsrDat) unsigned NumUsr,struct UsrData *UsrDat)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Student_comment; extern const char *Txt_Student_comment;
extern const char *Txt_Teachers_comment; extern const char *Txt_Teachers_comment;
static const char *ClassPhoto[Pho_NUM_SHAPES] = static const char *ClassPhoto[Pho_NUM_SHAPES] =
@ -3117,7 +3118,7 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"%s RM COLOR%u\"", HTM_TD_Begin ("class=\"%s RM COLOR%u\"",
UsrDat->Accepted ? The_ClassDatN[Gbl.Prefs.Theme] : UsrDat->Accepted ? The_ClassDatStrong[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme], The_ClassDat[Gbl.Prefs.Theme],
Gbl.RowEvenOdd); Gbl.RowEvenOdd);
HTM_TxtF ("%u:",NumUsr); HTM_TxtF ("%u:",NumUsr);
@ -3137,7 +3138,7 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
/***** Write user's ID ******/ /***** Write user's ID ******/
HTM_TD_Begin ("class=\"%s LM\"", HTM_TD_Begin ("class=\"%s LM\"",
UsrDat->Accepted ? The_ClassDatN[Gbl.Prefs.Theme] : UsrDat->Accepted ? The_ClassDatStrong[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]); The_ClassDat[Gbl.Prefs.Theme]);
ID_WriteUsrIDs (UsrDat,NULL); ID_WriteUsrIDs (UsrDat,NULL);
HTM_TD_End (); HTM_TD_End ();

View File

@ -403,6 +403,7 @@ void Ban_PutIconToViewBanners (void)
static void Ban_ListBannersForEdition (struct Ban_Banners *Banners) static void Ban_ListBannersForEdition (struct Ban_Banners *Banners)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
unsigned NumBan; unsigned NumBan;
struct Ban_Banner *Ban; struct Ban_Banner *Ban;
char *Anchor = NULL; char *Anchor = NULL;
@ -448,7 +449,7 @@ static void Ban_ListBannersForEdition (struct Ban_Banners *Banners)
/* Banner code */ /* Banner code */
HTM_TD_Begin ("class=\"%s RM\"", HTM_TD_Begin ("class=\"%s RM\"",
Ban->Hidden ? "DAT_LIGHT" : Ban->Hidden ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]); The_ClassDat[Gbl.Prefs.Theme]);
HTM_ARTICLE_Begin (Anchor); HTM_ARTICLE_Begin (Anchor);
HTM_Long (Ban->BanCod); HTM_Long (Ban->BanCod);

View File

@ -6881,6 +6881,7 @@ static void Brw_PutFormToCreateAFolder (const char FileNameToShow[NAME_MAX + 1])
static void Brw_PutFormToUploadFilesUsingDropzone (const char *FileNameToShow) static void Brw_PutFormToUploadFilesUsingDropzone (const char *FileNameToShow)
{ {
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_Upload_files; extern const char *Txt_Upload_files;
extern const char *Txt_or_you_can_upload_new_files_to_the_folder_X; extern const char *Txt_or_you_can_upload_new_files_to_the_folder_X;
extern const char *Txt_Select_one_or_more_files_from_your_computer_or_drag_and_drop_here; extern const char *Txt_Select_one_or_more_files_from_your_computer_or_drag_and_drop_here;
@ -6914,7 +6915,7 @@ static void Brw_PutFormToUploadFilesUsingDropzone (const char *FileNameToShow)
Brw_PutImplicitParamsFileBrowser (&Gbl.FileBrowser.FilFolLnk); Brw_PutImplicitParamsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
HTM_DIV_Begin ("class=\"dz-message\""); HTM_DIV_Begin ("class=\"dz-message\"");
HTM_SPAN_Begin ("class=\"DAT_LIGHT\""); HTM_SPAN_Begin ("class=\"%s\"",The_ClassDatLight[Gbl.Prefs.Theme]);
HTM_Txt (Txt_Select_one_or_more_files_from_your_computer_or_drag_and_drop_here); HTM_Txt (Txt_Select_one_or_more_files_from_your_computer_or_drag_and_drop_here);
HTM_SPAN_End (); HTM_SPAN_End ();
HTM_DIV_End (); HTM_DIV_End ();
@ -8558,7 +8559,7 @@ static void Brw_WriteSmallLinkToDownloadFile (const char *URL,
/* Begin link */ /* Begin link */
HTM_BUTTON_SUBMIT_Begin (Txt_Check_marks_in_the_file, HTM_BUTTON_SUBMIT_Begin (Txt_Check_marks_in_the_file,
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
@ -9809,9 +9810,10 @@ void Brw_ListDocsFound (MYSQL_RES **mysql_res,unsigned NumDocs,
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of documents found */ /* Number of documents found */
Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumDocs, Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
(NumDocs == 1) ? TitleSingular : NumDocs,
TitlePlural), (NumDocs == 1) ? TitleSingular :
TitlePlural),
NULL,NULL, NULL,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings (); Str_FreeStrings ();
@ -9868,8 +9870,9 @@ void Brw_ListDocsFound (MYSQL_RES **mysql_res,unsigned NumDocs,
static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Documents_area; extern const char *Txt_Documents_area;
extern const char *Txt_Teachers_files_area; extern const char *Txt_Teachers_files_area;
extern const char *Txt_Shared_files_area; extern const char *Txt_Shared_files_area;
@ -9934,8 +9937,8 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
/***** Set row color *****/ /***** Set row color *****/
BgColor = (CrsCod > 0 && BgColor = (CrsCod > 0 &&
CrsCod == Gbl.Hierarchy.Crs.CrsCod) ? "LIGHT_BLUE" : CrsCod == Gbl.Hierarchy.Crs.CrsCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -9952,7 +9955,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
Frm_BeginFormGoTo (ActSeeInsInf); Frm_BeginFormGoTo (ActSeeInsInf);
Deg_PutParamDegCod (InsCod); Deg_PutParamDegCod (InsCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (InsShortName), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (InsShortName),
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
Lgo_DrawLogo (HieLvl_INS,InsCod,InsShortName,20,"BT_LINK LT",true); Lgo_DrawLogo (HieLvl_INS,InsCod,InsShortName,20,"BT_LINK LT",true);
@ -9969,7 +9972,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
Frm_BeginFormGoTo (ActSeeCtrInf); Frm_BeginFormGoTo (ActSeeCtrInf);
Deg_PutParamDegCod (CtrCod); Deg_PutParamDegCod (CtrCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (CtrShortName), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (CtrShortName),
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
Lgo_DrawLogo (HieLvl_CTR,CtrCod,CtrShortName,20,"LT",true); Lgo_DrawLogo (HieLvl_CTR,CtrCod,CtrShortName,20,"LT",true);
@ -9986,7 +9989,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
Frm_BeginFormGoTo (ActSeeDegInf); Frm_BeginFormGoTo (ActSeeDegInf);
Deg_PutParamDegCod (DegCod); Deg_PutParamDegCod (DegCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (DegShortName), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (DegShortName),
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
Lgo_DrawLogo (HieLvl_DEG,DegCod,DegShortName,20,"LT",true); Lgo_DrawLogo (HieLvl_DEG,DegCod,DegShortName,20,"LT",true);
@ -10003,7 +10006,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
Frm_BeginFormGoTo (ActSeeCrsInf); Frm_BeginFormGoTo (ActSeeCrsInf);
Crs_PutParamCrsCod (CrsCod); Crs_PutParamCrsCod (CrsCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (CrsShortName), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (CrsShortName),
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_Txt (CrsShortName); HTM_Txt (CrsShortName);
@ -10069,7 +10072,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
/***** Write file name using path (row[1]) *****/ /***** Write file name using path (row[1]) *****/
HTM_TD_Begin ("class=\"%s LT %s\"", HTM_TD_Begin ("class=\"%s LT %s\"",
The_ClassDatN[Gbl.Prefs.Theme],BgColor); The_ClassDatStrong[Gbl.Prefs.Theme],BgColor);
/* Begin form */ /* Begin form */
Action = Brw_ActReqDatFile[Brw_FileBrowserForFoundDocs[FileMetadata.FileBrowser]]; Action = Brw_ActReqDatFile[Brw_FileBrowserForFoundDocs[FileMetadata.FileBrowser]];
@ -10110,7 +10113,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
/* File or folder icon */ /* File or folder icon */
HTM_BUTTON_SUBMIT_Begin (FileNameToShow, HTM_BUTTON_SUBMIT_Begin (FileNameToShow,
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDatN[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDatStrong[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
if (FileMetadata.FilFolLnk.Type == Brw_IS_FOLDER) if (FileMetadata.FilFolLnk.Type == Brw_IS_FOLDER)

View File

@ -132,7 +132,7 @@ void Cal_ShowFormToSelFirstDayOfWeek (Act_Action_t Action,
FuncParams (Args); FuncParams (Args);
snprintf (Icon,sizeof (Icon),"first-day-of-week-%u.png",FirstDayOfWeek); snprintf (Icon,sizeof (Icon),"first-day-of-week-%u.png",FirstDayOfWeek);
Ico_PutSettingIconLink (Icon, Ico_PutSettingIconLink (Icon,
Str_BuildStringStr (Txt_First_day_of_the_week_X, Str_BuildString (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek])); Txt_DAYS_SMALL[FirstDayOfWeek]));
Str_FreeStrings (); Str_FreeStrings ();
Frm_EndForm (); Frm_EndForm ();

View File

@ -105,6 +105,7 @@ static void Ctr_FormToGoToMap (struct Ctr_Center *Ctr);
void Ctr_SeeCtrWithPendingDegs (void) void Ctr_SeeCtrWithPendingDegs (void)
{ {
extern const char *Hlp_SYSTEM_Pending; extern const char *Hlp_SYSTEM_Pending;
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_Centers_with_pending_degrees; extern const char *Txt_Centers_with_pending_degrees;
extern const char *Txt_Center; extern const char *Txt_Center;
@ -143,7 +144,7 @@ void Ctr_SeeCtrWithPendingDegs (void)
/* Get center code (row[0]) */ /* Get center code (row[0]) */
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]); Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]);
BgColor = (Ctr.CtrCod == Gbl.Hierarchy.Ctr.CtrCod) ? "LIGHT_BLUE" : BgColor = (Ctr.CtrCod == Gbl.Hierarchy.Ctr.CtrCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/* Get data of center */ /* Get data of center */
@ -154,7 +155,10 @@ void Ctr_SeeCtrWithPendingDegs (void)
HTM_TD_Begin ("class=\"LM %s\"",BgColor); HTM_TD_Begin ("class=\"LM %s\"",BgColor);
Ctr_DrawCenterLogoAndNameWithLink (&Ctr,ActSeeDeg, Ctr_DrawCenterLogoAndNameWithLink (&Ctr,ActSeeDeg,
"BT_LINK DAT_NOBR","CM"); Str_BuildString ("BT_LINK %s NOWRAP",
The_ClassDat[Gbl.Prefs.Theme]),
"CM");
Str_FreeStrings ();
HTM_TD_End (); HTM_TD_End ();
/* Number of pending degrees (row[1]) */ /* Number of pending degrees (row[1]) */
@ -246,7 +250,7 @@ static void Ctr_ListCenters (void)
unsigned NumCtr; unsigned NumCtr;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Centers_of_INSTITUTION_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Centers_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName), Gbl.Hierarchy.Ins.FullName),
Ctr_PutIconsListingCenters,NULL, Ctr_PutIconsListingCenters,NULL,
Hlp_INSTITUTION_Centers,Box_NOT_CLOSABLE); Hlp_INSTITUTION_Centers,Box_NOT_CLOSABLE);
@ -327,8 +331,10 @@ static void Ctr_PutIconToEditCenters (void)
static void Ctr_ListOneCenterForSeeing (struct Ctr_Center *Ctr,unsigned NumCtr) static void Ctr_ListOneCenterForSeeing (struct Ctr_Center *Ctr,unsigned NumCtr)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_CENTER_STATUS[Hie_NUM_STATUS_TXT]; extern const char *Txt_CENTER_STATUS[Hie_NUM_STATUS_TXT];
struct Plc_Place Plc; struct Plc_Place Plc;
const char *TxtClassNormal; const char *TxtClassNormal;
@ -341,15 +347,15 @@ static void Ctr_ListOneCenterForSeeing (struct Ctr_Center *Ctr,unsigned NumCtr)
if (Ctr->Status & Hie_STATUS_BIT_PENDING) if (Ctr->Status & Hie_STATUS_BIT_PENDING)
{ {
TxtClassNormal = "DAT_LIGHT"; TxtClassNormal = The_ClassDatLight[Gbl.Prefs.Theme];
TxtClassStrong = Str_BuildStringStr ("BT_LINK LT %s","DAT_LIGHT"); TxtClassStrong = Str_BuildString ("BT_LINK LT %s",The_ClassDatLight[Gbl.Prefs.Theme]);
} }
else else
{ {
TxtClassNormal = The_ClassDat[Gbl.Prefs.Theme]; TxtClassNormal = The_ClassDat[Gbl.Prefs.Theme];
TxtClassStrong = Str_BuildStringStr ("BT_LINK LT %s",The_ClassDatN[Gbl.Prefs.Theme]); TxtClassStrong = Str_BuildString ("BT_LINK LT %s",The_ClassDatStrong[Gbl.Prefs.Theme]);
} }
BgColor = (Ctr->CtrCod == Gbl.Hierarchy.Ctr.CtrCod) ? "LIGHT_BLUE" : BgColor = (Ctr->CtrCod == Gbl.Hierarchy.Ctr.CtrCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -453,7 +459,7 @@ static void Ctr_EditCentersInternal (void)
Hie_WriteMenuHierarchy (); Hie_WriteMenuHierarchy ();
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Centers_of_INSTITUTION_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Centers_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName), Gbl.Hierarchy.Ins.FullName),
Ctr_PutIconsEditingCenters,NULL, Ctr_PutIconsEditingCenters,NULL,
Hlp_INSTITUTION_Centers,Box_NOT_CLOSABLE); Hlp_INSTITUTION_Centers,Box_NOT_CLOSABLE);
@ -1831,9 +1837,10 @@ void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of centers found */ /* Number of centers found */
Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumCtrs, Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
(NumCtrs == 1) ? Txt_center : NumCtrs,
Txt_centers), (NumCtrs == 1) ? Txt_center :
Txt_centers),
NULL,NULL, NULL,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings (); Str_FreeStrings ();

View File

@ -433,7 +433,7 @@ static void CtrCfg_Altitude (void)
static void CtrCfg_Photo (bool PrintView,bool PutForm,bool PutLink, static void CtrCfg_Photo (bool PrintView,bool PutForm,bool PutLink,
const char PathPhoto[PATH_MAX + 1]) const char PathPhoto[PATH_MAX + 1])
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
char *PhotoAttribution = NULL; char *PhotoAttribution = NULL;
char *URL; char *URL;
char *Icon; char *Icon;
@ -451,7 +451,7 @@ static void CtrCfg_Photo (bool PrintView,bool PutForm,bool PutLink,
HTM_DIV_Begin ("class=\"DAT_SMALL CM\""); HTM_DIV_Begin ("class=\"DAT_SMALL CM\"");
if (PutLink) if (PutLink)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"",
Gbl.Hierarchy.Ctr.WWW,The_ClassDatN[Gbl.Prefs.Theme]); Gbl.Hierarchy.Ctr.WWW,The_ClassDatStrong[Gbl.Prefs.Theme]);
if (asprintf (&URL,"%s/%02u/%u", if (asprintf (&URL,"%s/%02u/%u",
Cfg_URL_CTR_PUBLIC, Cfg_URL_CTR_PUBLIC,
(unsigned) (Gbl.Hierarchy.Ctr.CtrCod % 100), (unsigned) (Gbl.Hierarchy.Ctr.CtrCod % 100),
@ -590,7 +590,7 @@ static void CtrCfg_Institution (bool PrintView,bool PutForm)
Frm_BeginFormGoTo (ActSeeInsInf); Frm_BeginFormGoTo (ActSeeInsInf);
Ins_PutParamInsCod (Gbl.Hierarchy.Ins.InsCod); Ins_PutParamInsCod (Gbl.Hierarchy.Ins.InsCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Gbl.Hierarchy.Ins.ShrtName), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Gbl.Hierarchy.Ins.ShrtName),
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -764,9 +764,9 @@ static void CtrCfg_NumDegs (void)
HTM_TD_Begin ("class=\"LB\""); HTM_TD_Begin ("class=\"LB\"");
Frm_BeginFormGoTo (ActSeeDeg); Frm_BeginFormGoTo (ActSeeDeg);
Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod); Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Degrees_of_CENTER_X, HTM_BUTTON_SUBMIT_Begin (Str_BuildString (Txt_Degrees_of_CENTER_X,
Gbl.Hierarchy.Ctr.ShrtName), Gbl.Hierarchy.Ctr.ShrtName),
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_Unsigned (Deg_GetCachedNumDegsInCtr (Gbl.Hierarchy.Ctr.CtrCod)); HTM_Unsigned (Deg_GetCachedNumDegsInCtr (Gbl.Hierarchy.Ctr.CtrCod));

View File

@ -602,12 +602,13 @@ TODO: FIX BUG, URGENT! En las fechas como par
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo. TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
*/ */
#define Log_PLATFORM_VERSION "SWAD 21.69 (2021-12-15)" #define Log_PLATFORM_VERSION "SWAD 21.70 (2021-12-15)"
#define CSS_FILE "swad21.68.css" #define CSS_FILE "swad21.70.css"
#define JS_FILE "swad21.67.4.js" #define JS_FILE "swad21.67.4.js"
/* /*
// TODO: al ver los resultados de un juego como profesor, el rol del estudiante sale como desconocido y no se puede ver el DNI // TODO: al ver los resultados de un juego como profesor, el rol del estudiante sale como desconocido y no se puede ver el DNI
Version 21.70: Dec 15, 2021 Working on design of dark theme. (321252 lines)
Version 21.69: Dec 15, 2021 Working on design of dark theme. (321089 lines) Version 21.69: Dec 15, 2021 Working on design of dark theme. (321089 lines)
Version 21.68: Dec 08, 2021 Beginning design of dark theme. (320444 lines) Version 21.68: Dec 08, 2021 Beginning design of dark theme. (320444 lines)
Copy the following icons to icon public directory: Copy the following icons to icon public directory:

View File

@ -263,8 +263,8 @@ void Cht_ShowListOfChatRoomsWithUsrs (void)
/***** Write heading *****/ /***** Write heading *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TH (1,1,"CM LIGHT_BLUE",Txt_CHAT_Room_code); HTM_TH (1,1,"CM",Txt_CHAT_Room_code);
HTM_TH (1,1,"LM LIGHT_BLUE",Txt_Number_of_users); HTM_TH (1,1,"LM",Txt_Number_of_users);
HTM_TR_End (); HTM_TR_End ();
/***** Loop over chat rooms *****/ /***** Loop over chat rooms *****/

View File

@ -55,8 +55,9 @@ static void Coo_PutIconsCookies (__attribute__((unused)) void *Args);
void Coo_EditMyPrefsOnCookies (void) void Coo_EditMyPrefsOnCookies (void)
{ {
extern const char *Hlp_PROFILE_Settings_cookies; extern const char *Hlp_PROFILE_Settings_cookies;
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Cookies; extern const char *Txt_Cookies;
extern const char *Txt_Accept_third_party_cookies_to_view_multimedia_content_from_other_websites; extern const char *Txt_Accept_third_party_cookies_to_view_multimedia_content_from_other_websites;
@ -74,7 +75,9 @@ void Coo_EditMyPrefsOnCookies (void)
/* Begin container */ /* Begin container */
if (Gbl.Usrs.Me.UsrDat.Prefs.AcceptCookies) if (Gbl.Usrs.Me.UsrDat.Prefs.AcceptCookies)
HTM_DIV_Begin ("class=\"%s LIGHT_BLUE\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_DIV_Begin ("class=\"%s %s\"",
The_ClassDatStrong[Gbl.Prefs.Theme],
The_ClassBgHighlight[Gbl.Prefs.Theme]);
else else
HTM_DIV_Begin ("class=\"%s\"",The_ClassDat[Gbl.Prefs.Theme]); HTM_DIV_Begin ("class=\"%s\"",The_ClassDat[Gbl.Prefs.Theme]);

View File

@ -98,6 +98,7 @@ static void Cty_FormToGoToMap (struct Cty_Countr *Cty);
void Cty_SeeCtyWithPendingInss (void) void Cty_SeeCtyWithPendingInss (void)
{ {
extern const char *Hlp_SYSTEM_Pending; extern const char *Hlp_SYSTEM_Pending;
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_Countries_with_pending_institutions; extern const char *Txt_Countries_with_pending_institutions;
extern const char *Txt_Country; extern const char *Txt_Country;
@ -143,7 +144,7 @@ void Cty_SeeCtyWithPendingInss (void)
/* Get country code (row[0]) */ /* Get country code (row[0]) */
Cty.CtyCod = Str_ConvertStrCodToLongCod (row[0]); Cty.CtyCod = Str_ConvertStrCodToLongCod (row[0]);
BgColor = (Cty.CtyCod == Gbl.Hierarchy.Cty.CtyCod) ? "LIGHT_BLUE" : BgColor = (Cty.CtyCod == Gbl.Hierarchy.Cty.CtyCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/* Get data of country */ /* Get data of country */
@ -157,7 +158,7 @@ void Cty_SeeCtyWithPendingInss (void)
Cty_DrawCountryMapAndNameWithLink (&Cty,ActSeeIns, Cty_DrawCountryMapAndNameWithLink (&Cty,ActSeeIns,
"COUNTRY_SMALL", "COUNTRY_SMALL",
"COUNTRY_MAP_SMALL", "COUNTRY_MAP_SMALL",
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme])); Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]));
Str_FreeStrings (); Str_FreeStrings ();
HTM_TD_End (); HTM_TD_End ();
@ -400,11 +401,12 @@ static void Cty_PutHeadCountriesForSeeing (bool OrderSelectable)
static void Cty_ListOneCountryForSeeing (struct Cty_Countr *Cty,unsigned NumCty) static void Cty_ListOneCountryForSeeing (struct Cty_Countr *Cty,unsigned NumCty)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
const char *BgColor; const char *BgColor;
BgColor = (Cty->CtyCod == Gbl.Hierarchy.Cty.CtyCod) ? "LIGHT_BLUE" : BgColor = (Cty->CtyCod == Gbl.Hierarchy.Cty.CtyCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -419,7 +421,7 @@ static void Cty_ListOneCountryForSeeing (struct Cty_Countr *Cty,unsigned NumCty)
Cty_DrawCountryMapAndNameWithLink (Cty,ActSeeIns, Cty_DrawCountryMapAndNameWithLink (Cty,ActSeeIns,
"COUNTRY_SMALL", "COUNTRY_SMALL",
"COUNTRY_MAP_SMALL", "COUNTRY_MAP_SMALL",
Str_BuildStringStr ("BT_LINK %s",The_ClassDatN[Gbl.Prefs.Theme])); Str_BuildString ("BT_LINK %s",The_ClassDatStrong[Gbl.Prefs.Theme]));
Str_FreeStrings (); Str_FreeStrings ();
HTM_TD_End (); HTM_TD_End ();
@ -553,7 +555,7 @@ void Cty_DrawCountryMap (struct Cty_Countr *Cty,const char *Class)
Cfg_URL_ICON_COUNTRIES_PUBLIC, Cfg_URL_ICON_COUNTRIES_PUBLIC,
Cty->Alpha2) < 0) Cty->Alpha2) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (URL,Str_BuildStringStr ("%s.png",Cty->Alpha2), HTM_IMG (URL,Str_BuildString ("%s.png",Cty->Alpha2),
Cty->Name[Gbl.Prefs.Language], Cty->Name[Gbl.Prefs.Language],
"class=\"%s\"",Class); "class=\"%s\"",Class);
Str_FreeStrings (); Str_FreeStrings ();
@ -1807,9 +1809,10 @@ void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of countries found */ /* Number of countries found */
Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumCtys, Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
NumCtys == 1 ? Txt_country : NumCtys,
Txt_countries), NumCtys == 1 ? Txt_country :
Txt_countries),
NULL,NULL, NULL,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings (); Str_FreeStrings ();

View File

@ -372,7 +372,7 @@ static void CtyCfg_Platform (bool PrintView)
{ {
Frm_BeginFormGoTo (ActSeeSysInf); Frm_BeginFormGoTo (ActSeeSysInf);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Cfg_PLATFORM_SHORT_NAME), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Cfg_PLATFORM_SHORT_NAME),
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -395,7 +395,7 @@ static void CtyCfg_Platform (bool PrintView)
static void CtyCfg_Name (bool PutLink) static void CtyCfg_Name (bool PutLink)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Country; extern const char *Txt_Country;
/***** Country name *****/ /***** Country name *****/
@ -405,11 +405,11 @@ static void CtyCfg_Name (bool PutLink)
Frm_LabelColumn ("RT",NULL,Txt_Country); Frm_LabelColumn ("RT",NULL,Txt_Country);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"LB %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"LB %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (PutLink) if (PutLink)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"",
Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language], Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language],
The_ClassDatN[Gbl.Prefs.Theme]); The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]); HTM_Txt (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]);
if (PutLink) if (PutLink)
HTM_A_End (); HTM_A_End ();
@ -479,9 +479,9 @@ static void CtyCfg_NumInss (void)
HTM_TD_Begin ("class=\"LB\""); HTM_TD_Begin ("class=\"LB\"");
Frm_BeginFormGoTo (ActSeeIns); Frm_BeginFormGoTo (ActSeeIns);
Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod); Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Institutions_of_COUNTRY_X, HTM_BUTTON_SUBMIT_Begin (Str_BuildString (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_Unsigned (Ins_GetCachedNumInssInCty (Gbl.Hierarchy.Cty.CtyCod)); HTM_Unsigned (Ins_GetCachedNumInssInCty (Gbl.Hierarchy.Cty.CtyCod));

View File

@ -147,6 +147,7 @@ void Crs_ShowIntroduction (void)
static void Crs_WriteListMyCoursesToSelectOne (void) static void Crs_WriteListMyCoursesToSelectOne (void)
{ {
extern const char *Hlp_PROFILE_Courses; extern const char *Hlp_PROFILE_Courses;
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassFormLinkInBox[The_NUM_THEMES]; extern const char *The_ClassFormLinkInBox[The_NUM_THEMES];
extern const char *The_ClassFormLinkInBoxBold[The_NUM_THEMES]; extern const char *The_ClassFormLinkInBoxBold[The_NUM_THEMES];
extern const char *Txt_My_courses; extern const char *Txt_My_courses;
@ -174,8 +175,9 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
char ClassHighlight[64]; char ClassHighlight[64];
ClassNormal = The_ClassFormLinkInBox[Gbl.Prefs.Theme]; ClassNormal = The_ClassFormLinkInBox[Gbl.Prefs.Theme];
snprintf (ClassHighlight,sizeof (ClassHighlight),"%s LIGHT_BLUE", snprintf (ClassHighlight,sizeof (ClassHighlight),"%s %s",
The_ClassFormLinkInBoxBold[Gbl.Prefs.Theme]); The_ClassFormLinkInBoxBold[Gbl.Prefs.Theme],
The_ClassBgHighlight[Gbl.Prefs.Theme]);
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Txt_My_courses, Box_BoxBegin (NULL,Txt_My_courses,
@ -847,7 +849,7 @@ static void Crs_ListCourses (void)
unsigned Year; unsigned Year;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Courses_of_DEGREE_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName), Gbl.Hierarchy.Deg.ShrtName),
Crs_PutIconsListCourses,NULL, Crs_PutIconsListCourses,NULL,
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE); Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
@ -928,8 +930,10 @@ static void Crs_PutIconToEditCourses (void)
static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year) static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_COURSE_With_users; extern const char *Txt_COURSE_With_users;
extern const char *Txt_COURSE_Without_users; extern const char *Txt_COURSE_Without_users;
extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE]; extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE];
@ -953,17 +957,17 @@ static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year)
ThisYearHasCourses = true; ThisYearHasCourses = true;
if (Crs->Status & Hie_STATUS_BIT_PENDING) if (Crs->Status & Hie_STATUS_BIT_PENDING)
{ {
TxtClassNormal = "DAT_LIGHT"; TxtClassNormal = The_ClassDatLight[Gbl.Prefs.Theme];
TxtClassStrong = Str_BuildStringStr ("BT_LINK LT %s","DAT_LIGHT"); TxtClassStrong = Str_BuildString ("BT_LINK LT %s",The_ClassDatLight[Gbl.Prefs.Theme]);
} }
else else
{ {
TxtClassNormal = The_ClassDat[Gbl.Prefs.Theme]; TxtClassNormal = The_ClassDat[Gbl.Prefs.Theme];
TxtClassStrong = Str_BuildStringStr ("BT_LINK LT %s",The_ClassDatN[Gbl.Prefs.Theme]); TxtClassStrong = Str_BuildString ("BT_LINK LT %s",The_ClassDatStrong[Gbl.Prefs.Theme]);
} }
/* Check if this course is one of my courses */ /* Check if this course is one of my courses */
BgColor = (Enr_CheckIfIBelongToCrs (Crs->CrsCod)) ? "LIGHT_BLUE" : BgColor = (Enr_CheckIfIBelongToCrs (Crs->CrsCod)) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -1061,7 +1065,7 @@ static void Crs_EditCoursesInternal (void)
Hie_WriteMenuHierarchy (); Hie_WriteMenuHierarchy ();
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Courses_of_DEGREE_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName), Gbl.Hierarchy.Deg.ShrtName),
Crs_PutIconsEditingCourses,NULL, Crs_PutIconsEditingCourses,NULL,
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE); Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
@ -2157,7 +2161,7 @@ static void Crs_PutButtonToRegisterInCrs (void)
if (Crs_EditingCrs->CrsCod != Gbl.Hierarchy.Crs.CrsCod) if (Crs_EditingCrs->CrsCod != Gbl.Hierarchy.Crs.CrsCod)
Crs_PutParamCrsCod (Crs_EditingCrs->CrsCod); Crs_PutParamCrsCod (Crs_EditingCrs->CrsCod);
Btn_PutCreateButton (Str_BuildStringStr (Txt_Register_me_in_X, Btn_PutCreateButton (Str_BuildString (Txt_Register_me_in_X,
Crs_EditingCrs->ShrtName)); Crs_EditingCrs->ShrtName));
Str_FreeStrings (); Str_FreeStrings ();
@ -2277,7 +2281,7 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TH_Begin (1,7,"LM"); HTM_TH_Begin (1,7,"LM");
HTM_TxtColon (Str_BuildStringStr (Txt_USER_in_COURSE, HTM_TxtColon (Str_BuildString (Txt_USER_in_COURSE,
Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex])); Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]));
Str_FreeStrings (); Str_FreeStrings ();
@ -2338,9 +2342,10 @@ void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of courses found */ /* Number of courses found */
Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumCrss, Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
(NumCrss == 1) ? Txt_course : NumCrss,
Txt_courses), (NumCrss == 1) ? Txt_course :
Txt_courses),
NULL,NULL, NULL,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings (); Str_FreeStrings ();
@ -2384,8 +2389,9 @@ void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss)
static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnAccepted) static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnAccepted)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Enrolment_confirmed; extern const char *Txt_Enrolment_confirmed;
extern const char *Txt_Enrolment_not_confirmed; extern const char *Txt_Enrolment_not_confirmed;
extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE]; extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE];
@ -2428,16 +2434,16 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
NumUsrs = NumStds + NumNETs + NumTchs; NumUsrs = NumStds + NumNETs + NumTchs;
if (NumUsrs) if (NumUsrs)
{ {
ClassTxt = The_ClassDatN[Gbl.Prefs.Theme]; ClassTxt = The_ClassDatStrong[Gbl.Prefs.Theme];
ClassLink = Str_BuildStringStr ("BT_LINK LT %s",The_ClassDatN[Gbl.Prefs.Theme]); ClassLink = Str_BuildString ("BT_LINK LT %s",The_ClassDatStrong[Gbl.Prefs.Theme]);
} }
else else
{ {
ClassTxt = The_ClassDat[Gbl.Prefs.Theme]; ClassTxt = The_ClassDat[Gbl.Prefs.Theme];
ClassLink = Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]); ClassLink = Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]);
} }
BgColor = (CrsCod == Gbl.Hierarchy.Crs.CrsCod) ? "LIGHT_BLUE" : BgColor = (CrsCod == Gbl.Hierarchy.Crs.CrsCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[RowEvenOdd]; Gbl.ColorRows[RowEvenOdd];
/***** Begin row *****/ /***** Begin row *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);

View File

@ -250,7 +250,7 @@ static void CrsCfg_Degree (bool PrintView,bool PutForm)
Frm_BeginFormGoTo (ActSeeDegInf); Frm_BeginFormGoTo (ActSeeDegInf);
Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod); Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Gbl.Hierarchy.Deg.ShrtName), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Gbl.Hierarchy.Deg.ShrtName),
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -442,7 +442,7 @@ static void CrsCfg_Indicators (void)
Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS) < 0) Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin (Title, HTM_BUTTON_SUBMIT_Begin (Title,
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_TxtF ("%s&nbsp;",Title); HTM_TxtF ("%s&nbsp;",Title);

View File

@ -122,8 +122,9 @@ void Dat_ResetHour (struct Dat_Hour *Hour)
void Dat_PutBoxToSelectDateFormat (void) void Dat_PutBoxToSelectDateFormat (void)
{ {
extern const char *Hlp_PROFILE_Settings_dates; extern const char *Hlp_PROFILE_Settings_dates;
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Dates; extern const char *Txt_Dates;
Dat_Format_t Format; Dat_Format_t Format;
@ -143,7 +144,9 @@ void Dat_PutBoxToSelectDateFormat (void)
Format++) Format++)
{ {
if (Format == Gbl.Prefs.DateFormat) if (Format == Gbl.Prefs.DateFormat)
HTM_LI_Begin ("class=\"%s LIGHT_BLUE\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_LI_Begin ("class=\"%s %s\"",
The_ClassDatStrong[Gbl.Prefs.Theme],
The_ClassBgHighlight[Gbl.Prefs.Theme]);
else else
HTM_LI_Begin ("class=\"%s\"",The_ClassDat[Gbl.Prefs.Theme]); HTM_LI_Begin ("class=\"%s\"",The_ClassDat[Gbl.Prefs.Theme]);
HTM_LABEL_Begin (NULL); HTM_LABEL_Begin (NULL);
@ -190,8 +193,8 @@ void Dat_PutSpanDateFormat (Dat_Format_t Format)
void Dat_PutScriptDateFormat (Dat_Format_t Format) void Dat_PutScriptDateFormat (Dat_Format_t Format)
{ {
Dat_WriteLocalDateHMSFromUTC (Str_BuildStringLong ("date_format_%ld", Dat_WriteLocalDateHMSFromUTC (Str_BuildString ("date_format_%u",
(long) Format), (unsigned) Format),
Gbl.StartExecutionTimeUTC, Gbl.StartExecutionTimeUTC,
Format,Dat_SEPARATOR_NONE, Format,Dat_SEPARATOR_NONE,
false,true,false,0x0); false,true,false,0x0);

View File

@ -109,6 +109,7 @@ static void Deg_EditingDegreeDestructor (void);
void Deg_SeeDegWithPendingCrss (void) void Deg_SeeDegWithPendingCrss (void)
{ {
extern const char *Hlp_SYSTEM_Pending; extern const char *Hlp_SYSTEM_Pending;
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_Degrees_with_pending_courses; extern const char *Txt_Degrees_with_pending_courses;
extern const char *Txt_Degree; extern const char *Txt_Degree;
@ -147,7 +148,7 @@ void Deg_SeeDegWithPendingCrss (void)
/* Get degree code (row[0]) */ /* Get degree code (row[0]) */
Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]); Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]);
BgColor = (Deg.DegCod == Gbl.Hierarchy.Deg.DegCod) ? "LIGHT_BLUE" : BgColor = (Deg.DegCod == Gbl.Hierarchy.Deg.DegCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/* Get data of degree */ /* Get data of degree */
@ -159,7 +160,10 @@ void Deg_SeeDegWithPendingCrss (void)
/* Degree logo and full name */ /* Degree logo and full name */
HTM_TD_Begin ("class=\"LM %s\"",BgColor); HTM_TD_Begin ("class=\"LM %s\"",BgColor);
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeCrs, Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeCrs,
"BT_LINK DAT_NOBR","CM"); Str_BuildString ("BT_LINK %s NOWRAP",
The_ClassDat[Gbl.Prefs.Theme]),
"CM");
Str_FreeStrings ();
HTM_TD_End (); HTM_TD_End ();
/* Number of pending courses (row[1]) */ /* Number of pending courses (row[1]) */
@ -692,7 +696,7 @@ static void Deg_ListDegrees (void)
unsigned NumDeg; unsigned NumDeg;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Degrees_of_CENTER_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Degrees_of_CENTER_X,
Gbl.Hierarchy.Ctr.ShrtName), Gbl.Hierarchy.Ctr.ShrtName),
Deg_PutIconsListingDegrees,NULL, Deg_PutIconsListingDegrees,NULL,
Hlp_CENTER_Degrees,Box_NOT_CLOSABLE); Hlp_CENTER_Degrees,Box_NOT_CLOSABLE);
@ -773,8 +777,10 @@ static void Deg_PutIconToEditDegrees (void)
static void Deg_ListOneDegreeForSeeing (struct Deg_Degree *Deg,unsigned NumDeg) static void Deg_ListOneDegreeForSeeing (struct Deg_Degree *Deg,unsigned NumDeg)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_DEGREE_With_courses; extern const char *Txt_DEGREE_With_courses;
extern const char *Txt_DEGREE_Without_courses; extern const char *Txt_DEGREE_Without_courses;
extern const char *Txt_DEGREE_STATUS[Hie_NUM_STATUS_TXT]; extern const char *Txt_DEGREE_STATUS[Hie_NUM_STATUS_TXT];
@ -791,15 +797,15 @@ static void Deg_ListOneDegreeForSeeing (struct Deg_Degree *Deg,unsigned NumDeg)
if (Deg->Status & Hie_STATUS_BIT_PENDING) if (Deg->Status & Hie_STATUS_BIT_PENDING)
{ {
TxtClassNormal = "DAT_LIGHT"; TxtClassNormal = The_ClassDatLight[Gbl.Prefs.Theme];
TxtClassStrong = Str_BuildStringStr ("BT_LINK LT %s","DAT_LIGHT"); TxtClassStrong = Str_BuildString ("BT_LINK LT %s",The_ClassDatLight[Gbl.Prefs.Theme]);
} }
else else
{ {
TxtClassNormal = The_ClassDat[Gbl.Prefs.Theme]; TxtClassNormal = The_ClassDat[Gbl.Prefs.Theme];
TxtClassStrong = Str_BuildStringStr ("BT_LINK LT %s",The_ClassDatN[Gbl.Prefs.Theme]); TxtClassStrong = Str_BuildString ("BT_LINK LT %s",The_ClassDatStrong[Gbl.Prefs.Theme]);
} }
BgColor = (Deg->DegCod == Gbl.Hierarchy.Deg.DegCod) ? "LIGHT_BLUE" : BgColor = (Deg->DegCod == Gbl.Hierarchy.Deg.DegCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/***** Begin table row *****/ /***** Begin table row *****/
@ -885,7 +891,7 @@ static void Deg_EditDegreesInternal (void)
Hie_WriteMenuHierarchy (); Hie_WriteMenuHierarchy ();
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Degrees_of_CENTER_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Degrees_of_CENTER_X,
Gbl.Hierarchy.Ctr.ShrtName), Gbl.Hierarchy.Ctr.ShrtName),
Deg_PutIconsEditingDegrees,NULL, Deg_PutIconsEditingDegrees,NULL,
Hlp_CENTER_Degrees,Box_NOT_CLOSABLE); Hlp_CENTER_Degrees,Box_NOT_CLOSABLE);
@ -1791,9 +1797,10 @@ void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumDegs)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of degrees found */ /* Number of degrees found */
Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumDegs, Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
(NumDegs == 1) ? Txt_degree : NumDegs,
Txt_degrees), (NumDegs == 1) ? Txt_degree :
Txt_degrees),
NULL,NULL, NULL,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings (); Str_FreeStrings ();

View File

@ -241,7 +241,7 @@ static void DegCfg_Center (bool PrintView,bool PutForm)
Frm_BeginFormGoTo (ActSeeCtrInf); Frm_BeginFormGoTo (ActSeeCtrInf);
Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod); Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Gbl.Hierarchy.Ctr.ShrtName), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Gbl.Hierarchy.Ctr.ShrtName),
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -329,9 +329,9 @@ static void DegCfg_NumCrss (void)
HTM_TD_Begin ("class=\"LB\""); HTM_TD_Begin ("class=\"LB\"");
Frm_BeginFormGoTo (ActSeeCrs); Frm_BeginFormGoTo (ActSeeCrs);
Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod); Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Courses_of_DEGREE_X, HTM_BUTTON_SUBMIT_Begin (Str_BuildString (Txt_Courses_of_DEGREE_X,
Gbl.Hierarchy.Deg.ShrtName), Gbl.Hierarchy.Deg.ShrtName),
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_Unsigned (Crs_GetCachedNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod)); HTM_Unsigned (Crs_GetCachedNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod));

View File

@ -313,7 +313,8 @@ void DegTyp_PutIconToViewDegreeTypes (void)
static void DegTyp_ListDegreeTypesForSeeing (void) static void DegTyp_ListDegreeTypesForSeeing (void)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDatStrong[The_NUM_THEMES];
unsigned NumDegTyp; unsigned NumDegTyp;
const char *BgColor; const char *BgColor;
@ -323,7 +324,7 @@ static void DegTyp_ListDegreeTypesForSeeing (void)
NumDegTyp++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd) NumDegTyp++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd)
{ {
BgColor = (Gbl.DegTypes.Lst[NumDegTyp].DegTypCod == BgColor = (Gbl.DegTypes.Lst[NumDegTyp].DegTypCod ==
Gbl.Hierarchy.Deg.DegTypCod) ? "LIGHT_BLUE" : Gbl.Hierarchy.Deg.DegTypCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/* Begin table row */ /* Begin table row */
@ -331,19 +332,19 @@ static void DegTyp_ListDegreeTypesForSeeing (void)
/* Number of degree type in this list */ /* Number of degree type in this list */
HTM_TD_Begin ("class=\"RM %s %s\"", HTM_TD_Begin ("class=\"RM %s %s\"",
The_ClassDatN[Gbl.Prefs.Theme],BgColor); The_ClassDatStrong[Gbl.Prefs.Theme],BgColor);
HTM_Unsigned (NumDegTyp + 1); HTM_Unsigned (NumDegTyp + 1);
HTM_TD_End (); HTM_TD_End ();
/* Name of degree type */ /* Name of degree type */
HTM_TD_Begin ("class=\"LM %s %s\"", HTM_TD_Begin ("class=\"LM %s %s\"",
The_ClassDatN[Gbl.Prefs.Theme],BgColor); The_ClassDatStrong[Gbl.Prefs.Theme],BgColor);
HTM_Txt (Gbl.DegTypes.Lst[NumDegTyp].DegTypName); HTM_Txt (Gbl.DegTypes.Lst[NumDegTyp].DegTypName);
HTM_TD_End (); HTM_TD_End ();
/* Number of degrees of this type */ /* Number of degrees of this type */
HTM_TD_Begin ("class=\"RM %s %s\"", HTM_TD_Begin ("class=\"RM %s %s\"",
The_ClassDatN[Gbl.Prefs.Theme],BgColor); The_ClassDatStrong[Gbl.Prefs.Theme],BgColor);
HTM_Unsigned (Gbl.DegTypes.Lst[NumDegTyp].NumDegs); HTM_Unsigned (Gbl.DegTypes.Lst[NumDegTyp].NumDegs);
HTM_TD_End (); HTM_TD_End ();

View File

@ -124,12 +124,12 @@ void Dpt_SeeDepts (void)
/***** Begin box and table *****/ /***** Begin box and table *****/
if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
Box_BoxTableBegin (NULL,Str_BuildStringStr (Txt_Departments_of_INSTITUTION_X, Box_BoxTableBegin (NULL,Str_BuildString (Txt_Departments_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName), Gbl.Hierarchy.Ins.FullName),
Dpt_PutIconToEditDpts,NULL, Dpt_PutIconToEditDpts,NULL,
Hlp_INSTITUTION_Departments,Box_NOT_CLOSABLE,2); Hlp_INSTITUTION_Departments,Box_NOT_CLOSABLE,2);
else else
Box_BoxTableBegin (NULL,Str_BuildStringStr (Txt_Departments_of_INSTITUTION_X, Box_BoxTableBegin (NULL,Str_BuildString (Txt_Departments_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName), Gbl.Hierarchy.Ins.FullName),
NULL,NULL, NULL,NULL,
Hlp_INSTITUTION_Departments,Box_NOT_CLOSABLE,2); Hlp_INSTITUTION_Departments,Box_NOT_CLOSABLE,2);
@ -285,7 +285,7 @@ static void Dpt_EditDepartmentsInternal (void)
Dpt_GetListDepartments (&Departments,Gbl.Hierarchy.Ins.InsCod); Dpt_GetListDepartments (&Departments,Gbl.Hierarchy.Ins.InsCod);
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Departments_of_INSTITUTION_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Departments_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.FullName), Gbl.Hierarchy.Ins.FullName),
NULL,NULL, NULL,NULL,
Hlp_INSTITUTION_Departments_edit,Box_NOT_CLOSABLE); Hlp_INSTITUTION_Departments_edit,Box_NOT_CLOSABLE);

View File

@ -2228,7 +2228,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
Frm_BeginFormGoTo (ActSeeCrsInf); Frm_BeginFormGoTo (ActSeeCrsInf);
Crs_PutParamCrsCod (Crs.CrsCod); Crs_PutParamCrsCod (Crs.CrsCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Crs.FullName), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Crs.FullName),
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_TxtF ("%s &gt; %s",Deg.ShrtName,Crs.ShrtName); HTM_TxtF ("%s &gt; %s",Deg.ShrtName,Crs.ShrtName);

View File

@ -474,6 +474,7 @@ static void Exa_ShowOneExam (struct Exa_Exams *Exams,
struct Exa_Exam *Exam,bool ShowOnlyThisExam) struct Exa_Exam *Exam,bool ShowOnlyThisExam)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_View_exam; extern const char *Txt_View_exam;
extern const char *Txt_Sets_of_questions; extern const char *Txt_Sets_of_questions;
extern const char *Txt_Maximum_grade; extern const char *Txt_Maximum_grade;
@ -613,7 +614,7 @@ static void Exa_ShowOneExam (struct Exa_Exams *Exams,
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML
ALn_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links ALn_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
HTM_DIV_Begin ("class=\"PAR %s\"",Exam->Hidden ? "DAT_LIGHT" : HTM_DIV_Begin ("class=\"PAR %s\"",Exam->Hidden ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]); The_ClassDat[Gbl.Prefs.Theme]);
HTM_Txt (Txt); HTM_Txt (Txt);
HTM_DIV_End (); HTM_DIV_End ();

View File

@ -206,7 +206,7 @@ void ExaRes_ShowMyResultsInExa (void)
/***** List my sessions results in exam *****/ /***** List my sessions results in exam *****/
ExaRes_ShowResultsBegin (&Exams, ExaRes_ShowResultsBegin (&Exams,
Str_BuildStringStr (Txt_Results_of_exam_X,Exam.Title), Str_BuildString (Txt_Results_of_exam_X,Exam.Title),
false); // Do not list exams to select false); // Do not list exams to select
Str_FreeStrings (); Str_FreeStrings ();
ExaRes_ListMyResultsInExa (&Exams,Exam.ExaCod); ExaRes_ListMyResultsInExa (&Exams,Exam.ExaCod);
@ -258,7 +258,7 @@ void ExaRes_ShowMyResultsInSes (void)
false); // Do not put form to start new session false); // Do not put form to start new session
/***** List my sessions results in session *****/ /***** List my sessions results in session *****/
ExaRes_ShowResultsBegin (&Exams,Str_BuildStringStr (Txt_Results_of_session_X,Session.Title), ExaRes_ShowResultsBegin (&Exams,Str_BuildString (Txt_Results_of_session_X,Session.Title),
false); // Do not list exams to select false); // Do not list exams to select
Str_FreeStrings (); Str_FreeStrings ();
ExaRes_ListMyResultsInSes (&Exams,Session.SesCod); ExaRes_ListMyResultsInSes (&Exams,Session.SesCod);
@ -406,7 +406,7 @@ void ExaRes_ShowAllResultsInExa (void)
/***** List sessions results in exam *****/ /***** List sessions results in exam *****/
ExaRes_ShowResultsBegin (&Exams, ExaRes_ShowResultsBegin (&Exams,
Str_BuildStringStr (Txt_Results_of_exam_X,Exam.Title), Str_BuildString (Txt_Results_of_exam_X,Exam.Title),
false); // Do not list exams to select false); // Do not list exams to select
Str_FreeStrings (); Str_FreeStrings ();
ExaRes_ListAllResultsInExa (&Exams,Exam.ExaCod); ExaRes_ListAllResultsInExa (&Exams,Exam.ExaCod);
@ -483,7 +483,7 @@ void ExaRes_ShowAllResultsInSes (void)
/***** List sessions results in session *****/ /***** List sessions results in session *****/
ExaRes_ShowResultsBegin (&Exams, ExaRes_ShowResultsBegin (&Exams,
Str_BuildStringStr (Txt_Results_of_session_X,Session.Title), Str_BuildString (Txt_Results_of_session_X,Session.Title),
false); // Do not list exams to select false); // Do not list exams to select
Str_FreeStrings (); Str_FreeStrings ();
ExaRes_ListAllResultsInSes (&Exams,Session.SesCod); ExaRes_ListAllResultsInSes (&Exams,Session.SesCod);
@ -1101,20 +1101,20 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
const struct ExaPrn_Score *TotalScore, const struct ExaPrn_Score *TotalScore,
double TotalGrade) double TotalGrade)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Sessions; extern const char *Txt_Sessions;
unsigned NumTotalQstsInvalid; unsigned NumTotalQstsInvalid;
/***** Row title *****/ /***** Row title *****/
HTM_TD_Begin ("colspan=\"3\" class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("colspan=\"3\" class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_TxtColonNBSP (Txt_Sessions); HTM_TxtColonNBSP (Txt_Sessions);
HTM_Unsigned (NumResults); HTM_Unsigned (NumResults);
HTM_TD_End (); HTM_TD_End ();
/***** Write total number of questions *****/ /***** Write total number of questions *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_Unsigned (NumTotalQsts->All); HTM_Unsigned (NumTotalQsts->All);
HTM_TD_End (); HTM_TD_End ();
@ -1137,7 +1137,7 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
/***** Write number of correct questions *****/ /***** Write number of correct questions *****/
HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumTotalQsts->Valid.Correct) if (NumTotalQsts->Valid.Correct)
HTM_Unsigned (NumTotalQsts->Valid.Correct); HTM_Unsigned (NumTotalQsts->Valid.Correct);
else else
@ -1146,7 +1146,7 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
/***** Write number of wrong questions *****/ /***** Write number of wrong questions *****/
HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumTotalQsts->Valid.Wrong.Negative) if (NumTotalQsts->Valid.Wrong.Negative)
HTM_Unsigned (NumTotalQsts->Valid.Wrong.Negative); HTM_Unsigned (NumTotalQsts->Valid.Wrong.Negative);
else else
@ -1154,7 +1154,7 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumTotalQsts->Valid.Wrong.Zero) if (NumTotalQsts->Valid.Wrong.Zero)
HTM_Unsigned (NumTotalQsts->Valid.Wrong.Zero); HTM_Unsigned (NumTotalQsts->Valid.Wrong.Zero);
else else
@ -1162,7 +1162,7 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumTotalQsts->Valid.Wrong.Positive) if (NumTotalQsts->Valid.Wrong.Positive)
HTM_Unsigned (NumTotalQsts->Valid.Wrong.Positive); HTM_Unsigned (NumTotalQsts->Valid.Wrong.Positive);
else else
@ -1171,7 +1171,7 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
/***** Write number of blank questions *****/ /***** Write number of blank questions *****/
HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("class=\"RT %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumTotalQsts->Valid.Blank) if (NumTotalQsts->Valid.Blank)
HTM_Unsigned (NumTotalQsts->Valid.Blank); HTM_Unsigned (NumTotalQsts->Valid.Blank);
else else
@ -1180,7 +1180,7 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
/***** Write total valid score *****/ /***** Write total valid score *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_Double2Decimals (TotalScore->Valid); HTM_Double2Decimals (TotalScore->Valid);
HTM_Txt ("/"); HTM_Txt ("/");
HTM_Unsigned (NumTotalQsts->Valid.Total); HTM_Unsigned (NumTotalQsts->Valid.Total);
@ -1188,7 +1188,7 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
/***** Write average valid score per valid question *****/ /***** Write average valid score per valid question *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_Double2Decimals (NumTotalQsts->Valid.Total ? TotalScore->Valid / HTM_Double2Decimals (NumTotalQsts->Valid.Total ? TotalScore->Valid /
(double) NumTotalQsts->Valid.Total : (double) NumTotalQsts->Valid.Total :
0.0); 0.0);
@ -1197,13 +1197,13 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
/***** Write total grade *****/ /***** Write total grade *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_Double2Decimals (TotalGrade); HTM_Double2Decimals (TotalGrade);
HTM_TD_End (); HTM_TD_End ();
/***** Last cell *****/ /***** Last cell *****/
HTM_TD_Begin ("class=\"%s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"%s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_TD_End (); HTM_TD_End ();
} }
@ -1510,7 +1510,7 @@ static void ExaRes_ComputeValidPrintScore (struct ExaPrn_Print *Print)
void ExaRes_ShowExamResultUser (struct UsrData *UsrDat) void ExaRes_ShowExamResultUser (struct UsrData *UsrDat)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
static const char *ClassPhoto[Pho_NUM_SHAPES] = static const char *ClassPhoto[Pho_NUM_SHAPES] =
{ {
@ -1524,7 +1524,7 @@ void ExaRes_ShowExamResultUser (struct UsrData *UsrDat)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/***** Label *****/ /***** Label *****/
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs][UsrDat->Sex]); HTM_TxtColon (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs][UsrDat->Sex]);
HTM_TD_End (); HTM_TD_End ();
@ -1553,7 +1553,7 @@ void ExaRes_ShowExamResultUser (struct UsrData *UsrDat)
static void ExaRes_ShowExamResultTime (struct ExaPrn_Print *Print) static void ExaRes_ShowExamResultTime (struct ExaPrn_Print *Print)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME]; extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
Dat_StartEndTime_t StartEndTime; Dat_StartEndTime_t StartEndTime;
char *Id; char *Id;
@ -1566,7 +1566,7 @@ static void ExaRes_ShowExamResultTime (struct ExaPrn_Print *Print)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/***** Label *****/ /***** Label *****/
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_START_END_TIME[StartEndTime]); HTM_TxtColon (Txt_START_END_TIME[StartEndTime]);
HTM_TD_End (); HTM_TD_End ();
@ -1594,7 +1594,7 @@ static void ExaRes_ShowExamResultNumQsts (struct ExaPrn_Print *Print,
const struct ExaRes_ICanView *ICanView) const struct ExaRes_ICanView *ICanView)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Questions; extern const char *Txt_Questions;
extern const char *Txt_QUESTIONS_valid; extern const char *Txt_QUESTIONS_valid;
extern const char *Txt_QUESTIONS_invalid; extern const char *Txt_QUESTIONS_invalid;
@ -1603,7 +1603,7 @@ static void ExaRes_ShowExamResultNumQsts (struct ExaPrn_Print *Print,
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/***** Label *****/ /***** Label *****/
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Questions); HTM_TxtColon (Txt_Questions);
HTM_TD_End (); HTM_TD_End ();
@ -1649,7 +1649,7 @@ static void ExaRes_ShowExamResultNumAnss (struct ExaPrn_Print *Print,
const struct ExaRes_ICanView *ICanView) const struct ExaRes_ICanView *ICanView)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Valid_answers; extern const char *Txt_Valid_answers;
extern const char *Txt_ANSWERS_correct; extern const char *Txt_ANSWERS_correct;
extern const char *Txt_ANSWERS_wrong; extern const char *Txt_ANSWERS_wrong;
@ -1659,7 +1659,7 @@ static void ExaRes_ShowExamResultNumAnss (struct ExaPrn_Print *Print,
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/***** Label *****/ /***** Label *****/
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Valid_answers); HTM_TxtColon (Txt_Valid_answers);
HTM_TD_End (); HTM_TD_End ();
@ -1692,7 +1692,7 @@ static void ExaRes_ShowExamResultScore (struct ExaPrn_Print *Print,
const struct ExaRes_ICanView *ICanView) const struct ExaRes_ICanView *ICanView)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Score; extern const char *Txt_Score;
extern const char *Txt_valid_score; extern const char *Txt_valid_score;
@ -1700,7 +1700,7 @@ static void ExaRes_ShowExamResultScore (struct ExaPrn_Print *Print,
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/***** Label *****/ /***** Label *****/
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Score); HTM_TxtColon (Txt_Score);
HTM_TD_End (); HTM_TD_End ();
@ -1746,7 +1746,7 @@ static void ExaRes_ShowExamResultGrade (const struct Exa_Exam *Exam,
const struct ExaRes_ICanView *ICanView) const struct ExaRes_ICanView *ICanView)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Grade; extern const char *Txt_Grade;
extern const char *Txt_valid_grade; extern const char *Txt_valid_grade;
@ -1754,7 +1754,7 @@ static void ExaRes_ShowExamResultGrade (const struct Exa_Exam *Exam,
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/***** Label *****/ /***** Label *****/
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Grade); HTM_TxtColon (Txt_Grade);
HTM_TD_End (); HTM_TD_End ();

View File

@ -786,7 +786,7 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams,
Lay_PutContextualLinkOnlyIcon (ActUp_ExaSet,Anchor, Lay_PutContextualLinkOnlyIcon (ActUp_ExaSet,Anchor,
ExaSet_PutParamsOneSet,Exams, ExaSet_PutParamsOneSet,Exams,
"arrow-up.svg", "arrow-up.svg",
Str_BuildStringStr (Txt_Move_up_X, Str_BuildString (Txt_Move_up_X,
StrSetInd)); StrSetInd));
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -799,7 +799,7 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams,
Lay_PutContextualLinkOnlyIcon (ActDwnExaSet,Anchor, Lay_PutContextualLinkOnlyIcon (ActDwnExaSet,Anchor,
ExaSet_PutParamsOneSet,Exams, ExaSet_PutParamsOneSet,Exams,
"arrow-down.svg", "arrow-down.svg",
Str_BuildStringStr (Txt_Move_down_X, Str_BuildString (Txt_Move_down_X,
StrSetInd)); StrSetInd));
Str_FreeStrings (); Str_FreeStrings ();
} }

View File

@ -443,12 +443,12 @@ static void Fig_GetAndShowUsersStats (void)
static void Fig_GetAndShowNumUsrsInCrss (Rol_Role_t Role) static void Fig_GetAndShowNumUsrsInCrss (Rol_Role_t Role)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Total; extern const char *Txt_Total;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
long Cod = Sco_GetCurrentCod (); long Cod = Sco_GetCurrentCod ();
char *Class = (Role == Rol_UNK) ? Str_BuildStringStr ("RB %s LINE_TOP",The_ClassDatN[Gbl.Prefs.Theme]) : char *Class = (Role == Rol_UNK) ? Str_BuildString ("RB %s LINE_TOP",The_ClassDatStrong[Gbl.Prefs.Theme]) :
Str_BuildStringStr ("RB %s",The_ClassDat[Gbl.Prefs.Theme]); Str_BuildString ("RB %s",The_ClassDat[Gbl.Prefs.Theme]);
unsigned Roles = (Role == Rol_UNK) ? ((1 << Rol_STD) | unsigned Roles = (Role == Rol_UNK) ? ((1 << Rol_STD) |
(1 << Rol_NET) | (1 << Rol_NET) |
(1 << Rol_TCH)) : (1 << Rol_TCH)) :
@ -488,7 +488,7 @@ static void Fig_GetAndShowNumUsrsNotBelongingToAnyCrs (void)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
char *Class = Str_BuildStringStr ("%s RB",The_ClassDat[Gbl.Prefs.Theme]); char *Class = Str_BuildString ("%s RB",The_ClassDat[Gbl.Prefs.Theme]);
/***** Write the total number of users not belonging to any course *****/ /***** Write the total number of users not belonging to any course *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -879,7 +879,7 @@ static void Fig_GetAndShowHierarchyWithUsrs (Rol_Role_t Role)
static void Fig_GetAndShowHierarchyTotal (void) static void Fig_GetAndShowHierarchyTotal (void)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Total; extern const char *Txt_Total;
unsigned NumCtysTotal = 1; unsigned NumCtysTotal = 1;
unsigned NumInssTotal = 1; unsigned NumInssTotal = 1;
@ -924,7 +924,7 @@ static void Fig_GetAndShowHierarchyTotal (void)
/***** Write total number of elements *****/ /***** Write total number of elements *****/
Fig_ShowHierarchyRow ("",Txt_Total, Fig_ShowHierarchyRow ("",Txt_Total,
Str_BuildStringStr ("%s LINE_TOP",The_ClassDatN[Gbl.Prefs.Theme]), Str_BuildString ("%s LINE_TOP",The_ClassDatStrong[Gbl.Prefs.Theme]),
(int) NumCtysTotal, (int) NumCtysTotal,
(int) NumInssTotal, (int) NumInssTotal,
(int) NumCtrsTotal, (int) NumCtrsTotal,
@ -1552,12 +1552,12 @@ static void Fig_WriteRowStatsFileBrowsers1 (const char *NameOfFileZones,
struct Fig_SizeOfFileZones *SizeOfFileZones) struct Fig_SizeOfFileZones *SizeOfFileZones)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
char StrNumCrss[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; char StrNumCrss[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrNumGrps[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; char StrNumGrps[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrNumUsrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; char StrNumUsrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char FileSizeStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1]; char FileSizeStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
const char *Class = (FileZone == Brw_UNKNOWN) ? Str_BuildStringStr ("%s LINE_TOP",The_ClassDatN[Gbl.Prefs.Theme]) : const char *Class = (FileZone == Brw_UNKNOWN) ? Str_BuildString ("%s LINE_TOP",The_ClassDatStrong[Gbl.Prefs.Theme]) :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
Fil_WriteFileSizeFull ((double) SizeOfFileZones->Size,FileSizeStr); Fil_WriteFileSizeFull ((double) SizeOfFileZones->Size,FileSizeStr);
@ -1624,11 +1624,11 @@ static void Fig_WriteRowStatsFileBrowsers2 (const char *NameOfFileZones,
struct Fig_SizeOfFileZones *SizeOfFileZones) struct Fig_SizeOfFileZones *SizeOfFileZones)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
char StrNumFoldersPerCrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; char StrNumFoldersPerCrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrNumFilesPerCrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; char StrNumFilesPerCrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char FileSizePerCrsStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1]; char FileSizePerCrsStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
const char *Class = (FileZone == Brw_UNKNOWN) ? Str_BuildStringStr ("%s LINE_TOP",The_ClassDatN[Gbl.Prefs.Theme]) : const char *Class = (FileZone == Brw_UNKNOWN) ? Str_BuildString ("%s LINE_TOP",The_ClassDatStrong[Gbl.Prefs.Theme]) :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
if (SizeOfFileZones->NumCrss == -1) // Not applicable if (SizeOfFileZones->NumCrss == -1) // Not applicable
@ -1681,11 +1681,11 @@ static void Fig_WriteRowStatsFileBrowsers3 (const char *NameOfFileZones,
struct Fig_SizeOfFileZones *SizeOfFileZones) struct Fig_SizeOfFileZones *SizeOfFileZones)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
char StrNumFoldersPerUsr[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; char StrNumFoldersPerUsr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrNumFilesPerUsr[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; char StrNumFilesPerUsr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char FileSizePerUsrStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1]; char FileSizePerUsrStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
const char *Class = (FileZone == Brw_UNKNOWN) ? Str_BuildStringStr ("%s LINE_TOP",The_ClassDatN[Gbl.Prefs.Theme]) : const char *Class = (FileZone == Brw_UNKNOWN) ? Str_BuildString ("%s LINE_TOP",The_ClassDatStrong[Gbl.Prefs.Theme]) :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
if (SizeOfFileZones->NumUsrs == -1) // Not applicable if (SizeOfFileZones->NumUsrs == -1) // Not applicable
@ -2008,7 +2008,7 @@ static void Fig_GetAndShowTestsStats (void)
{ {
extern const char *Hlp_ANALYTICS_Figures_tests; extern const char *Hlp_ANALYTICS_Figures_tests;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES]; extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
extern const char *Txt_Type_of_BR_answers; extern const char *Txt_Type_of_BR_answers;
extern const char *Txt_Number_of_BR_courses_BR_with_test_BR_questions; extern const char *Txt_Number_of_BR_courses_BR_with_test_BR_questions;
@ -2101,15 +2101,15 @@ static void Fig_GetAndShowTestsStats (void)
/***** Write stats *****/ /***** Write stats *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"LM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Txt_Total); HTM_Txt (Txt_Total);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (Stats.NumCoursesWithQuestions); HTM_Unsigned (Stats.NumCoursesWithQuestions);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtF ("%u (%.1f%%)", HTM_TxtF ("%u (%.1f%%)",
Stats.NumCoursesWithPluggableQuestions, Stats.NumCoursesWithPluggableQuestions,
Stats.NumCoursesWithQuestions ? (double) Stats.NumCoursesWithPluggableQuestions * 100.0 / Stats.NumCoursesWithQuestions ? (double) Stats.NumCoursesWithPluggableQuestions * 100.0 /
@ -2117,27 +2117,27 @@ static void Fig_GetAndShowTestsStats (void)
0.0); 0.0);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (Stats.NumQsts); HTM_Unsigned (Stats.NumQsts);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Double2Decimals (Stats.AvgQstsPerCourse); HTM_Double2Decimals (Stats.AvgQstsPerCourse);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_UnsignedLong (Stats.NumHits); HTM_UnsignedLong (Stats.NumHits);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Double2Decimals (Stats.AvgHitsPerCourse); HTM_Double2Decimals (Stats.AvgHitsPerCourse);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Double2Decimals (Stats.AvgHitsPerQuestion); HTM_Double2Decimals (Stats.AvgHitsPerQuestion);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Double2Decimals (Stats.AvgScorePerQuestion); HTM_Double2Decimals (Stats.AvgScorePerQuestion);
HTM_TD_End (); HTM_TD_End ();
@ -2263,7 +2263,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
{ {
extern const char *Hlp_ANALYTICS_Figures_timeline; extern const char *Hlp_ANALYTICS_Figures_timeline;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES]; extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
extern const char *Txt_Type; extern const char *Txt_Type;
extern const char *Txt_Number_of_posts; extern const char *Txt_Number_of_posts;
@ -2383,25 +2383,25 @@ static void Fig_GetAndShowTimelineActivityStats (void)
/* Write totals */ /* Write totals */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"LM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Txt_Total); HTM_Txt (Txt_Total);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (NumNotes); HTM_Unsigned (NumNotes);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (NumUsrs); HTM_Unsigned (NumUsrs);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Percentage (NumUsrsTotal ? (double) NumUsrs * 100.0 / HTM_Percentage (NumUsrsTotal ? (double) NumUsrs * 100.0 /
(double) NumUsrsTotal : (double) NumUsrsTotal :
0.0); 0.0);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Double2Decimals (NumUsrs ? (double) NumNotes / (double) NumUsrs : HTM_Double2Decimals (NumUsrs ? (double) NumNotes / (double) NumUsrs :
0.0); 0.0);
HTM_TD_End (); HTM_TD_End ();
@ -2748,7 +2748,7 @@ static void Fig_WriteForumTitleAndStats (For_ForumType_t ForumType,
static void Fig_WriteForumTotalStats (struct Fig_FiguresForum *FiguresForum) static void Fig_WriteForumTotalStats (struct Fig_FiguresForum *FiguresForum)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Total; extern const char *Txt_Total;
double NumThrsPerForum; double NumThrsPerForum;
double NumPostsPerThread; double NumPostsPerThread;
@ -2769,38 +2769,38 @@ static void Fig_WriteForumTotalStats (struct Fig_FiguresForum *FiguresForum)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"%s LINE_TOP\" style=\"width:20px;\"", HTM_TD_Begin ("class=\"%s LINE_TOP\" style=\"width:20px;\"",
The_ClassDatN[Gbl.Prefs.Theme]); The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"LM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"LM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Txt_Total); HTM_Txt (Txt_Total);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (FiguresForum->NumForums); HTM_Unsigned (FiguresForum->NumForums);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (FiguresForum->NumThreads); HTM_Unsigned (FiguresForum->NumThreads);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (FiguresForum->NumPosts); HTM_Unsigned (FiguresForum->NumPosts);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP RM\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP RM\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (FiguresForum->NumUsrsToBeNotifiedByEMail); HTM_Unsigned (FiguresForum->NumUsrsToBeNotifiedByEMail);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Double2Decimals (NumThrsPerForum); HTM_Double2Decimals (NumThrsPerForum);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Double2Decimals (NumPostsPerThread); HTM_Double2Decimals (NumPostsPerThread);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Double2Decimals (NumPostsPerForum); HTM_Double2Decimals (NumPostsPerForum);
HTM_TD_End (); HTM_TD_End ();
@ -2815,7 +2815,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
{ {
extern const char *Hlp_ANALYTICS_Figures_notifications; extern const char *Hlp_ANALYTICS_Figures_notifications;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES]; extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
extern const char *Txt_Event; extern const char *Txt_Event;
extern const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS]; extern const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS];
@ -2942,25 +2942,25 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
/***** Write total number of users who want to be notified by email on some event *****/ /***** Write total number of users who want to be notified by email on some event *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"LM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Txt_Total); HTM_Txt (Txt_Total);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent); HTM_Unsigned (NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Percentage (NumUsrsTotal ? (double) NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent * 100.0 / HTM_Percentage (NumUsrsTotal ? (double) NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent * 100.0 /
(double) NumUsrsTotal : (double) NumUsrsTotal :
0.0); 0.0);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (NumEventsTotal); HTM_Unsigned (NumEventsTotal);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (NumMailsTotal); HTM_Unsigned (NumMailsTotal);
HTM_TD_End (); HTM_TD_End ();
@ -2978,7 +2978,7 @@ static void Fig_GetAndShowNoticesStats (void)
{ {
extern const char *Hlp_ANALYTICS_Figures_notices; extern const char *Hlp_ANALYTICS_Figures_notices;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES]; extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
extern const char *Txt_NOTICE_Active_BR_notices; extern const char *Txt_NOTICE_Active_BR_notices;
extern const char *Txt_NOTICE_Obsolete_BR_notices; extern const char *Txt_NOTICE_Obsolete_BR_notices;
@ -3034,7 +3034,7 @@ static void Fig_GetAndShowNoticesStats (void)
HTM_Unsigned (NumNoticesDeleted); HTM_Unsigned (NumNoticesDeleted);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned ( NumTotalNotices); HTM_Unsigned ( NumTotalNotices);
HTM_TD_End (); HTM_TD_End ();
@ -3056,7 +3056,7 @@ static void Fig_GetAndShowMsgsStats (void)
{ {
extern const char *Hlp_ANALYTICS_Figures_messages; extern const char *Hlp_ANALYTICS_Figures_messages;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES]; extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
extern const char *Txt_Messages; extern const char *Txt_Messages;
extern const char *Txt_MSGS_Not_deleted; extern const char *Txt_MSGS_Not_deleted;
@ -3106,7 +3106,7 @@ static void Fig_GetAndShowMsgsStats (void)
HTM_Unsigned (NumMsgsSentDeleted); HTM_Unsigned (NumMsgsSentDeleted);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (NumMsgsSentNotDeleted + NumMsgsSentDeleted); HTM_Unsigned (NumMsgsSentNotDeleted + NumMsgsSentDeleted);
HTM_TD_End (); HTM_TD_End ();
@ -3130,7 +3130,7 @@ static void Fig_GetAndShowMsgsStats (void)
HTM_Unsigned (NumMsgsReceivedAndDeleted); HTM_Unsigned (NumMsgsReceivedAndDeleted);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (NumMsgsReceivedNotDeleted + NumMsgsReceivedAndDeleted); HTM_Unsigned (NumMsgsReceivedNotDeleted + NumMsgsReceivedAndDeleted);
HTM_TD_End (); HTM_TD_End ();
@ -3614,7 +3614,7 @@ static void Fig_GetAndShowNumUsrsPerFirstDayOfWeek (void)
FirstDayOfWeek) < 0) FirstDayOfWeek) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Ico_PutIcon (Icon, Ico_PutIcon (Icon,
Str_BuildStringStr (Txt_First_day_of_the_week_X, Str_BuildString (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek]), Txt_DAYS_SMALL[FirstDayOfWeek]),
"ICO40x40"); "ICO40x40");
Str_FreeStrings (); Str_FreeStrings ();
@ -3646,7 +3646,7 @@ static void Fig_GetAndShowNumUsrsPerDateFormat (void)
{ {
extern const char *Hlp_ANALYTICS_Figures_dates; extern const char *Hlp_ANALYTICS_Figures_dates;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES]; extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
extern const char *Txt_Format; extern const char *Txt_Format;
extern const char *Txt_Number_of_users; extern const char *Txt_Number_of_users;
@ -3691,7 +3691,7 @@ static void Fig_GetAndShowNumUsrsPerDateFormat (void)
{ {
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"LM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
Dat_PutSpanDateFormat (Format); Dat_PutSpanDateFormat (Format);
Dat_PutScriptDateFormat (Format); Dat_PutScriptDateFormat (Format);
HTM_TD_End (); HTM_TD_End ();

View File

@ -314,6 +314,7 @@ void Fol_ShowFollowingAndFollowers (const struct UsrData *UsrDat,
unsigned NumFollowing,unsigned NumFollowers, unsigned NumFollowing,unsigned NumFollowers,
bool UsrFollowsMe,bool IFollowUsr) bool UsrFollowsMe,bool IFollowUsr)
{ {
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_FOLLOWS_YOU; extern const char *Txt_FOLLOWS_YOU;
extern const char *Txt_Following; extern const char *Txt_Following;
extern const char *Txt_Followers; extern const char *Txt_Followers;
@ -328,7 +329,7 @@ void Fol_ShowFollowingAndFollowers (const struct UsrData *UsrDat,
HTM_DIV_Begin ("class=\"FOLLOW_SIDE\""); HTM_DIV_Begin ("class=\"FOLLOW_SIDE\"");
/* User follows me? */ /* User follows me? */
HTM_DIV_Begin ("id=\"follows_me\" class=\"DAT_LIGHT\""); HTM_DIV_Begin ("id=\"follows_me\" class=\"%s\"",The_ClassDatLight[Gbl.Prefs.Theme]);
if (UsrFollowsMe) if (UsrFollowsMe)
HTM_Txt (Txt_FOLLOWS_YOU); HTM_Txt (Txt_FOLLOWS_YOU);
HTM_DIV_End (); HTM_DIV_End ();
@ -640,7 +641,7 @@ static void Fol_ShowFollowedOrFollower (struct UsrData *UsrDat)
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod); Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
HTM_DIV_Begin ("class=\"FOLLOW_USR_NAME\""); // Limited width HTM_DIV_Begin ("class=\"FOLLOW_USR_NAME\""); // Limited width
HTM_BUTTON_SUBMIT_Begin (Txt_Another_user_s_profile, HTM_BUTTON_SUBMIT_Begin (Txt_Another_user_s_profile,
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
Usr_WriteFirstNameBRSurnames (UsrDat); Usr_WriteFirstNameBRSurnames (UsrDat);

View File

@ -928,9 +928,9 @@ static void For_ShowAForumPost (struct For_Forums *Forums,
For_PutParamsForum (Forums); For_PutParamsForum (Forums);
Ico_PutIconLink (Enabled ? "eye-green.svg" : Ico_PutIconLink (Enabled ? "eye-green.svg" :
"eye-slash-red.svg", "eye-slash-red.svg",
Str_BuildStringLong (Enabled ? Txt_FORUM_Post_X_allowed_Click_to_ban_it : Str_BuildString (Enabled ? Txt_FORUM_Post_X_allowed_Click_to_ban_it :
Txt_FORUM_Post_X_banned_Click_to_unban_it, Txt_FORUM_Post_X_banned_Click_to_unban_it,
(long) PstNum)); PstNum));
Str_FreeStrings (); Str_FreeStrings ();
Frm_EndForm (); Frm_EndForm ();
} }
@ -938,9 +938,9 @@ static void For_ShowAForumPost (struct For_Forums *Forums,
{ {
Ico_PutIcon (Enabled ? "eye-green.svg" : Ico_PutIcon (Enabled ? "eye-green.svg" :
"eye-slash-red.svg", "eye-slash-red.svg",
Str_BuildStringLong (Enabled ? Txt_FORUM_Post_X_allowed : Str_BuildString (Enabled ? Txt_FORUM_Post_X_allowed :
Txt_FORUM_Post_X_banned, Txt_FORUM_Post_X_banned,
(long) PstNum), PstNum),
"ICO_HIDDEN ICO16x16"); "ICO_HIDDEN ICO16x16");
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -1665,6 +1665,7 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
unsigned Level, unsigned Level,
bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]) bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS])
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassFormLinkInBox[The_NUM_THEMES]; extern const char *The_ClassFormLinkInBox[The_NUM_THEMES];
extern const char *The_ClassFormLinkInBoxBold[The_NUM_THEMES]; extern const char *The_ClassFormLinkInBoxBold[The_NUM_THEMES];
extern const char *Txt_Copy_not_allowed; extern const char *Txt_Copy_not_allowed;
@ -1680,92 +1681,94 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
The_ClassFormLinkInBox[Gbl.Prefs.Theme]); The_ClassFormLinkInBox[Gbl.Prefs.Theme]);
/***** Begin row *****/ /***** Begin row *****/
HTM_LI_Begin (Highlight ? "class=\"LIGHT_BLUE\"" : if (Highlight)
NULL); HTM_LI_Begin ("class=\"%s\"",The_ClassBgHighlight[Gbl.Prefs.Theme]);
else
HTM_LI_Begin (NULL);
/***** Indent forum title *****/ /***** Indent forum title *****/
Lay_IndentDependingOnLevel (Level,IsLastItemInLevel); Lay_IndentDependingOnLevel (Level,IsLastItemInLevel);
/***** Write paste button used to move a thread in clipboard to this forum *****/ /***** Write paste button used to move a thread in clipboard to this forum *****/
if (Forums->Thread.ToMove >= 0) // If I have permission to paste threads and there is a thread ready to be pasted... if (Forums->Thread.ToMove >= 0) // If I have permission to paste threads and there is a thread ready to be pasted...
{
/* Check if thread to move is yet in current forum */
if (For_DB_CheckIfThrBelongsToForum (Forums->Thread.ToMove,Forum))
Ico_PutIcon ("paste.svg",Txt_Copy_not_allowed,"CONTEXT_OPT ICO_HIDDEN ICO16x16");
else
{ {
/* Check if thread to move is yet in current forum */ Frm_BeginFormAnchor (For_ActionsPasThrFor[Forum->Type],
if (For_DB_CheckIfThrBelongsToForum (Forums->Thread.ToMove,Forum)) For_FORUM_THREADS_SECTION_ID);
Ico_PutIcon ("paste.svg",Txt_Copy_not_allowed,"CONTEXT_OPT ICO_HIDDEN ICO16x16"); For_PutAllHiddenParamsForum (1, // Page of threads = first
else 1, // Page of posts = first
{ Forums->ForumSet,
Frm_BeginFormAnchor (For_ActionsPasThrFor[Forum->Type], Forums->ThreadsOrder,
For_FORUM_THREADS_SECTION_ID); Forum->Location,
For_PutAllHiddenParamsForum (1, // Page of threads = first Forums->Thread.ToMove,
1, // Page of posts = first -1L);
Forums->ForumSet, Ico_PutIconPaste ();
Forums->ThreadsOrder, Frm_EndForm ();
Forum->Location,
Forums->Thread.ToMove,
-1L);
Ico_PutIconPaste ();
Frm_EndForm ();
}
} }
}
/***** Write link to forum *****/ /***** Write link to forum *****/
Frm_BeginFormAnchor (For_ActionsSeeFor[Forum->Type], Frm_BeginFormAnchor (For_ActionsSeeFor[Forum->Type],
For_FORUM_THREADS_SECTION_ID); For_FORUM_THREADS_SECTION_ID);
For_PutAllHiddenParamsForum (1, // Page of threads = first For_PutAllHiddenParamsForum (1, // Page of threads = first
1, // Page of posts = first 1, // Page of posts = first
Forums->ForumSet, Forums->ForumSet,
Forums->ThreadsOrder, Forums->ThreadsOrder,
Forum->Location, Forum->Location,
-1L, -1L,
-1L); -1L);
HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (For_ActionsSeeFor[Forum->Type]), HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (For_ActionsSeeFor[Forum->Type]),
Class,NULL); Class,NULL);
For_SetForumName (Forum,ForumName,Gbl.Prefs.Language,true); For_SetForumName (Forum,ForumName,Gbl.Prefs.Language,true);
switch (Forum->Type) switch (Forum->Type)
{ {
case For_FORUM_GLOBAL_USRS: case For_FORUM_GLOBAL_USRS:
case For_FORUM_GLOBAL_TCHS: case For_FORUM_GLOBAL_TCHS:
Ico_PutIcon ("comments.svg",ForumName,"ICO16x16"); Ico_PutIcon ("comments.svg",ForumName,"ICO16x16");
break; break;
case For_FORUM__SWAD__USRS: case For_FORUM__SWAD__USRS:
case For_FORUM__SWAD__TCHS: case For_FORUM__SWAD__TCHS:
Ico_PutIcon ("swad64x64.png",ForumName,"ICO16x16"); Ico_PutIcon ("swad64x64.png",ForumName,"ICO16x16");
break; break;
case For_FORUM_INSTIT_USRS: case For_FORUM_INSTIT_USRS:
case For_FORUM_INSTIT_TCHS: case For_FORUM_INSTIT_TCHS:
Lgo_DrawLogo (HieLvl_INS,Forum->Location,ForumName,16,NULL,true); Lgo_DrawLogo (HieLvl_INS,Forum->Location,ForumName,16,NULL,true);
break; break;
case For_FORUM_CENTER_USRS: case For_FORUM_CENTER_USRS:
case For_FORUM_CENTER_TCHS: case For_FORUM_CENTER_TCHS:
Lgo_DrawLogo (HieLvl_CTR,Forum->Location,ForumName,16,NULL,true); Lgo_DrawLogo (HieLvl_CTR,Forum->Location,ForumName,16,NULL,true);
break; break;
case For_FORUM_DEGREE_USRS: case For_FORUM_DEGREE_USRS:
case For_FORUM_DEGREE_TCHS: case For_FORUM_DEGREE_TCHS:
Lgo_DrawLogo (HieLvl_DEG,Forum->Location,ForumName,16,NULL,true); Lgo_DrawLogo (HieLvl_DEG,Forum->Location,ForumName,16,NULL,true);
break; break;
case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_USRS:
case For_FORUM_COURSE_TCHS: case For_FORUM_COURSE_TCHS:
Ico_PutIcon ("chalkboard-teacher.svg",ForumName,"ICO16x16"); Ico_PutIcon ("chalkboard-teacher.svg",ForumName,"ICO16x16");
break; break;
default: default:
break; break;
} }
HTM_TxtF ("&nbsp;%s",ForumName); HTM_TxtF ("&nbsp;%s",ForumName);
/***** Write total number of threads and posts in this forum *****/ /***** Write total number of threads and posts in this forum *****/
if (NumThrs) if (NumThrs)
For_WriteNumberOfThrs (NumThrs); For_WriteNumberOfThrs (NumThrs);
/***** End row *****/ /***** End row *****/
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
/***** Put link to register students *****/ /***** Put link to register students *****/
if (Forum->Type == For_FORUM_COURSE_USRS) if (Forum->Type == For_FORUM_COURSE_USRS)
Enr_PutButtonInlineToRegisterStds (Forum->Location); Enr_PutButtonInlineToRegisterStds (Forum->Location);
HTM_LI_End (); HTM_LI_End ();
} }
@ -2129,6 +2132,7 @@ static void For_ListForumThrs (struct For_Forums *Forums,
long ThrCodHighlighted, long ThrCodHighlighted,
struct Pagination *PaginationThrs) struct Pagination *PaginationThrs)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *The_ClassFormInBoxBold[The_NUM_THEMES]; extern const char *The_ClassFormInBoxBold[The_NUM_THEMES];
extern const char *Txt_Thread_with_posts_from_you; extern const char *Txt_Thread_with_posts_from_you;
@ -2175,7 +2179,7 @@ static void For_ListForumThrs (struct For_Forums *Forums,
Style = (Thr.NumUnreadPosts ? "AUTHOR_TXT_NEW" : Style = (Thr.NumUnreadPosts ? "AUTHOR_TXT_NEW" :
"AUTHOR_TXT"); "AUTHOR_TXT");
BgColor = (Thr.ThrCod == ThreadInMyClipboard) ? "LIGHT_GREEN" : BgColor = (Thr.ThrCod == ThreadInMyClipboard) ? "LIGHT_GREEN" :
((Thr.ThrCod == ThrCodHighlighted) ? "LIGHT_BLUE" : ((Thr.ThrCod == ThrCodHighlighted) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);

View File

@ -515,6 +515,7 @@ static void Gam_ShowOneGame (struct Gam_Games *Games,
struct Gam_Game *Game,bool ShowOnlyThisGame) struct Gam_Game *Game,bool ShowOnlyThisGame)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_View_game; extern const char *Txt_View_game;
extern const char *Txt_Number_of_questions; extern const char *Txt_Number_of_questions;
extern const char *Txt_Maximum_grade; extern const char *Txt_Maximum_grade;
@ -664,7 +665,7 @@ static void Gam_ShowOneGame (struct Gam_Games *Games,
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML
ALn_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links ALn_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
HTM_DIV_Begin ("class=\"PAR %s\"",Game->Hidden ? "DAT_LIGHT" : HTM_DIV_Begin ("class=\"PAR %s\"",Game->Hidden ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]); The_ClassDat[Gbl.Prefs.Theme]);
HTM_Txt (Txt); HTM_Txt (Txt);
HTM_DIV_End (); HTM_DIV_End ();
@ -1760,7 +1761,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
Lay_PutContextualLinkOnlyIcon (ActUp_GamQst,Anchor, Lay_PutContextualLinkOnlyIcon (ActUp_GamQst,Anchor,
Gam_PutParamsOneQst,Games, Gam_PutParamsOneQst,Games,
"arrow-up.svg", "arrow-up.svg",
Str_BuildStringStr (Txt_Move_up_X, Str_BuildString (Txt_Move_up_X,
StrQstInd)); StrQstInd));
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -1773,7 +1774,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
Lay_PutContextualLinkOnlyIcon (ActDwnGamQst,Anchor, Lay_PutContextualLinkOnlyIcon (ActDwnGamQst,Anchor,
Gam_PutParamsOneQst,Games, Gam_PutParamsOneQst,Games,
"arrow-down.svg", "arrow-down.svg",
Str_BuildStringStr (Txt_Move_down_X, Str_BuildString (Txt_Move_down_X,
StrQstInd)); StrQstInd));
Str_FreeStrings (); Str_FreeStrings ();
} }

View File

@ -1460,7 +1460,7 @@ static void Grp_ListGroupsForEdition (const struct Roo_Rooms *Rooms)
Grp_PutParamGrpCod (&Grp->GrpCod); Grp_PutParamGrpCod (&Grp->GrpCod);
Ico_PutIconLink (Grp->Open ? "unlock.svg" : Ico_PutIconLink (Grp->Open ? "unlock.svg" :
"lock.svg", "lock.svg",
Str_BuildStringStr (Grp->Open ? Txt_Group_X_open_click_to_close_it : Str_BuildString (Grp->Open ? Txt_Group_X_open_click_to_close_it :
Txt_Group_X_closed_click_to_open_it, Txt_Group_X_closed_click_to_open_it,
Grp->GrpName)); Grp->GrpName));
Str_FreeStrings (); Str_FreeStrings ();
@ -1475,7 +1475,7 @@ static void Grp_ListGroupsForEdition (const struct Roo_Rooms *Rooms)
Grp_PutParamGrpCod (&Grp->GrpCod); Grp_PutParamGrpCod (&Grp->GrpCod);
Ico_PutIconLink (Grp->FileZones ? "folder-open-green.svg" : Ico_PutIconLink (Grp->FileZones ? "folder-open-green.svg" :
"folder-red.svg", "folder-red.svg",
Str_BuildStringStr (Grp->FileZones ? Txt_File_zones_of_the_group_X_enabled_click_to_disable_them : Str_BuildString (Grp->FileZones ? Txt_File_zones_of_the_group_X_enabled_click_to_disable_them :
Txt_File_zones_of_the_group_X_disabled_click_to_enable_them, Txt_File_zones_of_the_group_X_disabled_click_to_enable_them,
Grp->GrpName)); Grp->GrpName));
Str_FreeStrings (); Str_FreeStrings ();
@ -1620,6 +1620,7 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp,
Grp_WhichIsAssociatedToGrp_t WhichIsAssociatedToGrp, Grp_WhichIsAssociatedToGrp_t WhichIsAssociatedToGrp,
long Cod) // Assignment, attendance event, survey, exam event or match long Cod) // Assignment, attendance event, survey, exam event or match
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
static const struct static const struct
{ {
const char *Table; const char *Table;
@ -1663,18 +1664,19 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp,
/* Put checkbox to select the group */ /* Put checkbox to select the group */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"%s\"", if (IBelongToThisGroup)
IBelongToThisGroup ? "LM LIGHT_BLUE" : HTM_TD_Begin ("class=\"LM %s\"",The_ClassBgHighlight[Gbl.Prefs.Theme]);
"LM"); else
HTM_INPUT_CHECKBOX ("GrpCods",HTM_DONT_SUBMIT_ON_CHANGE, HTM_TD_Begin ("class=\"LM\"");
"id=\"Grp%ld\" value=\"%ld\"%s%s" HTM_INPUT_CHECKBOX ("GrpCods",HTM_DONT_SUBMIT_ON_CHANGE,
" onclick=\"uncheckParent(this,'WholeCrs')\"", "id=\"Grp%ld\" value=\"%ld\"%s%s"
Grp->GrpCod,Grp->GrpCod, " onclick=\"uncheckParent(this,'WholeCrs')\"",
AssociatedToGrp ? " checked=\"checked\"" : Grp->GrpCod,Grp->GrpCod,
"", AssociatedToGrp ? " checked=\"checked\"" :
(IBelongToThisGroup || "",
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? "" : (IBelongToThisGroup ||
" disabled=\"disabled\""); Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? "" :
" disabled=\"disabled\"");
HTM_TD_End (); HTM_TD_End ();
Grp_WriteRowGrp (Grp,IBelongToThisGroup); Grp_WriteRowGrp (Grp,IBelongToThisGroup);
@ -1843,6 +1845,7 @@ static void Grp_ShowWarningToStdsToChangeGrps (void)
static bool Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp, static bool Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
unsigned *NumGrpsThisTypeIBelong) unsigned *NumGrpsThisTypeIBelong)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
struct ListCodGrps LstGrpsIBelong; struct ListCodGrps LstGrpsIBelong;
unsigned NumGrpThisType; unsigned NumGrpThisType;
struct Group *Grp; struct Group *Grp;
@ -1956,44 +1959,45 @@ static bool Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
/* Put radio item or checkbox to select the group */ /* Put radio item or checkbox to select the group */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"%s\"", if (IBelongToThisGroup)
IBelongToThisGroup ? "LM LIGHT_BLUE" : HTM_TD_Begin ("class=\"LM %s\"",The_ClassBgHighlight[Gbl.Prefs.Theme]);
"LM"); else
HTM_TD_Begin ("class=\"LM\"");
snprintf (StrGrpCod,sizeof (StrGrpCod),"GrpCod%ld",GrpTyp->GrpTypCod); snprintf (StrGrpCod,sizeof (StrGrpCod),"GrpCod%ld",GrpTyp->GrpTypCod);
if (Gbl.Usrs.Me.Role.Logged == Rol_STD && // If I am a student if (Gbl.Usrs.Me.Role.Logged == Rol_STD && // If I am a student
!GrpTyp->MultipleEnrolment && // ...and the enrolment is single !GrpTyp->MultipleEnrolment && // ...and the enrolment is single
GrpTyp->NumGrps > 1) // ...and there are more than one group GrpTyp->NumGrps > 1) // ...and there are more than one group
{ {
/* Put a radio item */ /* Put a radio item */
if (GrpTyp->MandatoryEnrolment) if (GrpTyp->MandatoryEnrolment)
HTM_INPUT_RADIO (StrGrpCod,false, HTM_INPUT_RADIO (StrGrpCod,false,
"id=\"Grp%ld\" value=\"%ld\"%s%s", "id=\"Grp%ld\" value=\"%ld\"%s%s",
Grp->GrpCod,Grp->GrpCod, Grp->GrpCod,Grp->GrpCod,
IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected? IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected?
ICanChangeMySelectionForThisGrp ? "" : ICanChangeMySelectionForThisGrp ? "" :
IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted) IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
" disabled=\"disabled\""); // I can not register " disabled=\"disabled\""); // I can not register
else // If the enrolment is not mandatory, I can select no groups else // If the enrolment is not mandatory, I can select no groups
HTM_INPUT_RADIO (StrGrpCod,false, HTM_INPUT_RADIO (StrGrpCod,false,
"id=\"Grp%ld\" value=\"%ld\"%s%s" "id=\"Grp%ld\" value=\"%ld\"%s%s"
" onclick=\"selectUnselectRadio(this,this.form.GrpCod%ld,%u)\"", " onclick=\"selectUnselectRadio(this,this.form.GrpCod%ld,%u)\"",
Grp->GrpCod,Grp->GrpCod, Grp->GrpCod,Grp->GrpCod,
IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected? IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected?
ICanChangeMySelectionForThisGrp ? "" : ICanChangeMySelectionForThisGrp ? "" :
IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted) IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
" disabled=\"disabled\"", // I can not register " disabled=\"disabled\"", // I can not register
GrpTyp->GrpTypCod,GrpTyp->NumGrps); GrpTyp->GrpTypCod,GrpTyp->NumGrps);
} }
else else
/* Put a checkbox item */ /* Put a checkbox item */
HTM_INPUT_CHECKBOX (StrGrpCod,HTM_DONT_SUBMIT_ON_CHANGE, HTM_INPUT_CHECKBOX (StrGrpCod,HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"Grp%ld\" value=\"%ld\"%s%s", "id=\"Grp%ld\" value=\"%ld\"%s%s",
Grp->GrpCod,Grp->GrpCod, Grp->GrpCod,Grp->GrpCod,
IBelongToThisGroup ? " checked=\"checked\"" : "", IBelongToThisGroup ? " checked=\"checked\"" : "",
ICanChangeMySelectionForThisGrp ? "" : ICanChangeMySelectionForThisGrp ? "" :
IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted) IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
" disabled=\"disabled\""); // I can not register " disabled=\"disabled\""); // I can not register
HTM_TD_End (); HTM_TD_End ();
@ -2050,6 +2054,7 @@ void Grp_ShowLstGrpsToChgOtherUsrsGrps (long UsrCod)
static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod) static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
struct ListCodGrps LstGrpsUsrBelongs; struct ListCodGrps LstGrpsUsrBelongs;
unsigned NumGrpThisType; unsigned NumGrpThisType;
bool UsrBelongsToThisGroup; bool UsrBelongsToThisGroup;
@ -2077,19 +2082,20 @@ static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Begin cell for checkbox */ /* Begin cell for checkbox */
HTM_TD_Begin ("class=\"%s\"", if (UsrBelongsToThisGroup)
UsrBelongsToThisGroup ? "LM LIGHT_BLUE" : HTM_TD_Begin ("class=\"LM %s\"",The_ClassBgHighlight[Gbl.Prefs.Theme]);
"LM"); else
HTM_TD_Begin ("class=\"LM\"");
/* Put checkbox to select the group */ /* Put checkbox to select the group */
// Always checkbox, not radio, because the role in the form may be teacher, // Always checkbox, not radio, because the role in the form may be teacher,
// so if he/she is registered as teacher, he/she can belong to several groups // so if he/she is registered as teacher, he/she can belong to several groups
snprintf (StrGrpCod,sizeof (StrGrpCod),"GrpCod%ld",GrpTyp->GrpTypCod); snprintf (StrGrpCod,sizeof (StrGrpCod),"GrpCod%ld",GrpTyp->GrpTypCod);
HTM_INPUT_CHECKBOX (StrGrpCod,HTM_DONT_SUBMIT_ON_CHANGE, HTM_INPUT_CHECKBOX (StrGrpCod,HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"Grp%ld\" value=\"%ld\"%s", "id=\"Grp%ld\" value=\"%ld\"%s",
Grp->GrpCod,Grp->GrpCod, Grp->GrpCod,Grp->GrpCod,
UsrBelongsToThisGroup ? " checked=\"checked\"" : UsrBelongsToThisGroup ? " checked=\"checked\"" :
""); // I can not register ""); // I can not register
/* End cell for checkbox */ /* End cell for checkbox */
HTM_TD_End (); HTM_TD_End ();
@ -2113,6 +2119,7 @@ static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod)
static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp, static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp,
Grp_WhichGroups_t GroupsSelectableByStdsOrNETs) Grp_WhichGroups_t GroupsSelectableByStdsOrNETs)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_users_with_no_group; extern const char *Txt_users_with_no_group;
unsigned NumGrpThisType; unsigned NumGrpThisType;
@ -2181,16 +2188,17 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp,
/* Put checkbox to select the group */ /* Put checkbox to select the group */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"%s\"", if (IBelongToThisGroup)
IBelongToThisGroup ? "LIGHT_BLUE" : HTM_TD_Begin ("class=\"LM %s\"",The_ClassBgHighlight[Gbl.Prefs.Theme]);
"LM"); else
HTM_INPUT_CHECKBOX ("GrpCods",HTM_DONT_SUBMIT_ON_CHANGE, HTM_TD_Begin ("class=\"LM\"");
"id=\"Grp%ld\" value=\"%ld\"%s%s", HTM_INPUT_CHECKBOX ("GrpCods",HTM_DONT_SUBMIT_ON_CHANGE,
Grp->GrpCod,Grp->GrpCod, "id=\"Grp%ld\" value=\"%ld\"%s%s",
Checked ? " checked=\"checked\"" : Grp->GrpCod,Grp->GrpCod,
"", Checked ? " checked=\"checked\"" :
ICanSelUnselGroup ? " onclick=\"checkParent(this,'AllGroups')\"" : "",
" disabled=\"disabled\""); ICanSelUnselGroup ? " onclick=\"checkParent(this,'AllGroups')\"" :
" disabled=\"disabled\"");
HTM_TD_End (); HTM_TD_End ();
Grp_WriteRowGrp (Grp,IBelongToThisGroup); Grp_WriteRowGrp (Grp,IBelongToThisGroup);
@ -2325,6 +2333,7 @@ static void Grp_WriteGrpHead (struct GroupType *GrpTyp)
static void Grp_WriteRowGrp (struct Group *Grp,bool Highlight) static void Grp_WriteRowGrp (struct Group *Grp,bool Highlight)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_Group_X_open; extern const char *Txt_Group_X_open;
extern const char *Txt_Group_X_closed; extern const char *Txt_Group_X_closed;
@ -2335,32 +2344,37 @@ static void Grp_WriteRowGrp (struct Group *Grp,bool Highlight)
/***** Write icon to show if group is open or closed *****/ /***** Write icon to show if group is open or closed *****/
if (Highlight) if (Highlight)
HTM_TD_Begin ("class=\"BM LIGHT_BLUE\""); HTM_TD_Begin ("class=\"BM %s\"",The_ClassBgHighlight[Gbl.Prefs.Theme]);
else else
HTM_TD_Begin ("class=\"BM\""); HTM_TD_Begin ("class=\"BM\"");
Ico_PutIconOff (Grp->Open ? "unlock.svg" : Ico_PutIconOff (Grp->Open ? "unlock.svg" :
"lock.svg", "lock.svg",
Str_BuildStringStr (Grp->Open ? Txt_Group_X_open : Str_BuildString (Grp->Open ? Txt_Group_X_open :
Txt_Group_X_closed, Txt_Group_X_closed,
Grp->GrpName)); Grp->GrpName));
Str_FreeStrings (); Str_FreeStrings ();
HTM_TD_End (); HTM_TD_End ();
/***** Group name *****/ /***** Group name *****/
HTM_TD_Begin ("class=\"%s\"", if (Highlight)
Highlight ? "LM LIGHT_BLUE" : HTM_TD_Begin ("class=\"LM %s\"",The_ClassBgHighlight[Gbl.Prefs.Theme]);
"LM"); else
HTM_LABEL_Begin ("for=\"Grp%ld\" class=\"%s\"", HTM_TD_Begin ("class=\"LM\"");
Grp->GrpCod,The_ClassDat[Gbl.Prefs.Theme]); HTM_LABEL_Begin ("for=\"Grp%ld\" class=\"%s\"",
HTM_Txt (Grp->GrpName); Grp->GrpCod,The_ClassDat[Gbl.Prefs.Theme]);
HTM_LABEL_End (); HTM_Txt (Grp->GrpName);
HTM_LABEL_End ();
HTM_TD_End (); HTM_TD_End ();
/***** Room *****/ /***** Room *****/
HTM_TD_Begin ("class=\"%s %s\"", if (Highlight)
The_ClassDat[Gbl.Prefs.Theme],Highlight ? "LM LIGHT_BLUE" : HTM_TD_Begin ("class=\"LM %s %s\"",
"LM"); The_ClassDat[Gbl.Prefs.Theme],
HTM_Txt (Grp->Room.ShrtName); The_ClassBgHighlight[Gbl.Prefs.Theme]);
else
HTM_TD_Begin ("class=\"LM %s\"",
The_ClassDat[Gbl.Prefs.Theme]);
HTM_Txt (Grp->Room.ShrtName);
HTM_TD_End (); HTM_TD_End ();
/***** Current number of users in this group *****/ /***** Current number of users in this group *****/
@ -2368,31 +2382,43 @@ static void Grp_WriteRowGrp (struct Group *Grp,bool Highlight)
Role >= Rol_STD; Role >= Rol_STD;
Role--) Role--)
{ {
HTM_TD_Begin ("class=\"%s %s\"", if (Highlight)
The_ClassDat[Gbl.Prefs.Theme],Highlight ? "CM LIGHT_BLUE" : HTM_TD_Begin ("class=\"CM %s %s\"",
"CM"); The_ClassDat[Gbl.Prefs.Theme],
HTM_Int (Grp->NumUsrs[Role]); The_ClassBgHighlight[Gbl.Prefs.Theme]);
else
HTM_TD_Begin ("class=\"CM %s\"",
The_ClassDat[Gbl.Prefs.Theme]);
HTM_Int (Grp->NumUsrs[Role]);
HTM_TD_End (); HTM_TD_End ();
} }
/***** Max. number of students in this group *****/ /***** Max. number of students in this group *****/
HTM_TD_Begin ("class=\"%s %s\"", if (Highlight)
The_ClassDat[Gbl.Prefs.Theme],Highlight ? "CM LIGHT_BLUE" : HTM_TD_Begin ("class=\"CM %s %s\"",
"CM"); The_ClassDat[Gbl.Prefs.Theme],
Grp_WriteMaxStds (StrMaxStudents,Grp->MaxStudents); The_ClassBgHighlight[Gbl.Prefs.Theme]);
HTM_TxtF ("%s&nbsp;",StrMaxStudents); else
HTM_TD_Begin ("class=\"CM %s\"",
The_ClassDat[Gbl.Prefs.Theme]);
Grp_WriteMaxStds (StrMaxStudents,Grp->MaxStudents);
HTM_TxtF ("%s&nbsp;",StrMaxStudents);
HTM_TD_End (); HTM_TD_End ();
/***** Vacants in this group *****/ /***** Vacants in this group *****/
HTM_TD_Begin ("class=\"%s %s\"", if (Highlight)
The_ClassDat[Gbl.Prefs.Theme],Highlight ? "CM LIGHT_BLUE" : HTM_TD_Begin ("class=\"CM %s %s\"",
"CM"); The_ClassDat[Gbl.Prefs.Theme],
if (Grp->MaxStudents <= Grp_MAX_STUDENTS_IN_A_GROUP) The_ClassBgHighlight[Gbl.Prefs.Theme]);
{ else
Vacant = (int) Grp->MaxStudents - (int) Grp->NumUsrs[Rol_STD]; HTM_TD_Begin ("class=\"CM %s\"",
HTM_Unsigned (Vacant > 0 ? (unsigned) Vacant : The_ClassDat[Gbl.Prefs.Theme]);
0); if (Grp->MaxStudents <= Grp_MAX_STUDENTS_IN_A_GROUP)
} {
Vacant = (int) Grp->MaxStudents - (int) Grp->NumUsrs[Rol_STD];
HTM_Unsigned (Vacant > 0 ? (unsigned) Vacant :
0);
}
HTM_TD_End (); HTM_TD_End ();
} }

View File

@ -127,7 +127,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
if (ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs] != ActUnk) if (ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs] != ActUnk)
{ {
/* Request my removing from this course */ /* Request my removing from this course */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Txt_Remove_me_from_THE_COURSE_X, Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildString (Txt_Remove_me_from_THE_COURSE_X,
Gbl.Hierarchy.Crs.ShrtName), Gbl.Hierarchy.Crs.ShrtName),
ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs], ActionsRemoveMe[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs],
Btn_REMOVE_BUTTON,Txt_Remove_me); Btn_REMOVE_BUTTON,Txt_Remove_me);
@ -137,7 +137,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
else // I do not belong to this course else // I do not belong to this course
{ {
/* Request my registration in this course */ /* Request my registration in this course */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Txt_Register_me_in_X, Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildString (Txt_Register_me_in_X,
Gbl.Hierarchy.Crs.ShrtName), Gbl.Hierarchy.Crs.ShrtName),
ActReqSignUp, ActReqSignUp,
Btn_CREATE_BUTTON,Txt_Sign_up); Btn_CREATE_BUTTON,Txt_Sign_up);
@ -153,7 +153,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
1 << Rol_STD)) // Current course probably has no students 1 << Rol_STD)) // Current course probably has no students
{ {
/* Request students enrolment */ /* Request students enrolment */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Txt_Register_students_in_COURSE_X, Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildString (Txt_Register_students_in_COURSE_X,
Gbl.Hierarchy.Crs.ShrtName), Gbl.Hierarchy.Crs.ShrtName),
ActReqEnrSevStd, ActReqEnrSevStd,
Btn_CREATE_BUTTON,Txt_Register_students); Btn_CREATE_BUTTON,Txt_Register_students);
@ -170,7 +170,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
if (Gbl.Hierarchy.Deg.DegCod > 0) // Degree selected if (Gbl.Hierarchy.Deg.DegCod > 0) // Degree selected
{ {
/* Select a course */ /* Select a course */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Level == HieLvl_CRS ? Txt_Select_create_course_in_X : Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildString (Gbl.Hierarchy.Level == HieLvl_CRS ? Txt_Select_create_course_in_X :
Txt_Select_or_create_one_course_in_X, Txt_Select_or_create_one_course_in_X,
Gbl.Hierarchy.Deg.ShrtName), Gbl.Hierarchy.Deg.ShrtName),
ActSeeCrs, ActSeeCrs,
@ -180,7 +180,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
else if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Center selected else if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Center selected
{ {
/* Select a degree */ /* Select a degree */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Deg.DegCod > 0 ? Txt_Select_or_create_another_degree_in_X : Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildString (Gbl.Hierarchy.Deg.DegCod > 0 ? Txt_Select_or_create_another_degree_in_X :
Txt_Select_or_create_one_degree_in_X, Txt_Select_or_create_one_degree_in_X,
Gbl.Hierarchy.Ctr.ShrtName), Gbl.Hierarchy.Ctr.ShrtName),
ActSeeDeg, ActSeeDeg,
@ -190,7 +190,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
else if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected else if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected
{ {
/* Select a center */ /* Select a center */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Ctr.CtrCod > 0 ? Txt_Select_or_create_another_center_in_X : Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildString (Gbl.Hierarchy.Ctr.CtrCod > 0 ? Txt_Select_or_create_another_center_in_X :
Txt_Select_or_create_one_center_in_X, Txt_Select_or_create_one_center_in_X,
Gbl.Hierarchy.Ins.ShrtName), Gbl.Hierarchy.Ins.ShrtName),
ActSeeCtr, ActSeeCtr,
@ -200,7 +200,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
else if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected else if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected
{ {
/* Select an institution */ /* Select an institution */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Gbl.Hierarchy.Ins.InsCod > 0 ? Txt_Select_or_create_another_institution_in_X : Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildString (Gbl.Hierarchy.Ins.InsCod > 0 ? Txt_Select_or_create_another_institution_in_X :
Txt_Select_or_create_one_institution_in_X, Txt_Select_or_create_one_institution_in_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
ActSeeIns, ActSeeIns,
@ -227,7 +227,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void)
Btn_CONFIRM_BUTTON,Txt_Log_in); Btn_CONFIRM_BUTTON,Txt_Log_in);
/* Sign up */ /* Sign up */
Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildStringStr (Txt_New_on_PLATFORM_Sign_up, Hlp_ShowRowHelpWhatWouldYouLikeToDo (Str_BuildString (Txt_New_on_PLATFORM_Sign_up,
Cfg_PLATFORM_SHORT_NAME), Cfg_PLATFORM_SHORT_NAME),
ActFrmMyAcc, ActFrmMyAcc,
Btn_CREATE_BUTTON,Txt_Create_account); Btn_CREATE_BUTTON,Txt_Create_account);

View File

@ -70,7 +70,7 @@ void HieCfg_Title (bool PutLink,
void HieCfg_FullName (bool PutForm,const char *Label,Act_Action_t NextAction, void HieCfg_FullName (bool PutForm,const char *Label,Act_Action_t NextAction,
const char FullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1]) const char FullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1])
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
/***** Full name *****/ /***** Full name *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -81,7 +81,7 @@ void HieCfg_FullName (bool PutForm,const char *Label,Act_Action_t NextAction,
Label); Label);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"LB %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"LB %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (PutForm) if (PutForm)
{ {
/* Form to change full name */ /* Form to change full name */
@ -106,7 +106,7 @@ void HieCfg_FullName (bool PutForm,const char *Label,Act_Action_t NextAction,
void HieCfg_ShrtName (bool PutForm,Act_Action_t NextAction, void HieCfg_ShrtName (bool PutForm,Act_Action_t NextAction,
const char ShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1]) const char ShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1])
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Short_name; extern const char *Txt_Short_name;
/***** Short name *****/ /***** Short name *****/
@ -118,7 +118,7 @@ void HieCfg_ShrtName (bool PutForm,Act_Action_t NextAction,
Txt_Short_name); Txt_Short_name);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"LB %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"LB %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (PutForm) if (PutForm)
{ {
/* Form to change short name */ /* Form to change short name */
@ -245,9 +245,9 @@ void HieCfg_NumCtrs (unsigned NumCtrs,bool PutForm)
{ {
Frm_BeginFormGoTo (ActSeeCtr); Frm_BeginFormGoTo (ActSeeCtr);
Ins_PutParamInsCod (Gbl.Hierarchy.Ins.InsCod); Ins_PutParamInsCod (Gbl.Hierarchy.Ins.InsCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Centers_of_INSTITUTION_X, HTM_BUTTON_SUBMIT_Begin (Str_BuildString (Txt_Centers_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.ShrtName), Gbl.Hierarchy.Ins.ShrtName),
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
} }

View File

@ -428,15 +428,20 @@ static void Ind_ShowNumCoursesWithIndicators (const struct Ind_Indicators *Indic
unsigned NumCrssWithIndicatorYes[1 + Ind_NUM_INDICATORS], unsigned NumCrssWithIndicatorYes[1 + Ind_NUM_INDICATORS],
unsigned NumCrss,bool PutForm) unsigned NumCrss,bool PutForm)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_Indicators; extern const char *Txt_Indicators;
extern const char *Txt_Courses; extern const char *Txt_Courses;
extern const char *Txt_Total; extern const char *Txt_Total;
unsigned Ind; unsigned Ind;
const char *Class; const char *Class;
const char *ClassNormal = "DAT_LIGHT RM"; const char *ClassNormal = Str_BuildString ("RM %s",
const char *ClassHighlight = Str_BuildStringStr ("%s RM LIGHT_BLUE",The_ClassDat[Gbl.Prefs.Theme]); The_ClassDatLight[Gbl.Prefs.Theme]);
const char *ClassHighlight = Str_BuildString ("RM %s %s",
The_ClassDat[Gbl.Prefs.Theme],
The_ClassBgHighlight[Gbl.Prefs.Theme]);
/***** Write number of courses with each number of indicators valid *****/ /***** Write number of courses with each number of indicators valid *****/
HTM_TABLE_BeginPadding (2); HTM_TABLE_BeginPadding (2);
@ -495,15 +500,15 @@ static void Ind_ShowNumCoursesWithIndicators (const struct Ind_Indicators *Indic
if (PutForm) if (PutForm)
HTM_TD_Empty (1); HTM_TD_Empty (1);
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Txt_Total); HTM_Txt (Txt_Total);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Unsigned (NumCrss); HTM_Unsigned (NumCrss);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RM %s LINE_TOP\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtF ("(%.1f%%)",100.0); HTM_TxtF ("(%.1f%%)",100.0);
HTM_TD_End (); HTM_TD_End ();

View File

@ -886,6 +886,7 @@ void Inf_SetInfoSrc (void)
void Inf_FormsToSelSendInfo (void) void Inf_FormsToSelSendInfo (void)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_Source_of_information; extern const char *Txt_Source_of_information;
@ -948,26 +949,29 @@ void Inf_FormsToSelSendInfo (void)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Select info source */ /* Select info source */
HTM_TD_Begin ("class=\"%s LT%s\"", if (InfoSrc == FromDB.Src)
The_ClassDat[Gbl.Prefs.Theme], HTM_TD_Begin ("class=\"LT %s %s\"",
InfoSrc == FromDB.Src ? " LIGHT_BLUE" : The_ClassDat[Gbl.Prefs.Theme],
""); The_ClassBgHighlight[Gbl.Prefs.Theme]);
Frm_BeginForm (Inf_ActionsSelecInfoSrc[Gbl.Crs.Info.Type]); else
HTM_INPUT_RADIO ("InfoSrc",InfoSrc != FromDB.Src && HTM_TD_Begin ("class=\"LT %s\"",
(InfoSrc == Inf_NONE || The_ClassDat[Gbl.Prefs.Theme]);
InfoAvailable[InfoSrc]), // Info available for this source Frm_BeginForm (Inf_ActionsSelecInfoSrc[Gbl.Crs.Info.Type]);
"id=\"InfoSrc%u\" value=\"%u\"%s", HTM_INPUT_RADIO ("InfoSrc",InfoSrc != FromDB.Src &&
(unsigned) InfoSrc,(unsigned) InfoSrc, (InfoSrc == Inf_NONE ||
InfoSrc == FromDB.Src ? " checked=\"checked\"" : InfoAvailable[InfoSrc]), // Info available for this source
(InfoSrc == Inf_NONE || "id=\"InfoSrc%u\" value=\"%u\"%s",
InfoAvailable[InfoSrc]) ? "" : // Info available for this source (unsigned) InfoSrc,(unsigned) InfoSrc,
" disabled=\"disabled\""); InfoSrc == FromDB.Src ? " checked=\"checked\"" :
Frm_EndForm (); (InfoSrc == Inf_NONE ||
InfoAvailable[InfoSrc]) ? "" : // Info available for this source
" disabled=\"disabled\"");
Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
/* Form for this info source */ /* Form for this info source */
if (InfoSrc == FromDB.Src) if (InfoSrc == FromDB.Src)
HTM_TD_Begin ("class=\"LT LIGHT_BLUE\""); HTM_TD_Begin ("class=\"LT %s\"",The_ClassBgHighlight[Gbl.Prefs.Theme]);
else else
HTM_TD_Begin ("class=\"LT\""); HTM_TD_Begin ("class=\"LT\"");
HTM_LABEL_Begin ("for=\"InfoSrc%u\" class=\"%s\"", HTM_LABEL_Begin ("for=\"InfoSrc%u\" class=\"%s\"",

View File

@ -106,6 +106,7 @@ static void Ins_FormToGoToMap (struct Ins_Instit *Ins);
void Ins_SeeInsWithPendingCtrs (void) void Ins_SeeInsWithPendingCtrs (void)
{ {
extern const char *Hlp_SYSTEM_Pending; extern const char *Hlp_SYSTEM_Pending;
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_Institutions_with_pending_centers; extern const char *Txt_Institutions_with_pending_centers;
extern const char *Txt_Institution; extern const char *Txt_Institution;
@ -156,8 +157,8 @@ void Ins_SeeInsWithPendingCtrs (void)
/* Get institution code (row[0]) */ /* Get institution code (row[0]) */
Ins.InsCod = Str_ConvertStrCodToLongCod (row[0]); Ins.InsCod = Str_ConvertStrCodToLongCod (row[0]);
BgColor = (Ins.InsCod == Gbl.Hierarchy.Ins.InsCod) ? "LIGHT_BLUE" : BgColor = (Ins.InsCod == Gbl.Hierarchy.Ins.InsCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/* Get data of institution */ /* Get data of institution */
Ins_GetDataOfInstitByCod (&Ins); Ins_GetDataOfInstitByCod (&Ins);
@ -167,7 +168,10 @@ void Ins_SeeInsWithPendingCtrs (void)
HTM_TD_Begin ("class=\"LM %s\"",BgColor); HTM_TD_Begin ("class=\"LM %s\"",BgColor);
Ins_DrawInstitutionLogoAndNameWithLink (&Ins,ActSeeCtr, Ins_DrawInstitutionLogoAndNameWithLink (&Ins,ActSeeCtr,
"BT_LINK DAT_NOBR","CM"); Str_BuildString ("BT_LINK %s NOWRAP",
The_ClassDat[Gbl.Prefs.Theme]),
"CM");
Str_FreeStrings ();
HTM_TD_End (); HTM_TD_End ();
/* Number of pending centers (row[1]) */ /* Number of pending centers (row[1]) */
@ -282,7 +286,7 @@ static void Ins_ListInstitutions (void)
unsigned NumIns; unsigned NumIns;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Institutions_of_COUNTRY_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
Ins_PutIconsListingInstitutions,NULL, Ins_PutIconsListingInstitutions,NULL,
Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE); Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE);
@ -358,8 +362,10 @@ static void Ins_PutIconToEditInstitutions (void)
static void Ins_ListOneInstitutionForSeeing (struct Ins_Instit *Ins,unsigned NumIns) static void Ins_ListOneInstitutionForSeeing (struct Ins_Instit *Ins,unsigned NumIns)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_INSTITUTION_STATUS[Hie_NUM_STATUS_TXT]; extern const char *Txt_INSTITUTION_STATUS[Hie_NUM_STATUS_TXT];
const char *TxtClassNormal; const char *TxtClassNormal;
const char *TxtClassStrong; const char *TxtClassStrong;
@ -367,16 +373,16 @@ static void Ins_ListOneInstitutionForSeeing (struct Ins_Instit *Ins,unsigned Num
if (Ins->Status & Hie_STATUS_BIT_PENDING) if (Ins->Status & Hie_STATUS_BIT_PENDING)
{ {
TxtClassNormal = "DAT_LIGHT"; TxtClassNormal = The_ClassDatLight[Gbl.Prefs.Theme];
TxtClassStrong = Str_BuildStringStr ("BT_LINK LT %s","DAT_LIGHT"); TxtClassStrong = Str_BuildString ("BT_LINK LT %s",The_ClassDatLight[Gbl.Prefs.Theme]);
} }
else else
{ {
TxtClassNormal = The_ClassDat[Gbl.Prefs.Theme]; TxtClassNormal = The_ClassDat[Gbl.Prefs.Theme];
TxtClassStrong = Str_BuildStringStr ("BT_LINK LT %s",The_ClassDatN[Gbl.Prefs.Theme]); TxtClassStrong = Str_BuildString ("BT_LINK LT %s",The_ClassDatStrong[Gbl.Prefs.Theme]);
} }
BgColor = (Ins->InsCod == Gbl.Hierarchy.Ins.InsCod) ? "LIGHT_BLUE" : BgColor = (Ins->InsCod == Gbl.Hierarchy.Ins.InsCod) ? The_ClassBgHighlight[Gbl.Prefs.Theme] :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -540,7 +546,7 @@ static void Ins_EditInstitutionsInternal (void)
Hie_WriteMenuHierarchy (); Hie_WriteMenuHierarchy ();
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Institutions_of_COUNTRY_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Institutions_of_COUNTRY_X,
Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
Ins_PutIconsEditingInstitutions,NULL, Ins_PutIconsEditingInstitutions,NULL,
Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE); Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE);
@ -1803,9 +1809,10 @@ void Ins_ListInssFound (MYSQL_RES **mysql_res,unsigned NumInss)
{ {
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of institutions found */ /* Number of institutions found */
Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumInss, Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",
NumInss == 1 ? Txt_institution : NumInss,
Txt_institutions), NumInss == 1 ? Txt_institution :
Txt_institutions),
NULL,NULL, NULL,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings (); Str_FreeStrings ();

View File

@ -342,7 +342,7 @@ static void InsCfg_Country (bool PrintView,bool PutForm)
Frm_BeginFormGoTo (ActSeeCtyInf); Frm_BeginFormGoTo (ActSeeCtyInf);
Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod); Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), HTM_BUTTON_SUBMIT_Begin (Str_BuildGoToMsg (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
Str_BuildStringStr ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK LT %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
} }

View File

@ -1149,7 +1149,7 @@ static void Mai_ShowFormChangeUsrEmail (bool ItsMe,
if (Confirmed) if (Confirmed)
{ {
Ico_PutIcon ("check-circle.svg", Ico_PutIcon ("check-circle.svg",
Str_BuildStringStr (Txt_Email_X_confirmed,row[0]), Str_BuildString (Txt_Email_X_confirmed,row[0]),
"ICO16x16"); "ICO16x16");
Str_FreeStrings (); Str_FreeStrings ();
} }

View File

@ -2375,7 +2375,7 @@ static void Mch_PutFormCountdown (struct Mch_Match *Match,long Seconds,const cha
HTM_BUTTON_SUBMIT_Begin (PutForm ? Txt_Countdown : HTM_BUTTON_SUBMIT_Begin (PutForm ? Txt_Countdown :
NULL, NULL,
Str_BuildStringStr (PutForm ? "BT_LINK MCH_BUTTON_ON %s" : Str_BuildString (PutForm ? "BT_LINK MCH_BUTTON_ON %s" :
"BT_LINK_OFF MCH_BUTTON_HIDDEN %s", "BT_LINK_OFF MCH_BUTTON_HIDDEN %s",
Color), Color),
NULL); NULL);
@ -2645,9 +2645,10 @@ static void Mch_ShowFormColumns (const struct Mch_Match *Match)
/* Number of columns */ /* Number of columns */
Ico_PutSettingIconLink (NumColsIcon[NumCols], Ico_PutSettingIconLink (NumColsIcon[NumCols],
Str_BuildStringLongStr ((long) NumCols, Str_BuildString ("%u %s",
NumCols == 1 ? Txt_column : NumCols,
Txt_columns)); NumCols == 1 ? Txt_column :
Txt_columns));
Str_FreeStrings (); Str_FreeStrings ();
/* End form */ /* End form */
@ -2688,7 +2689,7 @@ static void Mch_PutCheckboxResult (const struct Mch_Match *Match)
/***** Put icon with link *****/ /***** Put icon with link *****/
HTM_BUTTON_SUBMIT_Begin (Txt_View_results, HTM_BUTTON_SUBMIT_Begin (Txt_View_results,
Str_BuildStringStr ("BT_LINK %s ICO_HIGHLIGHT",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s ICO_HIGHLIGHT",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_TxtF ("<i class=\"%s\"></i>", HTM_TxtF ("<i class=\"%s\"></i>",
@ -3229,9 +3230,10 @@ static void Mch_DrawScoreRow (double Score,double MinScore,double MaxScore,
if (asprintf (&Icon,"score%u_1x1.png",Color) < 0) // Background if (asprintf (&Icon,"score%u_1x1.png",Color) < 0) // Background
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon, HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,
Str_BuildStringLongStr ((long) NumUsrs, Str_BuildString ("%u %s",
NumUsrs == 1 ? Txt_ROLES_SINGUL_abc[Rol_STD][Usr_SEX_UNKNOWN] : NumUsrs,
Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_UNKNOWN]), NumUsrs == 1 ? Txt_ROLES_SINGUL_abc[Rol_STD][Usr_SEX_UNKNOWN] :
Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_UNKNOWN]),
"class=\"MCH_SCO_BAR\" style=\"width:%u%%;\"",BarWidth); "class=\"MCH_SCO_BAR\" style=\"width:%u%%;\"",BarWidth);
Str_FreeStrings (); Str_FreeStrings ();
free (Icon); free (Icon);

View File

@ -169,7 +169,7 @@ void MchRes_ShowMyMchResultsInGam (void)
/***** List my matches results in game *****/ /***** List my matches results in game *****/
MchRes_ShowResultsBegin (&Games, MchRes_ShowResultsBegin (&Games,
Str_BuildStringStr (Txt_Results_of_game_X,Game.Title), Str_BuildString (Txt_Results_of_game_X,Game.Title),
false); // Do not list games to select false); // Do not list games to select
Str_FreeStrings (); Str_FreeStrings ();
MchRes_ListMyMchResultsInGam (&Games,Game.GamCod); MchRes_ListMyMchResultsInGam (&Games,Game.GamCod);
@ -221,7 +221,7 @@ void MchRes_ShowMyMchResultsInMch (void)
false); // Do not put form to start new match false); // Do not put form to start new match
/***** List my matches results in match *****/ /***** List my matches results in match *****/
MchRes_ShowResultsBegin (&Games,Str_BuildStringStr (Txt_Results_of_match_X,Match.Title), MchRes_ShowResultsBegin (&Games,Str_BuildString (Txt_Results_of_match_X,Match.Title),
false); // Do not list games to select false); // Do not list games to select
Str_FreeStrings (); Str_FreeStrings ();
MchRes_ListMyMchResultsInMch (&Games,Match.MchCod); MchRes_ListMyMchResultsInMch (&Games,Match.MchCod);
@ -373,7 +373,7 @@ void MchRes_ShowAllMchResultsInGam (void)
/***** List matches results in game *****/ /***** List matches results in game *****/
MchRes_ShowResultsBegin (&Games, MchRes_ShowResultsBegin (&Games,
Str_BuildStringStr (Txt_Results_of_game_X,Game.Title), Str_BuildString (Txt_Results_of_game_X,Game.Title),
false); // Do not list games to select false); // Do not list games to select
Str_FreeStrings (); Str_FreeStrings ();
MchRes_ListAllMchResultsInGam (&Games,Game.GamCod); MchRes_ListAllMchResultsInGam (&Games,Game.GamCod);
@ -448,7 +448,7 @@ void MchRes_ShowAllMchResultsInMch (void)
/***** List matches results in match *****/ /***** List matches results in match *****/
MchRes_ShowResultsBegin (&Games, MchRes_ShowResultsBegin (&Games,
Str_BuildStringStr (Txt_Results_of_match_X,Match.Title), Str_BuildString (Txt_Results_of_match_X,Match.Title),
false); // Do not list games to select false); // Do not list games to select
Str_FreeStrings (); Str_FreeStrings ();
MchRes_ListAllMchResultsInMch (&Games,Match.MchCod); MchRes_ListAllMchResultsInMch (&Games,Match.MchCod);
@ -975,7 +975,7 @@ static void MchRes_ShowMchResultsSummaryRow (unsigned NumResults,
double TotalScore, double TotalScore,
double TotalGrade) double TotalGrade)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Matches; extern const char *Txt_Matches;
/***** Begin row *****/ /***** Begin row *****/
@ -983,35 +983,35 @@ static void MchRes_ShowMchResultsSummaryRow (unsigned NumResults,
/***** Row title *****/ /***** Row title *****/
HTM_TD_Begin ("colspan=\"3\" class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("colspan=\"3\" class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_TxtColonNBSP (Txt_Matches); HTM_TxtColonNBSP (Txt_Matches);
HTM_Unsigned (NumResults); HTM_Unsigned (NumResults);
HTM_TD_End (); HTM_TD_End ();
/***** Write total number of questions *****/ /***** Write total number of questions *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumResults) if (NumResults)
HTM_Unsigned (NumTotalQsts->All); HTM_Unsigned (NumTotalQsts->All);
HTM_TD_End (); HTM_TD_End ();
/***** Write total number of non-blank answers *****/ /***** Write total number of non-blank answers *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumResults) if (NumResults)
HTM_Unsigned (NumTotalQsts->NotBlank); HTM_Unsigned (NumTotalQsts->NotBlank);
HTM_TD_End (); HTM_TD_End ();
/***** Write total number of blank answers *****/ /***** Write total number of blank answers *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumResults) if (NumResults)
HTM_Unsigned (NumTotalQsts->All - NumTotalQsts->NotBlank); HTM_Unsigned (NumTotalQsts->All - NumTotalQsts->NotBlank);
HTM_TD_End (); HTM_TD_End ();
/***** Write total score *****/ /***** Write total score *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_Double2Decimals (TotalScore); HTM_Double2Decimals (TotalScore);
HTM_Txt ("/"); HTM_Txt ("/");
HTM_Unsigned (NumTotalQsts->All); HTM_Unsigned (NumTotalQsts->All);
@ -1019,7 +1019,7 @@ static void MchRes_ShowMchResultsSummaryRow (unsigned NumResults,
/***** Write average score per question *****/ /***** Write average score per question *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_Double2Decimals (NumTotalQsts->All ? TotalScore / HTM_Double2Decimals (NumTotalQsts->All ? TotalScore /
(double) NumTotalQsts->All : (double) NumTotalQsts->All :
0.0); 0.0);
@ -1027,13 +1027,13 @@ static void MchRes_ShowMchResultsSummaryRow (unsigned NumResults,
/***** Write total grade *****/ /***** Write total grade *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_Double2Decimals (TotalGrade); HTM_Double2Decimals (TotalGrade);
HTM_TD_End (); HTM_TD_End ();
/***** Last cell *****/ /***** Last cell *****/
HTM_TD_Begin ("class=\"%s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"%s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_TD_End (); HTM_TD_End ();
/***** End row *****/ /***** End row *****/
@ -1048,7 +1048,7 @@ void MchRes_ShowOneMchResult (void)
{ {
extern const char *Hlp_ASSESSMENT_Games_results; extern const char *Hlp_ASSESSMENT_Games_results;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME]; extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Questions; extern const char *Txt_Questions;
@ -1135,7 +1135,7 @@ void MchRes_ShowOneMchResult (void)
/* User */ /* User */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs][UsrDat->Sex]); HTM_TxtColon (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs][UsrDat->Sex]);
HTM_TD_End (); HTM_TD_End ();
@ -1161,7 +1161,7 @@ void MchRes_ShowOneMchResult (void)
{ {
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_START_END_TIME[StartEndTime]); HTM_TxtColon (Txt_START_END_TIME[StartEndTime]);
HTM_TD_End (); HTM_TD_End ();
@ -1181,7 +1181,7 @@ void MchRes_ShowOneMchResult (void)
/***** Number of questions *****/ /***** Number of questions *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Questions); HTM_TxtColon (Txt_Questions);
HTM_TD_End (); HTM_TD_End ();
@ -1194,7 +1194,7 @@ void MchRes_ShowOneMchResult (void)
/***** Number of answers *****/ /***** Number of answers *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Answers); HTM_TxtColon (Txt_Answers);
HTM_TD_End (); HTM_TD_End ();
@ -1207,7 +1207,7 @@ void MchRes_ShowOneMchResult (void)
/***** Score *****/ /***** Score *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Score); HTM_TxtColon (Txt_Score);
HTM_TD_End (); HTM_TD_End ();
@ -1229,7 +1229,7 @@ void MchRes_ShowOneMchResult (void)
/***** Grade *****/ /***** Grade *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Grade); HTM_TxtColon (Txt_Grade);
HTM_TD_End (); HTM_TD_End ();
@ -1249,7 +1249,7 @@ void MchRes_ShowOneMchResult (void)
/***** Tags present in this result *****/ /***** Tags present in this result *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Tags); HTM_TxtColon (Txt_Tags);
HTM_TD_End (); HTM_TD_End ();

View File

@ -516,6 +516,7 @@ static void Msg_ShowOneUniqueRecipient (void)
static void Msg_WriteFormUsrsIDsOrNicksOtherRecipients (void) static void Msg_WriteFormUsrsIDsOrNicksOtherRecipients (void)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *Txt_Other_recipients; extern const char *Txt_Other_recipients;
extern const char *Txt_Recipients; extern const char *Txt_Recipients;
extern const char *Txt_nicks_emails_or_IDs_separated_by_commas; extern const char *Txt_nicks_emails_or_IDs_separated_by_commas;
@ -533,7 +534,8 @@ static void Msg_WriteFormUsrsIDsOrNicksOtherRecipients (void)
/***** Title *****/ /***** Title *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TH_Begin (1,ColSpan,"LM LIGHT_BLUE"); HTM_TH_Begin (1,ColSpan,Str_BuildString ("LM %s",The_ClassBgHighlight[Gbl.Prefs.Theme]));
Str_FreeStrings ();
HTM_LABEL_Begin ("for=\"OtherRecipients\""); HTM_LABEL_Begin ("for=\"OtherRecipients\"");
HTM_TxtColon (StdsAndTchsWritten ? Txt_Other_recipients : HTM_TxtColon (StdsAndTchsWritten ? Txt_Other_recipients :
Txt_Recipients); Txt_Recipients);

View File

@ -790,7 +790,7 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
Cfg_PATH_PHOTO_TMP_PUBLIC,Gbl.UniqueNameEncrypted); Cfg_PATH_PHOTO_TMP_PUBLIC,Gbl.UniqueNameEncrypted);
HTM_DIV_Begin ("class=\"TIT CM\""); HTM_DIV_Begin ("class=\"TIT CM\"");
HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC, HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC,
Str_BuildStringStr ("%s_map.jpg",Gbl.UniqueNameEncrypted), Str_BuildString ("%s_map.jpg",Gbl.UniqueNameEncrypted),
Txt_Faces_detected, Txt_Faces_detected,
"usemap=\"#faces_map\""); "usemap=\"#faces_map\"");
Str_FreeStrings (); Str_FreeStrings ();
@ -1061,6 +1061,7 @@ void Pho_BuildHTMLUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
char **CaptionStr) char **CaptionStr)
{ {
extern const char *Rol_Icons[Rol_NUM_ROLES]; extern const char *Rol_Icons[Rol_NUM_ROLES];
extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Following; extern const char *Txt_Following;
extern const char *Txt_Followers; extern const char *Txt_Followers;
unsigned NumFollowing; unsigned NumFollowing;
@ -1090,10 +1091,11 @@ void Pho_BuildHTMLUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
if (PutZoomCode) if (PutZoomCode)
{ {
/* First name and surnames */ /* First name and surnames */
if (asprintf (&Caption.Name,"<div class=\"ZOOM_TXT_LINE DAT_N_BOLD\">" // Limited width if (asprintf (&Caption.Name,"<div class=\"ZOOM_TXT_LINE %s BOLD\">" // Limited width
"%s<br />" "%s<br />"
"%s%s%s" "%s%s%s"
"</div>", "</div>",
The_ClassDatStrong[Gbl.Prefs.Theme],
UsrDat->FrstName, UsrDat->FrstName,
UsrDat->Surname1, UsrDat->Surname1,
UsrDat->Surname2[0] ? "&nbsp;" : UsrDat->Surname2[0] ? "&nbsp;" :
@ -1164,21 +1166,23 @@ void Pho_BuildHTMLUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
{ {
Fol_GetNumFollow (UsrDat->UsrCod,&NumFollowing,&NumFollowers); Fol_GetNumFollow (UsrDat->UsrCod,&NumFollowing,&NumFollowers);
if (asprintf (&Caption.Follow,"<div class=\"ZOOM_TXT_LINE\">" if (asprintf (&Caption.Follow,"<div class=\"ZOOM_TXT_LINE\">"
"<span class=\"DAT_N_BOLD\">" "<span class=\"%s BOLD\">"
"%u" "%u"
"</span>" "</span>"
"<span class=\"DAT_SMALL\">" "<span class=\"DAT_SMALL\">"
"&nbsp;%s&nbsp;" "&nbsp;%s&nbsp;"
"</span>" "</span>"
"<span class=\"DAT_N_BOLD\">" "<span class=\"%s BOLD\">"
"%u" "%u"
"</span>" "</span>"
"<span class=\"DAT_SMALL\">" "<span class=\"DAT_SMALL\">"
"&nbsp;%s" "&nbsp;%s"
"</span>" "</span>"
"</div>", "</div>",
The_ClassDatStrong[Gbl.Prefs.Theme],
NumFollowing, NumFollowing,
Txt_Following, Txt_Following,
The_ClassDatStrong[Gbl.Prefs.Theme],
NumFollowers, NumFollowers,
Txt_Followers) < 0) Txt_Followers) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
@ -2243,7 +2247,7 @@ static void Pho_ShowOrPrintListDegrees (struct Pho_DegPhotos *DegPhotos,
if (SeeOrPrint == Pho_DEGREES_SEE) if (SeeOrPrint == Pho_DEGREES_SEE)
{ {
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf, Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf,
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]),
"CT"); "CT");
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -2345,7 +2349,7 @@ static void Pho_ShowDegreeAvgPhotoAndStat (const struct Deg_Degree *Deg,
int NumStds,int NumStdsWithPhoto) int NumStds,int NumStdsWithPhoto)
{ {
extern const char *Usr_StringsSexDB[Usr_NUM_SEXS]; extern const char *Usr_StringsSexDB[Usr_NUM_SEXS];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_students_ABBREVIATION; extern const char *Txt_students_ABBREVIATION;
extern const char *Txt_SEX_PLURAL_abc[Usr_NUM_SEXS]; extern const char *Txt_SEX_PLURAL_abc[Usr_NUM_SEXS];
extern const char *Txt_photos; extern const char *Txt_photos;
@ -2410,7 +2414,7 @@ static void Pho_ShowDegreeAvgPhotoAndStat (const struct Deg_Degree *Deg,
Frm_SetUniqueId (IdCaption); Frm_SetUniqueId (IdCaption);
HTM_DIV_Begin ("id=\"%s\" class=\"NOT_SHOWN\"",IdCaption); HTM_DIV_Begin ("id=\"%s\" class=\"NOT_SHOWN\"",IdCaption);
HTM_DIV_Begin ("class=\"ZOOM_TXT_LINE %s\"", HTM_DIV_Begin ("class=\"ZOOM_TXT_LINE %s\"",
The_ClassDatN[Gbl.Prefs.Theme]); The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (PhotoCaption); HTM_Txt (PhotoCaption);
HTM_DIV_End (); HTM_DIV_End ();
HTM_DIV_End (); HTM_DIV_End ();

View File

@ -135,7 +135,7 @@ void Plg_ListPlugins (void)
HTM_A_Begin ("href=\"%s\" title=\"%s\" class=\"%s\" target=\"_blank\"", HTM_A_Begin ("href=\"%s\" title=\"%s\" class=\"%s\" target=\"_blank\"",
URL,Plg->Name,The_ClassDat[Gbl.Prefs.Theme]); URL,Plg->Name,The_ClassDat[Gbl.Prefs.Theme]);
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC, HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,
Str_BuildStringStr ("%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo), Str_BuildString ("%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo),
Plg->Name, Plg->Name,
"class=\"ICO40x40\""); "class=\"ICO40x40\"");
Str_FreeStrings (); Str_FreeStrings ();
@ -363,7 +363,7 @@ static void Plg_ListPluginsForEdition (void)
// TODO: Change plugin icons to 32x32 // TODO: Change plugin icons to 32x32
HTM_TD_Begin ("class=\"CM\" style=\"width:45px;\""); HTM_TD_Begin ("class=\"CM\" style=\"width:45px;\"");
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC, HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,
Str_BuildStringStr ("%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo), Str_BuildString ("%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo),
Gbl.Plugins.Lst[NumPlg].Name, Gbl.Plugins.Lst[NumPlg].Name,
"class=\"ICO40x40\""); "class=\"ICO40x40\"");
Str_FreeStrings (); Str_FreeStrings ();

View File

@ -153,9 +153,10 @@ static void Pri_PutFormVisibility (const char *TxtLabel,
Pri_Visibility_t CurrentVisibilityInDB, Pri_Visibility_t CurrentVisibilityInDB,
unsigned MaskAllowedVisibility) unsigned MaskAllowedVisibility)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_PRIVACY_OPTIONS[Pri_NUM_OPTIONS_PRIVACY]; extern const char *Txt_PRIVACY_OPTIONS[Pri_NUM_OPTIONS_PRIVACY];
Pri_Visibility_t Visibility; Pri_Visibility_t Visibility;
@ -178,9 +179,11 @@ static void Pri_PutFormVisibility (const char *TxtLabel,
if (MaskAllowedVisibility & (1 << Visibility)) if (MaskAllowedVisibility & (1 << Visibility))
{ {
if (Visibility == CurrentVisibilityInDB) if (Visibility == CurrentVisibilityInDB)
HTM_LI_Begin ("class=\"%s LIGHT_BLUE\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_LI_Begin ("class=\"%s %s\"",
The_ClassDatStrong[Gbl.Prefs.Theme],The_ClassBgHighlight[Gbl.Prefs.Theme]);
else else
HTM_LI_Begin ("class=\"%s\"",The_ClassDat[Gbl.Prefs.Theme]); HTM_LI_Begin ("class=\"%s\"",
The_ClassDat[Gbl.Prefs.Theme]);
HTM_LABEL_Begin (NULL); HTM_LABEL_Begin (NULL);
HTM_INPUT_RADIO (ParamName,Action != ActUnk, HTM_INPUT_RADIO (ParamName,Action != ActUnk,
"value=\"%u\"%s%s", "value=\"%u\"%s%s",

View File

@ -373,6 +373,7 @@ void Prf_ChangeExtendedProfileVis (void)
void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat) void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
{ {
extern const char *The_ClassDatStrong[The_NUM_THEMES];
bool UsrIsBannedFromRanking; bool UsrIsBannedFromRanking;
struct Prf_UsrFigures UsrFigures; struct Prf_UsrFigures UsrFigures;
Rol_Role_t Role; Rol_Role_t Role;
@ -383,7 +384,8 @@ void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
/***** Left list *****/ /***** Left list *****/
/* Begin left list */ /* Begin left list */
HTM_DIV_Begin ("class=\"PRF_FIG_LEFT_CONT\""); HTM_DIV_Begin ("class=\"PRF_FIG_LEFT_CONT\"");
HTM_UL_Begin ("class=\"PRF_FIG_UL DAT_NOBR_N\""); HTM_UL_Begin ("class=\"PRF_FIG_UL %s NOWRAP\"",
The_ClassDatStrong[Gbl.Prefs.Theme]);
/* Time since first click */ /* Time since first click */
Prf_ShowTimeSinceFirstClick (UsrDat,&UsrFigures); Prf_ShowTimeSinceFirstClick (UsrDat,&UsrFigures);
@ -408,7 +410,8 @@ void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
if (!UsrIsBannedFromRanking) if (!UsrIsBannedFromRanking)
{ {
/* Begin right list */ /* Begin right list */
HTM_UL_Begin ("class=\"PRF_FIG_UL DAT_NOBR_N\""); HTM_UL_Begin ("class=\"PRF_FIG_UL %s NOWRAP\"",
The_ClassDatStrong[Gbl.Prefs.Theme]);
/* Number of clicks */ /* Number of clicks */
Prf_ShowNumClicks (UsrDat,&UsrFigures); Prf_ShowNumClicks (UsrDat,&UsrFigures);

View File

@ -776,7 +776,7 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
Lay_PutContextualLinkOnlyIcon (ActUp_PrgItm,"prg_highlighted", Lay_PutContextualLinkOnlyIcon (ActUp_PrgItm,"prg_highlighted",
Prg_PutParams,&Item->Hierarchy.ItmCod, Prg_PutParams,&Item->Hierarchy.ItmCod,
"arrow-up.svg", "arrow-up.svg",
Str_BuildStringStr (Txt_Move_up_X, Str_BuildString (Txt_Move_up_X,
StrItemIndex)); StrItemIndex));
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -789,7 +789,7 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
Lay_PutContextualLinkOnlyIcon (ActDwnPrgItm,"prg_highlighted", Lay_PutContextualLinkOnlyIcon (ActDwnPrgItm,"prg_highlighted",
Prg_PutParams,&Item->Hierarchy.ItmCod, Prg_PutParams,&Item->Hierarchy.ItmCod,
"arrow-down.svg", "arrow-down.svg",
Str_BuildStringStr (Txt_Move_down_X, Str_BuildString (Txt_Move_down_X,
StrItemIndex)); StrItemIndex));
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -802,7 +802,7 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
Lay_PutContextualLinkOnlyIcon (ActLftPrgItm,"prg_highlighted", Lay_PutContextualLinkOnlyIcon (ActLftPrgItm,"prg_highlighted",
Prg_PutParams,&Item->Hierarchy.ItmCod, Prg_PutParams,&Item->Hierarchy.ItmCod,
"arrow-left.svg", "arrow-left.svg",
Str_BuildStringStr (Txt_Increase_level_of_X, Str_BuildString (Txt_Increase_level_of_X,
StrItemIndex)); StrItemIndex));
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -815,7 +815,7 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
Lay_PutContextualLinkOnlyIcon (ActRgtPrgItm,"prg_highlighted", Lay_PutContextualLinkOnlyIcon (ActRgtPrgItm,"prg_highlighted",
Prg_PutParams,&Item->Hierarchy.ItmCod, Prg_PutParams,&Item->Hierarchy.ItmCod,
"arrow-right.svg", "arrow-right.svg",
Str_BuildStringStr (Txt_Decrease_level_of_X, Str_BuildString (Txt_Decrease_level_of_X,
StrItemIndex)); StrItemIndex));
Str_FreeStrings (); Str_FreeStrings ();
} }

View File

@ -1003,7 +1003,7 @@ static void Prj_ShowProjectsHead (struct Prj_Projects *Projects,
static void Prj_ShowTableAllProjectsHead (void) static void Prj_ShowTableAllProjectsHead (void)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_PROJECT_ORDER[Prj_NUM_ORDERS]; extern const char *Txt_PROJECT_ORDER[Prj_NUM_ORDERS];
extern const char *Txt_Assigned_QUESTION; extern const char *Txt_Assigned_QUESTION;
extern const char *Txt_Number_of_students; extern const char *Txt_Number_of_students;
@ -1015,7 +1015,7 @@ static void Prj_ShowTableAllProjectsHead (void)
extern const char *Txt_URL; extern const char *Txt_URL;
Prj_Order_t Order; Prj_Order_t Order;
unsigned NumRoleToShow; unsigned NumRoleToShow;
const char *Class = Str_BuildStringStr ("LT %s",The_ClassDatN[Gbl.Prefs.Theme]); const char *Class = Str_BuildString ("LT %s",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -1219,6 +1219,7 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
Prj_ProjectView_t ProjectView) Prj_ProjectView_t ProjectView)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_Project_files; extern const char *Txt_Project_files;
extern const char *Txt_Assigned_QUESTION; extern const char *Txt_Assigned_QUESTION;
extern const char *Txt_Yes; extern const char *Txt_Yes;
@ -1253,7 +1254,7 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
"ASG_TITLE"; "ASG_TITLE";
ClassLink = (Prj->Hidden == Prj_HIDDEN) ? "BT_LINK LT ASG_TITLE_LIGHT" : ClassLink = (Prj->Hidden == Prj_HIDDEN) ? "BT_LINK LT ASG_TITLE_LIGHT" :
"BT_LINK LT ASG_TITLE"; "BT_LINK LT ASG_TITLE";
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Set anchor string *****/ /***** Set anchor string *****/
@ -1657,6 +1658,7 @@ static void Prj_PutIconToToggleProject (unsigned UniqueId,
static void Prj_ShowTableAllProjectsOneRow (struct Prj_Project *Prj) static void Prj_ShowTableAllProjectsOneRow (struct Prj_Project *Prj)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_Yes; extern const char *Txt_Yes;
extern const char *Txt_No; extern const char *Txt_No;
extern const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES]; extern const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES];
@ -1672,7 +1674,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Prj_Project *Prj)
/***** Set CSS classes *****/ /***** Set CSS classes *****/
ClassDate = (Prj->Hidden == Prj_HIDDEN) ? "DATE_BLUE_LIGHT" : ClassDate = (Prj->Hidden == Prj_HIDDEN) ? "DATE_BLUE_LIGHT" :
"DATE_BLUE"; "DATE_BLUE";
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Begin row *****/ /***** Begin row *****/
@ -1761,12 +1763,13 @@ static void Prj_ShowOneProjectDepartment (const struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView) Prj_ProjectView_t ProjectView)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
struct Dpt_Department Dpt; struct Dpt_Department Dpt;
bool PutLink; bool PutLink;
const char *ClassData; const char *ClassData;
/***** Set CSS classes *****/ /***** Set CSS classes *****/
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Get data of department *****/ /***** Get data of department *****/
@ -1800,11 +1803,12 @@ static void Prj_ShowOneProjectDepartment (const struct Prj_Project *Prj,
static void Prj_ShowTableAllProjectsDepartment (const struct Prj_Project *Prj) static void Prj_ShowTableAllProjectsDepartment (const struct Prj_Project *Prj)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
struct Dpt_Department Dpt; struct Dpt_Department Dpt;
const char *ClassData; const char *ClassData;
/***** Set CSS classes *****/ /***** Set CSS classes *****/
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Get data of department *****/ /***** Get data of department *****/
@ -1828,13 +1832,14 @@ static void Prj_ShowOneProjectTxtField (struct Prj_Project *Prj,
bool Warning) bool Warning)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
const char *ClassLabel; const char *ClassLabel;
const char *ClassData; const char *ClassData;
/***** Set CSS classes *****/ /***** Set CSS classes *****/
ClassLabel = (Prj->Hidden == Prj_HIDDEN) ? "ASG_LABEL_LIGHT" : ClassLabel = (Prj->Hidden == Prj_HIDDEN) ? "ASG_LABEL_LIGHT" :
"ASG_LABEL"; "ASG_LABEL";
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Label *****/ /***** Label *****/
@ -1897,10 +1902,11 @@ static void Prj_ShowTableAllProjectsTxtField (struct Prj_Project *Prj,
char *TxtField) char *TxtField)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
const char *ClassData; const char *ClassData;
/***** Set CSS classes *****/ /***** Set CSS classes *****/
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Change format *****/ /***** Change format *****/
@ -1922,6 +1928,7 @@ static void Prj_ShowOneProjectURL (const struct Prj_Project *Prj,
const char *id,unsigned UniqueId) const char *id,unsigned UniqueId)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_URL; extern const char *Txt_URL;
const char *ClassLabel; const char *ClassLabel;
const char *ClassData; const char *ClassData;
@ -1932,7 +1939,7 @@ static void Prj_ShowOneProjectURL (const struct Prj_Project *Prj,
/***** Set CSS classes *****/ /***** Set CSS classes *****/
ClassLabel = (Prj->Hidden == Prj_HIDDEN) ? "ASG_LABEL_LIGHT" : ClassLabel = (Prj->Hidden == Prj_HIDDEN) ? "ASG_LABEL_LIGHT" :
"ASG_LABEL"; "ASG_LABEL";
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Write row with label and text *****/ /***** Write row with label and text *****/
@ -1982,10 +1989,11 @@ static void Prj_ShowOneProjectURL (const struct Prj_Project *Prj,
static void Prj_ShowTableAllProjectsURL (const struct Prj_Project *Prj) static void Prj_ShowTableAllProjectsURL (const struct Prj_Project *Prj)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
const char *ClassData; const char *ClassData;
/***** Set CSS classes *****/ /***** Set CSS classes *****/
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Show URL *****/ /***** Show URL *****/
@ -2022,6 +2030,7 @@ static void Prj_ShowOneProjectMembersWithARole (struct Prj_Projects *Projects,
Prj_RoleInProject_t RoleInPrj) Prj_RoleInProject_t RoleInPrj)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_PROJECT_ROLES_SINGUL_Abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_PROJECT_ROLES_SINGUL_Abc[Prj_NUM_ROLES_IN_PROJECT];
extern const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT];
extern const char *Txt_Remove; extern const char *Txt_Remove;
@ -2059,7 +2068,7 @@ static void Prj_ShowOneProjectMembersWithARole (struct Prj_Projects *Projects,
/***** Set CSS classes *****/ /***** Set CSS classes *****/
ClassLabel = (Prj->Hidden == Prj_HIDDEN) ? "ASG_LABEL_LIGHT" : ClassLabel = (Prj->Hidden == Prj_HIDDEN) ? "ASG_LABEL_LIGHT" :
"ASG_LABEL"; "ASG_LABEL";
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Get users in project from database *****/ /***** Get users in project from database *****/
@ -2173,7 +2182,7 @@ static void Prj_ShowOneProjectMembersWithARole (struct Prj_Projects *Projects,
Projects->PrjCod = Prj->PrjCod; // Used to pass project code as a parameter Projects->PrjCod = Prj->PrjCod; // Used to pass project code as a parameter
Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInPrj],NULL, Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInPrj],NULL,
Prj_PutCurrentParams,Projects, Prj_PutCurrentParams,Projects,
Str_BuildStringStr (Txt_Add_USERS, Str_BuildString (Txt_Add_USERS,
Txt_PROJECT_ROLES_PLURAL_abc[RoleInPrj])); Txt_PROJECT_ROLES_PLURAL_abc[RoleInPrj]));
Str_FreeStrings (); Str_FreeStrings ();
HTM_TD_End (); HTM_TD_End ();
@ -2206,6 +2215,7 @@ static void Prj_ShowTableAllProjectsMembersWithARole (const struct Prj_Project *
Prj_RoleInProject_t RoleInPrj) Prj_RoleInProject_t RoleInPrj)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
unsigned NumUsr; unsigned NumUsr;
@ -2213,7 +2223,7 @@ static void Prj_ShowTableAllProjectsMembersWithARole (const struct Prj_Project *
const char *ClassData; const char *ClassData;
/***** Set CSS classes *****/ /***** Set CSS classes *****/
ClassData = (Prj->Hidden == Prj_HIDDEN) ? "DAT_LIGHT" : ClassData = (Prj->Hidden == Prj_HIDDEN) ? The_ClassDatLight[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]; The_ClassDat[Gbl.Prefs.Theme];
/***** Get users in project from database *****/ /***** Get users in project from database *****/
@ -2586,7 +2596,7 @@ static void Prj_ReqRemUsrFromPrj (struct Prj_Projects *Projects,
Frm_BeginForm (ActionRemUsr[RoleInPrj]); Frm_BeginForm (ActionRemUsr[RoleInPrj]);
Projects->PrjCod = Prj.PrjCod; Projects->PrjCod = Prj.PrjCod;
Prj_PutCurrentParams (Projects); Prj_PutCurrentParams (Projects);
Btn_PutRemoveButton (Str_BuildStringStr (Txt_Remove_USER_from_this_project, Btn_PutRemoveButton (Str_BuildString (Txt_Remove_USER_from_this_project,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInPrj][Gbl.Usrs.Other.UsrDat.Sex])); Txt_PROJECT_ROLES_SINGUL_abc[RoleInPrj][Gbl.Usrs.Other.UsrDat.Sex]));
Str_FreeStrings (); Str_FreeStrings ();
Frm_EndForm (); Frm_EndForm ();

View File

@ -518,6 +518,7 @@ void Qst_ListQuestionForEdition (struct Qst_Question *Question,
unsigned QstInd,bool QuestionExists, unsigned QstInd,bool QuestionExists,
const char *Anchor) const char *Anchor)
{ {
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_Question_removed; extern const char *Txt_Question_removed;
/***** Number of question and answer type (row[1]) *****/ /***** Number of question and answer type (row[1]) *****/
@ -560,7 +561,7 @@ void Qst_ListQuestionForEdition (struct Qst_Question *Question,
} }
else else
{ {
HTM_SPAN_Begin ("class=\"DAT_LIGHT\""); HTM_SPAN_Begin ("class=\"%s\"",The_ClassDatLight[Gbl.Prefs.Theme]);
HTM_Txt (Txt_Question_removed); HTM_Txt (Txt_Question_removed);
HTM_SPAN_End (); HTM_SPAN_End ();
} }
@ -1858,7 +1859,7 @@ void Qst_PutFormEditOneQst (struct Qst_Question *Question)
/***** Begin box *****/ /***** Begin box *****/
if (Question->QstCod > 0) // The question already has assigned a code if (Question->QstCod > 0) // The question already has assigned a code
{ {
Box_BoxBegin (NULL,Str_BuildStringLong (Txt_Question_code_X,Question->QstCod), Box_BoxBegin (NULL,Str_BuildString (Txt_Question_code_X,Question->QstCod),
Qst_PutIconToRemoveOneQst,&Question->QstCod, Qst_PutIconToRemoveOneQst,&Question->QstCod,
Hlp_ASSESSMENT_Questions_writing_a_question,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Questions_writing_a_question,Box_NOT_CLOSABLE);
Str_FreeStrings (); Str_FreeStrings ();

View File

@ -1565,7 +1565,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
struct UsrData *UsrDat,const char *Anchor) struct UsrData *UsrDat,const char *Anchor)
{ {
extern const char *Hlp_USERS_Students_course_record_card; extern const char *Hlp_USERS_Students_course_record_card;
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_RECORD_FIELD_VISIBILITY_RECORD[Rec_NUM_TYPES_VISIBILITY]; extern const char *Txt_RECORD_FIELD_VISIBILITY_RECORD[Rec_NUM_TYPES_VISIBILITY];
extern const char *Txt_Save_changes; extern const char *Txt_Save_changes;
@ -1735,7 +1735,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
/* Write form, text, or nothing depending on /* Write form, text, or nothing depending on
the user's role and the visibility of the field */ the user's role and the visibility of the field */
HTM_TD_Begin ("class=\"REC_C2_BOT LT %s COLOR%u\"", HTM_TD_Begin ("class=\"REC_C2_BOT LT %s COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (ICanEditThisField) // Show with form if (ICanEditThisField) // Show with form
{ {
HTM_TEXTAREA_Begin ("name=\"Field%ld\" rows=\"%u\"" HTM_TEXTAREA_Begin ("name=\"Field%ld\" rows=\"%u\""
@ -2683,14 +2683,14 @@ static void Rec_ShowNickname (struct UsrData *UsrDat,bool PutFormLinks)
static void Rec_ShowCountryInHead (struct UsrData *UsrDat,bool ShowData) static void Rec_ShowCountryInHead (struct UsrData *UsrDat,bool ShowData)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
HTM_TD_Begin ("class=\"REC_C2_MID LT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_MID LT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (ShowData && UsrDat->CtyCod > 0) if (ShowData && UsrDat->CtyCod > 0)
{ {
/* Link to see country information */ /* Link to see country information */
Cty_WriteCountryName (UsrDat->CtyCod, Cty_WriteCountryName (UsrDat->CtyCod,
Str_BuildStringStr ("BT_LINK %s",The_ClassDatN[Gbl.Prefs.Theme])); // Put link to country Str_BuildString ("BT_LINK %s",The_ClassDatStrong[Gbl.Prefs.Theme])); // Put link to country
Str_FreeStrings (); Str_FreeStrings ();
} }
HTM_TD_End (); HTM_TD_End ();
@ -2715,7 +2715,7 @@ static void Rec_ShowWebsAndSocialNets (struct UsrData *UsrDat,
static void Rec_ShowEmail (struct UsrData *UsrDat) static void Rec_ShowEmail (struct UsrData *UsrDat)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Email; extern const char *Txt_Email;
/***** Email *****/ /***** Email *****/
@ -2725,14 +2725,14 @@ static void Rec_ShowEmail (struct UsrData *UsrDat)
Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Email); Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Email);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (UsrDat->Email[0]) if (UsrDat->Email[0])
{ {
HTM_DIV_Begin ("class=\"REC_EMAIL\""); // Limited width HTM_DIV_Begin ("class=\"REC_EMAIL\""); // Limited width
if (Mai_ICanSeeOtherUsrEmail (UsrDat)) if (Mai_ICanSeeOtherUsrEmail (UsrDat))
{ {
HTM_A_Begin ("href=\"mailto:%s\" class=\"%s\"", HTM_A_Begin ("href=\"mailto:%s\" class=\"%s\"",
UsrDat->Email,The_ClassDatN[Gbl.Prefs.Theme]); UsrDat->Email,The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (UsrDat->Email); HTM_Txt (UsrDat->Email);
HTM_A_End (); HTM_A_End ();
} }
@ -2751,7 +2751,7 @@ static void Rec_ShowEmail (struct UsrData *UsrDat)
static void Rec_ShowUsrIDs (struct UsrData *UsrDat,const char *Anchor) static void Rec_ShowUsrIDs (struct UsrData *UsrDat,const char *Anchor)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_ID; extern const char *Txt_ID;
/***** User's IDs *****/ /***** User's IDs *****/
@ -2761,7 +2761,7 @@ static void Rec_ShowUsrIDs (struct UsrData *UsrDat,const char *Anchor)
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_ID); Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_ID);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
ID_WriteUsrIDs (UsrDat,Anchor); ID_WriteUsrIDs (UsrDat,Anchor);
HTM_TD_End (); HTM_TD_End ();
@ -2776,7 +2776,7 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
Rec_SharedRecordViewType_t TypeOfView) Rec_SharedRecordViewType_t TypeOfView)
{ {
extern const char *Usr_StringsSexIcons[Usr_NUM_SEXS]; extern const char *Usr_StringsSexIcons[Usr_NUM_SEXS];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Role; extern const char *Txt_Role;
extern const char *Txt_Sex; extern const char *Txt_Sex;
extern const char *Txt_SEX_SINGULAR_Abc[Usr_NUM_SEXS]; extern const char *Txt_SEX_SINGULAR_Abc[Usr_NUM_SEXS];
@ -2802,7 +2802,7 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
Frm_LabelColumn ("REC_C1_BOT RM","Role",Txt_Role); Frm_LabelColumn ("REC_C1_BOT RM","Role",Txt_Role);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
switch (TypeOfView) switch (TypeOfView)
{ {
case Rec_SHA_SIGN_UP_IN_CRS_FORM: // I want to apply for enrolment case Rec_SHA_SIGN_UP_IN_CRS_FORM: // I want to apply for enrolment
@ -2997,7 +2997,7 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
/***** Form to select a sex *****/ /***** Form to select a sex *****/
/* Label */ /* Label */
Frm_LabelColumn ("REC_C1_BOT RM","", Frm_LabelColumn ("REC_C1_BOT RM","",
Str_BuildStringStr ("%s*",Txt_Sex)); Str_BuildString ("%s*",Txt_Sex));
Str_FreeStrings (); Str_FreeStrings ();
/* Data */ /* Data */
@ -3006,7 +3006,7 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
Sex <= Usr_SEX_MALE; Sex <= Usr_SEX_MALE;
Sex++) Sex++)
{ {
HTM_LABEL_Begin ("class=\"%s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_LABEL_Begin ("class=\"%s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_INPUT_RADIO ("Sex",false, HTM_INPUT_RADIO ("Sex",false,
"value=\"%u\"%s required=\"required\"", "value=\"%u\"%s required=\"required\"",
(unsigned) Sex, (unsigned) Sex,
@ -3023,7 +3023,7 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Role); Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Role);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs][UsrDat->Sex]); HTM_Txt (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs][UsrDat->Sex]);
HTM_TD_End (); HTM_TD_End ();
} }
@ -3037,7 +3037,7 @@ static void Rec_ShowRole (struct UsrData *UsrDat,
static void Rec_ShowSurname1 (struct UsrData *UsrDat,bool PutForm) static void Rec_ShowSurname1 (struct UsrData *UsrDat,bool PutForm)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Surname_1; extern const char *Txt_Surname_1;
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -3046,14 +3046,14 @@ static void Rec_ShowSurname1 (struct UsrData *UsrDat,bool PutForm)
if (PutForm) if (PutForm)
{ {
Frm_LabelColumn ("REC_C1_BOT RM","Surname1", Frm_LabelColumn ("REC_C1_BOT RM","Surname1",
Str_BuildStringStr ("%s*",Txt_Surname_1)); Str_BuildString ("%s*",Txt_Surname_1));
Str_FreeStrings (); Str_FreeStrings ();
} }
else else
Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Surname_1); Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Surname_1);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (PutForm) if (PutForm)
HTM_INPUT_TEXT ("Surname1",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME,UsrDat->Surname1, HTM_INPUT_TEXT ("Surname1",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME,UsrDat->Surname1,
HTM_DONT_SUBMIT_ON_CHANGE, HTM_DONT_SUBMIT_ON_CHANGE,
@ -3076,7 +3076,7 @@ static void Rec_ShowSurname1 (struct UsrData *UsrDat,bool PutForm)
static void Rec_ShowSurname2 (struct UsrData *UsrDat,bool PutForm) static void Rec_ShowSurname2 (struct UsrData *UsrDat,bool PutForm)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Surname_2; extern const char *Txt_Surname_2;
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -3087,7 +3087,7 @@ static void Rec_ShowSurname2 (struct UsrData *UsrDat,bool PutForm)
Txt_Surname_2); Txt_Surname_2);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (PutForm) if (PutForm)
HTM_INPUT_TEXT ("Surname2",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME, HTM_INPUT_TEXT ("Surname2",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME,
UsrDat->Surname2, UsrDat->Surname2,
@ -3110,7 +3110,7 @@ static void Rec_ShowSurname2 (struct UsrData *UsrDat,bool PutForm)
static void Rec_ShowFirstName (struct UsrData *UsrDat,bool PutForm) static void Rec_ShowFirstName (struct UsrData *UsrDat,bool PutForm)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_First_name; extern const char *Txt_First_name;
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -3119,7 +3119,7 @@ static void Rec_ShowFirstName (struct UsrData *UsrDat,bool PutForm)
if (PutForm) if (PutForm)
{ {
Frm_LabelColumn ("REC_C1_BOT RM","FirstName", Frm_LabelColumn ("REC_C1_BOT RM","FirstName",
Str_BuildStringStr ("%s*",Txt_First_name)); Str_BuildString ("%s*",Txt_First_name));
Str_FreeStrings (); Str_FreeStrings ();
} }
else else
@ -3127,7 +3127,7 @@ static void Rec_ShowFirstName (struct UsrData *UsrDat,bool PutForm)
/* Data */ /* Data */
HTM_TD_Begin ("colspan=\"2\" class=\"REC_C2_BOT LM %s\"", HTM_TD_Begin ("colspan=\"2\" class=\"REC_C2_BOT LM %s\"",
The_ClassDatN[Gbl.Prefs.Theme]); The_ClassDatStrong[Gbl.Prefs.Theme]);
if (PutForm) if (PutForm)
HTM_INPUT_TEXT ("FirstName",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME, HTM_INPUT_TEXT ("FirstName",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME,
UsrDat->FrstName, UsrDat->FrstName,
@ -3165,7 +3165,7 @@ static void Rec_ShowCountry (struct UsrData *UsrDat,bool PutForm)
if (PutForm) if (PutForm)
{ {
Frm_LabelColumn ("REC_C1_BOT RM","OthCtyCod", Frm_LabelColumn ("REC_C1_BOT RM","OthCtyCod",
Str_BuildStringStr ("%s*",Txt_Country)); Str_BuildString ("%s*",Txt_Country));
Str_FreeStrings (); Str_FreeStrings ();
} }
else else
@ -3200,7 +3200,7 @@ static void Rec_ShowCountry (struct UsrData *UsrDat,bool PutForm)
static void Rec_ShowDateOfBirth (struct UsrData *UsrDat,bool ShowData,bool PutForm) static void Rec_ShowDateOfBirth (struct UsrData *UsrDat,bool ShowData,bool PutForm)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Date_of_birth; extern const char *Txt_Date_of_birth;
/***** Date of birth *****/ /***** Date of birth *****/
@ -3212,7 +3212,7 @@ static void Rec_ShowDateOfBirth (struct UsrData *UsrDat,bool ShowData,bool PutFo
Txt_Date_of_birth); Txt_Date_of_birth);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (ShowData) if (ShowData)
{ {
if (PutForm) if (PutForm)
@ -3237,7 +3237,7 @@ static void Rec_ShowDateOfBirth (struct UsrData *UsrDat,bool ShowData,bool PutFo
static void Rec_ShowPhone (struct UsrData *UsrDat,bool ShowData,bool PutForm, static void Rec_ShowPhone (struct UsrData *UsrDat,bool ShowData,bool PutForm,
unsigned NumPhone) unsigned NumPhone)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Phone; extern const char *Txt_Phone;
char *Name; char *Name;
char *Label; char *Label;
@ -3259,7 +3259,7 @@ static void Rec_ShowPhone (struct UsrData *UsrDat,bool ShowData,bool PutForm,
Label); Label);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (ShowData) if (ShowData)
{ {
if (PutForm) if (PutForm)
@ -3269,7 +3269,7 @@ static void Rec_ShowPhone (struct UsrData *UsrDat,bool ShowData,bool PutForm,
else if (UsrDat->Phone[NumPhone][0]) else if (UsrDat->Phone[NumPhone][0])
{ {
HTM_A_Begin ("href=\"tel:%s\" class=\"%s\"", HTM_A_Begin ("href=\"tel:%s\" class=\"%s\"",
UsrDat->Phone[NumPhone],The_ClassDatN[Gbl.Prefs.Theme]); UsrDat->Phone[NumPhone],The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (UsrDat->Phone[NumPhone]); HTM_Txt (UsrDat->Phone[NumPhone]);
HTM_A_End (); HTM_A_End ();
} }
@ -3291,7 +3291,7 @@ static void Rec_ShowPhone (struct UsrData *UsrDat,bool ShowData,bool PutForm,
static void Rec_ShowComments (struct UsrData *UsrDat,bool ShowData,bool PutForm) static void Rec_ShowComments (struct UsrData *UsrDat,bool ShowData,bool PutForm)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_USER_comments; extern const char *Txt_USER_comments;
/***** Comments *****/ /***** Comments *****/
@ -3303,7 +3303,7 @@ static void Rec_ShowComments (struct UsrData *UsrDat,bool ShowData,bool PutForm)
Txt_USER_comments); Txt_USER_comments);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (ShowData) if (ShowData)
{ {
if (PutForm) if (PutForm)
@ -3354,7 +3354,7 @@ static void Rec_ShowTeacherRows (struct UsrData *UsrDat,struct Ins_Instit *Ins,
static void Rec_ShowInstitution (struct Ins_Instit *Ins,bool ShowData) static void Rec_ShowInstitution (struct Ins_Instit *Ins,bool ShowData)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Institution; extern const char *Txt_Institution;
/***** Institution *****/ /***** Institution *****/
@ -3364,13 +3364,13 @@ static void Rec_ShowInstitution (struct Ins_Instit *Ins,bool ShowData)
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Institution); Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Institution);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (ShowData) if (ShowData)
if (Ins->InsCod > 0) if (Ins->InsCod > 0)
{ {
if (Ins->WWW[0]) if (Ins->WWW[0])
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"",
Ins->WWW,The_ClassDatN[Gbl.Prefs.Theme]); Ins->WWW,The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Ins->FullName); HTM_Txt (Ins->FullName);
if (Ins->WWW[0]) if (Ins->WWW[0])
HTM_A_End (); HTM_A_End ();
@ -3386,7 +3386,7 @@ static void Rec_ShowInstitution (struct Ins_Instit *Ins,bool ShowData)
static void Rec_ShowCenter (struct UsrData *UsrDat,bool ShowData) static void Rec_ShowCenter (struct UsrData *UsrDat,bool ShowData)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Center; extern const char *Txt_Center;
struct Ctr_Center Ctr; struct Ctr_Center Ctr;
@ -3397,7 +3397,7 @@ static void Rec_ShowCenter (struct UsrData *UsrDat,bool ShowData)
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Center); Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Center);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (ShowData) if (ShowData)
{ {
if (UsrDat->Tch.CtrCod > 0) if (UsrDat->Tch.CtrCod > 0)
@ -3406,7 +3406,7 @@ static void Rec_ShowCenter (struct UsrData *UsrDat,bool ShowData)
Ctr_GetDataOfCenterByCod (&Ctr); Ctr_GetDataOfCenterByCod (&Ctr);
if (Ctr.WWW[0]) if (Ctr.WWW[0])
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"",
Ctr.WWW,The_ClassDatN[Gbl.Prefs.Theme]); Ctr.WWW,The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Ctr.FullName); HTM_Txt (Ctr.FullName);
if (Ctr.WWW[0]) if (Ctr.WWW[0])
HTM_A_End (); HTM_A_End ();
@ -3423,7 +3423,7 @@ static void Rec_ShowCenter (struct UsrData *UsrDat,bool ShowData)
static void Rec_ShowDepartment (struct UsrData *UsrDat,bool ShowData) static void Rec_ShowDepartment (struct UsrData *UsrDat,bool ShowData)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Department; extern const char *Txt_Department;
struct Dpt_Department Dpt; struct Dpt_Department Dpt;
@ -3434,7 +3434,7 @@ static void Rec_ShowDepartment (struct UsrData *UsrDat,bool ShowData)
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Department); Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Department);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (ShowData) if (ShowData)
{ {
if (UsrDat->Tch.DptCod > 0) if (UsrDat->Tch.DptCod > 0)
@ -3443,7 +3443,7 @@ static void Rec_ShowDepartment (struct UsrData *UsrDat,bool ShowData)
Dpt_GetDataOfDepartmentByCod (&Dpt); Dpt_GetDataOfDepartmentByCod (&Dpt);
if (Dpt.WWW[0]) if (Dpt.WWW[0])
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"",
Dpt.WWW,The_ClassDatN[Gbl.Prefs.Theme]); Dpt.WWW,The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Dpt.FullName); HTM_Txt (Dpt.FullName);
if (Dpt.WWW[0]) if (Dpt.WWW[0])
HTM_A_End (); HTM_A_End ();
@ -3460,7 +3460,7 @@ static void Rec_ShowDepartment (struct UsrData *UsrDat,bool ShowData)
static void Rec_ShowOffice (struct UsrData *UsrDat,bool ShowData) static void Rec_ShowOffice (struct UsrData *UsrDat,bool ShowData)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Office; extern const char *Txt_Office;
/***** Office *****/ /***** Office *****/
@ -3470,7 +3470,7 @@ static void Rec_ShowOffice (struct UsrData *UsrDat,bool ShowData)
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Office); Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Office);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (ShowData) if (ShowData)
HTM_Txt (UsrDat->Tch.Office); HTM_Txt (UsrDat->Tch.Office);
HTM_TD_End (); HTM_TD_End ();
@ -3484,7 +3484,7 @@ static void Rec_ShowOffice (struct UsrData *UsrDat,bool ShowData)
static void Rec_ShowOfficePhone (struct UsrData *UsrDat,bool ShowData) static void Rec_ShowOfficePhone (struct UsrData *UsrDat,bool ShowData)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Phone; extern const char *Txt_Phone;
/***** Office phone *****/ /***** Office phone *****/
@ -3494,11 +3494,11 @@ static void Rec_ShowOfficePhone (struct UsrData *UsrDat,bool ShowData)
Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Phone); Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Phone);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"REC_C2_BOT LM %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
if (ShowData) if (ShowData)
{ {
HTM_A_Begin ("href=\"tel:%s\" class=\"%s\"", HTM_A_Begin ("href=\"tel:%s\" class=\"%s\"",
UsrDat->Tch.OfficePhone,The_ClassDatN[Gbl.Prefs.Theme]); UsrDat->Tch.OfficePhone,The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (UsrDat->Tch.OfficePhone); HTM_Txt (UsrDat->Tch.OfficePhone);
HTM_A_End (); HTM_A_End ();
} }
@ -3774,7 +3774,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
/* Label */ /* Label */
Frm_LabelColumn ("REC_C1_BOT RM","InsCtyCod", Frm_LabelColumn ("REC_C1_BOT RM","InsCtyCod",
Str_BuildStringStr ("%s*",Txt_Country)); Str_BuildString ("%s*",Txt_Country));
Str_FreeStrings (); Str_FreeStrings ();
/* Data */ /* Data */
@ -3806,7 +3806,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
/* Label */ /* Label */
Frm_LabelColumn ("REC_C1_BOT RM","OthInsCod", Frm_LabelColumn ("REC_C1_BOT RM","OthInsCod",
Str_BuildStringStr ("%s*",Txt_Institution)); Str_BuildString ("%s*",Txt_Institution));
Str_FreeStrings (); Str_FreeStrings ();
/* Data */ /* Data */
@ -3847,7 +3847,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
/* Label */ /* Label */
Frm_LabelColumn ("REC_C1_BOT RM","OthCtrCod", Frm_LabelColumn ("REC_C1_BOT RM","OthCtrCod",
Str_BuildStringStr ("%s*",Txt_Center)); Str_BuildString ("%s*",Txt_Center));
Str_FreeStrings (); Str_FreeStrings ();
/* Data */ /* Data */
@ -3886,7 +3886,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
/* Label */ /* Label */
Frm_LabelColumn ("REC_C1_BOT RM",Dpt_PARAM_DPT_COD_NAME, Frm_LabelColumn ("REC_C1_BOT RM",Dpt_PARAM_DPT_COD_NAME,
Str_BuildStringStr ("%s*",Txt_Department)); Str_BuildString ("%s*",Txt_Department));
Str_FreeStrings (); Str_FreeStrings ();
/* Data */ /* Data */

View File

@ -124,7 +124,7 @@ void Rep_ReqMyUsageReport (void)
Frm_BeginForm (ActSeeMyUsgRep); Frm_BeginForm (ActSeeMyUsgRep);
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Report_of_use_of_PLATFORM, Box_BoxBegin (NULL,Str_BuildString (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME), Cfg_PLATFORM_SHORT_NAME),
NULL,NULL, NULL,NULL,
Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE); Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE);
@ -227,12 +227,13 @@ static void Rep_CreateMyUsageReport (struct Rep_Report *Report)
static void Rep_PutLinkToMyUsageReport (struct Rep_Report *Report) static void Rep_PutLinkToMyUsageReport (struct Rep_Report *Report)
{ {
extern const char *Hlp_ANALYTICS_Report; extern const char *Hlp_ANALYTICS_Report;
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_Report_of_use_of_PLATFORM; extern const char *Txt_Report_of_use_of_PLATFORM;
extern const char *Txt_Report; extern const char *Txt_Report;
extern const char *Txt_This_link_will_remain_active_as_long_as_your_user_s_account_exists; extern const char *Txt_This_link_will_remain_active_as_long_as_your_user_s_account_exists;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Report_of_use_of_PLATFORM, Box_BoxBegin (NULL,Str_BuildString (Txt_Report_of_use_of_PLATFORM,
Cfg_PLATFORM_SHORT_NAME), Cfg_PLATFORM_SHORT_NAME),
NULL,NULL, NULL,NULL,
Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE); Hlp_ANALYTICS_Report,Box_NOT_CLOSABLE);
@ -252,7 +253,7 @@ static void Rep_PutLinkToMyUsageReport (struct Rep_Report *Report)
HTM_A_End (); HTM_A_End ();
HTM_DIV_End (); HTM_DIV_End ();
HTM_DIV_Begin ("class=\"DAT_LIGHT\""); HTM_DIV_Begin ("class=\"%s\"",The_ClassDatLight[Gbl.Prefs.Theme]);
HTM_Txt (Txt_This_link_will_remain_active_as_long_as_your_user_s_account_exists); HTM_Txt (Txt_This_link_will_remain_active_as_long_as_your_user_s_account_exists);
HTM_DIV_End (); HTM_DIV_End ();
@ -268,7 +269,7 @@ static void Rep_PutLinkToMyUsageReport (struct Rep_Report *Report)
static void Rep_TitleReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC) static void Rep_TitleReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_User[Usr_NUM_SEXS]; extern const char *Txt_User[Usr_NUM_SEXS];
extern const char *Txt_Date; extern const char *Txt_Date;
@ -276,7 +277,7 @@ static void Rep_TitleReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC)
/***** User *****/ /***** User *****/
HTM_TxtColonNBSP (Txt_User[Gbl.Usrs.Me.UsrDat.Sex]); HTM_TxtColonNBSP (Txt_User[Gbl.Usrs.Me.UsrDat.Sex]);
HTM_SPAN_Begin ("class=\"DAT_N_BOLD\""); HTM_SPAN_Begin ("class=\"%s BOLD\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Gbl.Usrs.Me.UsrDat.FullName); HTM_Txt (Gbl.Usrs.Me.UsrDat.FullName);
HTM_SPAN_End (); HTM_SPAN_End ();
@ -285,7 +286,7 @@ static void Rep_TitleReport (struct Rep_CurrentTimeUTC *CurrentTimeUTC)
{ {
HTM_BR (); HTM_BR ();
HTM_TxtColonNBSP (Txt_Date); HTM_TxtColonNBSP (Txt_Date);
HTM_SPAN_Begin ("class=\"%s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_SPAN_Begin ("class=\"%s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtF ("%s %s UTC",CurrentTimeUTC->StrDate, HTM_TxtF ("%s %s UTC",CurrentTimeUTC->StrDate,
CurrentTimeUTC->StrTime); CurrentTimeUTC->StrTime);
HTM_SPAN_End (); HTM_SPAN_End ();

View File

@ -275,7 +275,7 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs; Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs;
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Statistics_of_visits_to_the_course_X, Box_BoxBegin (NULL,Str_BuildString (Txt_Statistics_of_visits_to_the_course_X,
Gbl.Hierarchy.Crs.ShrtName), Gbl.Hierarchy.Crs.ShrtName),
NULL,NULL, NULL,NULL,
Hlp_ANALYTICS_Visits_visits_to_course,Box_NOT_CLOSABLE); Hlp_ANALYTICS_Visits_visits_to_course,Box_NOT_CLOSABLE);
@ -1047,7 +1047,7 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
MYSQL_RES *mysql_res) MYSQL_RES *mysql_res)
{ {
extern Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD]; extern Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Show_previous_X_clicks; extern const char *Txt_Show_previous_X_clicks;
extern const char *Txt_PAGES_Previous; extern const char *Txt_PAGES_Previous;
extern const char *Txt_Clicks; extern const char *Txt_Clicks;
@ -1132,8 +1132,8 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
HTM_TD_Begin ("class=\"LM\""); HTM_TD_Begin ("class=\"LM\"");
if (FirstRow > 1) if (FirstRow > 1)
{ {
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringLong (Txt_Show_previous_X_clicks, HTM_BUTTON_SUBMIT_Begin (Str_BuildString (Txt_Show_previous_X_clicks,
(long) Stats->RowsPerPage), Stats->RowsPerPage),
"BT_LINK TIT_TBL",NULL); "BT_LINK TIT_TBL",NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_STRONG_Begin (); HTM_STRONG_Begin ();
@ -1146,7 +1146,7 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
Frm_EndForm (); Frm_EndForm ();
/* Write number of current page */ /* Write number of current page */
HTM_TD_Begin ("class=\"%s CM\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"%s CM\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_STRONG_Begin (); HTM_STRONG_Begin ();
HTM_TxtF ("%s %u-%u %s %u (%s %u %s %u)", HTM_TxtF ("%s %u-%u %s %u (%s %u %s %u)",
Txt_Clicks, Txt_Clicks,
@ -1170,8 +1170,8 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
HTM_TD_Begin ("class=\"RM\""); HTM_TD_Begin ("class=\"RM\"");
if (LastRow < NumHits) if (LastRow < NumHits)
{ {
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringLong (Txt_Show_next_X_clicks, HTM_BUTTON_SUBMIT_Begin (Str_BuildString (Txt_Show_next_X_clicks,
(long) Stats->RowsPerPage), Stats->RowsPerPage),
"BT_LINK TIT_TBL",NULL); "BT_LINK TIT_TBL",NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_STRONG_Begin (); HTM_STRONG_Begin ();

View File

@ -2667,7 +2667,7 @@ char *Str_BuildGoToMsg (const char *Where)
{ {
extern const char *Txt_Go_to_X; extern const char *Txt_Go_to_X;
return Str_BuildStringStr (Txt_Go_to_X,Where); return Str_BuildString (Txt_Go_to_X,Where);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2686,58 +2686,33 @@ static struct
// Str_FreeStrings() must be called after calling these functions // Str_FreeStrings() must be called after calling these functions
// fmt must be a string including "%s" char *Str_BuildString (const char *fmt,...)
char *Str_BuildStringStr (const char *fmt,const char *Str)
{ {
char *Ptr; va_list ap;
int NumBytesPrinted;
char *Ptr = "";
if (Str_Strings.Num >= Str_MAX_STRINGS) if (fmt)
Err_NotEnoughMemoryExit (); {
if (fmt[0])
{
if (Str_Strings.Num >= Str_MAX_STRINGS)
Err_NotEnoughMemoryExit ();
if (Str_Strings.Str[Str_Strings.Num] != NULL) if (Str_Strings.Str[Str_Strings.Num] != NULL)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&Str_Strings.Str[Str_Strings.Num],fmt,Str) < 0) va_start (ap,fmt);
Err_NotEnoughMemoryExit (); NumBytesPrinted = vasprintf (&Str_Strings.Str[Str_Strings.Num],fmt,ap);
Ptr = Str_Strings.Str[Str_Strings.Num]; va_end (ap);
Str_Strings.Num++; if (NumBytesPrinted < 0) // -1 if no memory or any other error
Err_NotEnoughMemoryExit ();
return Ptr; Ptr = Str_Strings.Str[Str_Strings.Num];
}
// fmt must be a string including "%ld" Str_Strings.Num++;
char *Str_BuildStringLong (const char *fmt,long Num) }
{ }
char *Ptr;
if (Str_Strings.Num >= Str_MAX_STRINGS)
Err_NotEnoughMemoryExit ();
if (Str_Strings.Str[Str_Strings.Num] != NULL)
Err_NotEnoughMemoryExit ();
if (asprintf (&Str_Strings.Str[Str_Strings.Num],fmt,Num) < 0)
Err_NotEnoughMemoryExit ();
Ptr = Str_Strings.Str[Str_Strings.Num];
Str_Strings.Num++;
return Ptr;
}
char *Str_BuildStringLongStr (long Num,const char *Str)
{
char *Ptr;
if (Str_Strings.Num >= Str_MAX_STRINGS)
Err_NotEnoughMemoryExit ();
if (Str_Strings.Str[Str_Strings.Num] != NULL)
Err_NotEnoughMemoryExit ();
if (asprintf (&Str_Strings.Str[Str_Strings.Num],"%ld %s",Num,Str) < 0)
Err_NotEnoughMemoryExit ();
Ptr = Str_Strings.Str[Str_Strings.Num];
Str_Strings.Num++;
return Ptr; return Ptr;
} }

View File

@ -147,9 +147,7 @@ void Str_Copy (char *Dst,const char *Src,size_t DstSize);
void Str_Concat (char *Dst,const char *Src,size_t DstSize); void Str_Concat (char *Dst,const char *Src,size_t DstSize);
char *Str_BuildGoToMsg (const char *Where); char *Str_BuildGoToMsg (const char *Where);
char *Str_BuildStringStr (const char *fmt,const char *Str); char *Str_BuildString (const char *fmt,...);
char *Str_BuildStringLong (const char *fmt,long Num);
char *Str_BuildStringLongStr (long Num,const char *Str);
void Str_FreeStrings (void); void Str_FreeStrings (void);
#endif #endif

View File

@ -425,6 +425,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
{ {
extern const char *Hlp_ASSESSMENT_Surveys; extern const char *Hlp_ASSESSMENT_Surveys;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_Survey; extern const char *Txt_Survey;
extern const char *Txt_View_survey; extern const char *Txt_View_survey;
extern const char *Txt_Number_of_questions; extern const char *Txt_Number_of_questions;
@ -673,7 +674,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML
ALn_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links ALn_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
HTM_DIV_Begin ("class=\"PAR %s\"",Svy.Status.Visible ? The_ClassDat[Gbl.Prefs.Theme] : HTM_DIV_Begin ("class=\"PAR %s\"",Svy.Status.Visible ? The_ClassDat[Gbl.Prefs.Theme] :
"DAT_LIGHT"); The_ClassDatLight[Gbl.Prefs.Theme]);
HTM_Txt (Txt); HTM_Txt (Txt);
HTM_DIV_End (); HTM_DIV_End ();
HTM_TD_End (); HTM_TD_End ();

View File

@ -648,7 +648,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem,
NULL, NULL,
Syl_PutParamNumItem,&Syllabus->ParamNumItem, Syl_PutParamNumItem,&Syllabus->ParamNumItem,
"arrow-up.svg", "arrow-up.svg",
Str_BuildStringStr (Syl_LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_up_X_and_its_subsections : Str_BuildString (Syl_LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_up_X_and_its_subsections :
Txt_Move_up_X, Txt_Move_up_X,
StrItemCod)); StrItemCod));
Str_FreeStrings (); Str_FreeStrings ();
@ -667,7 +667,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem,
NULL, NULL,
Syl_PutParamNumItem,&Syllabus->ParamNumItem, Syl_PutParamNumItem,&Syllabus->ParamNumItem,
"arrow-down.svg", "arrow-down.svg",
Str_BuildStringStr (Syl_LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_down_X_and_its_subsections : Str_BuildString (Syl_LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_down_X_and_its_subsections :
Txt_Move_down_X, Txt_Move_down_X,
StrItemCod)); StrItemCod));
Str_FreeStrings (); Str_FreeStrings ();
@ -685,7 +685,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem,
NULL, NULL,
Syl_PutParamNumItem,&Syllabus->ParamNumItem, Syl_PutParamNumItem,&Syllabus->ParamNumItem,
"arrow-left.svg", "arrow-left.svg",
Str_BuildStringStr (Txt_Increase_level_of_X, Str_BuildString (Txt_Increase_level_of_X,
StrItemCod)); StrItemCod));
Str_FreeStrings (); Str_FreeStrings ();
} }
@ -703,7 +703,7 @@ static void Syl_ShowRowSyllabus (struct Syl_Syllabus *Syllabus,unsigned NumItem,
NULL, NULL,
Syl_PutParamNumItem,&Syllabus->ParamNumItem, Syl_PutParamNumItem,&Syllabus->ParamNumItem,
"arrow-right.svg", "arrow-right.svg",
Str_BuildStringStr (Txt_Decrease_level_of_X, Str_BuildString (Txt_Decrease_level_of_X,
StrItemCod)); StrItemCod));
Str_FreeStrings (); Str_FreeStrings ();
} }

View File

@ -258,7 +258,7 @@ static void SysCfg_Map (void)
static void SysCfg_Platform (void) static void SysCfg_Platform (void)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Platform; extern const char *Txt_Platform;
/***** Institution *****/ /***** Institution *****/
@ -268,7 +268,7 @@ static void SysCfg_Platform (void)
Frm_LabelColumn ("RT",NULL,Txt_Platform); Frm_LabelColumn ("RT",NULL,Txt_Platform);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"LB %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"LB %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Cfg_PLATFORM_SHORT_NAME); HTM_Txt (Cfg_PLATFORM_SHORT_NAME);
HTM_TD_End (); HTM_TD_End ();
@ -312,7 +312,7 @@ static void SysCfg_NumCtys (void)
HTM_TD_Begin ("class=\"LB\""); HTM_TD_Begin ("class=\"LB\"");
Frm_BeginFormGoTo (ActSeeCty); Frm_BeginFormGoTo (ActSeeCty);
HTM_BUTTON_SUBMIT_Begin (Txt_Countries, HTM_BUTTON_SUBMIT_Begin (Txt_Countries,
Str_BuildStringStr ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]), Str_BuildString ("BT_LINK %s",The_ClassDat[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
HTM_Unsigned (Cty_GetCachedNumCtysInSys ()); HTM_Unsigned (Cty_GetCachedNumCtysInSys ());

View File

@ -470,7 +470,7 @@ static void Tag_PutIconEnable (long TagCod,const char *TagTxt)
Frm_BeginForm (ActEnaTag); Frm_BeginForm (ActEnaTag);
Par_PutHiddenParamLong (NULL,"TagCod",TagCod); Par_PutHiddenParamLong (NULL,"TagCod",TagCod);
Ico_PutIconLink ("eye-slash-red.svg", Ico_PutIconLink ("eye-slash-red.svg",
Str_BuildStringStr (Txt_Tag_X_not_allowed_Click_to_allow_it, Str_BuildString (Txt_Tag_X_not_allowed_Click_to_allow_it,
TagTxt)); TagTxt));
Str_FreeStrings (); Str_FreeStrings ();
Frm_EndForm (); Frm_EndForm ();
@ -489,7 +489,7 @@ static void Tag_PutIconDisable (long TagCod,const char *TagTxt)
Frm_BeginForm (ActDisTag); Frm_BeginForm (ActDisTag);
Par_PutHiddenParamLong (NULL,"TagCod",TagCod); Par_PutHiddenParamLong (NULL,"TagCod",TagCod);
Ico_PutIconLink ("eye-green.svg", Ico_PutIconLink ("eye-green.svg",
Str_BuildStringStr (Txt_Tag_X_allowed_Click_to_disable_it, Str_BuildString (Txt_Tag_X_allowed_Click_to_disable_it,
TagTxt)); TagTxt));
Str_FreeStrings (); Str_FreeStrings ();
Frm_EndForm (); Frm_EndForm ();

View File

@ -303,6 +303,7 @@ void Tst_ReceiveTestDraft (void)
void Tst_AssessTest (void) void Tst_AssessTest (void)
{ {
extern const char *Hlp_ASSESSMENT_Tests; extern const char *Hlp_ASSESSMENT_Tests;
extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Result; extern const char *Txt_Result;
extern const char *Txt_Test_No_X_that_you_make_in_this_course; extern const char *Txt_Test_No_X_that_you_make_in_this_course;
extern const char *Txt_Score; extern const char *Txt_Score;
@ -371,7 +372,7 @@ void Tst_AssessTest (void)
/***** Write total score and grade *****/ /***** Write total score and grade *****/
if (TstVis_IsVisibleTotalScore (TstCfg_GetConfigVisibility ())) if (TstVis_IsVisibleTotalScore (TstCfg_GetConfigVisibility ()))
{ {
HTM_DIV_Begin ("class=\"DAT_N_BOLD CM\""); HTM_DIV_Begin ("class=\"CM %s BOLD\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColonNBSP (Txt_Score); HTM_TxtColonNBSP (Txt_Score);
HTM_Double2Decimals (Print.Score); HTM_Double2Decimals (Print.Score);
HTM_BR (); HTM_BR ();

View File

@ -1830,6 +1830,7 @@ static void TstPrn_ShowHeaderPrints (Usr_MeOrOther_t MeOrOther)
static void TstPrn_ShowUsrPrints (struct UsrData *UsrDat) static void TstPrn_ShowUsrPrints (struct UsrData *UsrDat)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *Txt_View_test; extern const char *Txt_View_test;
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
unsigned NumPrints; unsigned NumPrints;
@ -1872,7 +1873,7 @@ static void TstPrn_ShowUsrPrints (struct UsrData *UsrDat)
/* Get print data */ /* Get print data */
TstPrn_GetPrintDataByPrnCod (&Print); TstPrn_GetPrintDataByPrnCod (&Print);
ClassDat = Print.AllowTeachers ? The_ClassDat[Gbl.Prefs.Theme] : ClassDat = Print.AllowTeachers ? The_ClassDat[Gbl.Prefs.Theme] :
"DAT_LIGHT"; The_ClassDatLight[Gbl.Prefs.Theme];
/* Get if I can see print result and score */ /* Get if I can see print result and score */
TstRes_CheckIfICanSeePrintResult (&Print,UsrDat->UsrCod,&ICanView); TstRes_CheckIfICanSeePrintResult (&Print,UsrDat->UsrCod,&ICanView);
@ -2057,7 +2058,7 @@ static void TstPrn_ShowPrintsSummaryRow (bool ItsMe,
struct TstPrn_NumQuestions *NumTotalQsts, struct TstPrn_NumQuestions *NumTotalQsts,
double TotalScore) double TotalScore)
{ {
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Visible_tests; extern const char *Txt_Visible_tests;
bool ICanViewTotalScore; bool ICanViewTotalScore;
@ -2088,35 +2089,35 @@ static void TstPrn_ShowPrintsSummaryRow (bool ItsMe,
/***** Row title *****/ /***** Row title *****/
HTM_TD_Begin ("colspan=\"2\" class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("colspan=\"2\" class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_TxtColonNBSP (Txt_Visible_tests); HTM_TxtColonNBSP (Txt_Visible_tests);
HTM_Unsigned (NumPrints); HTM_Unsigned (NumPrints);
HTM_TD_End (); HTM_TD_End ();
/***** Write total number of questions *****/ /***** Write total number of questions *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumPrints) if (NumPrints)
HTM_Unsigned (NumTotalQsts->All); HTM_Unsigned (NumTotalQsts->All);
HTM_TD_End (); HTM_TD_End ();
/***** Write total number of non-blank answers *****/ /***** Write total number of non-blank answers *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumPrints) if (NumPrints)
HTM_Unsigned (NumTotalQsts->NotBlank); HTM_Unsigned (NumTotalQsts->NotBlank);
HTM_TD_End (); HTM_TD_End ();
/***** Write total number of blank answers *****/ /***** Write total number of blank answers *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (NumPrints) if (NumPrints)
HTM_Unsigned (NumTotalQsts->All - NumTotalQsts->NotBlank); HTM_Unsigned (NumTotalQsts->All - NumTotalQsts->NotBlank);
HTM_TD_End (); HTM_TD_End ();
/***** Write total score *****/ /***** Write total score *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (ICanViewTotalScore) if (ICanViewTotalScore)
{ {
HTM_Double2Decimals (TotalScore); HTM_Double2Decimals (TotalScore);
@ -2127,7 +2128,7 @@ static void TstPrn_ShowPrintsSummaryRow (bool ItsMe,
/***** Write average score per question *****/ /***** Write average score per question *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (ICanViewTotalScore) if (ICanViewTotalScore)
HTM_Double2Decimals (NumTotalQsts->All ? TotalScore / (double) NumTotalQsts->All : HTM_Double2Decimals (NumTotalQsts->All ? TotalScore / (double) NumTotalQsts->All :
0.0); 0.0);
@ -2135,14 +2136,14 @@ static void TstPrn_ShowPrintsSummaryRow (bool ItsMe,
/***** Write grade over Tst_SCORE_MAX *****/ /***** Write grade over Tst_SCORE_MAX *****/
HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"RM %s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
if (ICanViewTotalScore) if (ICanViewTotalScore)
TstPrn_ComputeAndShowGrade (NumTotalQsts->All,TotalScore,Tst_SCORE_MAX); TstPrn_ComputeAndShowGrade (NumTotalQsts->All,TotalScore,Tst_SCORE_MAX);
HTM_TD_End (); HTM_TD_End ();
/***** Last cell *****/ /***** Last cell *****/
HTM_TD_Begin ("class=\"%s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"", HTM_TD_Begin ("class=\"%s LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",
The_ClassDatN[Gbl.Prefs.Theme],Gbl.RowEvenOdd); The_ClassDatStrong[Gbl.Prefs.Theme],Gbl.RowEvenOdd);
HTM_TD_End (); HTM_TD_End ();
/***** End row *****/ /***** End row *****/
@ -2157,7 +2158,7 @@ void TstPrn_ShowOnePrint (void)
{ {
extern const char *Hlp_ASSESSMENT_Tests_results; extern const char *Hlp_ASSESSMENT_Tests_results;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatN[The_NUM_THEMES]; extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Result; extern const char *Txt_Result;
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME]; extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
@ -2221,7 +2222,7 @@ void TstPrn_ShowOnePrint (void)
/* User */ /* User */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs][Gbl.Usrs.Other.UsrDat.Sex]); HTM_TxtColon (Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs][Gbl.Usrs.Other.UsrDat.Sex]);
HTM_TD_End (); HTM_TD_End ();
@ -2250,7 +2251,7 @@ void TstPrn_ShowOnePrint (void)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_START_END_TIME[StartEndTime]); HTM_TxtColon (Txt_START_END_TIME[StartEndTime]);
HTM_TD_End (); HTM_TD_End ();
@ -2269,7 +2270,7 @@ void TstPrn_ShowOnePrint (void)
/***** Number of questions *****/ /***** Number of questions *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Questions); HTM_TxtColon (Txt_Questions);
HTM_TD_End (); HTM_TD_End ();
@ -2282,7 +2283,7 @@ void TstPrn_ShowOnePrint (void)
/***** Number of answers *****/ /***** Number of answers *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Answers); HTM_TxtColon (Txt_Answers);
HTM_TD_End (); HTM_TD_End ();
@ -2295,7 +2296,7 @@ void TstPrn_ShowOnePrint (void)
/***** Score *****/ /***** Score *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Score); HTM_TxtColon (Txt_Score);
HTM_TD_End (); HTM_TD_End ();
@ -2317,7 +2318,7 @@ void TstPrn_ShowOnePrint (void)
/***** Grade *****/ /***** Grade *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Grade); HTM_TxtColon (Txt_Grade);
HTM_TD_End (); HTM_TD_End ();
@ -2337,7 +2338,7 @@ void TstPrn_ShowOnePrint (void)
/***** Tags present in this test *****/ /***** Tags present in this test *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatN[Gbl.Prefs.Theme]); HTM_TD_Begin ("class=\"RT %s\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_TxtColon (Txt_Tags); HTM_TxtColon (Txt_Tags);
HTM_TD_End (); HTM_TD_End ();

View File

@ -13949,46 +13949,46 @@ const char *Txt_FORUM_posts =
"posts"; "posts";
#endif #endif
const char *Txt_FORUM_Post_X_allowed = // Warning: it is very important to include %ld in the following sentences const char *Txt_FORUM_Post_X_allowed = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Comentario %ld permitido."; // Necessita traduccio "Comentario %u permitido."; // Necessita traduccio
#elif L==2 // de #elif L==2 // de
"Post %ld allowed."; // Need Übersetzung "Post %u allowed."; // Need Übersetzung
#elif L==3 // en #elif L==3 // en
"Post %ld allowed."; "Post %u allowed.";
#elif L==4 // es #elif L==4 // es
"Comentario %ld permitido."; "Comentario %u permitido.";
#elif L==5 // fr #elif L==5 // fr
"Post %ld allowed."; // Besoin de traduction "Post %u allowed."; // Besoin de traduction
#elif L==6 // gn #elif L==6 // gn
"Comentario %ld permitido."; // Okoteve traducción "Comentario %u permitido."; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Post %ld autorizzato."; "Post %u autorizzato.";
#elif L==8 // pl #elif L==8 // pl
"Post %ld dozwolone."; "Post %u dozwolone.";
#elif L==9 // pt #elif L==9 // pt
"Post %ld permitido."; "Post %u permitido.";
#endif #endif
const char *Txt_FORUM_Post_X_allowed_Click_to_ban_it = // Warning: it is very important to include %ld in the following sentences const char *Txt_FORUM_Post_X_allowed_Click_to_ban_it = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Comentario %ld permitido. Pulse para censurarlo."; // Necessita traduccio "Comentario %u permitido. Pulse para censurarlo."; // Necessita traduccio
#elif L==2 // de #elif L==2 // de
"Post %ld allowed. Click to ban it."; // Need Übersetzung "Post %u allowed. Click to ban it."; // Need Übersetzung
#elif L==3 // en #elif L==3 // en
"Post %ld allowed. Click to ban it."; "Post %u allowed. Click to ban it.";
#elif L==4 // es #elif L==4 // es
"Comentario %ld permitido. Pulse para censurarlo."; "Comentario %u permitido. Pulse para censurarlo.";
#elif L==5 // fr #elif L==5 // fr
"Post %ld allowed. Click to ban it."; // Besoin de traduction "Post %u allowed. Click to ban it."; // Besoin de traduction
#elif L==6 // gn #elif L==6 // gn
"Comentario %ld permitido. Pulse para censurarlo."; // Okoteve traducción "Comentario %u permitido. Pulse para censurarlo."; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Post %ld autorizzato. Clicca per censurarlo."; "Post %u autorizzato. Clicca per censurarlo.";
#elif L==8 // pl #elif L==8 // pl
"Post %ld dozwolone. Kliknij, aby to zakazac."; "Post %u dozwolone. Kliknij, aby to zakazac.";
#elif L==9 // pt #elif L==9 // pt
"Post %ld permitido. Clique para censur&aacute;-lo."; "Post %u permitido. Clique para censur&aacute;-lo.";
#endif #endif
const char *Txt_FORUM_Post_and_thread_removed = const char *Txt_FORUM_Post_and_thread_removed =
@ -14033,46 +14033,46 @@ const char *Txt_FORUM_Post_banned =
"Post n&atilde;o permitido."; "Post n&atilde;o permitido.";
#endif #endif
const char *Txt_FORUM_Post_X_banned = // Warning: it is very important to include %ld in the following sentences const char *Txt_FORUM_Post_X_banned = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Comentario %ld no permitido"; // Necessita traduccio "Comentario %u no permitido"; // Necessita traduccio
#elif L==2 // de #elif L==2 // de
"Post %ld banned."; // Need Übersetzung "Post %u banned."; // Need Übersetzung
#elif L==3 // en #elif L==3 // en
"Post %ld banned."; "Post %u banned.";
#elif L==4 // es #elif L==4 // es
"Comentario %ld no permitido"; "Comentario %u no permitido";
#elif L==5 // fr #elif L==5 // fr
"Post %ld banned."; // Besoin de traduction "Post %u banned."; // Besoin de traduction
#elif L==6 // gn #elif L==6 // gn
"Comentario %ld no permitido"; // Okoteve traducción "Comentario %u no permitido"; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Post %ld censurato."; "Post %u censurato.";
#elif L==8 // pl #elif L==8 // pl
"Post %ld zakazany."; "Post %u zakazany.";
#elif L==9 // pt #elif L==9 // pt
"Post %ld n&atilde;o permitido."; "Post %u n&atilde;o permitido.";
#endif #endif
const char *Txt_FORUM_Post_X_banned_Click_to_unban_it = // Warning: it is very important to include %ld in the following sentences const char *Txt_FORUM_Post_X_banned_Click_to_unban_it = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Comentario %ld no permitido. Pulse para permitirlo."; // Necessita traduccio "Comentario %u no permitido. Pulse para permitirlo."; // Necessita traduccio
#elif L==2 // de #elif L==2 // de
"Post %ld banned. Click to unban it."; // Need Übersetzung "Post %u banned. Click to unban it."; // Need Übersetzung
#elif L==3 // en #elif L==3 // en
"Post %ld banned. Click to unban it."; "Post %u banned. Click to unban it.";
#elif L==4 // es #elif L==4 // es
"Comentario %ld no permitido. Pulse para permitirlo."; "Comentario %u no permitido. Pulse para permitirlo.";
#elif L==5 // fr #elif L==5 // fr
"Post %ld banned. Click to unban it."; // Besoin de traduction "Post %u banned. Click to unban it."; // Besoin de traduction
#elif L==6 // gn #elif L==6 // gn
"Comentario %ld no permitido. Pulse para permitirlo."; // Okoteve traducción "Comentario %u no permitido. Pulse para permitirlo."; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Post %ld censurato. Clicca per autorizzarlo."; "Post %u censurato. Clicca per autorizzarlo.";
#elif L==8 // pl #elif L==8 // pl
"Post %ld zakazany.Kliknij, aby to odbanowac."; "Post %u zakazany.Kliknij, aby to odbanowac.";
#elif L==9 // pt #elif L==9 // pt
"Post %ld n&atilde;o permitido. Clique para permiti-lo."; "Post %u n&atilde;o permitido. Clique para permiti-lo.";
#endif #endif
const char *Txt_FORUM_Post_sent = const char *Txt_FORUM_Post_sent =
@ -41073,46 +41073,46 @@ const char *Txt_See_notifications =
"Ver notifica&ccedil;&otilde;es"; "Ver notifica&ccedil;&otilde;es";
#endif #endif
const char *Txt_See_only_the_latest_X_COMMENTS = // Warning: it is very important to include %ld in the following sentences const char *Txt_See_only_the_latest_X_COMMENTS = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Veure nom&eacute;s els %ld &uacute;ltims"; "Veure nom&eacute;s els %u &uacute;ltims";
#elif L==2 // de #elif L==2 // de
"Nur die neuesten %ld anzeigen"; "Nur die neuesten %u anzeigen";
#elif L==3 // en #elif L==3 // en
"See only the %ld latest"; "See only the %u latest";
#elif L==4 // es #elif L==4 // es
"Ver s&oacute;lo los %ld &uacute;ltimos"; "Ver s&oacute;lo los %u &uacute;ltimos";
#elif L==5 // fr #elif L==5 // fr
"Voir seulement les %ld derni&egrave;res"; "Voir seulement les %u derni&egrave;res";
#elif L==6 // gn #elif L==6 // gn
"Ver s&oacute;lo los %ld &uacute;ltimos"; // Okoteve traducción "Ver s&oacute;lo los %u &uacute;ltimos"; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Vedi solo le ultime %ld"; "Vedi solo le ultime %u";
#elif L==8 // pl #elif L==8 // pl
"Zobacz tylko najnowsze %ld"; "Zobacz tylko najnowsze %u";
#elif L==9 // pt #elif L==9 // pt
"Ver apenas os %ld &uacute;ltimos"; "Ver apenas os %u &uacute;ltimos";
#endif #endif
const char *Txt_See_the_previous_X_COMMENTS = // Warning: it is very important to include %ld in the following sentences const char *Txt_See_the_previous_X_COMMENTS = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Veure els %ld anteriors"; "Veure els %u anteriors";
#elif L==2 // de #elif L==2 // de
"Siehe die vorherigen %ld"; "Siehe die vorherigen %u";
#elif L==3 // en #elif L==3 // en
"See the previous %ld"; "See the previous %u";
#elif L==4 // es #elif L==4 // es
"Ver los %ld anteriores"; "Ver los %u anteriores";
#elif L==5 // fr #elif L==5 // fr
"Voir les %ld pr&eacute;c&eacute;dents"; "Voir les %u pr&eacute;c&eacute;dents";
#elif L==6 // gn #elif L==6 // gn
"Ver los %ld anteriores"; // Okoteve traducción "Ver los %u anteriores"; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Vedi i precedente %ld"; "Vedi i precedente %u";
#elif L==8 // pl #elif L==8 // pl
"Zobacz poprzednie %ld"; "Zobacz poprzednie %u";
#elif L==9 // pt #elif L==9 // pt
"Ver os %ld anteriores"; "Ver os %u anteriores";
#endif #endif
const char *Txt_Select_another_country = const char *Txt_Select_another_country =
@ -42531,46 +42531,46 @@ const char *Txt_Show_more_recipients =
"Ver mais destinat&aacute;rios"; "Ver mais destinat&aacute;rios";
#endif #endif
const char *Txt_Show_next_X_clicks = // Warning: it is very important to include %ld in the following sentences const char *Txt_Show_next_X_clicks = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Mostrar %ld clics posteriores"; // Necessita traduccio "Mostrar %u clics posteriores"; // Necessita traduccio
#elif L==2 // de #elif L==2 // de
"Show next %ld clicks"; // Need Übersetzung "Show next %u clicks"; // Need Übersetzung
#elif L==3 // en #elif L==3 // en
"Show next %ld clicks"; "Show next %u clicks";
#elif L==4 // es #elif L==4 // es
"Mostrar %ld clics posteriores"; "Mostrar %u clics posteriores";
#elif L==5 // fr #elif L==5 // fr
"Show next %ld clicks"; // Besoin de traduction "Show next %u clicks"; // Besoin de traduction
#elif L==6 // gn #elif L==6 // gn
"Mostrar %ld clics posteriores"; // Okoteve traducción "Mostrar %u clics posteriores"; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Mostra %ld scatti seguenti"; "Mostra %u scatti seguenti";
#elif L==8 // pl #elif L==8 // pl
"Show next %ld clicks"; // Potrzebujesz tlumaczenie "Show next %u clicks"; // Potrzebujesz tlumaczenie
#elif L==9 // pt #elif L==9 // pt
"Mostrar %ld cliques subsequentes"; "Mostrar %u cliques subsequentes";
#endif #endif
const char *Txt_Show_previous_X_clicks = // Warning: it is very important to include %ld in the following sentences const char *Txt_Show_previous_X_clicks = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Mostrar %ld clics anteriores"; // Necessita traduccio "Mostrar %u clics anteriores"; // Necessita traduccio
#elif L==2 // de #elif L==2 // de
"Show previous %ld clicks"; // Need Übersetzung "Show previous %u clicks"; // Need Übersetzung
#elif L==3 // en #elif L==3 // en
"Show previous %ld clicks"; "Show previous %u clicks";
#elif L==4 // es #elif L==4 // es
"Mostrar %ld clics anteriores"; "Mostrar %u clics anteriores";
#elif L==5 // fr #elif L==5 // fr
"Show previous %ld clicks"; // Besoin de traduction "Show previous %u clicks"; // Besoin de traduction
#elif L==6 // gn #elif L==6 // gn
"Mostrar %ld clics anteriores"; // Okoteve traducción "Mostrar %u clics anteriores"; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Mostra %ld scatti precedenti"; "Mostra %u scatti precedenti";
#elif L==8 // pl #elif L==8 // pl
"Show previous %ld clicks"; // Potrzebujesz tlumaczenie "Show previous %u clicks"; // Potrzebujesz tlumaczenie
#elif L==9 // pt #elif L==9 // pt
"Mostrar %ld cliques anteriores"; "Mostrar %u cliques anteriores";
#endif #endif
const char *Txt_Show_questions = const char *Txt_Show_questions =
@ -52642,25 +52642,25 @@ const char *Txt_TIMELINE_Favourite =
"Favorito"; "Favorito";
#endif #endif
const char *Txt_TIMELINE_Favourited_by_X_USERS = // Warning: it is very important to include %ld in the following sentences const char *Txt_TIMELINE_Favourited_by_X_USERS = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Marcat com favorit per %ld"; "Marcat com favorit per %u";
#elif L==2 // de #elif L==2 // de
"Von %ld vorgemerkt"; "Von %u vorgemerkt";
#elif L==3 // en #elif L==3 // en
"Favourited by %ld"; "Favourited by %u";
#elif L==4 // es #elif L==4 // es
"Marcado como favorito por %ld"; "Marcado como favorito por %u";
#elif L==5 // fr #elif L==5 // fr
"Ajout&eacute; aux favoris par %ld"; "Ajout&eacute; aux favoris par %u";
#elif L==6 // gn #elif L==6 // gn
"Marcado como favorito por %ld"; // Okoteve traducción "Marcado como favorito por %u"; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Preferiti da %ld"; "Preferiti da %u";
#elif L==8 // pl #elif L==8 // pl
"Dodane do ulubionych przez %ld"; "Dodane do ulubionych przez %u";
#elif L==9 // pt #elif L==9 // pt
"Marcado como favorito por %ld"; "Marcado como favorito por %u";
#endif #endif
const char *Txt_TIMELINE_Not_favourited_by_anyone = // No favourited const char *Txt_TIMELINE_Not_favourited_by_anyone = // No favourited
@ -53242,25 +53242,25 @@ const char *Txt_TIMELINE_Shared =
"Compartilhado"; "Compartilhado";
#endif #endif
const char *Txt_TIMELINE_Shared_by_X_USERS = // Warning: it is very important to include %ld in the following sentences const char *Txt_TIMELINE_Shared_by_X_USERS = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca #if L==1 // ca
"Compartit per %ld"; "Compartit per %u";
#elif L==2 // de #elif L==2 // de
"Von %ld geteilt"; "Von %u geteilt";
#elif L==3 // en #elif L==3 // en
"Shared by %ld"; "Shared by %u";
#elif L==4 // es #elif L==4 // es
"Compartido por %ld"; "Compartido por %u";
#elif L==5 // fr #elif L==5 // fr
"Partag&eacute; par %ld"; "Partag&eacute; par %u";
#elif L==6 // gn #elif L==6 // gn
"Compartido por %ld"; // Okoteve traducción "Compartido por %u"; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Condiviso da %ld"; "Condiviso da %u";
#elif L==8 // pl #elif L==8 // pl
"Udost&eogon;pnione przez %ld"; "Udost&eogon;pnione przez %u";
#elif L==9 // pt #elif L==9 // pt
"Compartilhado por %ld"; "Compartilhado por %u";
#endif #endif
const char *Txt_TIMETABLE_CLASS_TYPES[Tmt_NUM_CLASS_TYPES] = const char *Txt_TIMETABLE_CLASS_TYPES[Tmt_NUM_CLASS_TYPES] =

View File

@ -327,15 +327,37 @@ const char *The_ClassDat[The_NUM_THEMES] =
[The_THEME_DARK ] = "DAT_DARK", [The_THEME_DARK ] = "DAT_DARK",
}; };
const char *The_ClassDatN[The_NUM_THEMES] = const char *The_ClassDatStrong[The_NUM_THEMES] =
{ {
[The_THEME_WHITE ] = "DAT_N_WHITE", [The_THEME_WHITE ] = "DAT_STRONG_WHITE",
[The_THEME_GREY ] = "DAT_N_GREY", [The_THEME_GREY ] = "DAT_STRONG_GREY",
[The_THEME_PURPLE] = "DAT_N_PURPLE", [The_THEME_PURPLE] = "DAT_STRONG_PURPLE",
[The_THEME_BLUE ] = "DAT_N_BLUE", [The_THEME_BLUE ] = "DAT_STRONG_BLUE",
[The_THEME_YELLOW] = "DAT_N_YELLOW", [The_THEME_YELLOW] = "DAT_STRONG_YELLOW",
[The_THEME_PINK ] = "DAT_N_PINK", [The_THEME_PINK ] = "DAT_STRONG_PINK",
[The_THEME_DARK ] = "DAT_N_DARK", [The_THEME_DARK ] = "DAT_STRONG_DARK",
};
const char *The_ClassDatLight[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_LIGHT_WHITE",
[The_THEME_GREY ] = "DAT_LIGHT_GREY",
[The_THEME_PURPLE] = "DAT_LIGHT_PURPLE",
[The_THEME_BLUE ] = "DAT_LIGHT_BLUE",
[The_THEME_YELLOW] = "DAT_LIGHT_YELLOW",
[The_THEME_PINK ] = "DAT_LIGHT_PINK",
[The_THEME_DARK ] = "DAT_LIGHT_DARK",
};
const char *The_ClassBgHighlight[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "BG_HIGHLIGHT_WHITE",
[The_THEME_GREY ] = "BG_HIGHLIGHT_GREY",
[The_THEME_PURPLE] = "BG_HIGHLIGHT_PURPLE",
[The_THEME_BLUE ] = "BG_HIGHLIGHT_BLUE",
[The_THEME_YELLOW] = "BG_HIGHLIGHT_YELLOW",
[The_THEME_PINK ] = "BG_HIGHLIGHT_PINK",
[The_THEME_DARK ] = "BG_HIGHLIGHT_DARK",
}; };
/*****************************************************************************/ /*****************************************************************************/

View File

@ -278,7 +278,7 @@ void Tml_ShowTimelineUsrHighlighting (struct Tml_Timeline *Timeline,long NotCod)
/***** Show timeline *****/ /***** Show timeline *****/
Tml_ShowTimeline (Timeline,NotCod, Tml_ShowTimeline (Timeline,NotCod,
Str_BuildStringStr (Txt_Timeline_OF_A_USER, Str_BuildString (Txt_Timeline_OF_A_USER,
Gbl.Usrs.Other.UsrDat.FrstName)); Gbl.Usrs.Other.UsrDat.FrstName));
Str_FreeStrings (); Str_FreeStrings ();
@ -517,13 +517,15 @@ static void Tml_PutHiddenList (const char *Id)
void Tml_WriteDateTime (time_t TimeUTC) void Tml_WriteDateTime (time_t TimeUTC)
{ {
extern const char *The_ClassDatLight[The_NUM_THEMES];
char IdDateTime[Frm_MAX_BYTES_ID + 1]; char IdDateTime[Frm_MAX_BYTES_ID + 1];
/***** Create unique Id *****/ /***** Create unique Id *****/
Frm_SetUniqueId (IdDateTime); Frm_SetUniqueId (IdDateTime);
/***** Container where the date-time is written *****/ /***** Container where the date-time is written *****/
HTM_DIV_Begin ("id=\"%s\" class=\"Tml_RIGHT_TIME DAT_LIGHT\"",IdDateTime); HTM_DIV_Begin ("id=\"%s\" class=\"Tml_RIGHT_TIME %s\"",
IdDateTime,The_ClassDatLight[Gbl.Prefs.Theme]);
HTM_DIV_End (); HTM_DIV_End ();
/***** Script to write date and time in browser local time *****/ /***** Script to write date and time in browser local time *****/

View File

@ -487,7 +487,7 @@ static void Tml_Com_LinkToShowComms (Tml_Com_ContractExpand_t ConExp,
/* Icon and text */ /* Icon and text */
Tml_Com_PutIconToToggleComms (IdComms,Link[ConExp].Icon, Tml_Com_PutIconToToggleComms (IdComms,Link[ConExp].Icon,
Str_BuildStringLong (*Link[ConExp].Text,(long) NumComms)); Str_BuildString (*Link[ConExp].Text,NumComms));
Str_FreeStrings (); Str_FreeStrings ();
/* End container */ /* End container */
@ -612,6 +612,7 @@ static void Tml_Com_WriteAuthorTimeAndContent (struct Tml_Com_Comment *Com,
static void Tml_Com_WriteAuthorName (const struct UsrData *UsrDat) // Author static void Tml_Com_WriteAuthorName (const struct UsrData *UsrDat) // Author
{ {
extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *Txt_My_public_profile; extern const char *Txt_My_public_profile;
extern const char *Txt_Another_user_s_profile; extern const char *Txt_Another_user_s_profile;
@ -623,7 +624,9 @@ static void Tml_Com_WriteAuthorName (const struct UsrData *UsrDat) // Author
/* Author's name */ /* Author's name */
HTM_BUTTON_SUBMIT_Begin (Usr_ItsMe (UsrDat->UsrCod) ? Txt_My_public_profile : HTM_BUTTON_SUBMIT_Begin (Usr_ItsMe (UsrDat->UsrCod) ? Txt_My_public_profile :
Txt_Another_user_s_profile, Txt_Another_user_s_profile,
"BT_LINK Tml_COM_AUTHOR Tml_COMM_AUTHOR_WIDTH DAT_BOLD",NULL); Str_BuildString ("Tml_COM_AUTHOR Tml_COMM_AUTHOR_WIDTH BT_LINK %s BOLD",
The_ClassDat[Gbl.Prefs.Theme]),
NULL);
HTM_Txt (UsrDat->FullName); HTM_Txt (UsrDat->FullName);
HTM_BUTTON_End (); HTM_BUTTON_End ();

View File

@ -340,8 +340,8 @@ void Tml_Frm_FormToShowHiddenComms (long NotCod,
/* Put icon and text with link to show the first hidden comments */ /* Put icon and text with link to show the first hidden comments */
HTM_BUTTON_SUBMIT_Begin (NULL,The_ClassFormLinkInBox[Gbl.Prefs.Theme],NULL); HTM_BUTTON_SUBMIT_Begin (NULL,The_ClassFormLinkInBox[Gbl.Prefs.Theme],NULL);
Ico_PutIconTextLink ("angle-up.svg", Ico_PutIconTextLink ("angle-up.svg",
Str_BuildStringLong (Txt_See_the_previous_X_COMMENTS, Str_BuildString (Txt_See_the_previous_X_COMMENTS,
(long) NumInitialComms)); NumInitialComms));
Str_FreeStrings (); Str_FreeStrings ();
HTM_BUTTON_End (); HTM_BUTTON_End ();

View File

@ -316,13 +316,16 @@ void Tml_Not_ShowAuthorPhoto (struct UsrData *UsrDat,bool FormUnique)
static void Tml_Not_WriteAuthorTimeAndContent (const struct Tml_Not_Note *Not, static void Tml_Not_WriteAuthorTimeAndContent (const struct Tml_Not_Note *Not,
const struct UsrData *UsrDat) const struct UsrData *UsrDat)
{ {
extern const char *The_ClassDatStrong[The_NUM_THEMES];
/***** Begin top container *****/ /***** Begin top container *****/
HTM_DIV_Begin ("class=\"Tml_RIGHT_CONT Tml_RIGHT_WIDTH\""); HTM_DIV_Begin ("class=\"Tml_RIGHT_CONT Tml_RIGHT_WIDTH\"");
/***** Write author's full name *****/ /***** Write author's full name *****/
Tml_Not_WriteAuthorName (UsrDat, Tml_Not_WriteAuthorName (UsrDat,
"BT_LINK Tml_RIGHT_AUTHOR" Str_BuildString ("Tml_RIGHT_AUTHOR Tml_RIGHT_AUTHOR_WIDTH BT_LINK %s BOLD",
" Tml_RIGHT_AUTHOR_WIDTH DAT_N_BOLD"); The_ClassDatStrong[Gbl.Prefs.Theme]));
Str_FreeStrings ();
/***** Write date and time *****/ /***** Write date and time *****/
Tml_WriteDateTime (Not->DateTimeUTC); Tml_WriteDateTime (Not->DateTimeUTC);
@ -683,7 +686,7 @@ static void Tml_Not_PutFormGoToAction (const struct Tml_Not_Note *Not,
/***** Icon and link to go to action *****/ /***** Icon and link to go to action *****/
/* Begin button */ /* Begin button */
HTM_BUTTON_SUBMIT_Begin (Txt_TIMELINE_NOTE[Not->Type], HTM_BUTTON_SUBMIT_Begin (Txt_TIMELINE_NOTE[Not->Type],
Str_BuildStringStr ("BT_LINK %s ICO_HIGHLIGHT", Str_BuildString ("BT_LINK %s ICO_HIGHLIGHT",
The_ClassFormInBoxBold[Gbl.Prefs.Theme]), The_ClassFormInBoxBold[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();

View File

@ -165,6 +165,7 @@ void Tml_Pst_PutPhotoAndFormToWriteNewPost (struct Tml_Timeline *Timeline)
static void Tml_Pst_PutFormToWriteNewPost (struct Tml_Timeline *Timeline) static void Tml_Pst_PutFormToWriteNewPost (struct Tml_Timeline *Timeline)
{ {
extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_New_TIMELINE_post; extern const char *Txt_New_TIMELINE_post;
/***** Begin container *****/ /***** Begin container *****/
@ -172,8 +173,9 @@ static void Tml_Pst_PutFormToWriteNewPost (struct Tml_Timeline *Timeline)
/***** Author name *****/ /***** Author name *****/
Tml_Not_WriteAuthorName (&Gbl.Usrs.Me.UsrDat, Tml_Not_WriteAuthorName (&Gbl.Usrs.Me.UsrDat,
"BT_LINK Tml_RIGHT_AUTHOR" Str_BuildString ("Tml_RIGHT_AUTHOR Tml_RIGHT_AUTHOR_WIDTH BT_LINK %s BOLD",
" Tml_RIGHT_AUTHOR_WIDTH DAT_N_BOLD"); The_ClassDatStrong[Gbl.Prefs.Theme]));
Str_FreeStrings ();
/***** Form to write the post *****/ /***** Form to write the post *****/
/* Begin container */ /* Begin container */

View File

@ -351,7 +351,7 @@ static void Tml_Usr_PutDisabledIconFavSha (Tml_Usr_FavSha_t FavSha,
if (NumUsrs) if (NumUsrs)
{ {
Ico_PutDivIcon ("Tml_ICO_DISABLED",Ico[FavSha].Icon, Ico_PutDivIcon ("Tml_ICO_DISABLED",Ico[FavSha].Icon,
Str_BuildStringLong (*Ico[FavSha].Title.WithUsrs,(long) NumUsrs)); Str_BuildString (*Ico[FavSha].Title.WithUsrs,NumUsrs));
Str_FreeStrings (); Str_FreeStrings ();
} }
else else

View File

@ -1356,7 +1356,7 @@ void Usr_WriteLoggedUsrHead (void)
{ {
Frm_BeginForm (ActFrmRolSes); Frm_BeginForm (ActFrmRolSes);
HTM_BUTTON_SUBMIT_Begin (Txt_Role, HTM_BUTTON_SUBMIT_Begin (Txt_Role,
Str_BuildStringStr ("BT_LINK %s", Str_BuildString ("BT_LINK %s",
The_ClassUsr[Gbl.Prefs.Theme]), The_ClassUsr[Gbl.Prefs.Theme]),
NULL); NULL);
Str_FreeStrings (); Str_FreeStrings ();
@ -2032,6 +2032,7 @@ void Usr_ShowFormsLogoutAndRole (void)
extern const char *Hlp_PROFILE_Session_role; extern const char *Hlp_PROFILE_Session_role;
extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatStrong[The_NUM_THEMES];
extern const char *Txt_Session; extern const char *Txt_Session;
extern const char *Txt_Role; extern const char *Txt_Role;
extern const char *Txt_You_are_now_LOGGED_IN_as_X; extern const char *Txt_You_are_now_LOGGED_IN_as_X;
@ -2057,7 +2058,7 @@ void Usr_ShowFormsLogoutAndRole (void)
HTM_TxtColonNBSP (Txt_Role); HTM_TxtColonNBSP (Txt_Role);
HTM_SPAN_End (); HTM_SPAN_End ();
HTM_SPAN_Begin ("class=\"DAT_N_BOLD\""); HTM_SPAN_Begin ("class=\"%s BOLD\"",The_ClassDatStrong[Gbl.Prefs.Theme]);
HTM_Txt (Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Me.Role.Logged][Gbl.Usrs.Me.UsrDat.Sex]); HTM_Txt (Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Me.Role.Logged][Gbl.Usrs.Me.UsrDat.Sex]);
HTM_SPAN_End (); HTM_SPAN_End ();
} }
@ -3833,6 +3834,7 @@ void Usr_ListUsersToSelect (Rol_Role_t Role,struct SelectedUsrs *SelectedUsrs)
static void Usr_PutCheckboxToSelectAllUsers (Rol_Role_t Role, static void Usr_PutCheckboxToSelectAllUsers (Rol_Role_t Role,
struct SelectedUsrs *SelectedUsrs) struct SelectedUsrs *SelectedUsrs)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
char *ParamName; char *ParamName;
@ -3840,7 +3842,9 @@ static void Usr_PutCheckboxToSelectAllUsers (Rol_Role_t Role,
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TH_Begin (1,Usr_GetColumnsForSelectUsrs (),"LM LIGHT_BLUE"); HTM_TH_Begin (1,Usr_GetColumnsForSelectUsrs (),
Str_BuildString ("LM %s",The_ClassBgHighlight[Gbl.Prefs.Theme]));
Str_FreeStrings ();
HTM_LABEL_Begin (NULL); HTM_LABEL_Begin (NULL);
if (Usr_NameSelUnsel[Role] && Usr_ParamUsrCod[Role]) if (Usr_NameSelUnsel[Role] && Usr_ParamUsrCod[Role])
@ -3987,20 +3991,26 @@ void Usr_SetUsrDatMainFieldNames (void)
void Usr_WriteHeaderFieldsUsrDat (bool PutCheckBoxToSelectUsr) void Usr_WriteHeaderFieldsUsrDat (bool PutCheckBoxToSelectUsr)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
unsigned NumCol; unsigned NumCol;
const char *ClassHeader;
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
ClassHeader = Str_BuildString ("LM %s",The_ClassBgHighlight[Gbl.Prefs.Theme]);
/***** First column used for selection *****/ /***** First column used for selection *****/
if (PutCheckBoxToSelectUsr) if (PutCheckBoxToSelectUsr)
HTM_TH (1,1,"LM LIGHT_BLUE",NULL); HTM_TH (1,1,ClassHeader,NULL);
/***** Columns for user's data fields *****/ /***** Columns for user's data fields *****/
for (NumCol = 0; for (NumCol = 0;
NumCol < Usr_NUM_MAIN_FIELDS_DATA_USR; NumCol < Usr_NUM_MAIN_FIELDS_DATA_USR;
NumCol++) NumCol++)
if (NumCol != 2 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want this column if (NumCol != 2 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want this column
HTM_TH (1,1,"LM LIGHT_BLUE",Usr_UsrDatMainFieldNames[NumCol]); HTM_TH (1,1,ClassHeader,Usr_UsrDatMainFieldNames[NumCol]);
Str_FreeStrings ();
HTM_TR_End (); HTM_TR_End ();
} }
@ -4140,9 +4150,11 @@ static void Usr_ListMainDataStds (bool PutCheckBoxToSelectUsr)
static void Usr_ListMainDataTchs (Rol_Role_t Role, static void Usr_ListMainDataTchs (Rol_Role_t Role,
bool PutCheckBoxToSelectUsr) bool PutCheckBoxToSelectUsr)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
unsigned NumCol; unsigned NumCol;
unsigned NumUsr; unsigned NumUsr;
struct UsrData UsrDat; struct UsrData UsrDat;
const char *ClassHeader;
if (Gbl.Usrs.LstUsrs[Role].NumUsrs) if (Gbl.Usrs.LstUsrs[Role].NumUsrs)
{ {
@ -4154,16 +4166,20 @@ static void Usr_ListMainDataTchs (Rol_Role_t Role,
/* Begin row */ /* Begin row */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
ClassHeader = Str_BuildString ("LM %s",The_ClassBgHighlight[Gbl.Prefs.Theme]);
/* First column used for selection */ /* First column used for selection */
if (PutCheckBoxToSelectUsr) if (PutCheckBoxToSelectUsr)
HTM_TH (1,1,"LM LIGHT_BLUE",NULL); HTM_TH (1,1,ClassHeader,NULL);
/* Columns for the data */ /* Columns for the data */
for (NumCol = 0; for (NumCol = 0;
NumCol < Usr_NUM_MAIN_FIELDS_DATA_USR; NumCol < Usr_NUM_MAIN_FIELDS_DATA_USR;
NumCol++) NumCol++)
if (NumCol != 2 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want this column if (NumCol != 2 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want this column
HTM_TH (1,1,"LM LIGHT_BLUE",Usr_UsrDatMainFieldNames[NumCol]); HTM_TH (1,1,ClassHeader,Usr_UsrDatMainFieldNames[NumCol]);
Str_FreeStrings ();
/* End row */ /* End row */
HTM_TR_End (); HTM_TR_End ();
@ -4199,6 +4215,7 @@ static void Usr_ListMainDataTchs (Rol_Role_t Role,
void Usr_ListAllDataGsts (void) void Usr_ListAllDataGsts (void)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *Txt_Photo; extern const char *Txt_Photo;
extern const char *Txt_ID; extern const char *Txt_ID;
extern const char *Txt_Surname_1; extern const char *Txt_Surname_1;
@ -4216,6 +4233,7 @@ void Usr_ListAllDataGsts (void)
unsigned NumUsr; unsigned NumUsr;
struct UsrData UsrDat; struct UsrData UsrDat;
const char *FieldNames[Usr_NUM_ALL_FIELDS_DATA_GST]; const char *FieldNames[Usr_NUM_ALL_FIELDS_DATA_GST];
const char *ClassHeader;
/***** Initialize field names *****/ /***** Initialize field names *****/
FieldNames[ 0] = Txt_Photo; FieldNames[ 0] = Txt_Photo;
@ -4255,13 +4273,16 @@ void Usr_ListAllDataGsts (void)
/* Begin row */ /* Begin row */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
ClassHeader = Str_BuildString ("LM %s",The_ClassBgHighlight[Gbl.Prefs.Theme]);
/* Columns for the data */ /* Columns for the data */
for (NumCol = (Gbl.Usrs.Listing.WithPhotos ? 0 : for (NumCol = (Gbl.Usrs.Listing.WithPhotos ? 0 :
1); 1);
NumCol < NumColumnsCommonCard; NumCol < NumColumnsCommonCard;
NumCol++) NumCol++)
HTM_TH (1,1,"LM LIGHT_BLUE",FieldNames[NumCol]); HTM_TH (1,1,ClassHeader,FieldNames[NumCol]);
Str_FreeStrings ();
/* End row */ /* End row */
HTM_TR_End (); HTM_TR_End ();
@ -4308,6 +4329,7 @@ void Usr_ListAllDataGsts (void)
void Usr_ListAllDataStds (void) void Usr_ListAllDataStds (void)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *Txt_Photo; extern const char *Txt_Photo;
extern const char *Txt_ID; extern const char *Txt_ID;
extern const char *Txt_Surname_1; extern const char *Txt_Surname_1;
@ -4329,6 +4351,7 @@ void Usr_ListAllDataStds (void)
struct UsrData UsrDat; struct UsrData UsrDat;
const char *FieldNames[Usr_NUM_ALL_FIELDS_DATA_STD]; const char *FieldNames[Usr_NUM_ALL_FIELDS_DATA_STD];
size_t Length; size_t Length;
const char *ClassHeader;
/***** Initialize field names *****/ /***** Initialize field names *****/
FieldNames[0] = Txt_Photo; FieldNames[0] = Txt_Photo;
@ -4408,12 +4431,14 @@ void Usr_ListAllDataStds (void)
/* Begin row */ /* Begin row */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
ClassHeader = Str_BuildString ("LM %s",The_ClassBgHighlight[Gbl.Prefs.Theme]);
/* 1. Columns for the data */ /* 1. Columns for the data */
for (NumCol = (Gbl.Usrs.Listing.WithPhotos ? 0 : for (NumCol = (Gbl.Usrs.Listing.WithPhotos ? 0 :
1); 1);
NumCol < NumColsCommonRecord; NumCol < NumColsCommonRecord;
NumCol++) NumCol++)
HTM_TH (1,1,"LM LIGHT_BLUE",FieldNames[NumCol]); HTM_TH (1,1,ClassHeader,FieldNames[NumCol]);
/* 2. Columns for the groups */ /* 2. Columns for the groups */
if (Gbl.Scope.Current == HieLvl_CRS) if (Gbl.Scope.Current == HieLvl_CRS)
@ -4424,7 +4449,7 @@ void Usr_ListAllDataStds (void)
NumGrpTyp++) NumGrpTyp++)
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If current course tiene groups of este type if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If current course tiene groups of este type
{ {
HTM_TH_Begin (1,1,"LM LIGHT_BLUE"); HTM_TH_Begin (1,1,ClassHeader);
HTM_TxtF ("%s&nbsp;%s", HTM_TxtF ("%s&nbsp;%s",
Txt_Group, Txt_Group,
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypName); Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypName);
@ -4437,7 +4462,7 @@ void Usr_ListAllDataStds (void)
for (NumField = 0; for (NumField = 0;
NumField < Gbl.Crs.Records.LstFields.Num; NumField < Gbl.Crs.Records.LstFields.Num;
NumField++) NumField++)
HTM_TH (1,1,"LM LIGHT_BLUE",Gbl.Crs.Records.LstFields.Lst[NumField].Name); HTM_TH (1,1,ClassHeader,Gbl.Crs.Records.LstFields.Lst[NumField].Name);
/* 4. Visibility type for the record fields that depend on the course, in other row */ /* 4. Visibility type for the record fields that depend on the course, in other row */
HTM_TR_End (); HTM_TR_End ();
@ -4449,20 +4474,23 @@ void Usr_ListAllDataStds (void)
NumCol++) NumCol++)
if (NumCol != 1 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want it in listing if (NumCol != 1 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want it in listing
{ {
HTM_TD_Begin ("class=\"VERY_LIGHT_BLUE\""); HTM_TD_Begin ("class=\"%s\"",ClassHeader);
HTM_TD_End (); HTM_TD_End ();
} }
for (NumField = 0; for (NumField = 0;
NumField < Gbl.Crs.Records.LstFields.Num; NumField < Gbl.Crs.Records.LstFields.Num;
NumField++) NumField++)
{ {
HTM_TH_Begin (1,1,"LM VERY_LIGHT_BLUE"); HTM_TH_Begin (1,1,ClassHeader);
HTM_TxtF ("(%s)",Txt_RECORD_FIELD_VISIBILITY_RECORD[Gbl.Crs.Records.LstFields.Lst[NumField].Visibility]); HTM_TxtF ("(%s)",
Txt_RECORD_FIELD_VISIBILITY_RECORD[Gbl.Crs.Records.LstFields.Lst[NumField].Visibility]);
HTM_TH_End (); HTM_TH_End ();
} }
} }
} }
Str_FreeStrings ();
/* End row */ /* End row */
HTM_TR_End (); HTM_TR_End ();
@ -4654,18 +4682,24 @@ static void Usr_ListRowsAllDataTchs (Rol_Role_t Role,
const char *FieldNames[Usr_NUM_ALL_FIELDS_DATA_TCH], const char *FieldNames[Usr_NUM_ALL_FIELDS_DATA_TCH],
unsigned NumColumns) unsigned NumColumns)
{ {
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
unsigned NumCol; unsigned NumCol;
struct UsrData UsrDat; struct UsrData UsrDat;
unsigned NumUsr; unsigned NumUsr;
const char *ClassHeader;
/***** Heading row *****/ /***** Heading row *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
ClassHeader = Str_BuildString ("LM %s",The_ClassBgHighlight[Gbl.Prefs.Theme]);
for (NumCol = (Gbl.Usrs.Listing.WithPhotos ? 0 : for (NumCol = (Gbl.Usrs.Listing.WithPhotos ? 0 :
1); 1);
NumCol < NumColumns; NumCol < NumColumns;
NumCol++) NumCol++)
HTM_TH (1,1,"LM LIGHT_BLUE",FieldNames[NumCol]); HTM_TH (1,1,ClassHeader,FieldNames[NumCol]);
Str_FreeStrings ();
HTM_TR_End (); HTM_TR_End ();
@ -4726,11 +4760,11 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,
/***** Begin box and table *****/ /***** Begin box and table *****/
/* Number of users found */ /* Number of users found */
Sex = Usr_GetSexOfUsrsLst (Role); Sex = Usr_GetSexOfUsrsLst (Role);
Box_BoxTableBegin (NULL,Str_BuildStringLongStr ((long) NumUsrs, Box_BoxTableBegin (NULL,Str_BuildString ("%u %s",NumUsrs,
(Role == Rol_UNK) ? ((NumUsrs == 1) ? Txt_user[Sex] : (Role == Rol_UNK) ? ((NumUsrs == 1) ? Txt_user[Sex] :
Txt_users[Sex]) : Txt_users[Sex]) :
((NumUsrs == 1) ? Txt_ROLES_SINGUL_abc[Role][Sex] : ((NumUsrs == 1) ? Txt_ROLES_SINGUL_abc[Role][Sex] :
Txt_ROLES_PLURAL_abc[Role][Sex])), Txt_ROLES_PLURAL_abc[Role][Sex])),
NULL,NULL, NULL,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
Str_FreeStrings (); Str_FreeStrings ();
@ -4810,6 +4844,7 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,
void Usr_ListDataAdms (void) void Usr_ListDataAdms (void)
{ {
extern const char *Hlp_USERS_Administrators; extern const char *Hlp_USERS_Administrators;
extern const char *The_ClassBgHighlight[The_NUM_THEMES];
extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Scope; extern const char *Txt_Scope;
@ -4825,6 +4860,7 @@ void Usr_ListDataAdms (void)
unsigned NumUsr; unsigned NumUsr;
struct UsrData UsrDat; struct UsrData UsrDat;
const char *FieldNames[Usr_NUM_MAIN_FIELDS_DATA_ADM]; const char *FieldNames[Usr_NUM_MAIN_FIELDS_DATA_ADM];
const char *ClassHeader;
/***** Put contextual links *****/ /***** Put contextual links *****/
switch (Gbl.Usrs.Me.Role.Logged) switch (Gbl.Usrs.Me.Role.Logged)
@ -4908,11 +4944,15 @@ void Usr_ListDataAdms (void)
HTM_TABLE_Begin (NULL); HTM_TABLE_Begin (NULL);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
ClassHeader = Str_BuildString ("LM %s",The_ClassBgHighlight[Gbl.Prefs.Theme]);
for (NumCol = 0; for (NumCol = 0;
NumCol < Usr_NUM_MAIN_FIELDS_DATA_ADM; NumCol < Usr_NUM_MAIN_FIELDS_DATA_ADM;
NumCol++) NumCol++)
if (NumCol != 1 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want this column if (NumCol != 1 || Gbl.Usrs.Listing.WithPhotos) // Skip photo column if I don't want this column
HTM_TH (1,1,"LM LIGHT_BLUE",FieldNames[NumCol]); HTM_TH (1,1,ClassHeader,FieldNames[NumCol]);
Str_FreeStrings ();
HTM_TR_End (); HTM_TR_End ();