Version 21.83: Jan 09, 2022 Working on design of dark theme.

This commit is contained in:
acanas 2022-01-09 23:27:36 +01:00
parent 52ea25d9db
commit 9260cb7538
28 changed files with 598 additions and 277 deletions

View File

@ -1430,7 +1430,7 @@ a:hover img.CENTER_PHOTO_SHOW
{ {
box-sizing:border-box; box-sizing:border-box;
margin-bottom:15px; margin-bottom:15px;
color:#A0A0A0; color:#a0a0a0;
font-size:8pt; font-size:8pt;
text-align:center; text-align:center;
} }
@ -1965,7 +1965,7 @@ a:hover img.CENTER_PHOTO_SHOW
.GREEN_ICO_BLUE {filter: invert(31%) sepia(16%) saturate(3727%) hue-rotate(60deg) brightness(94%) contrast(104%);} /* #246600 */ .GREEN_ICO_BLUE {filter: invert(31%) sepia(16%) saturate(3727%) hue-rotate(60deg) brightness(94%) contrast(104%);} /* #246600 */
.GREEN_ICO_YELLOW {filter: invert(31%) sepia(16%) saturate(3727%) hue-rotate(60deg) brightness(94%) contrast(104%);} /* #246600 */ .GREEN_ICO_YELLOW {filter: invert(31%) sepia(16%) saturate(3727%) hue-rotate(60deg) brightness(94%) contrast(104%);} /* #246600 */
.GREEN_ICO_PINK {filter: invert(31%) sepia(16%) saturate(3727%) hue-rotate(60deg) brightness(94%) contrast(104%);} /* #246600 */ .GREEN_ICO_PINK {filter: invert(31%) sepia(16%) saturate(3727%) hue-rotate(60deg) brightness(94%) contrast(104%);} /* #246600 */
.GREEN_ICO_DARK {filter: invert(49%) sepia(97%) saturate(781%) hue-rotate(55deg) brightness(95%) contrast(104%);} /* #50b800 */ .GREEN_ICO_DARK {filter: invert(75%) sepia(13%) saturate(1915%) hue-rotate(46deg) brightness(89%) contrast(89%);} /* #80c040 */
.RED_ICO_WHITE {filter: invert(8%) sepia(61%) saturate(5373%) hue-rotate(0deg) brightness(92%) contrast(114%);} /* #660000 */ .RED_ICO_WHITE {filter: invert(8%) sepia(61%) saturate(5373%) hue-rotate(0deg) brightness(92%) contrast(114%);} /* #660000 */
.RED_ICO_GREY {filter: invert(8%) sepia(61%) saturate(5373%) hue-rotate(0deg) brightness(92%) contrast(114%);} /* #660000 */ .RED_ICO_GREY {filter: invert(8%) sepia(61%) saturate(5373%) hue-rotate(0deg) brightness(92%) contrast(114%);} /* #660000 */
@ -2566,7 +2566,6 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
.DAT_LIGHT_PINK {color:#a0a0a0; font-size:13pt;} .DAT_LIGHT_PINK {color:#a0a0a0; font-size:13pt;}
.DAT_LIGHT_DARK {color:#909090; font-size:13pt;} .DAT_LIGHT_DARK {color:#909090; font-size:13pt;}
.DAT_SMALL {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt;}
.DAT_SMALL_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt;} .DAT_SMALL_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt;}
.DAT_SMALL_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt;} .DAT_SMALL_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt;}
.DAT_SMALL_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt;} .DAT_SMALL_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt;}
@ -2575,33 +2574,29 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
.DAT_SMALL_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt;} .DAT_SMALL_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt;}
.DAT_SMALL_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#d0d0d0; font-size:12pt;} .DAT_SMALL_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#d0d0d0; font-size:12pt;}
.DAT_SMALL_N {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;} .DAT_SMALL_STRONG_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;}
.DAT_SMALL_N_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;} .DAT_SMALL_STRONG_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;}
.DAT_SMALL_N_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;} .DAT_SMALL_STRONG_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;}
.DAT_SMALL_N_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;} .DAT_SMALL_STRONG_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;}
.DAT_SMALL_N_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;} .DAT_SMALL_STRONG_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;}
.DAT_SMALL_N_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;} .DAT_SMALL_STRONG_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;}
.DAT_SMALL_N_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt;} .DAT_SMALL_STRONG_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:white; font-size:12pt;}
.DAT_SMALL_N_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:white; font-size:12pt;}
.DAT_SMALL_NOBR {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#404040; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#d0d0d0; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#d0d0d0; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_N {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_STRONG_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_N_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_STRONG_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_N_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_STRONG_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_N_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_STRONG_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_N_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_STRONG_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_N_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_STRONG_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_N_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:black; font-size:12pt; white-space:nowrap;} .DAT_SMALL_NOBR_STRONG_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:white; font-size:12pt; white-space:nowrap;}
.DAT_SMALL_NOBR_N_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:white; font-size:12pt; white-space:nowrap;}
.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;}
@ -2631,13 +2626,45 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
border-width:1px; border-width:1px;
} }
.DAT_SMALL_LIGHT {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#A0A0A0; font-size:12pt;} .DAT_SMALL_LIGHT_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#A0A0A0; font-size:12pt;}
.DAT_SMALL_LIGHT_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#A0A0A0; font-size:12pt;}
.DAT_SMALL_LIGHT_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#A0A0A0; font-size:12pt;}
.DAT_SMALL_LIGHT_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#A0A0A0; font-size:12pt;}
.DAT_SMALL_LIGHT_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#A0A0A0; font-size:12pt;}
.DAT_SMALL_LIGHT_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#A0A0A0; font-size:12pt;}
.DAT_SMALL_LIGHT_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#A0A0A0; font-size:12pt;}
.DAT_SMALL_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#707070; font-size:12pt;} .DAT_SMALL_BLUE_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#0080FF; font-size:12pt;}
.DAT_SMALL_RED {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#660000; font-size:12pt;} .DAT_SMALL_BLUE_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#0080FF; font-size:12pt;}
.DAT_SMALL_GREEN {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#246600; font-size:12pt;} .DAT_SMALL_BLUE_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#0080FF; font-size:12pt;}
.DAT_SMALL_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#0080FF; font-size:12pt;} .DAT_SMALL_BLUE_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#0080FF; font-size:12pt;}
.DAT_SMALL_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#C0C000; font-size:12pt;} .DAT_SMALL_BLUE_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#0080FF; font-size:12pt;}
.DAT_SMALL_BLUE_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#0080FF; font-size:12pt;}
.DAT_SMALL_BLUE_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#0080FF; font-size:12pt;}
.DAT_SMALL_GREEN_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#246600; font-size:12pt;}
.DAT_SMALL_GREEN_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#246600; font-size:12pt;}
.DAT_SMALL_GREEN_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#246600; font-size:12pt;}
.DAT_SMALL_GREEN_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#246600; font-size:12pt;}
.DAT_SMALL_GREEN_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#246600; font-size:12pt;}
.DAT_SMALL_GREEN_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#246600; font-size:12pt;}
.DAT_SMALL_GREEN_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#246600; font-size:12pt;}
.DAT_SMALL_RED_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#660000; font-size:12pt;}
.DAT_SMALL_RED_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#660000; font-size:12pt;}
.DAT_SMALL_RED_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#660000; font-size:12pt;}
.DAT_SMALL_RED_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#660000; font-size:12pt;}
.DAT_SMALL_RED_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#660000; font-size:12pt;}
.DAT_SMALL_RED_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#660000; font-size:12pt;}
.DAT_SMALL_RED_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#660000; font-size:12pt;}
.DAT_SMALL_YELLOW_WHITE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#C0C000; font-size:12pt;}
.DAT_SMALL_YELLOW_GREY {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#C0C000; font-size:12pt;}
.DAT_SMALL_YELLOW_PURPLE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#C0C000; font-size:12pt;}
.DAT_SMALL_YELLOW_BLUE {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#C0C000; font-size:12pt;}
.DAT_SMALL_YELLOW_YELLOW {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#C0C000; font-size:12pt;}
.DAT_SMALL_YELLOW_PINK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#C0C000; font-size:12pt;}
.DAT_SMALL_YELLOW_DARK {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:#C0C000; font-size:12pt;}
/******************************** User's IDs *********************************/ /******************************** User's IDs *********************************/
.USR_ID {font-size:18pt; font-weight:bold;} .USR_ID {font-size:18pt; font-weight:bold;}
@ -3650,16 +3677,31 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
display:inline-block; display:inline-block;
font-size:13pt; font-size:13pt;
font-weight:bold; font-weight:bold;
color:darkgreen;
} }
.ATT_CHECK {color:#246600;}
.ATT_CHECK_WHITE {color:#246600;}
.ATT_CHECK_GREY {color:#246600;}
.ATT_CHECK_PURPLE {color:#246600;}
.ATT_CHECK_BLUE {color:#246600;}
.ATT_CHECK_YELLOW {color:#246600;}
.ATT_CHECK_PINK {color:#246600;}
.ATT_CHECK_DARK {color:#80c040;}
.ATT_CROSS .ATT_CROSS
{ {
display:inline-block; display:inline-block;
font-size:13pt; font-size:13pt;
font-weight:bold; font-weight:bold;
color:darkred; opacity:0.2;
opacity:0.1;
} }
.ATT_CROSS {color:#660000;}
.ATT_CROSS_WHITE {color:#660000;}
.ATT_CROSS_GREY {color:#660000;}
.ATT_CROSS_PURPLE {color:#660000;}
.ATT_CROSS_BLUE {color:#660000;}
.ATT_CROSS_YELLOW {color:#660000;}
.ATT_CROSS_PINK {color:#660000;}
.ATT_CROSS_DARK {color:#ff8080;}
/********************* Edition of attendance events, games *******************/ /********************* Edition of attendance events, games *******************/
.TITLE_DESCRIPTION_WIDTH .TITLE_DESCRIPTION_WIDTH

View File

@ -1697,6 +1697,9 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
{ {
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 *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
extern const char *The_ClassInput[The_NUM_THEMES];
static const char *ClassPhoto[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
{ {
[PhoSha_SHAPE_CIRCLE ] = "PHOTOC45x60", [PhoSha_SHAPE_CIRCLE ] = "PHOTOC45x60",
@ -1746,7 +1749,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/***** Icon to show if the user is already present *****/ /***** Icon to show if the user is already present *****/
HTM_TD_Begin ("class=\"BT%u\"",Gbl.RowEvenOdd); HTM_TD_Begin ("class=\"BT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_LABEL_Begin ("for=\"Std%u\"",NumUsr); HTM_LABEL_Begin ("for=\"Std%u\"",NumUsr);
Att_PutCheckOrCross (Present); Att_PutCheckOrCross (Present);
HTM_LABEL_End (); HTM_LABEL_End ();
@ -1758,7 +1761,8 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
"id=\"Std%u\" value=\"%s\"%s%s", "id=\"Std%u\" value=\"%s\"%s%s",
NumUsr,UsrDat->EnUsrCod, NumUsr,UsrDat->EnUsrCod,
Present ? " checked=\"checked\"" : "", Present ? " checked=\"checked\"" : "",
ICanChangeStdAttendance ? "" : " disabled=\"disabled\""); ICanChangeStdAttendance ? "" :
" disabled=\"disabled\"");
HTM_TD_End (); HTM_TD_End ();
/***** Write number of student in the list *****/ /***** Write number of student in the list *****/
@ -1772,7 +1776,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
/***** Show student's photo *****/ /***** Show student's photo *****/
if (Gbl.Usrs.Listing.WithPhotos) if (Gbl.Usrs.Listing.WithPhotos)
{ {
HTM_TD_Begin ("class=\"LT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s LT\"",Gbl.ColorRows[Gbl.RowEvenOdd]);
Pho_ShowUsrPhotoIfAllowed (UsrDat, Pho_ShowUsrPhotoIfAllowed (UsrDat,
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM, ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM,
false); false);
@ -1780,17 +1784,17 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
} }
/***** Write user's ID ******/ /***** Write user's ID ******/
HTM_TD_Begin ("class=\"%s LT %s\"", HTM_TD_Begin ("class=\"%s %s LT\"",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
ID_WriteUsrIDs (UsrDat,NULL); ID_WriteUsrIDs (UsrDat,NULL);
HTM_TD_End (); HTM_TD_End ();
/***** Write student's name *****/ /***** Write student's name *****/
HTM_TD_Begin ("class=\"%s LT %s\"", HTM_TD_Begin ("class=\"%s LT %s\"",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (UsrDat->Surname1); HTM_Txt (UsrDat->Surname1);
if (UsrDat->Surname2[0]) if (UsrDat->Surname2[0])
@ -1799,11 +1803,16 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
HTM_TD_End (); HTM_TD_End ();
/***** Student's comment: write form or text */ /***** Student's comment: write form or text */
HTM_TD_Begin ("class=\"DAT_SMALL LT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s LT %s\"",
UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
if (ICanEditStdComment) // Show with form if (ICanEditStdComment) // Show with form
{ {
HTM_TEXTAREA_Begin ("name=\"CommentStd%s\" cols=\"40\" rows=\"3\"", HTM_TEXTAREA_Begin ("name=\"CommentStd%s\" cols=\"40\" rows=\"3\""
UsrDat->EnUsrCod); " class=\"%s\"",
UsrDat->EnUsrCod,
The_ClassInput[Gbl.Prefs.Theme]);
HTM_Txt (CommentStd); HTM_Txt (CommentStd);
HTM_TEXTAREA_End (); HTM_TEXTAREA_End ();
} }
@ -1816,11 +1825,16 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
HTM_TD_End (); HTM_TD_End ();
/***** Teacher's comment: write form, text or nothing */ /***** Teacher's comment: write form, text or nothing */
HTM_TD_Begin ("class=\"DAT_SMALL LT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s LT %s\"",
UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
if (ICanEditTchComment) // Show with form if (ICanEditTchComment) // Show with form
{ {
HTM_TEXTAREA_Begin ("name=\"CommentTch%s\" cols=\"40\" rows=\"3\"", HTM_TEXTAREA_Begin ("name=\"CommentTch%s\" cols=\"40\" rows=\"3\""
UsrDat->EnUsrCod); " class=\"%s\"",
UsrDat->EnUsrCod,
The_ClassInput[Gbl.Prefs.Theme]);
HTM_Txt (CommentTch); HTM_Txt (CommentTch);
HTM_TEXTAREA_End (); HTM_TEXTAREA_End ();
} }
@ -2947,6 +2961,8 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
{ {
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 *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
static const char *ClassPhoto[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
{ {
[PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28", [PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28",
@ -2980,16 +2996,16 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
/***** Write user's ID ******/ /***** Write user's ID ******/
HTM_TD_Begin ("class=\"%s LM %s\"", HTM_TD_Begin ("class=\"%s LM %s\"",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
ID_WriteUsrIDs (UsrDat,NULL); ID_WriteUsrIDs (UsrDat,NULL);
HTM_TD_End (); HTM_TD_End ();
/***** Write user's name *****/ /***** Write user's name *****/
HTM_TD_Begin ("class=\"%s LM %s\"", HTM_TD_Begin ("class=\"%s LM %s\"",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (UsrDat->Surname1); HTM_Txt (UsrDat->Surname1);
if (UsrDat->Surname2[0]) if (UsrDat->Surname2[0])
@ -3009,7 +3025,7 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
UsrDat->UsrCod); UsrDat->UsrCod);
/* Write check or cross */ /* Write check or cross */
HTM_TD_Begin ("class=\"BM%u\"",Gbl.RowEvenOdd); HTM_TD_Begin ("class=\"BM %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]);
Att_PutCheckOrCross (Present); Att_PutCheckOrCross (Present);
HTM_TD_End (); HTM_TD_End ();
@ -3035,17 +3051,20 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
static void Att_PutCheckOrCross (bool Present) static void Att_PutCheckOrCross (bool Present)
{ {
extern const char *The_Colors[The_NUM_THEMES];
extern const char *Txt_Present; extern const char *Txt_Present;
extern const char *Txt_Absent; extern const char *Txt_Absent;
if (Present) if (Present)
{ {
HTM_DIV_Begin ("class=\"ATT_CHECK\" title=\"%s\"",Txt_Present); HTM_DIV_Begin ("class=\"ATT_CHECK ATT_CHECK_%s\" title=\"%s\"",
The_Colors[Gbl.Prefs.Theme],Txt_Present);
HTM_Txt ("✓"); HTM_Txt ("✓");
} }
else else
{ {
HTM_DIV_Begin ("class=\"ATT_CROSS\" title=\"%s\"",Txt_Absent); HTM_DIV_Begin ("class=\"ATT_CROSS ATT_CROSS_%s\" title=\"%s\"",
The_Colors[Gbl.Prefs.Theme],Txt_Absent);
HTM_Txt ("✗"); HTM_Txt ("✗");
} }
@ -3110,6 +3129,9 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
{ {
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 *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
extern const char *The_Colors[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[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
@ -3154,15 +3176,15 @@ 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_ClassDatStrong[Gbl.Prefs.Theme] : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
The_ClassDat[Gbl.Prefs.Theme]); The_ClassDatSmall[Gbl.Prefs.Theme]);
ID_WriteUsrIDs (UsrDat,NULL); ID_WriteUsrIDs (UsrDat,NULL);
HTM_TD_End (); HTM_TD_End ();
/***** Write student's name *****/ /***** Write student's name *****/
HTM_TD_Begin ("class=\"%s LM\"", HTM_TD_Begin ("class=\"%s LM\"",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL"); The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_Txt (UsrDat->Surname1); HTM_Txt (UsrDat->Surname1);
if (UsrDat->Surname2[0]) if (UsrDat->Surname2[0])
HTM_TxtF (" %s",UsrDat->Surname2); HTM_TxtF (" %s",UsrDat->Surname2);
@ -3205,7 +3227,7 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
HTM_TxtF ("%u:",NumAttEvent + 1); HTM_TxtF ("%u:",NumAttEvent + 1);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"BT%u\"",Gbl.RowEvenOdd); HTM_TD_Begin ("class=\"BT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]);
Att_PutCheckOrCross (Present); Att_PutCheckOrCross (Present);
HTM_TD_End (); HTM_TD_End ();

View File

@ -439,7 +439,6 @@ 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_ClassDatStrong[The_NUM_THEMES];
char *PhotoAttribution = NULL; char *PhotoAttribution = NULL;
char *URL; char *URL;
char *Icon; char *Icon;
@ -454,10 +453,9 @@ static void CtrCfg_Photo (bool PrintView,bool PutForm,bool PutLink,
CtrCfg_GetPhotoAttr (Gbl.Hierarchy.Ctr.CtrCod,&PhotoAttribution); CtrCfg_GetPhotoAttr (Gbl.Hierarchy.Ctr.CtrCod,&PhotoAttribution);
/***** Photo image *****/ /***** Photo image *****/
HTM_DIV_Begin ("class=\"DAT_SMALL CM\""); HTM_DIV_Begin ("class=\"CM\"");
if (PutLink) if (PutLink)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Gbl.Hierarchy.Ctr.WWW);
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),

View File

@ -602,10 +602,11 @@ 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.82 (2022-01-03)" #define Log_PLATFORM_VERSION "SWAD 21.83 (2022-01-09)"
#define CSS_FILE "swad21.81.css" #define CSS_FILE "swad21.83.css"
#define JS_FILE "swad21.78.2.js" #define JS_FILE "swad21.78.2.js"
/* /*
Version 21.83: Jan 09, 2022 Working on design of dark theme. (322857 lines)
Version 21.82: Jan 03, 2022 Functions moved from swad_figure to other modules. (322550 lines) Version 21.82: Jan 03, 2022 Functions moved from swad_figure to other modules. (322550 lines)
Version 21.81.2: Jan 02, 2022 Functions moved from swad_figure to other modules. (322523 lines) Version 21.81.2: Jan 02, 2022 Functions moved from swad_figure to other modules. (322523 lines)
Version 21.81.1: Jan 02, 2022 Fixed bug in projects. (322460 lines) Version 21.81.1: Jan 02, 2022 Fixed bug in projects. (322460 lines)

View File

@ -320,7 +320,7 @@ static void CtyCfg_MapImage (bool PrintView,bool PutLink)
CtyCfg_GetMapAttr (Gbl.Hierarchy.Cty.CtyCod,&MapAttribution); CtyCfg_GetMapAttr (Gbl.Hierarchy.Cty.CtyCod,&MapAttribution);
/***** Map image *****/ /***** Map image *****/
HTM_DIV_Begin ("class=\"DAT_SMALL CM\""); HTM_DIV_Begin ("class=\"CM\"");
if (PutLink) if (PutLink)
HTM_A_Begin ("href=\"%s\" target=\"_blank\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\"",
Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language]); Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language]);

View File

@ -214,6 +214,11 @@ static void ExaLog_LogUsrAgent (long LogCod,long PrnCod)
void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print) void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallLight[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
extern const char *The_ClassDatSmallGreen[The_NUM_THEMES];
extern const char *The_ClassDatSmallRed[The_NUM_THEMES];
extern const char *Txt_Hits; extern const char *Txt_Hits;
extern const char *Txt_Click; extern const char *Txt_Click;
extern const char *Txt_Date_and_time; extern const char *Txt_Date_and_time;
@ -242,11 +247,11 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
char *UserAgent; char *UserAgent;
const char *Class[ExaLog_NUM_ACTIONS] = const char *Class[ExaLog_NUM_ACTIONS] =
{ {
[ExaLog_UNKNOWN_ACTION ] = "DAT_SMALL_LIGHT", [ExaLog_UNKNOWN_ACTION ] = The_ClassDatSmallLight[Gbl.Prefs.Theme],
[ExaLog_START_EXAM ] = "DAT_SMALL_N", [ExaLog_START_EXAM ] = The_ClassDatSmallStrong[Gbl.Prefs.Theme],
[ExaLog_RESUME_EXAM ] = "DAT_SMALL_N", [ExaLog_RESUME_EXAM ] = The_ClassDatSmallStrong[Gbl.Prefs.Theme],
[ExaLog_ANSWER_QUESTION] = "DAT_SMALL", [ExaLog_ANSWER_QUESTION] = The_ClassDatSmall[Gbl.Prefs.Theme],
[ExaLog_FINISH_EXAM ] = "DAT_SMALL_N", [ExaLog_FINISH_EXAM ] = The_ClassDatSmallStrong[Gbl.Prefs.Theme],
}; };
/***** Get print log from database *****/ /***** Get print log from database *****/
@ -319,9 +324,9 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Write number of click */ /* Write number of click */
HTM_TD_Begin ("class=\"RT %s %s\"", HTM_TD_Begin ("class=\"%s %s RT\"",
UsrCouldAnswer ? "DAT_SMALL" : UsrCouldAnswer ? The_ClassDatSmall[Gbl.Prefs.Theme] :
"DAT_SMALL_LIGHT", The_ClassDatSmallLight[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (NumClick + 1); HTM_Unsigned (NumClick + 1);
HTM_TD_End (); HTM_TD_End ();
@ -329,8 +334,10 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
/* Write click time */ /* Write click time */
if (asprintf (&Id,"click_date_%u",NumClick) < 0) if (asprintf (&Id,"click_date_%u",NumClick) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LT %s %s\"", HTM_TD_Begin ("id=\"%s\" class=\"%s %s LT\"",
Id,Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]); Id,
Class[Action],
Gbl.ColorRows[Gbl.RowEvenOdd]);
Dat_WriteLocalDateHMSFromUTC (Id,ClickTimeUTC, Dat_WriteLocalDateHMSFromUTC (Id,ClickTimeUTC,
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA, Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,true,0x7); true,true,true,0x7);
@ -338,29 +345,29 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
HTM_TD_End (); HTM_TD_End ();
/* Write action */ /* Write action */
HTM_TD_Begin ("class=\"LT %s %s\"", HTM_TD_Begin ("class=\"%s %s LT\"",
Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]); Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (Txt_EXAM_LOG_ACTIONS[Action]); HTM_Txt (Txt_EXAM_LOG_ACTIONS[Action]);
HTM_TD_End (); HTM_TD_End ();
/* Write number of question */ /* Write number of question */
HTM_TD_Begin ("class=\"RT %s %s\"", HTM_TD_Begin ("class=\"%s %s RT\"",
Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]); Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]);
if (QstInd >= 0) if (QstInd >= 0)
HTM_Unsigned ((unsigned) QstInd + 1); HTM_Unsigned ((unsigned) QstInd + 1);
HTM_TD_End (); HTM_TD_End ();
/* Write if exam print was open and accesible to answer */ /* Write if exam print was open and accesible to answer */
HTM_TD_Begin ("class=\"CT %s %s\"", HTM_TD_Begin ("class=\"%s %s CT\"",
UsrCouldAnswer ? "DAT_SMALL_GREEN" : UsrCouldAnswer ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (UsrCouldAnswer ? "&check;" : HTM_Txt (UsrCouldAnswer ? "&check;" :
"&cross;"); "&cross;");
HTM_TD_End (); HTM_TD_End ();
/* Write IP */ /* Write IP */
HTM_TD_Begin ("class=\"LT %s %s\"", HTM_TD_Begin ("class=\"%s %s LT\"",
Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]); Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]);
Length = strlen (IP); Length = strlen (IP);
if (Length > 6) if (Length > 6)
@ -379,7 +386,7 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
HTM_TD_End (); HTM_TD_End ();
/* Write session id */ /* Write session id */
HTM_TD_Begin ("class=\"LT %s %s\"", HTM_TD_Begin ("class=\"%s %s LT\"",
Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]); Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]);
if (SessionId[0]) if (SessionId[0])
{ {
@ -401,7 +408,7 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
HTM_TD_End (); HTM_TD_End ();
/* Write user agent (row[6]) */ /* Write user agent (row[6]) */
HTM_TD_Begin ("class=\"LT %s %s\"", HTM_TD_Begin ("class=\"%s %s LT\"",
Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]); Class[Action],Gbl.ColorRows[Gbl.RowEvenOdd]);
if (UserAgent[0]) if (UserAgent[0])
HTM_Txt (UserAgent); HTM_Txt (UserAgent);

View File

@ -629,6 +629,7 @@ static void ExaPrn_ShowExamPrintToFillIt (struct Exa_Exams *Exams,
static void ExaPrn_GetAndWriteDescription (long ExaCod) static void ExaPrn_GetAndWriteDescription (long ExaCod)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
char Txt[Cns_MAX_BYTES_TEXT + 1]; char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Get description from database *****/ /***** Get description from database *****/
@ -638,7 +639,8 @@ static void ExaPrn_GetAndWriteDescription (long ExaCod)
ALn_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links ALn_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
/***** Write description *****/ /***** Write description *****/
HTM_DIV_Begin ("class=\"EXA_PRN_DESC DAT_SMALL\""); HTM_DIV_Begin ("class=\"EXA_PRN_DESC %s\"",
The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_Txt (Txt); HTM_Txt (Txt);
HTM_DIV_End (); HTM_DIV_End ();
} }
@ -694,6 +696,7 @@ static void ExaPrn_WriteQstAndAnsToFill (const struct ExaPrn_Print *Print,
unsigned QstInd, unsigned QstInd,
struct Qst_Question *Question) struct Qst_Question *Question)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
static struct ExaSet_Set CurrentSet = static struct ExaSet_Set CurrentSet =
{ {
.ExaCod = -1L, .ExaCod = -1L,
@ -723,7 +726,8 @@ static void ExaPrn_WriteQstAndAnsToFill (const struct ExaPrn_Print *Print,
/***** Number of question and answer type *****/ /***** Number of question and answer type *****/
HTM_TD_Begin ("class=\"RT\""); HTM_TD_Begin ("class=\"RT\"");
Qst_WriteNumQst (QstInd + 1,"BIG_INDEX"); Qst_WriteNumQst (QstInd + 1,"BIG_INDEX");
Qst_WriteAnswerType (Question->Answer.Type,"DAT_SMALL"); Qst_WriteAnswerType (Question->Answer.Type,
The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_TD_End (); HTM_TD_End ();
/***** Stem, media and answers *****/ /***** Stem, media and answers *****/

View File

@ -1863,25 +1863,27 @@ static void ExaRes_WriteQstAndAnsExam (struct UsrData *UsrDat,
struct Qst_Question *Question, struct Qst_Question *Question,
unsigned Visibility) unsigned Visibility)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallRed[The_NUM_THEMES];
extern const char *Txt_Score; extern const char *Txt_Score;
extern const char *Txt_Invalid_question; extern const char *Txt_Invalid_question;
bool ICanView[TstVis_NUM_ITEMS_VISIBILITY]; bool ICanView[TstVis_NUM_ITEMS_VISIBILITY];
static char *ClassNumQst[Qst_NUM_VALIDITIES] = static const char *ClassNumQst[Qst_NUM_VALIDITIES] =
{ {
[Qst_INVALID_QUESTION] = "BIG_INDEX_RED", [Qst_INVALID_QUESTION] = "BIG_INDEX_RED",
[Qst_VALID_QUESTION ] = "BIG_INDEX", [Qst_VALID_QUESTION ] = "BIG_INDEX",
}; };
static char *ClassAnswerType[Qst_NUM_VALIDITIES] = const char *ClassAnswerType[Qst_NUM_VALIDITIES] =
{ {
[Qst_INVALID_QUESTION] = "DAT_SMALL_RED", [Qst_INVALID_QUESTION] = The_ClassDatSmallRed[Gbl.Prefs.Theme],
[Qst_VALID_QUESTION ] = "DAT_SMALL", [Qst_VALID_QUESTION ] = The_ClassDatSmall[Gbl.Prefs.Theme],
}; };
static char *ClassTxt[Qst_NUM_VALIDITIES] = static const char *ClassTxt[Qst_NUM_VALIDITIES] =
{ {
[Qst_INVALID_QUESTION] = "TEST_TXT_RED", [Qst_INVALID_QUESTION] = "TEST_TXT_RED",
[Qst_VALID_QUESTION ] = "TEST_TXT", [Qst_VALID_QUESTION ] = "TEST_TXT",
}; };
static char *ClassFeedback[Qst_NUM_VALIDITIES] = static const char *ClassFeedback[Qst_NUM_VALIDITIES] =
{ {
[Qst_INVALID_QUESTION] = "TEST_TXT_LIGHT_RED", [Qst_INVALID_QUESTION] = "TEST_TXT_LIGHT_RED",
[Qst_VALID_QUESTION ] = "TEST_TXT_LIGHT", [Qst_VALID_QUESTION ] = "TEST_TXT_LIGHT",
@ -1947,13 +1949,14 @@ static void ExaRes_WriteQstAndAnsExam (struct UsrData *UsrDat,
/* Write score retrieved from database */ /* Write score retrieved from database */
if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE]) if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE])
{ {
HTM_DIV_Begin ("class=\"DAT_SMALL LM\""); HTM_DIV_Begin ("class=\"%s LM\"",
The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_TxtColonNBSP (Txt_Score); HTM_TxtColonNBSP (Txt_Score);
HTM_SPAN_Begin ("class=\"%s\"", HTM_SPAN_Begin ("class=\"%s\"",
Print->PrintedQuestions[QstInd].StrAnswers[0] ? Print->PrintedQuestions[QstInd].StrAnswers[0] ?
(Print->PrintedQuestions[QstInd].Score > 0 ? "ANS_OK" : // Correct/semicorrect (Print->PrintedQuestions[QstInd].Score > 0 ? "ANS_OK" : // Correct/semicorrect
"ANS_BAD") : // Wrong "ANS_BAD") : // Wrong
"ANS_0"); // Blank answer "ANS_0"); // Blank answer
HTM_Double2Decimals (Print->PrintedQuestions[QstInd].Score); HTM_Double2Decimals (Print->PrintedQuestions[QstInd].Score);
if (Question->Validity == Qst_INVALID_QUESTION) if (Question->Validity == Qst_INVALID_QUESTION)
HTM_TxtF (" (%s)",Txt_Invalid_question); HTM_TxtF (" (%s)",Txt_Invalid_question);

View File

@ -1188,22 +1188,24 @@ void ExaSet_GetQstDataFromDB (struct Qst_Question *Question)
static void ExaSet_ListQuestionForEdition (struct Qst_Question *Question, static void ExaSet_ListQuestionForEdition (struct Qst_Question *Question,
unsigned QstInd,const char *Anchor) unsigned QstInd,const char *Anchor)
{ {
static char *ClassNumQst[Qst_NUM_VALIDITIES] = extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallRed[The_NUM_THEMES];
static const char *ClassNumQst[Qst_NUM_VALIDITIES] =
{ {
[Qst_INVALID_QUESTION] = "BIG_INDEX_RED", [Qst_INVALID_QUESTION] = "BIG_INDEX_RED",
[Qst_VALID_QUESTION ] = "BIG_INDEX", [Qst_VALID_QUESTION ] = "BIG_INDEX",
}; };
static char *ClassAnswerType[Qst_NUM_VALIDITIES] = const char *ClassAnswerType[Qst_NUM_VALIDITIES] =
{ {
[Qst_INVALID_QUESTION] = "DAT_SMALL_RED", [Qst_INVALID_QUESTION] = The_ClassDatSmallRed[Gbl.Prefs.Theme],
[Qst_VALID_QUESTION ] = "DAT_SMALL", [Qst_VALID_QUESTION ] = The_ClassDatSmall[Gbl.Prefs.Theme],
}; };
static char *ClassTxt[Qst_NUM_VALIDITIES] = static const char *ClassTxt[Qst_NUM_VALIDITIES] =
{ {
[Qst_INVALID_QUESTION] = "TEST_TXT_RED", [Qst_INVALID_QUESTION] = "TEST_TXT_RED",
[Qst_VALID_QUESTION ] = "TEST_TXT", [Qst_VALID_QUESTION ] = "TEST_TXT",
}; };
static char *ClassFeedback[Qst_NUM_VALIDITIES] = static const char *ClassFeedback[Qst_NUM_VALIDITIES] =
{ {
[Qst_INVALID_QUESTION] = "TEST_TXT_LIGHT_RED", [Qst_INVALID_QUESTION] = "TEST_TXT_LIGHT_RED",
[Qst_VALID_QUESTION ] = "TEST_TXT_LIGHT", [Qst_VALID_QUESTION ] = "TEST_TXT_LIGHT",

View File

@ -661,6 +661,7 @@ void Hie_ResetHierarchy (void)
void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan) void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
{ {
extern const char *The_ClassDatSmallNoBR[The_NUM_THEMES];
extern const char *Txt_all_degrees; extern const char *Txt_all_degrees;
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -686,8 +687,10 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
HTM_TD_End (); HTM_TD_End ();
/***** Write institution, center, degree *****/ /***** Write institution, center, degree *****/
HTM_TD_Begin ("colspan=\"%u\" class=\"DAT_SMALL_NOBR LT %s\"", HTM_TD_Begin ("colspan=\"%u\" class=\"%s %s LT\"",
ColSpan - 1,Gbl.ColorRows[Gbl.RowEvenOdd]); ColSpan - 1,
The_ClassDatSmallNoBR[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
/* Get next institution, center, degree */ /* Get next institution, center, degree */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);

View File

@ -537,6 +537,9 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
Ind_IndicatorsLayout_t IndicatorsLayout, Ind_IndicatorsLayout_t IndicatorsLayout,
unsigned NumCrss,MYSQL_RES *mysql_res) unsigned NumCrss,MYSQL_RES *mysql_res)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallGreen[The_NUM_THEMES];
extern const char *The_ClassDatSmallRed[The_NUM_THEMES];
extern const char *Txt_Degree; extern const char *Txt_Degree;
extern const char *Txt_Course; extern const char *Txt_Course;
extern const char *Txt_Institutional_BR_code; extern const char *Txt_Institutional_BR_code;
@ -708,30 +711,31 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
IndicatorsCrs.CourseAllOK ? "DAT_SMALL_GREEN" : IndicatorsCrs.CourseAllOK ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
(IndicatorsCrs.CoursePartiallyOK ? "DAT_SMALL" : (IndicatorsCrs.CoursePartiallyOK ? The_ClassDatSmall[Gbl.Prefs.Theme] :
"DAT_SMALL_RED"), The_ClassDatSmallRed[Gbl.Prefs.Theme]),
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (row[0]); HTM_Txt (row[0]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
IndicatorsCrs.CourseAllOK ? "DAT_SMALL_GREEN" : IndicatorsCrs.CourseAllOK ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
(IndicatorsCrs.CoursePartiallyOK ? "DAT_SMALL" : (IndicatorsCrs.CoursePartiallyOK ? The_ClassDatSmall[Gbl.Prefs.Theme] :
"DAT_SMALL_RED"), The_ClassDatSmallRed[Gbl.Prefs.Theme]),
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (row[1]); HTM_Txt (row[1]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
IndicatorsCrs.CourseAllOK ? "DAT_SMALL_GREEN" : IndicatorsCrs.CourseAllOK ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
(IndicatorsCrs.CoursePartiallyOK ? "DAT_SMALL" : (IndicatorsCrs.CoursePartiallyOK ? The_ClassDatSmall[Gbl.Prefs.Theme] :
"DAT_SMALL_RED"), The_ClassDatSmallRed[Gbl.Prefs.Theme]),
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (row[3]); HTM_Txt (row[3]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_A_Begin ("href=\"%s/?crs=%ld&amp;act=%ld\" target=\"_blank\"", HTM_A_Begin ("href=\"%s/?crs=%ld&amp;act=%ld\" target=\"_blank\"",
Cfg_URL_SWAD_CGI,CrsCod,ActCod); Cfg_URL_SWAD_CGI,CrsCod,ActCod);
@ -741,68 +745,78 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
IndicatorsCrs.CourseAllOK ? "DAT_SMALL_GREEN" : IndicatorsCrs.CourseAllOK ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
(IndicatorsCrs.CoursePartiallyOK ? "DAT_SMALL" : (IndicatorsCrs.CoursePartiallyOK ? The_ClassDatSmall[Gbl.Prefs.Theme] :
"DAT_SMALL_RED"), The_ClassDatSmallRed[Gbl.Prefs.Theme]),
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumIndicators); HTM_Unsigned (IndicatorsCrs.NumIndicators);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereIsSyllabus) if (IndicatorsCrs.ThereIsSyllabus)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereIsSyllabus) if (!IndicatorsCrs.ThereIsSyllabus)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereAreAssignments) if (IndicatorsCrs.ThereAreAssignments)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereAreAssignments) if (!IndicatorsCrs.ThereAreAssignments)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereIsOnlineTutoring) if (IndicatorsCrs.ThereIsOnlineTutoring)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereIsOnlineTutoring) if (!IndicatorsCrs.ThereIsOnlineTutoring)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereAreMaterials) if (IndicatorsCrs.ThereAreMaterials)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereAreMaterials) if (!IndicatorsCrs.ThereAreMaterials)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereIsAssessment) if (IndicatorsCrs.ThereIsAssessment)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereIsAssessment) if (!IndicatorsCrs.ThereIsAssessment)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
@ -821,30 +835,31 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
IndicatorsCrs.CourseAllOK ? "DAT_SMALL_GREEN" : IndicatorsCrs.CourseAllOK ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
(IndicatorsCrs.CoursePartiallyOK ? "DAT_SMALL" : (IndicatorsCrs.CoursePartiallyOK ? The_ClassDatSmall[Gbl.Prefs.Theme] :
"DAT_SMALL_RED"), The_ClassDatSmallRed[Gbl.Prefs.Theme]),
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (row[0]); HTM_Txt (row[0]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
IndicatorsCrs.CourseAllOK ? "DAT_SMALL_GREEN" : IndicatorsCrs.CourseAllOK ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
(IndicatorsCrs.CoursePartiallyOK ? "DAT_SMALL" : (IndicatorsCrs.CoursePartiallyOK ? The_ClassDatSmall[Gbl.Prefs.Theme] :
"DAT_SMALL_RED"), The_ClassDatSmallRed[Gbl.Prefs.Theme]),
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (row[1]); HTM_Txt (row[1]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
IndicatorsCrs.CourseAllOK ? "DAT_SMALL_GREEN" : IndicatorsCrs.CourseAllOK ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
(IndicatorsCrs.CoursePartiallyOK ? "DAT_SMALL" : (IndicatorsCrs.CoursePartiallyOK ? The_ClassDatSmall[Gbl.Prefs.Theme] :
"DAT_SMALL_RED"), The_ClassDatSmallRed[Gbl.Prefs.Theme]),
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (row[3]); HTM_Txt (row[3]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_A_Begin ("href=\"%s/?crs=%ld&amp;act=%ld\" target=\"_blank\"", HTM_A_Begin ("href=\"%s/?crs=%ld&amp;act=%ld\" target=\"_blank\"",
Cfg_URL_SWAD_CGI,CrsCod,ActCod); Cfg_URL_SWAD_CGI,CrsCod,ActCod);
@ -854,174 +869,184 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
NumTchs != 0 ? "DAT_SMALL_GREEN" : NumTchs != 0 ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (NumTchs); HTM_Unsigned (NumTchs);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
NumStds != 0 ? "DAT_SMALL_GREEN" : NumStds != 0 ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (NumStds); HTM_Unsigned (NumStds);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
IndicatorsCrs.CourseAllOK ? "DAT_SMALL_GREEN" : IndicatorsCrs.CourseAllOK ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
(IndicatorsCrs.CoursePartiallyOK ? "DAT_SMALL" : (IndicatorsCrs.CoursePartiallyOK ? The_ClassDatSmall[Gbl.Prefs.Theme] :
"DAT_SMALL_RED"), The_ClassDatSmallRed[Gbl.Prefs.Theme]),
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumIndicators); HTM_Unsigned (IndicatorsCrs.NumIndicators);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereIsSyllabus) if (IndicatorsCrs.ThereIsSyllabus)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereIsSyllabus) if (!IndicatorsCrs.ThereIsSyllabus)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
(IndicatorsCrs.SyllabusLecSrc != Inf_NONE) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.SyllabusLecSrc != Inf_NONE) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.SyllabusLecSrc]); HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.SyllabusLecSrc]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
(IndicatorsCrs.SyllabusPraSrc != Inf_NONE) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.SyllabusPraSrc != Inf_NONE) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.SyllabusPraSrc]); HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.SyllabusPraSrc]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
(IndicatorsCrs.TeachingGuideSrc != Inf_NONE) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.TeachingGuideSrc != Inf_NONE) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.TeachingGuideSrc]); HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.TeachingGuideSrc]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereAreAssignments) if (IndicatorsCrs.ThereAreAssignments)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereAreAssignments) if (!IndicatorsCrs.ThereAreAssignments)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
(IndicatorsCrs.NumAssignments != 0) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.NumAssignments != 0) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumAssignments); HTM_Unsigned (IndicatorsCrs.NumAssignments);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
(IndicatorsCrs.NumFilesAssignments != 0) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.NumFilesAssignments != 0) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumFilesAssignments); HTM_Unsigned (IndicatorsCrs.NumFilesAssignments);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
(IndicatorsCrs.NumFilesWorks != 0) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.NumFilesWorks != 0) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumFilesWorks); HTM_Unsigned (IndicatorsCrs.NumFilesWorks);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereIsOnlineTutoring) if (IndicatorsCrs.ThereIsOnlineTutoring)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereIsOnlineTutoring) if (!IndicatorsCrs.ThereIsOnlineTutoring)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
(IndicatorsCrs.NumThreads != 0) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.NumThreads != 0) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumThreads); HTM_Unsigned (IndicatorsCrs.NumThreads);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
(IndicatorsCrs.NumPosts != 0) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.NumPosts != 0) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumPosts); HTM_Unsigned (IndicatorsCrs.NumPosts);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
(IndicatorsCrs.NumMsgsSentByTchs != 0) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.NumMsgsSentByTchs != 0) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumMsgsSentByTchs); HTM_Unsigned (IndicatorsCrs.NumMsgsSentByTchs);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereAreMaterials) if (IndicatorsCrs.ThereAreMaterials)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereAreMaterials) if (!IndicatorsCrs.ThereAreMaterials)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
(IndicatorsCrs.NumFilesInDocumentZones != 0) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.NumFilesInDocumentZones != 0) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumFilesInDocumentZones); HTM_Unsigned (IndicatorsCrs.NumFilesInDocumentZones);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s RM\"", HTM_TD_Begin ("class=\"%s %s RM\"",
(IndicatorsCrs.NumFilesInSharedZones != 0) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.NumFilesInSharedZones != 0) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (IndicatorsCrs.NumFilesInSharedZones); HTM_Unsigned (IndicatorsCrs.NumFilesInSharedZones);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_GREEN %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallGreen[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (IndicatorsCrs.ThereIsAssessment) if (IndicatorsCrs.ThereIsAssessment)
HTM_Txt (Txt_YES); HTM_Txt (Txt_YES);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL_RED %s CM\"", HTM_TD_Begin ("class=\"%s %s CM\"",
The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!IndicatorsCrs.ThereIsAssessment) if (!IndicatorsCrs.ThereIsAssessment)
HTM_Txt (Txt_NO); HTM_Txt (Txt_NO);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
(IndicatorsCrs.AssessmentSrc != Inf_NONE) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.AssessmentSrc != Inf_NONE) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.AssessmentSrc]); HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.AssessmentSrc]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"%s %s LM\"", HTM_TD_Begin ("class=\"%s %s LM\"",
(IndicatorsCrs.TeachingGuideSrc != Inf_NONE) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.TeachingGuideSrc != Inf_NONE) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED", The_ClassDatSmallRed[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.TeachingGuideSrc]); HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.TeachingGuideSrc]);
HTM_TD_End (); HTM_TD_End ();

View File

@ -159,6 +159,11 @@ void Log_ShowLastClicks (void)
void Log_GetAndShowLastClicks (void) void Log_GetAndShowLastClicks (void)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallBlue[The_NUM_THEMES];
extern const char *The_ClassDatSmallGreen[The_NUM_THEMES];
extern const char *The_ClassDatSmallRed[The_NUM_THEMES];
extern const char *The_ClassDatSmallYellow[The_NUM_THEMES];
extern const char *Txt_Click; extern const char *Txt_Click;
extern const char *Txt_ELAPSED_TIME; extern const char *Txt_ELAPSED_TIME;
extern const char *Txt_Role; extern const char *Txt_Role;
@ -207,12 +212,12 @@ void Log_GetAndShowLastClicks (void)
Action = Act_GetActionFromActCod (ActCod); Action = Act_GetActionFromActCod (ActCod);
/* Use a special color for this row depending on the action */ /* Use a special color for this row depending on the action */
ClassRow = (Act_GetBrowserTab (Action) == Act_DOWNLD_FILE) ? "DAT_SMALL_YELLOW" : ClassRow = (Act_GetBrowserTab (Action) == Act_DOWNLD_FILE) ? The_ClassDatSmallYellow[Gbl.Prefs.Theme] :
(ActCod == Act_GetActCod (ActLogIn ) || (ActCod == Act_GetActCod (ActLogIn ) ||
ActCod == Act_GetActCod (ActLogInNew)) ? "DAT_SMALL_GREEN" : ActCod == Act_GetActCod (ActLogInNew)) ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
(ActCod == Act_GetActCod (ActLogOut )) ? "DAT_SMALL_RED" : (ActCod == Act_GetActCod (ActLogOut )) ? The_ClassDatSmallRed[Gbl.Prefs.Theme] :
(ActCod == Act_GetActCod (ActWebSvc )) ? "DAT_SMALL_BLUE" : (ActCod == Act_GetActCod (ActWebSvc )) ? The_ClassDatSmallBlue[Gbl.Prefs.Theme] :
"DAT_SMALL_GREY"; The_ClassDatSmall[Gbl.Prefs.Theme];
/* Compute elapsed time from last access */ /* Compute elapsed time from last access */
if (sscanf (row[2],"%ld",&TimeDiff) != 1) if (sscanf (row[2],"%ld",&TimeDiff) != 1)

View File

@ -798,6 +798,7 @@ static void Mai_ListEmails (__attribute__((unused)) void *Args)
extern const char *Hlp_COMMUNICATION_Email; extern const char *Hlp_COMMUNICATION_Email;
extern const char *The_ClassFormOutBoxBold[The_NUM_THEMES]; extern const char *The_ClassFormOutBoxBold[The_NUM_THEMES];
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *Txt_Email_addresses; extern const char *Txt_Email_addresses;
extern const char *Txt_X_users_who_have_email; extern const char *Txt_X_users_who_have_email;
extern const char *Txt_X_users_who_have_accepted_and_who_have_email; extern const char *Txt_X_users_who_have_accepted_and_who_have_email;
@ -815,7 +816,7 @@ static void Mai_ListEmails (__attribute__((unused)) void *Args)
Hlp_COMMUNICATION_Email,Box_NOT_CLOSABLE); Hlp_COMMUNICATION_Email,Box_NOT_CLOSABLE);
/***** Begin list with users' email addresses *****/ /***** Begin list with users' email addresses *****/
HTM_DIV_Begin ("class=\"DAT_SMALL CM\""); HTM_DIV_Begin ("class=\"%s CM\"",The_ClassDatSmall[Gbl.Prefs.Theme]);
/***** Initialize structure with user's data *****/ /***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);

View File

@ -2721,9 +2721,12 @@ static void Mch_PutCheckboxResult (const struct Mch_Match *Match)
static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered) static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered)
{ {
extern const char *The_ClassDatSmallGreen[The_NUM_THEMES];
extern const char *The_ClassDatSmallRed[The_NUM_THEMES];
extern const char *Txt_View_my_answer; extern const char *Txt_View_my_answer;
extern const char *Txt_MATCH_QUESTION_Answered; extern const char *Txt_MATCH_QUESTION_Answered;
extern const char *Txt_MATCH_QUESTION_Unanswered; extern const char *Txt_MATCH_QUESTION_Unanswered;
char *Class;
/***** Begin container *****/ /***** Begin container *****/
HTM_DIV_Begin ("class=\"MCH_SHOW_ANSWERED\""); HTM_DIV_Begin ("class=\"MCH_SHOW_ANSWERED\"");
@ -2737,8 +2740,10 @@ static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered)
Frm_BeginForm (ActSeeMchAnsQstStd); Frm_BeginForm (ActSeeMchAnsQstStd);
Mch_PutParamMchCod (Match->MchCod); // Current match being played Mch_PutParamMchCod (Match->MchCod); // Current match being played
HTM_BUTTON_OnMouseDown_Begin (Txt_View_my_answer, if (asprintf (&Class,"BT_LINK %s",The_ClassDatSmallGreen[Gbl.Prefs.Theme]) < 0) // Background
"BT_LINK DAT_SMALL_GREEN"); Err_NotEnoughMemoryExit ();
HTM_BUTTON_OnMouseDown_Begin (Txt_View_my_answer,Class);
free (Class);
HTM_TxtF ("<i class=\"%s\"></i>","fas fa-check-circle"); HTM_TxtF ("<i class=\"%s\"></i>","fas fa-check-circle");
HTM_TxtF ("&nbsp;%s",Txt_MATCH_QUESTION_Answered); HTM_TxtF ("&nbsp;%s",Txt_MATCH_QUESTION_Answered);
HTM_BUTTON_End (); HTM_BUTTON_End ();
@ -2748,8 +2753,8 @@ static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered)
} }
else else
{ {
HTM_DIV_Begin ("class=\"%s\"",Answered ? "DAT_SMALL_GREEN" : HTM_DIV_Begin ("class=\"%s\"",Answered ? The_ClassDatSmallGreen[Gbl.Prefs.Theme] :
"DAT_SMALL_RED"); The_ClassDatSmallRed[Gbl.Prefs.Theme]);
HTM_TxtF ("<i class=\"%s\" title=\"%s\"></i>", HTM_TxtF ("<i class=\"%s\" title=\"%s\"></i>",
Answered ? "fas fa-check-circle" : Answered ? "fas fa-check-circle" :
"fas fa-exclamation-circle", "fas fa-exclamation-circle",

View File

@ -485,6 +485,8 @@ static void Msg_PutHiddenParamsSubjectAndContent (void)
static void Msg_ShowOneUniqueRecipient (void) static void Msg_ShowOneUniqueRecipient (void)
{ {
extern const char *The_ClassDatSmallNoBR[The_NUM_THEMES];
extern const char *The_ClassDatSmallNoBRStrong[The_NUM_THEMES];
static const char *ClassPhoto[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
{ {
[PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28", [PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28",
@ -500,15 +502,15 @@ static void Msg_ShowOneUniqueRecipient (void)
/****** Write user's IDs ******/ /****** Write user's IDs ******/
HTM_DIV_Begin ("class=\"MSG_TO_ONE_RCP %s\"", HTM_DIV_Begin ("class=\"MSG_TO_ONE_RCP %s\"",
Gbl.Usrs.Other.UsrDat.Accepted ? "DAT_SMALL_NOBR_N" : Gbl.Usrs.Other.UsrDat.Accepted ? The_ClassDatSmallNoBRStrong[Gbl.Prefs.Theme] :
"DAT_SMALL_NOBR"); The_ClassDatSmallNoBR[Gbl.Prefs.Theme]);
ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,NULL); ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,NULL);
HTM_DIV_End (); HTM_DIV_End ();
/***** Write user's name *****/ /***** Write user's name *****/
HTM_DIV_Begin ("class=\"MSG_TO_ONE_RCP %s\"", HTM_DIV_Begin ("class=\"MSG_TO_ONE_RCP %s\"",
Gbl.Usrs.Other.UsrDat.Accepted ? "DAT_SMALL_NOBR_N" : Gbl.Usrs.Other.UsrDat.Accepted ? The_ClassDatSmallNoBRStrong[Gbl.Prefs.Theme] :
"DAT_SMALL_NOBR"); The_ClassDatSmallNoBR[Gbl.Prefs.Theme]);
HTM_Txt (Gbl.Usrs.Other.UsrDat.FullName); HTM_Txt (Gbl.Usrs.Other.UsrDat.FullName);
HTM_DIV_End (); HTM_DIV_End ();

View File

@ -241,7 +241,8 @@ void Net_ShowFormMyWebsAndSocialNets (void)
HTM_TD_Begin ("class=\"REC_C2_BOT LM\""); HTM_TD_Begin ("class=\"REC_C2_BOT LM\"");
HTM_INPUT_URL (StrName,URL,HTM_DONT_SUBMIT_ON_CHANGE, HTM_INPUT_URL (StrName,URL,HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"%s\" class=\"REC_C2_BOT_INPUT %s\"", "id=\"%s\" class=\"REC_C2_BOT_INPUT %s\"",
StrName,The_ClassInput[Gbl.Prefs.Theme]); StrName,
The_ClassInput[Gbl.Prefs.Theme]);
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();

View File

@ -1062,6 +1062,8 @@ void Pho_BuildHTMLUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
{ {
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 *The_ClassDatStrong[The_NUM_THEMES];
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[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;
@ -1107,9 +1109,10 @@ void Pho_BuildHTMLUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
/* Nickname */ /* Nickname */
if (UsrDat->Nickname[0]) if (UsrDat->Nickname[0])
{ {
if (asprintf (&Caption.Nick,"<div class=\"ZOOM_TXT_LINE DAT_SMALL_N\">" if (asprintf (&Caption.Nick,"<div class=\"ZOOM_TXT_LINE %s\">"
"@%s" "@%s"
"</div>", "</div>",
The_ClassDatSmallStrong[Gbl.Prefs.Theme],
UsrDat->Nickname) < 0) UsrDat->Nickname) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
@ -1124,9 +1127,10 @@ void Pho_BuildHTMLUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
Ins_GetShrtNameAndCtyOfInstitution (&Ins,CtyName); Ins_GetShrtNameAndCtyOfInstitution (&Ins,CtyName);
/* Write institution short name and country name */ /* Write institution short name and country name */
if (asprintf (&Caption.InsCty,"<div class=\"ZOOM_TXT_LINE DAT_SMALL\">" if (asprintf (&Caption.InsCty,"<div class=\"ZOOM_TXT_LINE %s\">"
"%s&nbsp;(%s)" "%s&nbsp;(%s)"
"</div>", "</div>",
The_ClassDatSmall[Gbl.Prefs.Theme],
Ins.ShrtName,CtyName) < 0) Ins.ShrtName,CtyName) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
@ -1136,10 +1140,11 @@ void Pho_BuildHTMLUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
Cty_GetCountryName (UsrDat->CtyCod,Gbl.Prefs.Language,CtyName); Cty_GetCountryName (UsrDat->CtyCod,Gbl.Prefs.Language,CtyName);
/* Write country name */ /* Write country name */
if (asprintf (&Caption.InsCty,"<div class=\"ZOOM_TXT_LINE DAT_SMALL\">" if (asprintf (&Caption.InsCty,"<div class=\"ZOOM_TXT_LINE %s\">"
"%s" "%s"
"</div>", "</div>",
CtyName) < 0) The_ClassDatSmall[Gbl.Prefs.Theme],
CtyName) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else if (asprintf (&Caption.InsCty,"%s","") < 0) else if (asprintf (&Caption.InsCty,"%s","") < 0)
@ -1149,13 +1154,15 @@ void Pho_BuildHTMLUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
Deg_GetUsrMainDeg (UsrDat->UsrCod,MainDegreeShrtName,&MaxRole); Deg_GetUsrMainDeg (UsrDat->UsrCod,MainDegreeShrtName,&MaxRole);
if (MainDegreeShrtName[0]) if (MainDegreeShrtName[0])
{ {
if (asprintf (&Caption.MainDeg,"<div class=\"ZOOM_TXT_LINE DAT_SMALL\">" if (asprintf (&Caption.MainDeg,"<div class=\"ZOOM_TXT_LINE %s\">"
"<div class=\"ZOOM_DEG\" style=\"background-image:url('%s/%s');\">" "<div class=\"ZOOM_DEG\""
" style=\"background-image:url('%s/%s');\">"
"%s" "%s"
"</div>" "</div>"
"</div>", "</div>",
Cfg_URL_ICON_PUBLIC,Rol_Icons[MaxRole], The_ClassDatSmall[Gbl.Prefs.Theme],
MainDegreeShrtName) < 0) Cfg_URL_ICON_PUBLIC,Rol_Icons[MaxRole],
MainDegreeShrtName) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else if (asprintf (&Caption.MainDeg,"%s","") < 0) else if (asprintf (&Caption.MainDeg,"%s","") < 0)
@ -1169,21 +1176,23 @@ void Pho_BuildHTMLUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
"<span class=\"%s BOLD\">" "<span class=\"%s BOLD\">"
"%u" "%u"
"</span>" "</span>"
"<span class=\"DAT_SMALL\">" "<span class=\"%s\">"
"&nbsp;%s&nbsp;" "&nbsp;%s&nbsp;"
"</span>" "</span>"
"<span class=\"%s BOLD\">" "<span class=\"%s BOLD\">"
"%u" "%u"
"</span>" "</span>"
"<span class=\"DAT_SMALL\">" "<span class=\"%s\">"
"&nbsp;%s" "&nbsp;%s"
"</span>" "</span>"
"</div>", "</div>",
The_ClassDatStrong[Gbl.Prefs.Theme], The_ClassDatStrong[Gbl.Prefs.Theme],
NumFollowing, NumFollowing,
The_ClassDatSmall[Gbl.Prefs.Theme],
Txt_Following, Txt_Following,
The_ClassDatStrong[Gbl.Prefs.Theme], The_ClassDatStrong[Gbl.Prefs.Theme],
NumFollowers, NumFollowers,
The_ClassDatSmall[Gbl.Prefs.Theme],
Txt_Followers) < 0) Txt_Followers) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
@ -2334,13 +2343,14 @@ static void Pho_GetNumStdsInDegree (long DegCod,Usr_Sex_t Sex,
static void Pho_ShowDegreeStat (int NumStds,int NumStdsWithPhoto) static void Pho_ShowDegreeStat (int NumStds,int NumStdsWithPhoto)
{ {
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *Txt_photos; extern const char *Txt_photos;
HTM_SPAN_Begin ("class=\"%s\"",The_ClassDat[Gbl.Prefs.Theme]); HTM_SPAN_Begin ("class=\"%s\"",The_ClassDat[Gbl.Prefs.Theme]);
HTM_TxtF ("%d&nbsp;",NumStds); HTM_TxtF ("%d&nbsp;",NumStds);
HTM_SPAN_End (); HTM_SPAN_End ();
HTM_SPAN_Begin ("class=\"DAT_SMALL\""); HTM_SPAN_Begin ("class=\"%s\"",The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_TxtF ("(%d&nbsp;%s,&nbsp;%d%%)", HTM_TxtF ("(%d&nbsp;%s,&nbsp;%d%%)",
NumStdsWithPhoto,Txt_photos, NumStdsWithPhoto,Txt_photos,
NumStds > 0 ? (int) (((NumStdsWithPhoto * 100.0) / NumStds) + 0.5) : NumStds > 0 ? (int) (((NumStdsWithPhoto * 100.0) / NumStds) + 0.5) :

View File

@ -1170,6 +1170,8 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
void Prf_ShowRankingFigure (MYSQL_RES **mysql_res,unsigned NumUsrs) void Prf_ShowRankingFigure (MYSQL_RES **mysql_res,unsigned NumUsrs)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
MYSQL_ROW row; MYSQL_ROW row;
unsigned NumUsr; unsigned NumUsr;
unsigned Rank; unsigned Rank;
@ -1212,9 +1214,9 @@ void Prf_ShowRankingFigure (MYSQL_RES **mysql_res,unsigned NumUsrs)
/***** Show row *****/ /***** Show row *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
Prf_ShowUsrInRanking (&UsrDat,Rank,ItsMe); Prf_ShowUsrInRanking (&UsrDat,Rank,ItsMe);
HTM_TD_Begin ("class=\"RM %s %s\"", HTM_TD_Begin ("class=\"%s %s RM\"",
ItsMe ? "DAT_SMALL_N" : ItsMe ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Long (Figure); HTM_Long (Figure);
HTM_TD_End (); HTM_TD_End ();
@ -1237,6 +1239,8 @@ void Prf_ShowRankingFigure (MYSQL_RES **mysql_res,unsigned NumUsrs)
void Prf_GetAndShowRankingClicksPerDay (void) void Prf_GetAndShowRankingClicksPerDay (void)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
unsigned NumUsrs = 0; // Initialized to avoid warning unsigned NumUsrs = 0; // Initialized to avoid warning
@ -1280,9 +1284,9 @@ void Prf_GetAndShowRankingClicksPerDay (void)
/***** Show row *****/ /***** Show row *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
Prf_ShowUsrInRanking (&UsrDat,Rank,ItsMe); Prf_ShowUsrInRanking (&UsrDat,Rank,ItsMe);
HTM_TD_Begin ("class=\"RM %s %s\"", HTM_TD_Begin ("class=\"%s %s RM\"",
ItsMe ? "DAT_SMALL_N" : ItsMe ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_DoubleFewDigits (NumClicksPerDay); HTM_DoubleFewDigits (NumClicksPerDay);
HTM_TD_End (); HTM_TD_End ();
@ -1305,6 +1309,8 @@ void Prf_GetAndShowRankingClicksPerDay (void)
static void Prf_ShowUsrInRanking (struct UsrData *UsrDat,unsigned Rank,bool ItsMe) static void Prf_ShowUsrInRanking (struct UsrData *UsrDat,unsigned Rank,bool ItsMe)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
extern const char *Txt_Another_user_s_profile; extern const char *Txt_Another_user_s_profile;
static const char *ClassPhoto[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
{ {
@ -1315,9 +1321,9 @@ static void Prf_ShowUsrInRanking (struct UsrData *UsrDat,unsigned Rank,bool ItsM
}; };
bool Visible = Pri_ShowingIsAllowed (UsrDat->BaPrfVisibility,UsrDat); bool Visible = Pri_ShowingIsAllowed (UsrDat->BaPrfVisibility,UsrDat);
HTM_TD_Begin ("class=\"RM %s %s\"", HTM_TD_Begin ("class=\"%s %s RM\"",
ItsMe ? "DAT_SMALL_N" : ItsMe ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_TxtF ("#%u",Rank); HTM_TxtF ("#%u",Rank);
HTM_TD_End (); HTM_TD_End ();
@ -1333,8 +1339,8 @@ static void Prf_ShowUsrInRanking (struct UsrData *UsrDat,unsigned Rank,bool ItsM
/***** Put form to go to public profile *****/ /***** Put form to go to public profile *****/
HTM_TD_Begin ("class=\"RANK_USR %s %s\"", // Limited width HTM_TD_Begin ("class=\"RANK_USR %s %s\"", // Limited width
ItsMe ? "DAT_SMALL_N" : ItsMe ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
if (Visible) if (Visible)
{ {

View File

@ -519,17 +519,21 @@ void Qst_ListQuestionForEdition (struct Qst_Question *Question,
const char *Anchor) const char *Anchor)
{ {
extern const char *The_ClassDatLight[The_NUM_THEMES]; extern const char *The_ClassDatLight[The_NUM_THEMES];
extern const char *The_ClassDatSmall[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]) *****/
HTM_TD_Begin ("class=\"RT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"RT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]);
Qst_WriteNumQst (QstInd,"BIG_INDEX"); Qst_WriteNumQst (QstInd,"BIG_INDEX");
if (QuestionExists) if (QuestionExists)
Qst_WriteAnswerType (Question->Answer.Type,"DAT_SMALL"); Qst_WriteAnswerType (Question->Answer.Type,
The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_TD_End (); HTM_TD_End ();
/***** Write question code *****/ /***** Write question code *****/
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_TxtF ("%ld&nbsp;",Question->QstCod); HTM_TxtF ("%ld&nbsp;",Question->QstCod);
HTM_TD_End (); HTM_TD_End ();
@ -963,7 +967,9 @@ void Qst_WriteHeadingRowQuestionsForEdition (struct Qst_Questions *Questions)
void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd) void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
static unsigned UniqueId = 0; static unsigned UniqueId = 0;
char *Class;
char *Id; char *Id;
/***** Get and show question data *****/ /***** Get and show question data *****/
@ -988,19 +994,27 @@ void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd)
/* Number of question and answer type */ /* Number of question and answer type */
HTM_TD_Begin ("class=\"RT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"RT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]);
Qst_WriteNumQst (QstInd + 1,"BIG_INDEX"); Qst_WriteNumQst (QstInd + 1,"BIG_INDEX");
Qst_WriteAnswerType (Questions->Question.Answer.Type,"DAT_SMALL"); if (asprintf (&Class,"%s",
The_ClassDatSmall[Gbl.Prefs.Theme]) < 0)
Err_NotEnoughMemoryExit ();
Qst_WriteAnswerType (Questions->Question.Answer.Type,Class);
free (Class);
HTM_TD_End (); HTM_TD_End ();
/* Question code */ /* Question code */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_TxtF ("%ld&nbsp;",Questions->Question.QstCod); HTM_TxtF ("%ld&nbsp;",Questions->Question.QstCod);
HTM_TD_End (); HTM_TD_End ();
/* Date (row[0] has the UTC date-time) */ /* Date (row[0] has the UTC date-time) */
if (asprintf (&Id,"tst_date_%u",++UniqueId) < 0) if (asprintf (&Id,"tst_date_%u",++UniqueId) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT %s\"", HTM_TD_Begin ("id=\"%s\" class=\"%s %s CT\"",
Id,Gbl.ColorRows[Gbl.RowEvenOdd]); Id,
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
Dat_WriteLocalDateHMSFromUTC (Id,Questions->Question.EditTime, Dat_WriteLocalDateHMSFromUTC (Id,Questions->Question.EditTime,
Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK, Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,false,0x7); true,true,false,0x7);
@ -1013,7 +1027,9 @@ void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd)
HTM_TD_End (); HTM_TD_End ();
/* Shuffle (row[2]) */ /* Shuffle (row[2]) */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
if (Questions->Question.Answer.Type == Qst_ANS_UNIQUE_CHOICE || if (Questions->Question.Answer.Type == Qst_ANS_UNIQUE_CHOICE ||
Questions->Question.Answer.Type == Qst_ANS_MULTIPLE_CHOICE) Questions->Question.Answer.Type == Qst_ANS_MULTIPLE_CHOICE)
{ {
@ -1044,12 +1060,16 @@ void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd)
HTM_TD_End (); HTM_TD_End ();
/* Number of times this question has been answered */ /* Number of times this question has been answered */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_UnsignedLong (Questions->Question.NumHits); HTM_UnsignedLong (Questions->Question.NumHits);
HTM_TD_End (); HTM_TD_End ();
/* Average score */ /* Average score */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
if (Questions->Question.NumHits) if (Questions->Question.NumHits)
HTM_Double2Decimals (Questions->Question.Score / HTM_Double2Decimals (Questions->Question.Score /
(double) Questions->Question.NumHits); (double) Questions->Question.NumHits);
@ -1058,12 +1078,16 @@ void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd)
HTM_TD_End (); HTM_TD_End ();
/* Number of times this question has been answered (not blank) */ /* Number of times this question has been answered (not blank) */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_UnsignedLong (Questions->Question.NumHitsNotBlank); HTM_UnsignedLong (Questions->Question.NumHitsNotBlank);
HTM_TD_End (); HTM_TD_End ();
/* Average score (not blank) */ /* Average score (not blank) */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
if (Questions->Question.NumHitsNotBlank) if (Questions->Question.NumHitsNotBlank)
HTM_Double2Decimals (Questions->Question.Score / HTM_Double2Decimals (Questions->Question.Score /
(double) Questions->Question.NumHitsNotBlank); (double) Questions->Question.NumHitsNotBlank);
@ -1268,6 +1292,7 @@ void Qst_PutCheckboxToSelectAllQuestions (void)
void Qst_WriteQuestionRowForSelection (unsigned QstInd, void Qst_WriteQuestionRowForSelection (unsigned QstInd,
struct Qst_Question *Question) struct Qst_Question *Question)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *Txt_TST_STR_ANSWER_TYPES[Qst_NUM_ANS_TYPES]; extern const char *Txt_TST_STR_ANSWER_TYPES[Qst_NUM_ANS_TYPES];
static unsigned UniqueId = 0; static unsigned UniqueId = 0;
char *Id; char *Id;
@ -1286,20 +1311,26 @@ void Qst_WriteQuestionRowForSelection (unsigned QstInd,
HTM_TD_End (); HTM_TD_End ();
/* Write number of question */ /* Write number of question */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_TxtF ("%u&nbsp;",QstInd + 1); HTM_TxtF ("%u&nbsp;",QstInd + 1);
HTM_TD_End (); HTM_TD_End ();
/* Write question code */ /* Write question code */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_TxtF ("%ld&nbsp;",Question->QstCod); HTM_TxtF ("%ld&nbsp;",Question->QstCod);
HTM_TD_End (); HTM_TD_End ();
/* Write the date (row[0] has the UTC date-time) */ /* Write the date (row[0] has the UTC date-time) */
if (asprintf (&Id,"tst_date_%u",++UniqueId) < 0) if (asprintf (&Id,"tst_date_%u",++UniqueId) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT %s\">", HTM_TD_Begin ("id=\"%s\" class=\"%s %s CT\">",
Id,Gbl.ColorRows[Gbl.RowEvenOdd]); Id,
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
Dat_WriteLocalDateHMSFromUTC (Id,Question->EditTime, Dat_WriteLocalDateHMSFromUTC (Id,Question->EditTime,
Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK, Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,false,0x7); true,true,false,0x7);
@ -1312,12 +1343,16 @@ void Qst_WriteQuestionRowForSelection (unsigned QstInd,
HTM_TD_End (); HTM_TD_End ();
/* Write the question type */ /* Write the question type */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_TxtF ("%s&nbsp;",Txt_TST_STR_ANSWER_TYPES[Question->Answer.Type]); HTM_TxtF ("%s&nbsp;",Txt_TST_STR_ANSWER_TYPES[Question->Answer.Type]);
HTM_TD_End (); HTM_TD_End ();
/* Write if shuffle is enabled */ /* Write if shuffle is enabled */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_INPUT_CHECKBOX ("Shuffle",HTM_DONT_SUBMIT_ON_CHANGE, HTM_INPUT_CHECKBOX ("Shuffle",HTM_DONT_SUBMIT_ON_CHANGE,
"value=\"Y\"%s disabled=\"disabled\"", "value=\"Y\"%s disabled=\"disabled\"",
Question->Answer.Shuffle ? " checked=\"checked\"" : Question->Answer.Shuffle ? " checked=\"checked\"" :

View File

@ -854,6 +854,8 @@ static void QstImp_WriteRowImportedQst (struct XMLElement *StemElem,
const struct Qst_Question *Question, const struct Qst_Question *Question,
bool QuestionExists) bool QuestionExists)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallLight[The_NUM_THEMES];
extern const char *Txt_Existing_question; extern const char *Txt_Existing_question;
extern const char *Txt_New_question; extern const char *Txt_New_question;
extern const char *Txt_no_tags; extern const char *Txt_no_tags;
@ -871,8 +873,8 @@ static void QstImp_WriteRowImportedQst (struct XMLElement *StemElem,
size_t AnswerTextLength; size_t AnswerTextLength;
char *AnswerFeedback; char *AnswerFeedback;
size_t AnswerFeedbackLength; size_t AnswerFeedbackLength;
const char *ClassData = QuestionExists ? "DAT_SMALL_LIGHT" : const char *ClassData = QuestionExists ? The_ClassDatSmallLight[Gbl.Prefs.Theme] :
"DAT_SMALL"; The_ClassDatSmall[Gbl.Prefs.Theme];
const char *ClassStem = QuestionExists ? "TEST_TXT_LIGHT" : const char *ClassStem = QuestionExists ? "TEST_TXT_LIGHT" :
"TEST_TXT"; "TEST_TXT";
@ -892,13 +894,14 @@ static void QstImp_WriteRowImportedQst (struct XMLElement *StemElem,
HTM_TD_End (); HTM_TD_End ();
/***** Write number of question *****/ /***** Write number of question *****/
HTM_TD_Begin ("class=\"%s CT %s\"",ClassData,Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s CT\"",ClassData,Gbl.ColorRows[Gbl.RowEvenOdd]);
if (!QuestionExists) if (!QuestionExists)
HTM_TxtF ("%u&nbsp;",++NumNonExistingQst); HTM_TxtF ("%u&nbsp;",++NumNonExistingQst);
HTM_TD_End (); HTM_TD_End ();
/***** Write the question tags *****/ /***** Write the question tags *****/
HTM_TD_Begin ("class=\"LT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s LT\"",
Gbl.ColorRows[Gbl.RowEvenOdd]);
if (Question->Tags.Num) if (Question->Tags.Num)
{ {

View File

@ -1569,6 +1569,8 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
extern const char *Hlp_USERS_Students_course_record_card; extern const char *Hlp_USERS_Students_course_record_card;
extern const char *The_ClassDatStrong[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 *The_ClassInput[The_NUM_THEMES];
extern const char *The_ClassDatSmall[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;
const char *Rec_RecordHelp[Rec_COURSE_NUM_VIEW_TYPES] = const char *Rec_RecordHelp[Rec_COURSE_NUM_VIEW_TYPES] =
@ -1716,9 +1718,11 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
if (TypeOfView == Rec_CRS_LIST_ONE_RECORD || if (TypeOfView == Rec_CRS_LIST_ONE_RECORD ||
TypeOfView == Rec_CRS_LIST_SEVERAL_RECORDS) TypeOfView == Rec_CRS_LIST_SEVERAL_RECORDS)
{ {
HTM_SPAN_Begin ("class=\"DAT_SMALL\""); HTM_SPAN_Begin ("class=\"%s\"",
The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_NBSP (); HTM_NBSP ();
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_SPAN_End (); HTM_SPAN_End ();
} }
HTM_TD_End (); HTM_TD_End ();
@ -1742,9 +1746,10 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
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\""
" class=\"REC_C2_BOT_INPUT\"", " class=\"REC_C2_BOT_INPUT %s\"",
Gbl.Crs.Records.LstFields.Lst[NumField].FieldCod, Gbl.Crs.Records.LstFields.Lst[NumField].FieldCod,
Gbl.Crs.Records.LstFields.Lst[NumField].NumLines); Gbl.Crs.Records.LstFields.Lst[NumField].NumLines,
The_ClassInput[Gbl.Prefs.Theme]);
if (ThisFieldHasText) if (ThisFieldHasText)
HTM_Txt (row[0]); HTM_Txt (row[0]);
HTM_TEXTAREA_End (); HTM_TEXTAREA_End ();
@ -3289,7 +3294,8 @@ static void Rec_ShowPhone (struct UsrData *UsrDat,bool ShowData,bool PutForm,
HTM_INPUT_TEL (Name,UsrDat->Phone[NumPhone], HTM_INPUT_TEL (Name,UsrDat->Phone[NumPhone],
HTM_DONT_SUBMIT_ON_CHANGE, HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"%s\" class=\"REC_C2_BOT_INPUT %s\"", "id=\"%s\" class=\"REC_C2_BOT_INPUT %s\"",
Name,The_ClassInput[Gbl.Prefs.Theme]); Name,
The_ClassInput[Gbl.Prefs.Theme]);
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\"",

View File

@ -751,6 +751,7 @@ void Sta_SeeCrsAccesses (void)
static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *Txt_You_must_select_one_ore_more_users; extern const char *Txt_You_must_select_one_ore_more_users;
extern const char *Txt_There_is_no_knowing_how_many_users_not_logged_have_accessed; extern const char *Txt_There_is_no_knowing_how_many_users_not_logged_have_accessed;
extern const char *Txt_The_date_range_must_be_less_than_or_equal_to_X_days; extern const char *Txt_The_date_range_must_be_less_than_or_equal_to_X_days;
@ -1043,7 +1044,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
case Sta_CLICKS_GBL_PER_HOUR: case Sta_CLICKS_GBL_PER_HOUR:
case Sta_CLICKS_CRS_PER_MINUTE: case Sta_CLICKS_CRS_PER_MINUTE:
case Sta_CLICKS_GBL_PER_MINUTE: case Sta_CLICKS_GBL_PER_MINUTE:
HTM_TxtF ("<p class=\"DAT_SMALL CM\">%s: %s</p>", HTM_TxtF ("<p class=\"%s CM\">%s: %s</p>",
The_ClassDatSmall[Gbl.Prefs.Theme],
Txt_Time_zone_used_in_the_calculation_of_these_statistics, Txt_Time_zone_used_in_the_calculation_of_these_statistics,
BrowserTimeZone); BrowserTimeZone);
break; break;
@ -2368,9 +2370,12 @@ static void Sta_ShowNumHitsPerHour (unsigned NumHits,
static void Sta_WriteAccessHour (unsigned Hour,struct Sta_Hits *Hits,unsigned ColumnWidth) static void Sta_WriteAccessHour (unsigned Hour,struct Sta_Hits *Hits,unsigned ColumnWidth)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
unsigned BarHeight; unsigned BarHeight;
HTM_TD_Begin ("class=\"DAT_SMALL CB\" style=\"width:%upx;\"",ColumnWidth); HTM_TD_Begin ("class=\"%s CB\" style=\"width:%upx;\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
ColumnWidth);
/* Draw bar with a height porportional to the number of clicks */ /* Draw bar with a height porportional to the number of clicks */
if (Hits->Num > 0.0) if (Hits->Num > 0.0)

View File

@ -2747,6 +2747,7 @@ static void Svy_ListSvyQuestions (struct Svy_Surveys *Surveys,
{ {
extern const char *Hlp_ASSESSMENT_Surveys_questions; extern const char *Hlp_ASSESSMENT_Surveys_questions;
extern const char *The_ClassDat[The_NUM_THEMES]; extern const char *The_ClassDat[The_NUM_THEMES];
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *Txt_Questions; extern const char *Txt_Questions;
extern const char *Txt_No_INDEX; extern const char *Txt_No_INDEX;
extern const char *Txt_Type; extern const char *Txt_Type;
@ -2833,13 +2834,15 @@ static void Svy_ListSvyQuestions (struct Svy_Surveys *Surveys,
} }
/* Write index of question inside survey */ /* Write index of question inside survey */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"", HTM_TD_Begin ("class=\"%s CT %s\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Unsigned (SvyQst.QstInd + 1); HTM_Unsigned (SvyQst.QstInd + 1);
HTM_TD_End (); HTM_TD_End ();
/* Write the question type (row[2]) */ /* Write the question type (row[2]) */
HTM_TD_Begin ("class=\"DAT_SMALL CT %s\"", HTM_TD_Begin ("class=\"%s CT %s\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
HTM_Txt (Txt_SURVEY_STR_ANSWER_TYPES[SvyQst.AnswerType]); HTM_Txt (Txt_SURVEY_STR_ANSWER_TYPES[SvyQst.AnswerType]);
HTM_TD_End (); HTM_TD_End ();

View File

@ -509,6 +509,7 @@ static void Tag_PutIconDisable (long TagCod,const char *TagTxt)
void Tag_GetAndWriteTagsQst (long QstCod) void Tag_GetAndWriteTagsQst (long QstCod)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *Txt_no_tags; extern const char *Txt_no_tags;
unsigned NumTags; unsigned NumTags;
unsigned NumTag; unsigned NumTag;
@ -518,7 +519,8 @@ void Tag_GetAndWriteTagsQst (long QstCod)
if ((NumTags = Tag_DB_GetTagsQst (&mysql_res,QstCod))) if ((NumTags = Tag_DB_GetTagsQst (&mysql_res,QstCod)))
{ {
/***** Write the tags *****/ /***** Write the tags *****/
HTM_UL_Begin ("class=\"TEST_TAG_LIST DAT_SMALL\""); HTM_UL_Begin ("class=\"TEST_TAG_LIST %s\"",
The_ClassDatSmall[Gbl.Prefs.Theme]);
for (NumTag = 0; for (NumTag = 0;
NumTag < NumTags; NumTag < NumTags;
NumTag++) NumTag++)
@ -532,7 +534,8 @@ void Tag_GetAndWriteTagsQst (long QstCod)
} }
else else
{ {
HTM_SPAN_Begin ("class=\"DAT_SMALL\""); HTM_SPAN_Begin ("class=\"%s\"",
The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_TxtF ("(%s)",Txt_no_tags); HTM_TxtF ("(%s)",Txt_no_tags);
HTM_SPAN_End (); HTM_SPAN_End ();
} }

View File

@ -285,13 +285,16 @@ static void TstPrn_WriteQstAndAnsToFill (struct TstPrn_PrintedQuestion *PrintedQ
unsigned QstInd, unsigned QstInd,
struct Qst_Question *Question) struct Qst_Question *Question)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
/***** Begin row *****/ /***** Begin row *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/***** Number of question and answer type *****/ /***** Number of question and answer type *****/
HTM_TD_Begin ("class=\"RT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"RT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]);
Qst_WriteNumQst (QstInd + 1,"BIG_INDEX"); Qst_WriteNumQst (QstInd + 1,"BIG_INDEX");
Qst_WriteAnswerType (Question->Answer.Type,"DAT_SMALL"); Qst_WriteAnswerType (Question->Answer.Type,
The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_TD_End (); HTM_TD_End ();
/***** Stem, media and answers *****/ /***** Stem, media and answers *****/
@ -588,6 +591,7 @@ static void TstPrn_WriteQstAndAnsExam (struct UsrData *UsrDat,
bool QuestionExists, bool QuestionExists,
unsigned Visibility) unsigned Visibility)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *Txt_Score; extern const char *Txt_Score;
extern const char *Txt_Question_removed; extern const char *Txt_Question_removed;
extern const char *Txt_Question_modified; extern const char *Txt_Question_modified;
@ -636,7 +640,8 @@ static void TstPrn_WriteQstAndAnsExam (struct UsrData *UsrDat,
HTM_TD_Begin ("class=\"RT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"RT %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]);
Qst_WriteNumQst (QstInd + 1,"BIG_INDEX"); Qst_WriteNumQst (QstInd + 1,"BIG_INDEX");
if (QuestionUneditedAfterExam) if (QuestionUneditedAfterExam)
Qst_WriteAnswerType (Question->Answer.Type,"DAT_SMALL"); Qst_WriteAnswerType (Question->Answer.Type,
The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_TD_End (); HTM_TD_End ();
/***** Stem, media and answers *****/ /***** Stem, media and answers *****/
@ -668,7 +673,7 @@ static void TstPrn_WriteQstAndAnsExam (struct UsrData *UsrDat,
/* Write score retrieved from database */ /* Write score retrieved from database */
if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE]) if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE])
{ {
HTM_DIV_Begin ("class=\"DAT_SMALL LM\""); HTM_DIV_Begin ("class=\"%s LM\"",The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_TxtColonNBSP (Txt_Score); HTM_TxtColonNBSP (Txt_Score);
HTM_SPAN_Begin ("class=\"%s\"", HTM_SPAN_Begin ("class=\"%s\"",
PrintedQuestions[QstInd].StrAnswers[0] ? PrintedQuestions[QstInd].StrAnswers[0] ?
@ -1620,14 +1625,15 @@ static void TstPrn_WriteTxtAnsPrint (struct UsrData *UsrDat,
static void TstPrn_WriteHeadUserCorrect (struct UsrData *UsrDat) static void TstPrn_WriteHeadUserCorrect (struct UsrData *UsrDat)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *Txt_User[Usr_NUM_SEXS]; extern const char *Txt_User[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];
HTM_TD_Begin ("class=\"DAT_SMALL CM\""); HTM_TD_Begin ("class=\"%s CM\"",The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_Txt (Txt_User[UsrDat->Sex]); HTM_Txt (Txt_User[UsrDat->Sex]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT_SMALL CM\""); HTM_TD_Begin ("class=\"%s CM\"",The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_Txt (Txt_ROLES_PLURAL_Abc[Rol_TCH][Usr_SEX_UNKNOWN]); HTM_Txt (Txt_ROLES_PLURAL_Abc[Rol_TCH][Usr_SEX_UNKNOWN]);
HTM_TD_End (); HTM_TD_End ();
} }

View File

@ -221,6 +221,105 @@ const char *The_ClassDatLight[The_NUM_THEMES] =
[The_THEME_DARK ] = "DAT_LIGHT_DARK", [The_THEME_DARK ] = "DAT_LIGHT_DARK",
}; };
const char *The_ClassDatSmall[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_SMALL_WHITE",
[The_THEME_GREY ] = "DAT_SMALL_GREY",
[The_THEME_PURPLE] = "DAT_SMALL_PURPLE",
[The_THEME_BLUE ] = "DAT_SMALL_BLUE",
[The_THEME_YELLOW] = "DAT_SMALL_YELLOW",
[The_THEME_PINK ] = "DAT_SMALL_PINK",
[The_THEME_DARK ] = "DAT_SMALL_DARK",
};
const char *The_ClassDatSmallLight[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_SMALL_LIGHT_WHITE",
[The_THEME_GREY ] = "DAT_SMALL_LIGHT_GREY",
[The_THEME_PURPLE] = "DAT_SMALL_LIGHT_PURPLE",
[The_THEME_BLUE ] = "DAT_SMALL_LIGHT_BLUE",
[The_THEME_YELLOW] = "DAT_SMALL_LIGHT_YELLOW",
[The_THEME_PINK ] = "DAT_SMALL_LIGHT_PINK",
[The_THEME_DARK ] = "DAT_SMALL_LIGHT_DARK",
};
const char *The_ClassDatSmallStrong[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_SMALL_STRONG_WHITE",
[The_THEME_GREY ] = "DAT_SMALL_STRONG_GREY",
[The_THEME_PURPLE] = "DAT_SMALL_STRONG_PURPLE",
[The_THEME_BLUE ] = "DAT_SMALL_STRONG_BLUE",
[The_THEME_YELLOW] = "DAT_SMALL_STRONG_YELLOW",
[The_THEME_PINK ] = "DAT_SMALL_STRONG_PINK",
[The_THEME_DARK ] = "DAT_SMALL_STRONG_DARK",
};
const char *The_ClassDatSmallRed[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_SMALL_RED_WHITE",
[The_THEME_GREY ] = "DAT_SMALL_RED_GREY",
[The_THEME_PURPLE] = "DAT_SMALL_RED_PURPLE",
[The_THEME_BLUE ] = "DAT_SMALL_RED_BLUE",
[The_THEME_YELLOW] = "DAT_SMALL_RED_YELLOW",
[The_THEME_PINK ] = "DAT_SMALL_RED_PINK",
[The_THEME_DARK ] = "DAT_SMALL_RED_DARK",
};
const char *The_ClassDatSmallGreen[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_SMALL_GREEN_WHITE",
[The_THEME_GREY ] = "DAT_SMALL_GREEN_GREY",
[The_THEME_PURPLE] = "DAT_SMALL_GREEN_PURPLE",
[The_THEME_BLUE ] = "DAT_SMALL_GREEN_BLUE",
[The_THEME_YELLOW] = "DAT_SMALL_GREEN_YELLOW",
[The_THEME_PINK ] = "DAT_SMALL_GREEN_PINK",
[The_THEME_DARK ] = "DAT_SMALL_GREEN_DARK",
};
const char *The_ClassDatSmallBlue[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_SMALL_BLUE_WHITE",
[The_THEME_GREY ] = "DAT_SMALL_BLUE_GREY",
[The_THEME_PURPLE] = "DAT_SMALL_BLUE_PURPLE",
[The_THEME_BLUE ] = "DAT_SMALL_BLUE_BLUE",
[The_THEME_YELLOW] = "DAT_SMALL_BLUE_YELLOW",
[The_THEME_PINK ] = "DAT_SMALL_BLUE_PINK",
[The_THEME_DARK ] = "DAT_SMALL_BLUE_DARK",
};
const char *The_ClassDatSmallYellow[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_SMALL_YELLOW_WHITE",
[The_THEME_GREY ] = "DAT_SMALL_YELLOW_GREY",
[The_THEME_PURPLE] = "DAT_SMALL_YELLOW_PURPLE",
[The_THEME_BLUE ] = "DAT_SMALL_YELLOW_BLUE",
[The_THEME_YELLOW] = "DAT_SMALL_YELLOW_YELLOW",
[The_THEME_PINK ] = "DAT_SMALL_YELLOW_PINK",
[The_THEME_DARK ] = "DAT_SMALL_YELLOW_DARK",
};
const char *The_ClassDatSmallNoBR[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_SMALL_NOBR_WHITE",
[The_THEME_GREY ] = "DAT_SMALL_NOBR_GREY",
[The_THEME_PURPLE] = "DAT_SMALL_NOBR_PURPLE",
[The_THEME_BLUE ] = "DAT_SMALL_NOBR_BLUE",
[The_THEME_YELLOW] = "DAT_SMALL_NOBR_YELLOW",
[The_THEME_PINK ] = "DAT_SMALL_NOBR_PINK",
[The_THEME_DARK ] = "DAT_SMALL_NOBR_DARK",
};
const char *The_ClassDatSmallNoBRStrong[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "DAT_SMALL_NOBR_STRONG_WHITE",
[The_THEME_GREY ] = "DAT_SMALL_NOBR_STRONG_GREY",
[The_THEME_PURPLE] = "DAT_SMALL_NOBR_STRONG_PURPLE",
[The_THEME_BLUE ] = "DAT_SMALL_NOBR_STRONG_BLUE",
[The_THEME_YELLOW] = "DAT_SMALL_NOBR_STRONG_YELLOW",
[The_THEME_PINK ] = "DAT_SMALL_NOBR_STRONG_PINK",
[The_THEME_DARK ] = "DAT_SMALL_NOBR_STRONG_DARK",
};
const char *The_ClassInput[The_NUM_THEMES] = const char *The_ClassInput[The_NUM_THEMES] =
{ {
[The_THEME_WHITE ] = "INPUT_WHITE", [The_THEME_WHITE ] = "INPUT_WHITE",

View File

@ -1303,6 +1303,7 @@ static void Tmt_TimeTableDrawCell (const struct Tmt_Timetable *Timetable,
long CrsCod,Tmt_IntervalType_t IntervalType,Tmt_ClassType_t ClassType, long CrsCod,Tmt_IntervalType_t IntervalType,Tmt_ClassType_t ClassType,
unsigned DurationNumIntervals,long GrpCod,const char *Info) unsigned DurationNumIntervals,long GrpCod,const char *Info)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *Tmt_DB_ClassType[Tmt_NUM_CLASS_TYPES]; extern const char *Tmt_DB_ClassType[Tmt_NUM_CLASS_TYPES];
extern const char *Txt_unknown_removed_course; extern const char *Txt_unknown_removed_course;
extern const char *Txt_TIMETABLE_CLASS_TYPES[Tmt_NUM_CLASS_TYPES]; extern const char *Txt_TIMETABLE_CLASS_TYPES[Tmt_NUM_CLASS_TYPES];
@ -1386,12 +1387,16 @@ static void Tmt_TimeTableDrawCell (const struct Tmt_Timetable *Timetable,
} }
if (ClassType == Tmt_FREE) if (ClassType == Tmt_FREE)
{ {
if (asprintf (&ClassStr,"%s%u",TimeTableClasses[ClassType],Interval % 4) < 0) if (asprintf (&ClassStr,"%s%u",
TimeTableClasses[ClassType],
Interval % 4) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (&ClassStr,"%s CM DAT_SMALL",TimeTableClasses[ClassType]) < 0) if (asprintf (&ClassStr,"%s %s CM",
TimeTableClasses[ClassType],
The_ClassDatSmall[Gbl.Prefs.Theme]) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
@ -1598,7 +1603,9 @@ static void Tmt_TimeTableDrawCell (const struct Tmt_Timetable *Timetable,
{ {
/***** Info *****/ /***** Info *****/
HTM_BR (); HTM_BR ();
HTM_LABEL_Begin ("for=\"TTInf%s\" class=\"DAT_SMALL\"",CellStr); HTM_LABEL_Begin ("for=\"TTInf%s\" class=\"%s\"",
CellStr,
The_ClassDatSmall[Gbl.Prefs.Theme]);
HTM_Txt (Txt_Info); HTM_Txt (Txt_Info);
HTM_LABEL_End (); HTM_LABEL_End ();
HTM_INPUT_TEXT ("TTInf",Tmt_MAX_CHARS_INFO,Info, HTM_INPUT_TEXT ("TTInf",Tmt_MAX_CHARS_INFO,Info,

View File

@ -2154,6 +2154,8 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
bool PutCheckBoxToSelectUsr,Rol_Role_t Role, bool PutCheckBoxToSelectUsr,Rol_Role_t Role,
struct SelectedUsrs *SelectedUsrs) struct SelectedUsrs *SelectedUsrs)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
extern const char *The_Colors[The_NUM_THEMES]; extern const char *The_Colors[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;
@ -2227,9 +2229,9 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
} }
/****** Write user's IDs ******/ /****** Write user's IDs ******/
HTM_TD_Begin ("class=\"%s LM %s\"", HTM_TD_Begin ("class=\"%s %s LM\"",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
BgColor); BgColor);
ID_WriteUsrIDs (UsrDat,NULL); ID_WriteUsrIDs (UsrDat,NULL);
HTM_TD_End (); HTM_TD_End ();
@ -2253,6 +2255,7 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
static void Usr_WriteRowGstAllData (struct UsrData *UsrDat) static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
static const char *ClassPhoto[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
{ {
[PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28", [PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28",
@ -2270,7 +2273,7 @@ static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
if (Gbl.Usrs.Listing.WithPhotos) if (Gbl.Usrs.Listing.WithPhotos)
{ {
/***** Show guest's photo *****/ /***** Show guest's photo *****/
HTM_TD_Begin ("class=\"LM %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s LM\"",Gbl.ColorRows[Gbl.RowEvenOdd]);
Pho_ShowUsrPhotoIfAllowed (UsrDat, Pho_ShowUsrPhotoIfAllowed (UsrDat,
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_NO_ZOOM, ClassPhoto[Gbl.Prefs.PhotoShape],Pho_NO_ZOOM,
false); false);
@ -2278,7 +2281,9 @@ static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
} }
/****** Write user's ID ******/ /****** Write user's ID ******/
HTM_TD_Begin ("class=\"DAT_SMALL LM %s\"",Gbl.ColorRows[Gbl.RowEvenOdd]); HTM_TD_Begin ("class=\"%s %s LM\"",
The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]);
ID_WriteUsrIDs (UsrDat,NULL); ID_WriteUsrIDs (UsrDat,NULL);
HTM_NBSP (); HTM_NBSP ();
HTM_TD_End (); HTM_TD_End ();
@ -2342,6 +2347,9 @@ static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames) static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
extern const char *The_Colors[The_NUM_THEMES];
static const char *ClassPhoto[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
{ {
[PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28", [PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28",
@ -2371,9 +2379,9 @@ static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
} }
/****** Write user's ID ******/ /****** Write user's ID ******/
HTM_TD_Begin ("class=\"%s LM %s\"", HTM_TD_Begin ("class=\"%s %s LM\"",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
ID_WriteUsrIDs (UsrDat,NULL); ID_WriteUsrIDs (UsrDat,NULL);
HTM_NBSP (); HTM_NBSP ();
@ -2453,6 +2461,9 @@ static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
static void Usr_WriteRowTchAllData (struct UsrData *UsrDat) static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
extern const char *The_Colors[The_NUM_THEMES];
static const char *ClassPhoto[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
{ {
[PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28", [PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28",
@ -2480,9 +2491,9 @@ static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
} }
/****** Write the user's ID ******/ /****** Write the user's ID ******/
HTM_TD_Begin ("class=\"%s LM %s\"", HTM_TD_Begin ("class=\"%s %s LM\"",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
ID_WriteUsrIDs (UsrDat,NULL); ID_WriteUsrIDs (UsrDat,NULL);
HTM_NBSP (); HTM_NBSP ();
@ -2534,6 +2545,9 @@ static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat) static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
extern const char *The_Colors[The_NUM_THEMES];
static const char *ClassPhoto[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
{ {
[PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28", [PhoSha_SHAPE_CIRCLE ] = "PHOTOC21x28",
@ -2563,9 +2577,9 @@ static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
} }
/****** Write the user's ID ******/ /****** Write the user's ID ******/
HTM_TD_Begin ("class=\"%s LM %s\"", HTM_TD_Begin ("class=\"%s %s LM\"",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? The_ClassDatSmallStrong[Gbl.Prefs.Theme] :
"DAT_SMALL", The_ClassDatSmall[Gbl.Prefs.Theme],
Gbl.ColorRows[Gbl.RowEvenOdd]); Gbl.ColorRows[Gbl.RowEvenOdd]);
ID_WriteUsrIDs (UsrDat,NULL); ID_WriteUsrIDs (UsrDat,NULL);
HTM_NBSP (); HTM_NBSP ();
@ -2643,15 +2657,18 @@ static void Usr_WriteUsrData (const char *BgColor,
const char *Data,const char *Link, const char *Data,const char *Link,
bool NonBreak,bool Accepted) bool NonBreak,bool Accepted)
{ {
extern const char *The_ClassDatSmall[The_NUM_THEMES];
extern const char *The_ClassDatSmallStrong[The_NUM_THEMES];
extern const char *The_ClassDatSmallNoBR[The_NUM_THEMES];
extern const char *The_ClassDatSmallNoBRStrong[The_NUM_THEMES];
extern const char *The_Colors[The_NUM_THEMES]; extern const char *The_Colors[The_NUM_THEMES];
/***** Begin table cell *****/ /***** Begin table cell *****/
HTM_TD_Begin ("class=\"%s_%s LM %s\"", HTM_TD_Begin ("class=\"%s LM %s\"",
Accepted ? (NonBreak ? "DAT_SMALL_NOBR_N" : Accepted ? (NonBreak ? The_ClassDatSmallNoBRStrong[Gbl.Prefs.Theme] :
"DAT_SMALL_N") : The_ClassDatSmallStrong[Gbl.Prefs.Theme]) :
(NonBreak ? "DAT_SMALL_NOBR" : (NonBreak ? The_ClassDatSmallNoBR[Gbl.Prefs.Theme] :
"DAT_SMALL"), The_ClassDatSmall[Gbl.Prefs.Theme]),
The_Colors[Gbl.Prefs.Theme],
BgColor); BgColor);
/***** Container to limit length *****/ /***** Container to limit length *****/
@ -2660,8 +2677,8 @@ static void Usr_WriteUsrData (const char *BgColor,
/***** Begin link *****/ /***** Begin link *****/
if (Link) if (Link)
HTM_A_Begin ("href=\"%s\" class=\"%s\" target=\"_blank\"", HTM_A_Begin ("href=\"%s\" class=\"%s\" target=\"_blank\"",
Link,Accepted ? "DAT_SMALL_NOBR_N" : Link,Accepted ? The_ClassDatSmallNoBRStrong[Gbl.Prefs.Theme] :
"DAT_SMALL_NOBR"); The_ClassDatSmallNoBR[Gbl.Prefs.Theme]);
/***** Write data *****/ /***** Write data *****/
HTM_Txt (Data); HTM_Txt (Data);
@ -6485,7 +6502,7 @@ void Usr_PutWhoIcon (Usr_Who_t Who)
{ {
extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES]; extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES];
extern const char *Txt_WHO[Usr_NUM_WHO]; extern const char *Txt_WHO[Usr_NUM_WHO];
static char *Icon[Usr_NUM_WHO] = static const char *Icon[Usr_NUM_WHO] =
{ {
[Usr_WHO_UNKNOWN ] = NULL, [Usr_WHO_UNKNOWN ] = NULL,
[Usr_WHO_ME ] = NULL, [Usr_WHO_ME ] = NULL,