Version 21.92: Apr 20, 2022 Default theme is white when printing.

This commit is contained in:
acanas 2022-04-20 22:56:58 +02:00
parent 003951946a
commit a283e2f272
37 changed files with 366 additions and 440 deletions

View File

@ -474,7 +474,7 @@ a:hover /* Default ==> underlined */
.BC_PINK {color:#ffc040;} .BC_PINK {color:#ffc040;}
.BC_DARK {color:#ffb42e;} .BC_DARK {color:#ffb42e;}
.BC_ICON .BC_ICO
{ {
display:inline-block; display:inline-block;
width:20px; width:20px;
@ -483,6 +483,15 @@ a:hover /* Default ==> underlined */
margin:-1px 0 1px 0; margin:-1px 0 1px 0;
} }
/* Creating filter from RGB: https://codepen.io/sosuke/pen/Pjoqqp */
.BC_ICO_WHITE {filter: invert(45%) sepia(0%) saturate(14%) hue-rotate(159deg) brightness(96%) contrast(89%);} /* #707070 */
.BC_ICO_GREY {filter: invert(61%) sepia(96%) saturate(366%) hue-rotate(352deg) brightness(103%) contrast(101%);} /* #ffb42e */
.BC_ICO_PURPLE {filter: invert(77%) sepia(91%) saturate(1669%) hue-rotate(327deg) brightness(110%) contrast(103%);} /* #ffc040 */
.BC_ICO_BLUE {filter: invert(77%) sepia(91%) saturate(1669%) hue-rotate(327deg) brightness(110%) contrast(103%);} /* #ffc040 */
.BC_ICO_YELLOW {filter: invert(61%) sepia(96%) saturate(366%) hue-rotate(352deg) brightness(103%) contrast(101%);} /* #ffb42e */
.BC_ICO_PINK {filter: invert(77%) sepia(91%) saturate(1669%) hue-rotate(327deg) brightness(110%) contrast(103%);} /* #ffc040 */
.BC_ICO_DARK {filter: invert(61%) sepia(96%) saturate(366%) hue-rotate(352deg) brightness(103%) contrast(101%);} /* #ffb42e */
/******** Big name of country, institution, center, degree or course *********/ /******** Big name of country, institution, center, degree or course *********/
#main_title #main_title
{ {
@ -584,6 +593,15 @@ a:hover /* Default ==> underlined */
.NOTIF_PINK {color:white; font-size:12pt; white-space:nowrap;} .NOTIF_PINK {color:white; font-size:12pt; white-space:nowrap;}
.NOTIF_DARK {color:#e0e0e0; font-size:12pt; white-space:nowrap;} .NOTIF_DARK {color:#e0e0e0; font-size:12pt; white-space:nowrap;}
/* Creating filter from RGB: https://codepen.io/sosuke/pen/Pjoqqp */
.NOTIF_ICO_WHITE {filter: invert(45%) sepia(0%) saturate(14%) hue-rotate(159deg) brightness(96%) contrast(89%);} /* #707070 */
.NOTIF_ICO_GREY {filter: invert(98%) sepia(44%) saturate(30%) hue-rotate(167deg) brightness(116%) contrast(76%);} /* #e0e0e0 */
.NOTIF_ICO_PURPLE {filter: invert(98%) sepia(44%) saturate(30%) hue-rotate(167deg) brightness(116%) contrast(76%);} /* #e0e0e0 */
.NOTIF_ICO_BLUE {filter: invert(100%) sepia(19%) saturate(4118%) hue-rotate(214deg) brightness(115%) contrast(100%);} /* #ffffff */
.NOTIF_ICO_YELLOW {filter: invert(89%) sepia(3%) saturate(180%) hue-rotate(251deg) brightness(79%) contrast(92%);} /* #b3b0b3 */
.NOTIF_ICO_PINK {filter: invert(100%) sepia(19%) saturate(4118%) hue-rotate(214deg) brightness(115%) contrast(100%);} /* #ffffff */
.NOTIF_ICO_DARK {filter: invert(98%) sepia(44%) saturate(30%) hue-rotate(167deg) brightness(116%) contrast(76%);} /* #e0e0e0 */
/******************* Layout (third heading row with tabs) ********************/ /******************* Layout (third heading row with tabs) ********************/
.HEAD_ROW_3_WHITE .HEAD_ROW_3_WHITE
{ {
@ -1952,37 +1970,37 @@ a:hover img.CENTER_PHOTO_SHOW
vertical-align:middle; vertical-align:middle;
} }
/* Creating filter from RGB: https://codepen.io/sosuke/pen/Pjoqqp */ /* Creating filter from RGB: https://codepen.io/sosuke/pen/Pjoqqp */
.BLACK_ICO_WHITE, .ICO_BLACK_WHITE,
.BLACK_ICO_GREY, .ICO_BLACK_GREY,
.BLACK_ICO_PURPLE, .ICO_BLACK_PURPLE,
.BLACK_ICO_BLUE, .ICO_BLACK_BLUE,
.BLACK_ICO_YELLOW, .ICO_BLACK_YELLOW,
.BLACK_ICO_PINK {filter: invert(26%) sepia(0%) saturate(1%) hue-rotate(288deg) brightness(97%) contrast(102%);} /* #404040 */ .ICO_BLACK_PINK {filter: invert(26%) sepia(0%) saturate(1%) hue-rotate(288deg) brightness(97%) contrast(102%);} /* #404040 */
.BLACK_ICO_DARK {filter: invert(92%) sepia(44%) saturate(2%) hue-rotate(176deg) brightness(110%) contrast(88%);} /* #f0f0f0 */ .ICO_BLACK_DARK {filter: invert(92%) sepia(44%) saturate(2%) hue-rotate(176deg) brightness(110%) contrast(88%);} /* #f0f0f0 */
.GREEN_ICO_WHITE, .ICO_GREEN_WHITE,
.GREEN_ICO_GREY, .ICO_GREEN_GREY,
.GREEN_ICO_PURPLE, .ICO_GREEN_PURPLE,
.GREEN_ICO_BLUE, .ICO_GREEN_BLUE,
.GREEN_ICO_YELLOW, .ICO_GREEN_YELLOW,
.GREEN_ICO_PINK {filter: invert(31%) sepia(16%) saturate(3727%) hue-rotate(60deg) brightness(94%) contrast(104%);} /* #246600 */ .ICO_GREEN_PINK {filter: invert(31%) sepia(16%) saturate(3727%) hue-rotate(60deg) brightness(94%) contrast(104%);} /* #246600 */
.GREEN_ICO_DARK {filter: invert(75%) sepia(13%) saturate(1915%) hue-rotate(46deg) brightness(89%) contrast(89%);} /* #80c040 */ .ICO_GREEN_DARK {filter: invert(75%) sepia(13%) saturate(1915%) hue-rotate(46deg) brightness(89%) contrast(89%);} /* #80c040 */
.RED_ICO_WHITE, .ICO_RED_WHITE,
.RED_ICO_GREY, .ICO_RED_GREY,
.RED_ICO_PURPLE, .ICO_RED_PURPLE,
.RED_ICO_BLUE, .ICO_RED_BLUE,
.RED_ICO_YELLOW, .ICO_RED_YELLOW,
.RED_ICO_PINK {filter: invert(8%) sepia(61%) saturate(5373%) hue-rotate(0deg) brightness(92%) contrast(114%);} /* #660000 */ .ICO_RED_PINK {filter: invert(8%) sepia(61%) saturate(5373%) hue-rotate(0deg) brightness(92%) contrast(114%);} /* #660000 */
.RED_ICO_DARK {filter: invert(51%) sepia(58%) saturate(1457%) hue-rotate(320deg) brightness(126%) contrast(104%);} /* #ff8080 */ .ICO_RED_DARK {filter: invert(51%) sepia(58%) saturate(1457%) hue-rotate(320deg) brightness(126%) contrast(104%);} /* #ff8080 */
.WHITE_ICO_WHITE, .ICO_WHITE_WHITE,
.WHITE_ICO_GREY, .ICO_WHITE_GREY,
.WHITE_ICO_PURPLE, .ICO_WHITE_PURPLE,
.WHITE_ICO_BLUE, .ICO_WHITE_BLUE,
.WHITE_ICO_YELLOW, .ICO_WHITE_YELLOW,
.WHITE_ICO_PINK {filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(194deg) brightness(106%) contrast(105%);} /* #ffffff */ .ICO_WHITE_PINK {filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(194deg) brightness(106%) contrast(105%);} /* #ffffff */
.WHITE_ICO_DARK {filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(194deg) brightness(106%) contrast(105%);} /* #ffffff */ .ICO_WHITE_DARK {filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(194deg) brightness(106%) contrast(105%);} /* #ffffff */
/********************************** Frame ************************************/ /********************************** Frame ************************************/
.FRAME_INLINE .FRAME_INLINE
@ -2904,8 +2922,22 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
.GRP_TITLE {color:#4d88a1; font-size:15pt; font-weight:bold;} .GRP_TITLE {color:#4d88a1; font-size:15pt; font-weight:bold;}
.ASG_TITLE {color:#4d88a1; font-size:15pt; font-weight:bold;} .ASG_TITLE_WHITE,
.ASG_TITLE_LIGHT {color:#afc4cc; font-size:15pt; font-weight:bold;} .ASG_TITLE_GREY,
.ASG_TITLE_PURPLE,
.ASG_TITLE_BLUE,
.ASG_TITLE_YELLOW,
.ASG_TITLE_PINK {color:#4d88a1; font-size:15pt; font-weight:bold;}
.ASG_TITLE_DARK {color:#afc4cc; font-size:15pt; font-weight:bold;}
.ASG_TITLE_LIGHT_WHITE,
.ASG_TITLE_LIGHT_GREY,
.ASG_TITLE_LIGHT_PURPLE,
.ASG_TITLE_LIGHT_BLUE,
.ASG_TITLE_LIGHT_YELLOW,
.ASG_TITLE_LIGHT_PINK {color:rgba( 77,136,161,0.3); font-size:15pt; font-weight:bold;}
.ASG_TITLE_LIGHT_DARK {color:rgba(175,196,204,0.3); font-size:15pt; font-weight:bold;}
.ASG_LABEL {color:#4d88a1; font-size:13pt;} .ASG_LABEL {color:#4d88a1; font-size:13pt;}
.ASG_LABEL_LIGHT {color:#afc4cc; font-size:13pt;} .ASG_LABEL_LIGHT {color:#afc4cc; font-size:13pt;}
.ASG_GRP {color:#4d88a1; font-size:12pt;} .ASG_GRP {color:#4d88a1; font-size:12pt;}
@ -4407,13 +4439,13 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
.MSG_AUT_NEW_PINK {color:#4d88a1; font-size:11pt; font-weight:bold;} .MSG_AUT_NEW_PINK {color:#4d88a1; font-size:11pt; font-weight:bold;}
.MSG_AUT_NEW_DARK {color:#afc4cc; font-size:11pt; font-weight:bold;} .MSG_AUT_NEW_DARK {color:#afc4cc; font-size:11pt; font-weight:bold;}
.MSG_AUT_REM_WHITE, .MSG_AUT_LIGHT_WHITE,
.MSG_AUT_REM_GREY, .MSG_AUT_LIGHT_GREY,
.MSG_AUT_REM_PURPLE, .MSG_AUT_LIGHT_PURPLE,
.MSG_AUT_REM_BLUE, .MSG_AUT_LIGHT_BLUE,
.MSG_AUT_REM_YELLOW, .MSG_AUT_LIGHT_YELLOW,
.MSG_AUT_REM_PINK {color:#afc4cc; font-size:11pt;} .MSG_AUT_LIGHT_PINK {color:rgba( 77,136,161,0.3); font-size:11pt;}
.MSG_AUT_REM_DARK {color:#4d88a1; font-size:11pt;} .MSG_AUT_LIGHT_DARK {color:rgba(175,196,204,0.3); font-size:11pt;}
.MSG_DATE {color:#4d88a1; font-size:11pt;} .MSG_DATE {color:#4d88a1; font-size:11pt;}
.MSG_DATE_NEW {color:#4d88a1; font-size:11pt; font-weight:bold;} .MSG_DATE_NEW {color:#4d88a1; font-size:11pt; font-weight:bold;}

View File

@ -1730,7 +1730,7 @@ function disableDetailedClicks () {
/*****************************************************************************/ /*****************************************************************************/
function Cal_DrawCalendar (id,FirstDayOfWeek, function Cal_DrawCalendar (id,FirstDayOfWeek,
TimeUTC,CurrentPlcCod,PrintView,Theme, TimeUTC,CurrentPlcCod,PrintView,ColorSuffix,
CGI,FormGoToCalendarParams,FormEventParams) { CGI,FormGoToCalendarParams,FormEventParams) {
var StartingMonth = [ // Calendar starts one row before current month var StartingMonth = [ // Calendar starts one row before current month
10, // January --> October 10, // January --> October
@ -1776,7 +1776,7 @@ function Cal_DrawCalendar (id,FirstDayOfWeek,
DrawMonth (MonthId,FirstDayOfWeek, DrawMonth (MonthId,FirstDayOfWeek,
Year,Month, Year,Month,
CurrentMonth,CurrentDay, CurrentMonth,CurrentDay,
CurrentPlcCod,true,PrintView,Theme, CurrentPlcCod,true,PrintView,ColorSuffix,
CGI,FormGoToCalendarParams,FormEventParams); CGI,FormGoToCalendarParams,FormEventParams);
Gbl_HTMLContent += '</td>'; Gbl_HTMLContent += '</td>';
if (++Month == 13) { if (++Month == 13) {
@ -1795,7 +1795,7 @@ function Cal_DrawCalendar (id,FirstDayOfWeek,
/***************************** Draw current month ****************************/ /***************************** Draw current month ****************************/
/*****************************************************************************/ /*****************************************************************************/
function DrawCurrentMonth (id,FirstDayOfWeek,TimeUTC,CurrentPlcCod,Theme, function DrawCurrentMonth (id,FirstDayOfWeek,TimeUTC,CurrentPlcCod,ColorSuffix,
CGI,FormGoToCalendarParams,FormEventParams) { CGI,FormGoToCalendarParams,FormEventParams) {
var d = new Date(); var d = new Date();
d.setTime(TimeUTC * 1000); d.setTime(TimeUTC * 1000);
@ -1806,7 +1806,7 @@ function DrawCurrentMonth (id,FirstDayOfWeek,TimeUTC,CurrentPlcCod,Theme,
DrawMonth (id,FirstDayOfWeek, DrawMonth (id,FirstDayOfWeek,
Year,Month, Year,Month,
Month,CurrentDay, Month,CurrentDay,
CurrentPlcCod,false,false,Theme, CurrentPlcCod,false,false,ColorSuffix,
CGI,FormGoToCalendarParams,FormEventParams); CGI,FormGoToCalendarParams,FormEventParams);
document.getElementById(id).innerHTML = Gbl_HTMLContent; document.getElementById(id).innerHTML = Gbl_HTMLContent;
} }
@ -1820,7 +1820,7 @@ function DrawCurrentMonth (id,FirstDayOfWeek,TimeUTC,CurrentPlcCod,Theme,
function DrawMonth (id,FirstDayOfWeek, function DrawMonth (id,FirstDayOfWeek,
YearToDraw,MonthToDraw, YearToDraw,MonthToDraw,
CurrentMonth,CurrentDay, CurrentMonth,CurrentDay,
CurrentPlcCod,DrawingCalendar,PrintView,Theme, CurrentPlcCod,DrawingCalendar,PrintView,ColorSuffix,
CGI,FormGoToCalendarParams,FormEventParams) { CGI,FormGoToCalendarParams,FormEventParams) {
var Hld_HOLIDAY = 0; var Hld_HOLIDAY = 0;
var Hld_NON_SCHOOL_PERIOD = 1; var Hld_NON_SCHOOL_PERIOD = 1;
@ -1873,13 +1873,13 @@ function DrawMonth (id,FirstDayOfWeek,
/***** Month name *****/ /***** Month name *****/
if (DrawingCalendar) if (DrawingCalendar)
Gbl_HTMLContent += '<div class="MONTH MONTH_' + Colors[Theme] + '">'; Gbl_HTMLContent += '<div class="MONTH MONTH_' + ColorSuffix + '">';
else { else {
FormId = id + '_show_calendar'; FormId = id + '_show_calendar';
Gbl_HTMLContent += '<form method="post" action="' + CGI + '" id="' + FormId + '">' + Gbl_HTMLContent += '<form method="post" action="' + CGI + '" id="' + FormId + '">' +
FormGoToCalendarParams + FormGoToCalendarParams +
'<div class="MONTH">' + '<div class="MONTH">' +
'<a href="" class="MONTH_' + Colors[Theme] + '<a href="" class="MONTH_' + ColorSuffix +
'" onclick="document.getElementById(\'' + FormId + '" onclick="document.getElementById(\'' + FormId +
'\').submit();return false;">'; '\').submit();return false;">';
} }
@ -1893,8 +1893,8 @@ function DrawMonth (id,FirstDayOfWeek,
Gbl_HTMLContent += '<table class="MONTH_TABLE_DAYS">' + '<tr>'; Gbl_HTMLContent += '<table class="MONTH_TABLE_DAYS">' + '<tr>';
for (DayOfWeek = 0; DayOfWeek < 7; DayOfWeek++) for (DayOfWeek = 0; DayOfWeek < 7; DayOfWeek++)
Gbl_HTMLContent += '<td class="' + Gbl_HTMLContent += '<td class="' +
((DayOfWeek == 6 - FirstDayOfWeek) ? 'DAY DAY_NO_WRK_HEAD_' + Colors[Theme] : ((DayOfWeek == 6 - FirstDayOfWeek) ? 'DAY DAY_NO_WRK_HEAD_' + ColorSuffix :
'DAY DAY_WRK_HEAD_' + Colors[Theme]) + 'DAY DAY_WRK_HEAD_' + ColorSuffix) +
'">' + '">' +
DAYS_CAPS[(DayOfWeek + FirstDayOfWeek) % 7] + DAYS_CAPS[(DayOfWeek + FirstDayOfWeek) % 7] +
'</td>'; '</td>';
@ -1911,8 +1911,8 @@ function DrawMonth (id,FirstDayOfWeek,
DayOfWeek < 7; DayOfWeek < 7;
DayOfWeek++) { DayOfWeek++) {
/***** Set class for day being drawn *****/ /***** Set class for day being drawn *****/
ClassForDay = ((Mon == MonthToDraw) ? 'DAY_WRK_' + Colors[Theme] : ClassForDay = ((Mon == MonthToDraw) ? 'DAY_WRK_' + ColorSuffix :
'DAY_WRK_LIGHT_' + Colors[Theme]); 'DAY_WRK_LIGHT_' + ColorSuffix);
TextForDay = ''; TextForDay = '';
/* Check if day is a holiday or a school day */ /* Check if day is a holiday or a school day */
@ -1929,16 +1929,16 @@ function DrawMonth (id,FirstDayOfWeek,
switch (Hlds[NumHld].HldTyp) { switch (Hlds[NumHld].HldTyp) {
case Hld_HOLIDAY: case Hld_HOLIDAY:
if (Hlds[NumHld].StartDate == YYYYMMDD) { // If start date == date being drawn if (Hlds[NumHld].StartDate == YYYYMMDD) { // If start date == date being drawn
ClassForDay = ((Mon == MonthToDraw) ? 'DAY_HLD_' + Colors[Theme] : ClassForDay = ((Mon == MonthToDraw) ? 'DAY_HLD_' + ColorSuffix :
'DAY_HLD_LIGHT_' + Colors[Theme]); 'DAY_HLD_LIGHT_' + ColorSuffix);
TextForDay = Hlds[NumHld].Name; TextForDay = Hlds[NumHld].Name;
ContinueSearching = false; ContinueSearching = false;
} }
break; break;
case Hld_NON_SCHOOL_PERIOD: case Hld_NON_SCHOOL_PERIOD:
if (Hlds[NumHld].EndDate >= YYYYMMDD) { // If start date <= date being drawn <= end date if (Hlds[NumHld].EndDate >= YYYYMMDD) { // If start date <= date being drawn <= end date
ClassForDay = ((Mon == MonthToDraw) ? 'DAY_NO_WORK_' + Colors[Theme] : ClassForDay = ((Mon == MonthToDraw) ? 'DAY_NO_WORK_' + ColorSuffix :
'DAY_NO_WORK_LIGHT_' + Colors[Theme]); 'DAY_NO_WORK_LIGHT_' + ColorSuffix);
TextForDay = Hlds[NumHld].Name; TextForDay = Hlds[NumHld].Name;
} }
break; break;
@ -1947,8 +1947,8 @@ function DrawMonth (id,FirstDayOfWeek,
/* Day being drawn is sunday? */ /* Day being drawn is sunday? */
if (DayOfWeek == 6 - FirstDayOfWeek) // All the sundays are holidays if (DayOfWeek == 6 - FirstDayOfWeek) // All the sundays are holidays
ClassForDay = (Mon == MonthToDraw) ? 'DAY_HLD_' + Colors[Theme] : ClassForDay = (Mon == MonthToDraw) ? 'DAY_HLD_' + ColorSuffix :
'DAY_HLD_LIGHT_' + Colors[Theme]; 'DAY_HLD_LIGHT_' + ColorSuffix;
/* Date being drawn is today? */ /* Date being drawn is today? */
IsToday = (Yea == YearToDraw && IsToday = (Yea == YearToDraw &&

View File

@ -180,7 +180,7 @@ void MFU_ShowMyMFUActions (void)
void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions) void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions)
{ {
extern const char *Hlp_ANALYTICS_Frequent; extern const char *Hlp_ANALYTICS_Frequent;
extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES]; extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
extern const char *Txt_My_frequent_actions; extern const char *Txt_My_frequent_actions;
extern const char *Txt_TABS_TXT[Tab_NUM_TABS]; extern const char *Txt_TABS_TXT[Tab_NUM_TABS];
unsigned NumAct; unsigned NumAct;
@ -189,6 +189,7 @@ void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions)
char TabStr[MFU_MAX_BYTES_TAB + 1]; char TabStr[MFU_MAX_BYTES_TAB + 1];
char MenuStr[MFU_MAX_BYTES_MENU + 1]; char MenuStr[MFU_MAX_BYTES_MENU + 1];
char TabMenuStr[MFU_MAX_BYTES_TAB + 6 + MFU_MAX_BYTES_MENU + 1]; char TabMenuStr[MFU_MAX_BYTES_TAB + 6 + MFU_MAX_BYTES_MENU + 1];
char URLIconSet[PATH_MAX + 1];
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Txt_My_frequent_actions, Box_BoxBegin (NULL,Txt_My_frequent_actions,
@ -221,9 +222,11 @@ void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions)
HTM_BUTTON_Submit_Begin (TabMenuStr, HTM_BUTTON_Submit_Begin (TabMenuStr,
"class=\"BT_LINK FORM_IN_%s NOWRAP\"", "class=\"BT_LINK FORM_IN_%s NOWRAP\"",
The_GetSuffix ()); The_GetSuffix ());
HTM_IMG (Gbl.Prefs.URLIconSet,Act_GetIcon (Action),MenuStr, snprintf (URLIconSet,sizeof (URLIconSet),"%s/%s",
"class=\"%s\"", Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]);
Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); HTM_IMG (URLIconSet,Act_GetIcon (Action),MenuStr,
"class=\"ICO_%s_%s\"",
Ico_GetPreffix (Ico_BLACK),The_GetSuffix ());
HTM_TxtF ("&nbsp;%s",TabMenuStr); HTM_TxtF ("&nbsp;%s",TabMenuStr);
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
@ -247,7 +250,7 @@ void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions)
void MFU_WriteSmallMFUActions (struct MFU_ListMFUActions *ListMFUActions) void MFU_WriteSmallMFUActions (struct MFU_ListMFUActions *ListMFUActions)
{ {
extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES]; extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
extern const char *Txt_My_frequent_actions; extern const char *Txt_My_frequent_actions;
extern const char *Txt_Frequent_ACTIONS; extern const char *Txt_Frequent_ACTIONS;
extern const char *Txt_TABS_TXT[Tab_NUM_TABS]; extern const char *Txt_TABS_TXT[Tab_NUM_TABS];
@ -257,6 +260,7 @@ void MFU_WriteSmallMFUActions (struct MFU_ListMFUActions *ListMFUActions)
char TabStr[MFU_MAX_BYTES_TAB + 1]; char TabStr[MFU_MAX_BYTES_TAB + 1];
char MenuStr[MFU_MAX_BYTES_MENU + 1]; char MenuStr[MFU_MAX_BYTES_MENU + 1];
char TabMenuStr[MFU_MAX_BYTES_TAB + 6 + MFU_MAX_BYTES_MENU + 1]; char TabMenuStr[MFU_MAX_BYTES_TAB + 6 + MFU_MAX_BYTES_MENU + 1];
char URLIconSet[PATH_MAX + 1];
/***** Begin div and link *****/ /***** Begin div and link *****/
HTM_DIV_Begin ("id=\"MFU_actions\" class=\"MFU_%s\"", HTM_DIV_Begin ("id=\"MFU_actions\" class=\"MFU_%s\"",
@ -289,9 +293,11 @@ void MFU_WriteSmallMFUActions (struct MFU_ListMFUActions *ListMFUActions)
HTM_LI_Begin ("class=\"ICO_HIGHLIGHT\""); HTM_LI_Begin ("class=\"ICO_HIGHLIGHT\"");
Frm_BeginForm (Action); Frm_BeginForm (Action);
HTM_BUTTON_Submit_Begin (TabMenuStr,"class=\"BT_LINK\""); HTM_BUTTON_Submit_Begin (TabMenuStr,"class=\"BT_LINK\"");
HTM_IMG (Gbl.Prefs.URLIconSet,Act_GetIcon (Action),MenuStr, snprintf (URLIconSet,sizeof (URLIconSet),"%s/%s",
"class=\"%s\"", Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]);
Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); HTM_IMG (URLIconSet,Act_GetIcon (Action),MenuStr,
"class=\"ICO_%s_%s\"",
Ico_GetPreffix (Ico_BLACK),The_GetSuffix ());
HTM_TxtF ("&nbsp;%s",MenuStr); HTM_TxtF ("&nbsp;%s",MenuStr);
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();

View File

@ -842,9 +842,10 @@ static void Agd_ShowOneEvent (struct Agd_Agenda *Agenda,
} }
/* Event */ /* Event */
HTM_TD_Begin ("class=\"%s LT %s\"", HTM_TD_Begin ("class=\"LT %s_%s %s\"",
AgdEvent.Hidden ? "ASG_TITLE_LIGHT" : AgdEvent.Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE", "ASG_TITLE",
The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
HTM_ARTICLE_Begin (Anchor); HTM_ARTICLE_Begin (Anchor);
HTM_Txt (AgdEvent.Event); HTM_Txt (AgdEvent.Event);
@ -853,8 +854,10 @@ static void Agd_ShowOneEvent (struct Agd_Agenda *Agenda,
/* Location */ /* Location */
HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ()); HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ());
HTM_DIV_Begin ("class=\"%s\"",AgdEvent.Hidden ? "ASG_TITLE_LIGHT" : HTM_DIV_Begin ("class=\"%s_%s\"",
"ASG_TITLE"); AgdEvent.Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE",
The_GetSuffix ());
HTM_Txt (AgdEvent.Location); HTM_Txt (AgdEvent.Location);
HTM_DIV_End (); HTM_DIV_End ();
HTM_TD_End (); HTM_TD_End ();

View File

@ -457,13 +457,15 @@ static void Asg_ShowOneAssignment (struct Asg_Assignments *Assignments,
/* Assignment title */ /* Assignment title */
if (PrintView) if (PrintView)
HTM_TD_Begin ("class=\"%s LT\"", HTM_TD_Begin ("class=\"LT %s_%s\"",
Asg.Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE");
else
HTM_TD_Begin ("class=\"%s LT %s\"",
Asg.Hidden ? "ASG_TITLE_LIGHT" : Asg.Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE", "ASG_TITLE",
The_GetSuffix ());
else
HTM_TD_Begin ("class=\"LT %s_%s %s\"",
Asg.Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE",
The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
HTM_ARTICLE_Begin (Anchor); HTM_ARTICLE_Begin (Anchor);
HTM_Txt (Asg.Title); HTM_Txt (Asg.Title);

View File

@ -515,13 +515,15 @@ static void Att_ShowOneAttEvent (struct Att_Events *Events,
/* Attendance event title */ /* Attendance event title */
if (ShowOnlyThisAttEventComplete) if (ShowOnlyThisAttEventComplete)
HTM_TD_Begin ("class=\"%s LT\"", HTM_TD_Begin ("class=\"LT %s_%s\"",
Event->Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE");
else
HTM_TD_Begin ("class=\"%s LT %s\"",
Event->Hidden ? "ASG_TITLE_LIGHT" : Event->Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE", "ASG_TITLE",
The_GetSuffix ());
else
HTM_TD_Begin ("class=\"LT %s_%s %s\"",
Event->Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE",
The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
HTM_ARTICLE_Begin (Anchor); HTM_ARTICLE_Begin (Anchor);
Att_PutLinkAttEvent (Event,Txt_View_event,Event->Title); Att_PutLinkAttEvent (Event,Txt_View_event,Event->Title);
@ -530,13 +532,15 @@ static void Att_ShowOneAttEvent (struct Att_Events *Events,
/* Number of students in this event */ /* Number of students in this event */
if (ShowOnlyThisAttEventComplete) if (ShowOnlyThisAttEventComplete)
HTM_TD_Begin ("class=\"%s RT\"", HTM_TD_Begin ("class=\"RT %s_%s\"",
Event->Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE");
else
HTM_TD_Begin ("class=\"%s RT %s\"",
Event->Hidden ? "ASG_TITLE_LIGHT" : Event->Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE", "ASG_TITLE",
The_GetSuffix ());
else
HTM_TD_Begin ("class=\"RT %s_%s %s\"",
Event->Hidden ? "ASG_TITLE_LIGHT" :
"ASG_TITLE",
The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
HTM_Unsigned (Event->NumStdsTotal); HTM_Unsigned (Event->NumStdsTotal);
HTM_TD_End (); HTM_TD_End ();

View File

@ -25,8 +25,10 @@
/********************************* Headers ***********************************/ /********************************* Headers ***********************************/
/*****************************************************************************/ /*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <stdbool.h> // For boolean type #include <stdbool.h> // For boolean type
#include <stdlib.h> // For malloc and free #include <stdlib.h> // For malloc and free
#include <stdio.h> // For asprintf
#include "swad_action.h" #include "swad_action.h"
#include "swad_box.h" #include "swad_box.h"
@ -82,42 +84,32 @@ void Box_BoxBegin (const char *Width,const char *Title,
void (*FunctionToDrawContextualIcons) (void *Args),void *Args, void (*FunctionToDrawContextualIcons) (void *Args),void *Args,
const char *HelpLink,Box_Closable_t Closable) const char *HelpLink,Box_Closable_t Closable)
{ {
static const char *BgColor[The_NUM_THEMES] = char *ClassFrame;
{
[The_THEME_WHITE ] = "FRAME FRAME_WHITE",
[The_THEME_GREY ] = "FRAME FRAME_GREY",
[The_THEME_PURPLE] = "FRAME FRAME_PURPLE",
[The_THEME_BLUE ] = "FRAME FRAME_BLUE",
[The_THEME_YELLOW] = "FRAME FRAME_YELLOW",
[The_THEME_PINK ] = "FRAME FRAME_PINK",
[The_THEME_DARK ] = "FRAME FRAME_DARK",
};
/***** Begin box *****/
if (asprintf (&ClassFrame,"FRAME FRAME_%s",The_GetSuffix ()) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxInternalBegin (Width,Title, Box_BoxInternalBegin (Width,Title,
FunctionToDrawContextualIcons,Args, FunctionToDrawContextualIcons,Args,
HelpLink,Closable, HelpLink,Closable,
BgColor[Gbl.Prefs.Theme]); ClassFrame);
free (ClassFrame);
} }
void Box_BoxShadowBegin (const char *Width,const char *Title, void Box_BoxShadowBegin (const char *Width,const char *Title,
void (*FunctionToDrawContextualIcons) (void *Args),void *Args, void (*FunctionToDrawContextualIcons) (void *Args),void *Args,
const char *HelpLink) const char *HelpLink)
{ {
static const char *BgColor[The_NUM_THEMES] = char *ClassFrame;
{
[The_THEME_WHITE ] = "FRAME_SHADOW FRAME_SHADOW_WHITE",
[The_THEME_GREY ] = "FRAME_SHADOW FRAME_SHADOW_GREY",
[The_THEME_PURPLE] = "FRAME_SHADOW FRAME_SHADOW_PURPLE",
[The_THEME_BLUE ] = "FRAME_SHADOW FRAME_SHADOW_BLUE",
[The_THEME_YELLOW] = "FRAME_SHADOW FRAME_SHADOW_YELLOW",
[The_THEME_PINK ] = "FRAME_SHADOW FRAME_SHADOW_PINK",
[The_THEME_DARK ] = "FRAME_SHADOW FRAME_SHADOW_DARK",
};
/***** Begin box *****/
if (asprintf (&ClassFrame,"FRAME_SHADOW FRAME_SHADOW_%s",The_GetSuffix ()) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxInternalBegin (Width,Title, Box_BoxInternalBegin (Width,Title,
FunctionToDrawContextualIcons,Args, FunctionToDrawContextualIcons,Args,
HelpLink,Box_NOT_CLOSABLE, HelpLink,Box_NOT_CLOSABLE,
BgColor[Gbl.Prefs.Theme]); ClassFrame);
free (ClassFrame);
} }
// Return pointer to box id string // Return pointer to box id string

View File

@ -5141,7 +5141,6 @@ static void Brw_PutIconNewFileOrFolder (void)
static void Brw_PutIconFileWithLinkToViewMetadata (const struct FileMetadata *FileMetadata) static void Brw_PutIconFileWithLinkToViewMetadata (const struct FileMetadata *FileMetadata)
{ {
extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES];
extern const char *Txt_Link; extern const char *Txt_Link;
/***** Begin cell *****/ /***** Begin cell *****/
@ -5161,8 +5160,8 @@ static void Brw_PutIconFileWithLinkToViewMetadata (const struct FileMetadata *Fi
true); // Put link to view metadata true); // Put link to view metadata
else else
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"link.svg",Txt_Link, HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"link.svg",Txt_Link,
"class=\"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO16x16 %s\"", "class=\"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO16x16 ICO_%s_%s\"",
Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); Ico_GetPreffix (Ico_BLACK),The_GetSuffix ());
/***** End form *****/ /***** End form *****/
Frm_EndForm (); Frm_EndForm ();
@ -8511,16 +8510,6 @@ static void Brw_WriteBigLinkToDownloadFile (const char *URL,
extern const char *Txt_Check_marks_in_the_file; extern const char *Txt_Check_marks_in_the_file;
extern const char *Txt_Download; extern const char *Txt_Download;
extern const char *Txt_Link; extern const char *Txt_Link;
static const char *ClassFilename[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "FILENAME_BIG_WHITE",
[The_THEME_GREY ] = "FILENAME_BIG_GREY",
[The_THEME_PURPLE] = "FILENAME_BIG_PURPLE",
[The_THEME_BLUE ] = "FILENAME_BIG_BLUE",
[The_THEME_YELLOW] = "FILENAME_BIG_YELLOW",
[The_THEME_PINK ] = "FILENAME_BIG_PINK",
[The_THEME_DARK ] = "FILENAME_BIG_DARK",
};
const char *Title; const char *Title;
/***** On the screen a link will be shown to download the file *****/ /***** On the screen a link will be shown to download the file *****/
@ -8540,7 +8529,7 @@ static void Brw_WriteBigLinkToDownloadFile (const char *URL,
/* Begin link */ /* Begin link */
HTM_BUTTON_Submit_Begin (Txt_Check_marks_in_the_file, HTM_BUTTON_Submit_Begin (Txt_Check_marks_in_the_file,
"class=\"%s\"",ClassFilename[Gbl.Prefs.Theme]); "class=\"FILENAME_BIG_%s\"",The_GetSuffix ());
if (FileMetadata->FilFolLnk.Type == Brw_IS_FILE) if (FileMetadata->FilFolLnk.Type == Brw_IS_FILE)
Brw_PutIconFile (FileMetadata->FilFolLnk.Name, Brw_PutIconFile (FileMetadata->FilFolLnk.Name,
@ -8564,8 +8553,9 @@ static void Brw_WriteBigLinkToDownloadFile (const char *URL,
Txt_Download; Txt_Download;
/* Put anchor and filename */ /* Put anchor and filename */
HTM_A_Begin ("href=\"%s\" class=\"%s\" title=\"%s\" target=\"_blank\"", HTM_A_Begin ("href=\"%s\" title=\"%s\" target=\"_blank\""
URL,ClassFilename[Gbl.Prefs.Theme],Title); " class=\"FILENAME_BIG_%s\"",
URL,Title,The_GetSuffix ());
if (FileMetadata->FilFolLnk.Type == Brw_IS_FILE) if (FileMetadata->FilFolLnk.Type == Brw_IS_FILE)
Brw_PutIconFile (FileMetadata->FilFolLnk.Name, Brw_PutIconFile (FileMetadata->FilFolLnk.Name,
"ICO40x40", "ICO40x40",

View File

@ -217,11 +217,11 @@ void Cal_DrawCurrentMonth (void)
/* Write script to draw the month */ /* Write script to draw the month */
HTM_SCRIPT_Begin (NULL,NULL); HTM_SCRIPT_Begin (NULL,NULL);
HTM_Txt ("\tGbl_HTMLContent = '';"); HTM_Txt ("\tGbl_HTMLContent = '';");
HTM_TxtF ("\tDrawCurrentMonth ('CurrentMonth',%u,%ld,%ld,%u,'%s/%s',", HTM_TxtF ("\tDrawCurrentMonth ('CurrentMonth',%u,%ld,%ld,'%s','%s/%s',",
Gbl.Prefs.FirstDayOfWeek, Gbl.Prefs.FirstDayOfWeek,
(long) Gbl.StartExecutionTimeUTC, (long) Gbl.StartExecutionTimeUTC,
Gbl.Hierarchy.Ctr.PlcCod, Gbl.Hierarchy.Ctr.PlcCod,
Gbl.Prefs.Theme, The_GetSuffix (),
Cfg_URL_SWAD_CGI,Lan_STR_LANG_ID[Gbl.Prefs.Language]); Cfg_URL_SWAD_CGI,Lan_STR_LANG_ID[Gbl.Prefs.Language]);
Frm_SetParamsForm (ParamsStr,ActSeeCal,true); Frm_SetParamsForm (ParamsStr,ActSeeCal,true);
HTM_TxtF ("'%s',",ParamsStr); HTM_TxtF ("'%s',",ParamsStr);
@ -286,13 +286,13 @@ static void Cal_DrawCalendar (Act_Action_t ActionSeeCalendar,
/* Write script to draw the month */ /* Write script to draw the month */
HTM_SCRIPT_Begin (NULL,NULL); HTM_SCRIPT_Begin (NULL,NULL);
HTM_Txt ("\tGbl_HTMLContent = '';"); HTM_Txt ("\tGbl_HTMLContent = '';");
HTM_TxtF ("\tCal_DrawCalendar('calendar',%u,%ld,%ld,%s,%u,'%s/%s',", HTM_TxtF ("\tCal_DrawCalendar('calendar',%u,%ld,%ld,%s,'%s','%s/%s',",
Gbl.Prefs.FirstDayOfWeek, Gbl.Prefs.FirstDayOfWeek,
(long) Gbl.StartExecutionTimeUTC, (long) Gbl.StartExecutionTimeUTC,
Gbl.Hierarchy.Ctr.PlcCod, Gbl.Hierarchy.Ctr.PlcCod,
PrintView ? "true" : PrintView ? "true" :
"false", "false",
Gbl.Prefs.Theme, The_GetSuffix (),
Cfg_URL_SWAD_CGI,Lan_STR_LANG_ID[Gbl.Prefs.Language]); Cfg_URL_SWAD_CGI,Lan_STR_LANG_ID[Gbl.Prefs.Language]);
Frm_SetParamsForm (ParamsStr,ActionSeeCalendar,true); Frm_SetParamsForm (ParamsStr,ActionSeeCalendar,true);
HTM_TxtF ("'%s',",ParamsStr); HTM_TxtF ("'%s',",ParamsStr);

View File

@ -930,16 +930,6 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams,
[Cfe_FORM_VIEW ][Cfe_HIDDEN_CALL_FOR_EXAM ] = "CALL_FOR_EXAM_VISIBLE", [Cfe_FORM_VIEW ][Cfe_HIDDEN_CALL_FOR_EXAM ] = "CALL_FOR_EXAM_VISIBLE",
[Cfe_FORM_VIEW ][Cfe_DELETED_CALL_FOR_EXAM] = NULL, // Not applicable here [Cfe_FORM_VIEW ][Cfe_DELETED_CALL_FOR_EXAM] = NULL, // Not applicable here
}; };
static const char *ClassTitle[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "EXAM_TIT_WHITE",
[The_THEME_GREY ] = "EXAM_TIT_GREY",
[The_THEME_PURPLE] = "EXAM_TIT_PURPLE",
[The_THEME_BLUE ] = "EXAM_TIT_BLUE",
[The_THEME_YELLOW] = "EXAM_TIT_YELLOW",
[The_THEME_PINK ] = "EXAM_TIT_PINK",
[The_THEME_DARK ] = "EXAM_TIT_DARK",
};
/***** Get data of institution of this degree *****/ /***** Get data of institution of this degree *****/
Ins.InsCod = Gbl.Hierarchy.Ins.InsCod; Ins.InsCod = Gbl.Hierarchy.Ins.InsCod;
@ -991,11 +981,11 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams,
/***** Institution logo *****/ /***** Institution logo *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("colspan=\"2\" class=\"CM %s\"", HTM_TD_Begin ("colspan=\"2\" class=\"CM EXAM_TIT_%s\"",
ClassTitle[Gbl.Prefs.Theme]); The_GetSuffix ());
if (TypeViewCallForExam == Cfe_NORMAL_VIEW) if (TypeViewCallForExam == Cfe_NORMAL_VIEW)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"EXAM_TIT_%s\"",
Ins.WWW,ClassTitle[Gbl.Prefs.Theme]); Ins.WWW,The_GetSuffix ());
Lgo_DrawLogo (HieLvl_INS,Ins.InsCod,Ins.FullName,64,NULL,true); Lgo_DrawLogo (HieLvl_INS,Ins.InsCod,Ins.FullName,64,NULL,true);
HTM_BR (); HTM_BR ();
HTM_Txt (Ins.FullName); HTM_Txt (Ins.FullName);
@ -1006,12 +996,12 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams,
/***** Degree *****/ /***** Degree *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("colspan=\"2\" class=\"CM %s\"", HTM_TD_Begin ("colspan=\"2\" class=\"CM EXAM_TIT_%s\"",
ClassTitle[Gbl.Prefs.Theme]); The_GetSuffix ());
if (TypeViewCallForExam == Cfe_NORMAL_VIEW) if (TypeViewCallForExam == Cfe_NORMAL_VIEW)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"EXAM_TIT_%s\"",
Gbl.Hierarchy.Deg.WWW, Gbl.Hierarchy.Deg.WWW,
ClassTitle[Gbl.Prefs.Theme]); The_GetSuffix ());
HTM_Txt (Gbl.Hierarchy.Deg.FullName); HTM_Txt (Gbl.Hierarchy.Deg.FullName);
if (TypeViewCallForExam == Cfe_NORMAL_VIEW) if (TypeViewCallForExam == Cfe_NORMAL_VIEW)
HTM_A_End (); HTM_A_End ();

View File

@ -606,10 +606,12 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
TODO: Attach pdf files in multimedia. TODO: Attach pdf files in multimedia.
*/ */
#define Log_PLATFORM_VERSION "SWAD 21.91.5 (2022-04-07)" #define Log_PLATFORM_VERSION "SWAD 21.92 (2022-04-20)"
#define CSS_FILE "swad21.91.5.css" #define CSS_FILE "swad21.92.css"
#define JS_FILE "swad21.78.2.js" #define JS_FILE "swad21.92.js"
/* /*
Version 21.92: Apr 20, 2022 Default theme is white when printing. (323246 lines)
Version 21.91.6: Apr 07, 2022 Working on design of dark theme. (323347 lines)
Version 21.91.5: Apr 07, 2022 Working on design of dark theme. (323314 lines) Version 21.91.5: Apr 07, 2022 Working on design of dark theme. (323314 lines)
Version 21.91.4: Apr 05, 2022 Working on design of dark theme. (323247 lines) Version 21.91.4: Apr 05, 2022 Working on design of dark theme. (323247 lines)
Version 21.91.3: Apr 05, 2022 Changes in syllabus. (323227 lines) Version 21.91.3: Apr 05, 2022 Changes in syllabus. (323227 lines)

View File

@ -2215,8 +2215,9 @@ void Crs_PutIconToSelectMyCoursesInBreadcrumb (void)
Frm_BeginForm (ActMyCrs); Frm_BeginForm (ActMyCrs);
/***** Put icon with link *****/ /***** Put icon with link *****/
HTM_INPUT_IMAGE (Gbl.Prefs.URLTheme,"sitemap.svg",Txt_My_courses, HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"sitemap.svg",Txt_My_courses,
"class=\"BC_ICON ICO_HIGHLIGHT\""); "class=\"BC_ICO BC_ICO_%s ICO_HIGHLIGHT\"",
The_GetSuffix ());
/***** End form *****/ /***** End form *****/
Frm_EndForm (); Frm_EndForm ();

View File

@ -1630,7 +1630,6 @@ void Dat_WriteScriptMonths (void)
extern const char *Txt_MONTHS_SMALL[12]; extern const char *Txt_MONTHS_SMALL[12];
extern const char *Txt_MONTHS_SMALL_SHORT[12]; extern const char *Txt_MONTHS_SMALL_SHORT[12];
unsigned NumMonth; unsigned NumMonth;
The_Theme_t Theme;
/***** Month names (full) *****/ /***** Month names (full) *****/
HTM_Txt ("\tvar Months = ["); HTM_Txt ("\tvar Months = [");
@ -1655,18 +1654,6 @@ void Dat_WriteScriptMonths (void)
HTM_TxtF ("'%s'",Txt_MONTHS_SMALL_SHORT[NumMonth]); HTM_TxtF ("'%s'",Txt_MONTHS_SMALL_SHORT[NumMonth]);
} }
HTM_Txt ("];\n"); HTM_Txt ("];\n");
/***** Colors for each theme *****/
HTM_Txt ("\tvar Colors = [");
for (Theme = (The_Theme_t) 0;
Theme <= (The_Theme_t) (The_NUM_THEMES - 1);
Theme++)
{
if (Theme)
HTM_Comma ();
HTM_TxtF ("'%s'",The_GetSuffixForTheme (Theme));
}
HTM_Txt ("];\n");
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -539,13 +539,15 @@ static void Exa_ShowOneExam (struct Exa_Exams *Exams,
/***** Exam title and main data *****/ /***** Exam title and main data *****/
if (ShowOnlyThisExam) if (ShowOnlyThisExam)
HTM_TD_Begin ("class=\"%s LT\"", HTM_TD_Begin ("class=\"LT %s_%s\"",
Exam->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE");
else
HTM_TD_Begin ("class=\"%s LT %s\"",
Exam->Hidden ? "ASG_TITLE_LIGHT": Exam->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE", "ASG_TITLE",
The_GetSuffix ());
else
HTM_TD_Begin ("class=\"LT %s_%s %s\"",
Exam->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE",
The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
/* Exam title */ /* Exam title */
@ -574,13 +576,15 @@ static void Exa_ShowOneExam (struct Exa_Exams *Exams,
/***** Number of sessions in exam *****/ /***** Number of sessions in exam *****/
if (ShowOnlyThisExam) if (ShowOnlyThisExam)
HTM_TD_Begin ("class=\"%s RT\"", HTM_TD_Begin ("class=\"RT %s_%s\"",
Exam->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE");
else
HTM_TD_Begin ("class=\"%s RT %s\"",
Exam->Hidden ? "ASG_TITLE_LIGHT": Exam->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE", "ASG_TITLE",
The_GetSuffix ());
else
HTM_TD_Begin ("class=\"RT %s_%s %s\"",
Exam->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE",
The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
Exams->ExaCod = Exam->ExaCod; Exams->ExaCod = Exam->ExaCod;

View File

@ -514,9 +514,10 @@ static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams,
extern const char *Txt_Play; extern const char *Txt_Play;
extern const char *Txt_Resume; extern const char *Txt_Resume;
HTM_TD_Begin ("class=\"%s LT %s\"", HTM_TD_Begin ("class=\"LT %s_%s %s\"",
Session->Hidden ? "ASG_TITLE_LIGHT": Session->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE", "ASG_TITLE",
The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
/***** Session title *****/ /***** Session title *****/

View File

@ -743,15 +743,14 @@ static void Fol_PutInactiveIconToFollowUnfollow (void)
static void Fol_PutIconToFollow (const char EncryptedUsrCod[Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]) static void Fol_PutIconToFollow (const char EncryptedUsrCod[Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1])
{ {
extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES];
extern const char *Txt_Follow; extern const char *Txt_Follow;
/***** Form to unfollow *****/ /***** Form to unfollow *****/
Frm_BeginForm (ActFolUsr); Frm_BeginForm (ActFolUsr);
Usr_PutParamUsrCodEncrypted (EncryptedUsrCod); Usr_PutParamUsrCodEncrypted (EncryptedUsrCod);
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-plus.svg",Txt_Follow, HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-plus.svg",Txt_Follow,
"class=\"FOLLOW_USR_ICO ICO16x16 %s ICO_HIGHLIGHT\"", "class=\"FOLLOW_USR_ICO ICO16x16 ICO_%s_%s ICO_HIGHLIGHT\"",
Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); Ico_GetPreffix (Ico_BLACK),The_GetSuffix ());
Frm_EndForm (); Frm_EndForm ();
} }

View File

@ -590,13 +590,15 @@ static void Gam_ShowOneGame (struct Gam_Games *Games,
/***** Game title and main data *****/ /***** Game title and main data *****/
if (ShowOnlyThisGame) if (ShowOnlyThisGame)
HTM_TD_Begin ("class=\"%s LT\"", HTM_TD_Begin ("class=\"LT %s_%s\"",
Game->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE");
else
HTM_TD_Begin ("class=\"%s LT %s\"",
Game->Hidden ? "ASG_TITLE_LIGHT": Game->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE", "ASG_TITLE",
The_GetSuffix ());
else
HTM_TD_Begin ("class=\"LT %s_%s %s\"",
Game->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE",
The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
/* Game title */ /* Game title */
@ -625,13 +627,15 @@ static void Gam_ShowOneGame (struct Gam_Games *Games,
/***** Number of matches in game *****/ /***** Number of matches in game *****/
if (ShowOnlyThisGame) if (ShowOnlyThisGame)
HTM_TD_Begin ("class=\"%s RT\"", HTM_TD_Begin ("class=\"RT %s_%s\"",
Game->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE");
else
HTM_TD_Begin ("class=\"%s RT %s\"",
Game->Hidden ? "ASG_TITLE_LIGHT": Game->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE", "ASG_TITLE",
The_GetSuffix ());
else
HTM_TD_Begin ("class=\"RT %s_%s %s\"",
Game->Hidden ? "ASG_TITLE_LIGHT":
"ASG_TITLE",
The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
Games->GamCod = Game->GamCod; Games->GamCod = Game->GamCod;

View File

@ -68,8 +68,6 @@ struct Globals Gbl; // All the global parameters and variables must be in this s
void Gbl_InitializeGlobals (void) void Gbl_InitializeGlobals (void)
{ {
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
extern const char *The_ThemeId[The_NUM_THEMES];
extern const unsigned Txt_Current_CGI_SWAD_Language; extern const unsigned Txt_Current_CGI_SWAD_Language;
Rol_Role_t Role; Rol_Role_t Role;
@ -124,10 +122,6 @@ void Gbl_InitializeGlobals (void)
Gbl.Prefs.Menu = Mnu_MENU_DEFAULT; // Default menu Gbl.Prefs.Menu = Mnu_MENU_DEFAULT; // Default menu
Gbl.Prefs.Theme = The_THEME_DEFAULT; // Default theme Gbl.Prefs.Theme = The_THEME_DEFAULT; // Default theme
Gbl.Prefs.IconSet = Ico_ICON_SET_DEFAULT; // Default icon set Gbl.Prefs.IconSet = Ico_ICON_SET_DEFAULT; // Default icon set
snprintf (Gbl.Prefs.URLTheme,sizeof (Gbl.Prefs.URLTheme),"%s/%s",
Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Gbl.Prefs.Theme]);
snprintf (Gbl.Prefs.URLIconSet,sizeof (Gbl.Prefs.URLIconSet),"%s/%s",
Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]);
Gbl.Session.NumSessions = 0; Gbl.Session.NumSessions = 0;
Gbl.Session.IsOpen = false; Gbl.Session.IsOpen = false;

View File

@ -150,8 +150,6 @@ struct Globals
The_Theme_t Theme; The_Theme_t Theme;
unsigned SideCols; unsigned SideCols;
PhoSha_Shape_t PhotoShape; PhoSha_Shape_t PhotoShape;
char URLTheme[PATH_MAX + 1];
char URLIconSet[PATH_MAX + 1];
} Prefs; } Prefs;
struct struct

View File

@ -68,55 +68,30 @@ const char *Ico_IconSetNames[Ico_NUM_ICON_SETS] =
[Ico_ICON_SET_NUVOLA ] = "Nuvola", [Ico_ICON_SET_NUVOLA ] = "Nuvola",
}; };
const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES] =
{
[Ico_UNCHANGED][The_THEME_WHITE ] = "",
[Ico_UNCHANGED][The_THEME_GREY ] = "",
[Ico_UNCHANGED][The_THEME_PURPLE] = "",
[Ico_UNCHANGED][The_THEME_BLUE ] = "",
[Ico_UNCHANGED][The_THEME_YELLOW] = "",
[Ico_UNCHANGED][The_THEME_PINK ] = "",
[Ico_UNCHANGED][The_THEME_DARK ] = "",
[Ico_BLACK ][The_THEME_WHITE ] = "BLACK_ICO_WHITE",
[Ico_BLACK ][The_THEME_GREY ] = "BLACK_ICO_GREY",
[Ico_BLACK ][The_THEME_PURPLE] = "BLACK_ICO_PURPLE",
[Ico_BLACK ][The_THEME_BLUE ] = "BLACK_ICO_BLUE",
[Ico_BLACK ][The_THEME_YELLOW] = "BLACK_ICO_YELLOW",
[Ico_BLACK ][The_THEME_PINK ] = "BLACK_ICO_PINK",
[Ico_BLACK ][The_THEME_DARK ] = "BLACK_ICO_DARK",
[Ico_GREEN ][The_THEME_WHITE ] = "GREEN_ICO_WHITE",
[Ico_GREEN ][The_THEME_GREY ] = "GREEN_ICO_GREY",
[Ico_GREEN ][The_THEME_PURPLE] = "GREEN_ICO_PURPLE",
[Ico_GREEN ][The_THEME_BLUE ] = "GREEN_ICO_BLUE",
[Ico_GREEN ][The_THEME_YELLOW] = "GREEN_ICO_YELLOW",
[Ico_GREEN ][The_THEME_PINK ] = "GREEN_ICO_PINK",
[Ico_GREEN ][The_THEME_DARK ] = "GREEN_ICO_DARK",
[Ico_RED ][The_THEME_WHITE ] = "RED_ICO_WHITE",
[Ico_RED ][The_THEME_GREY ] = "RED_ICO_GREY",
[Ico_RED ][The_THEME_PURPLE] = "RED_ICO_PURPLE",
[Ico_RED ][The_THEME_BLUE ] = "RED_ICO_BLUE",
[Ico_RED ][The_THEME_YELLOW] = "RED_ICO_YELLOW",
[Ico_RED ][The_THEME_PINK ] = "RED_ICO_PINK",
[Ico_RED ][The_THEME_DARK ] = "RED_ICO_DARK",
[Ico_WHITE ][The_THEME_WHITE ] = "WHITE_ICO_WHITE",
[Ico_WHITE ][The_THEME_GREY ] = "WHITE_ICO_GREY",
[Ico_WHITE ][The_THEME_PURPLE] = "WHITE_ICO_PURPLE",
[Ico_WHITE ][The_THEME_BLUE ] = "WHITE_ICO_BLUE",
[Ico_WHITE ][The_THEME_YELLOW] = "WHITE_ICO_YELLOW",
[Ico_WHITE ][The_THEME_PINK ] = "WHITE_ICO_PINK",
[Ico_WHITE ][The_THEME_DARK ] = "WHITE_ICO_DARK",
};
/*****************************************************************************/ /*****************************************************************************/
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Ico_PutIconsIconSet (__attribute__((unused)) void *Args); static void Ico_PutIconsIconSet (__attribute__((unused)) void *Args);
/*****************************************************************************/
/******************* Get color name for CSS class preffix ********************/
/*****************************************************************************/
const char *Ico_GetPreffix (Ico_Color_t Color)
{
static const char *Ico_CSS_Preffix[Ico_NUM_COLORS] =
{
[Ico_UNCHANGED] = NULL,
[Ico_BLACK ] = "BLACK",
[Ico_GREEN ] = "GREEN",
[Ico_RED ] = "RED",
[Ico_WHITE ] = "WHITE",
};
return Ico_CSS_Preffix[Color];
}
/*****************************************************************************/ /*****************************************************************************/
/*********** Get icon with extension from icon without extension *************/ /*********** Get icon with extension from icon without extension *************/
/*****************************************************************************/ /*****************************************************************************/
@ -209,9 +184,6 @@ void Ico_ChangeIconSet (void)
{ {
/***** Get param with icon set *****/ /***** Get param with icon set *****/
Gbl.Prefs.IconSet = Ico_GetParamIconSet (); Gbl.Prefs.IconSet = Ico_GetParamIconSet ();
snprintf (Gbl.Prefs.URLIconSet,sizeof (Gbl.Prefs.URLIconSet),"%s/%s",
Cfg_URL_ICON_SETS_PUBLIC,
Ico_IconSetId[Gbl.Prefs.IconSet]);
/***** Store icon set in database *****/ /***** Store icon set in database *****/
if (Gbl.Usrs.Me.Logged) if (Gbl.Usrs.Me.Logged)
@ -438,11 +410,16 @@ void Ico_PutDivIcon (const char *DivClass,const char *Icon,Ico_Color_t Color,con
HTM_DIV_Begin ("class=\"%s\"",DivClass); HTM_DIV_Begin ("class=\"%s\"",DivClass);
if (asprintf (&Class,"CONTEXT_ICO16x16 %s", if (Color == Ico_UNCHANGED)
Ico_ClassColor[Color][Gbl.Prefs.Theme]) < 0) Ico_PutIcon (Icon,Color,Title,"CONTEXT_ICO16x16");
Err_NotEnoughMemoryExit (); else
Ico_PutIcon (Icon,Color,Title,Class); {
free (Class); if (asprintf (&Class,"CONTEXT_ICO16x16 ICO_%s_%s",
Ico_GetPreffix (Color),The_GetSuffix ()) < 0)
Err_NotEnoughMemoryExit ();
Ico_PutIcon (Icon,Color,Title,Class);
free (Class);
}
HTM_DIV_End (); HTM_DIV_End ();
} }
@ -453,9 +430,13 @@ void Ico_PutDivIcon (const char *DivClass,const char *Icon,Ico_Color_t Color,con
void Ico_PutIconLink (const char *Icon,Ico_Color_t Color,const char *Title) void Ico_PutIconLink (const char *Icon,Ico_Color_t Color,const char *Title)
{ {
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title, if (Color == Ico_UNCHANGED)
"class=\"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO16x16 %s\"", HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title,
Ico_ClassColor[Color][Gbl.Prefs.Theme]); "class=\"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO16x16\"");
else
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title,
"class=\"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO16x16 ICO_%s_%s\"",
Ico_GetPreffix (Color),The_GetSuffix ());
} }
/*****************************************************************************/ /*****************************************************************************/
@ -477,9 +458,13 @@ void Ico_PutIconTextLink (const char *Icon,Ico_Color_t Color,const char *Text)
void Ico_PutSettingIconLink (const char *Icon,Ico_Color_t Color,const char *Title) void Ico_PutSettingIconLink (const char *Icon,Ico_Color_t Color,const char *Title)
{ {
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title, if (Color == Ico_UNCHANGED)
"class=\"ICO_HIGHLIGHT ICOx20 %s\"", HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title,
Ico_ClassColor[Color][Gbl.Prefs.Theme]); "class=\"ICO_HIGHLIGHT ICOx20\"");
else
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title,
"class=\"ICO_HIGHLIGHT ICOx20 ICO_%s_%s\"",
Ico_GetPreffix (Color),The_GetSuffix ());
} }
/*****************************************************************************/ /*****************************************************************************/
@ -502,10 +487,14 @@ void Ico_PutIconOff (const char *Icon,Ico_Color_t Color,const char *Title)
void Ico_PutIcon (const char *Icon,Ico_Color_t Color,const char *Title,const char *Class) void Ico_PutIcon (const char *Icon,Ico_Color_t Color,const char *Title,const char *Class)
{ {
const char *CC = Ico_ClassColor[Color][Gbl.Prefs.Theme]; if (Color == Ico_UNCHANGED)
HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,Title,
HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,Title, "class=\"%s\"",
"class=\"%s%s%s\"",Class,CC[0] ? " " : "",CC); Class);
else
HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,Title,
"class=\"%s ICO_%s_%s\"",
Class,Ico_GetPreffix (Color),The_GetSuffix ());
} }
/*****************************************************************************/ /*****************************************************************************/
@ -563,23 +552,10 @@ void Ico_GetAndShowNumUsrsPerIconSet (void)
extern const char *Txt_Icons; extern const char *Txt_Icons;
extern const char *Txt_Number_of_users; extern const char *Txt_Number_of_users;
extern const char *Txt_PERCENT_of_users; extern const char *Txt_PERCENT_of_users;
static const char *ClassIco[Ico_NUM_ICON_SETS][The_NUM_THEMES] = static const Ico_Color_t Color[Ico_NUM_ICON_SETS] =
{ {
[Ico_ICON_SET_AWESOME][The_THEME_WHITE ] = "ICO20x20 BLACK_ICO_WHITE", [Ico_ICON_SET_AWESOME] = Ico_BLACK,
[Ico_ICON_SET_AWESOME][The_THEME_GREY ] = "ICO20x20 BLACK_ICO_GREY", [Ico_ICON_SET_NUVOLA ] = Ico_UNCHANGED,
[Ico_ICON_SET_AWESOME][The_THEME_PURPLE] = "ICO20x20 BLACK_ICO_PURPLE",
[Ico_ICON_SET_AWESOME][The_THEME_BLUE ] = "ICO20x20 BLACK_ICO_BLUE",
[Ico_ICON_SET_AWESOME][The_THEME_YELLOW] = "ICO20x20 BLACK_ICO_YELLOW",
[Ico_ICON_SET_AWESOME][The_THEME_PINK ] = "ICO20x20 BLACK_ICO_PINK",
[Ico_ICON_SET_AWESOME][The_THEME_DARK ] = "ICO20x20 BLACK_ICO_DARK",
[Ico_ICON_SET_NUVOLA ][The_THEME_WHITE ] = "ICO20x20",
[Ico_ICON_SET_NUVOLA ][The_THEME_GREY ] = "ICO20x20",
[Ico_ICON_SET_NUVOLA ][The_THEME_PURPLE] = "ICO20x20",
[Ico_ICON_SET_NUVOLA ][The_THEME_BLUE ] = "ICO20x20",
[Ico_ICON_SET_NUVOLA ][The_THEME_YELLOW] = "ICO20x20",
[Ico_ICON_SET_NUVOLA ][The_THEME_PINK ] = "ICO20x20",
[Ico_ICON_SET_NUVOLA ][The_THEME_DARK ] = "ICO20x20",
}; };
Ico_IconSet_t IconSet; Ico_IconSet_t IconSet;
char *SubQuery; char *SubQuery;
@ -626,8 +602,13 @@ void Ico_GetAndShowNumUsrsPerIconSet (void)
if (asprintf (&URL,"%s/%s", if (asprintf (&URL,"%s/%s",
Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[IconSet]) < 0) Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[IconSet]) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (URL,"cog.svg",Ico_IconSetNames[IconSet], if (Color[IconSet] == Ico_UNCHANGED)
"class=\"%s\"",ClassIco[IconSet][Gbl.Prefs.Theme]); HTM_IMG (URL,"cog.svg",Ico_IconSetNames[IconSet],
"class=\"ICO20x20\"");
else
HTM_IMG (URL,"cog.svg",Ico_IconSetNames[IconSet],
"class=\"ICO20x20 ICO_%s_%s\"",
Ico_GetPreffix (Color[IconSet]),The_GetSuffix ());
free (URL); free (URL);
HTM_TD_End (); HTM_TD_End ();

View File

@ -54,6 +54,8 @@ typedef enum
/***************************** Public prototypes *****************************/ /***************************** Public prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/
const char *Ico_GetPreffix (Ico_Color_t Color);
const char *Ico_GetIcon (const char *IconWithoutExtension); const char *Ico_GetIcon (const char *IconWithoutExtension);
void Ico_PutIconsToSelectIconSet (void); void Ico_PutIconsToSelectIconSet (void);

View File

@ -926,7 +926,7 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
HTM_TD_Begin ("class=\"LM %s_%s %s\"", HTM_TD_Begin ("class=\"LM %s_%s %s\"",
(IndicatorsCrs.TeachingGuideSrc != Inf_NONE) ? "DAT_SMALL_GREEN" : (IndicatorsCrs.TeachingGuideSrc != Inf_NONE) ? "DAT_SMALL_GREEN" :
"DAT_SMAL_RED", "DAT_SMALL_RED",
The_GetSuffix (), The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.TeachingGuideSrc]); HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.TeachingGuideSrc]);

View File

@ -288,6 +288,7 @@ void Lay_WriteStartOfPage (void)
break; break;
} }
HTM_Txt (">\n"); HTM_Txt (">\n");
Gbl.Prefs.Theme = The_THEME_WHITE; // In a new tab, use white background
Gbl.Layout.WritingHTMLStart = false; Gbl.Layout.WritingHTMLStart = false;
Gbl.Layout.HTMLStartWritten = Gbl.Layout.HTMLStartWritten =
Gbl.Layout.DivsEndWritten = true; Gbl.Layout.DivsEndWritten = true;
@ -968,33 +969,14 @@ static void Lay_WritePageTopHeading (void)
{ {
extern const char *Txt_TAGLINE; extern const char *Txt_TAGLINE;
extern const char *Txt_TAGLINE_BR; extern const char *Txt_TAGLINE_BR;
static const char *ClassHeadRow1[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "HEAD_ROW_1_WHITE",
[The_THEME_GREY ] = "HEAD_ROW_1_GREY",
[The_THEME_PURPLE] = "HEAD_ROW_1_PURPLE",
[The_THEME_BLUE ] = "HEAD_ROW_1_BLUE",
[The_THEME_YELLOW] = "HEAD_ROW_1_YELLOW",
[The_THEME_PINK ] = "HEAD_ROW_1_PINK",
[The_THEME_DARK ] = "HEAD_ROW_1_DARK",
};
static const char *ClassHeadRow2[The_NUM_THEMES] =
{
[The_THEME_WHITE ] = "HEAD_ROW_2_WHITE",
[The_THEME_GREY ] = "HEAD_ROW_2_GREY",
[The_THEME_PURPLE] = "HEAD_ROW_2_PURPLE",
[The_THEME_BLUE ] = "HEAD_ROW_2_BLUE",
[The_THEME_YELLOW] = "HEAD_ROW_2_YELLOW",
[The_THEME_PINK ] = "HEAD_ROW_2_PINK",
[The_THEME_DARK ] = "HEAD_ROW_2_DARK",
};
/***** Begin header *****/ /***** Begin header *****/
HTM_Txt ("<header>"); HTM_Txt ("<header>");
/***** 1st. row *****/ /***** 1st. row *****/
/* Begin 1st. row */ /* Begin 1st. row */
HTM_DIV_Begin ("id=\"head_row_1\" class=\"%s\"",ClassHeadRow1[Gbl.Prefs.Theme]); HTM_DIV_Begin ("id=\"head_row_1\" class=\"HEAD_ROW_1_%s\"",
The_GetSuffix ());
/* 1st. row, 1st. column: logo, tagline and search */ /* 1st. row, 1st. column: logo, tagline and search */
HTM_DIV_Begin ("id=\"head_row_1_left\""); HTM_DIV_Begin ("id=\"head_row_1_left\"");
@ -1052,8 +1034,8 @@ static void Lay_WritePageTopHeading (void)
/***** 2nd. row *****/ /***** 2nd. row *****/
/* Begin second row */ /* Begin second row */
HTM_DIV_Begin ("id=\"head_row_2\" class=\"%s\"", HTM_DIV_Begin ("id=\"head_row_2\" class=\"HEAD_ROW_2_%s\"",
ClassHeadRow2[Gbl.Prefs.Theme]); The_GetSuffix ());
/* 2nd. row, 1st. column /* 2nd. row, 1st. column
Clock with hour:minute (server hour is shown) */ Clock with hour:minute (server hour is shown) */

View File

@ -63,7 +63,6 @@ static void Lgo_PutIconToRemoveLogo (Act_Action_t ActionRem);
void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText, void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText,
unsigned Size,const char *Class,bool PutIconIfNotExists) unsigned Size,const char *Class,bool PutIconIfNotExists)
{ {
extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES];
static const char *HieIcon[HieLvl_NUM_LEVELS] = static const char *HieIcon[HieLvl_NUM_LEVELS] =
{ {
[HieLvl_UNK] = "sitemap.svg", // not applicable here [HieLvl_UNK] = "sitemap.svg", // not applicable here
@ -83,7 +82,6 @@ void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText,
char *URL; char *URL;
char *Icon; char *Icon;
bool ClassNotEmpty; bool ClassNotEmpty;
Ico_Color_t Color;
/***** Path to logo *****/ /***** Path to logo *****/
if (HieIcon[Scope]) // Scope is correct if (HieIcon[Scope]) // Scope is correct
@ -146,6 +144,11 @@ void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText,
if (LogoFound || PutIconIfNotExists) if (LogoFound || PutIconIfNotExists)
{ {
/***** Draw logo *****/ /***** Draw logo *****/
ClassNotEmpty = false;
if (Class)
if (Class[0])
ClassNotEmpty = true;
if (LogoFound) if (LogoFound)
{ {
if (asprintf (&URL,"%s/%s/%02u/%u/logo", if (asprintf (&URL,"%s/%s/%02u/%u/logo",
@ -155,7 +158,16 @@ void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText,
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&Icon,"%u.png",(unsigned) Cod) < 0) if (asprintf (&Icon,"%u.png",(unsigned) Cod) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Color = Ico_UNCHANGED;
HTM_IMG (URL,Icon,AltText,
"class=\"ICO%ux%u"
"%s%s\"",
Size,Size,
ClassNotEmpty ? " " :
"",
ClassNotEmpty ? Class :
"");
} }
else else
{ {
@ -163,24 +175,18 @@ void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText,
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&Icon,"%s",HieIcon[Scope]) < 0) if (asprintf (&Icon,"%s",HieIcon[Scope]) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Color = Ico_BLACK;
HTM_IMG (URL,Icon,AltText,
"class=\"ICO%ux%u ICO_%s_%s"
"%s%s\"",
Size,Size,
Ico_GetPreffix (Ico_BLACK),The_GetSuffix (),
ClassNotEmpty ? " " :
"",
ClassNotEmpty ? Class :
"");
} }
ClassNotEmpty = false;
if (Class)
if (Class[0])
ClassNotEmpty = true;
HTM_IMG (URL,Icon,AltText,
"class=\"ICO%ux%u"
"%s%s"
"%s%s\"",
Size,Size,
Ico_ClassColor[Color][Gbl.Prefs.Theme][0] ? " " :
"",
Ico_ClassColor[Color][Gbl.Prefs.Theme],
ClassNotEmpty ? " " :
"",
ClassNotEmpty ? Class :
"");
free (Icon); free (Icon);
free (URL); free (URL);
} }

View File

@ -640,7 +640,8 @@ static void Mch_ListOneOrMoreMatchesTitleGrps (const struct Mch_Match *Match,
HTM_BUTTON_Submit_Begin (Gbl.Usrs.Me.Role.Logged == Rol_STD ? Txt_Play : HTM_BUTTON_Submit_Begin (Gbl.Usrs.Me.Role.Logged == Rol_STD ? Txt_Play :
Txt_Resume, Txt_Resume,
"class=\"BT_LINK LT ASG_TITLE\""); "class=\"BT_LINK LT ASG_TITLE_%s\"",
The_GetSuffix ());
HTM_Txt (Match->Title); HTM_Txt (Match->Title);
HTM_BUTTON_End (); HTM_BUTTON_End ();

View File

@ -214,24 +214,12 @@ Act_Action_t Mnu_GetFirstActionAvailableInCurrentTab (void)
void Mnu_WriteMenuThisTab (void) void Mnu_WriteMenuThisTab (void)
{ {
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
extern const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB]; extern const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB];
static const char *ClassIcoMenu[Ico_NUM_ICON_SETS][The_NUM_THEMES] = static const char *ClassIcoMenu[Ico_NUM_ICON_SETS] =
{ {
[Ico_ICON_SET_AWESOME][The_THEME_WHITE ] = " MENU_ICO_WHITE", [Ico_ICON_SET_AWESOME] = "MENU_ICO",
[Ico_ICON_SET_AWESOME][The_THEME_GREY ] = " MENU_ICO_GREY", [Ico_ICON_SET_NUVOLA ] = NULL,
[Ico_ICON_SET_AWESOME][The_THEME_PURPLE] = " MENU_ICO_PURPLE",
[Ico_ICON_SET_AWESOME][The_THEME_BLUE ] = " MENU_ICO_BLUE",
[Ico_ICON_SET_AWESOME][The_THEME_YELLOW] = " MENU_ICO_YELLOW",
[Ico_ICON_SET_AWESOME][The_THEME_PINK ] = " MENU_ICO_PINK",
[Ico_ICON_SET_AWESOME][The_THEME_DARK ] = " MENU_ICO_DARK",
[Ico_ICON_SET_NUVOLA ][The_THEME_WHITE ] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_GREY ] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_PURPLE] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_BLUE ] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_YELLOW] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_PINK ] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_DARK ] = "",
}; };
unsigned NumOptInMenu; unsigned NumOptInMenu;
Act_Action_t NumAct; Act_Action_t NumAct;
@ -271,10 +259,17 @@ void Mnu_WriteMenuThisTab (void)
/***** Icon and text *****/ /***** Icon and text *****/
HTM_DIV_Begin ("class=\"MENU_ICO_TXT\""); HTM_DIV_Begin ("class=\"MENU_ICO_TXT\"");
HTM_DIV_Begin ("class=\"MENU_ICO%s\" style=\"background-image:url('%s/%s');\"", if (ClassIcoMenu[Gbl.Prefs.IconSet])
ClassIcoMenu[Gbl.Prefs.IconSet][Gbl.Prefs.Theme], HTM_DIV_Begin ("class=\"MENU_ICO %s_%s\""
Gbl.Prefs.URLIconSet, " style=\"background-image:url('%s/%s/%s');\"",
Act_GetIcon (NumAct)); ClassIcoMenu[Gbl.Prefs.IconSet],The_GetSuffix (),
Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet],
Act_GetIcon (NumAct));
else
HTM_DIV_Begin ("class=\"MENU_ICO\""
" style=\"background-image:url('%s/%s/%s');\"",
Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet],
Act_GetIcon (NumAct));
HTM_DIV_End (); HTM_DIV_End ();
HTM_DIV_Begin ("class=\"MENU_TXT MENU_TXT_%s\"", HTM_DIV_Begin ("class=\"MENU_TXT MENU_TXT_%s\"",
The_GetSuffix ()); The_GetSuffix ());

View File

@ -455,7 +455,7 @@ void Ntf_ShowMyNotifications (void)
{ {
ClassTxt = "MSG_TIT_REM"; ClassTxt = "MSG_TIT_REM";
ClassLink = "BT_LINK MSG_TIT_REM"; ClassLink = "BT_LINK MSG_TIT_REM";
ClassAuthor = "MSG_AUT_REM"; ClassAuthor = "MSG_AUT_LIGHT";
ClassBg = "MSG_BG_REM"; ClassBg = "MSG_BG_REM";
PutLink = false; PutLink = false;
} }
@ -1661,8 +1661,8 @@ void Ntf_WriteNumberOfNewNtfs (void)
if (NumNewNtfs) if (NumNewNtfs)
{ {
HTM_BR (); HTM_BR ();
HTM_IMG (Gbl.Prefs.URLTheme,"bell.svg",Txt_Notifications, HTM_IMG (Cfg_URL_ICON_PUBLIC,"bell.svg",Txt_Notifications,
"class=\"ICO16x16\""); "class=\"ICO16x16 NOTIF_ICO_%s\"",The_GetSuffix ());
HTM_TxtF ("&nbsp;%u",NumNewNtfs); HTM_TxtF ("&nbsp;%u",NumNewNtfs);
HTM_SPAN_Begin ("id=\"notif_new\""); HTM_SPAN_Begin ("id=\"notif_new\"");
HTM_TxtF ("&nbsp;%s",NumNewNtfs == 1 ? Txt_NOTIF_new_SINGULAR : HTM_TxtF ("&nbsp;%s",NumNewNtfs == 1 ? Txt_NOTIF_new_SINGULAR :

View File

@ -649,11 +649,8 @@ static bool Par_CheckIsParamCanBeUsedInGETMethod (const char *ParamName)
void Par_GetMainParams (void) void Par_GetMainParams (void)
{ {
extern Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD]; extern Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD];
extern const char *The_ThemeId[The_NUM_THEMES];
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
long ActCod; long ActCod;
char Nick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; char Nick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1];
char URL[PATH_MAX + 1];
char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Reset codes of country, institution, center, degree and course *****/ /***** Reset codes of country, institution, center, degree and course *****/
@ -782,17 +779,6 @@ void Par_GetMainParams (void)
/***** Try to get settings changed from current IP *****/ /***** Try to get settings changed from current IP *****/
Set_GetSettingsFromIP (); Set_GetSettingsFromIP ();
if (!Gbl.Session.IsOpen) // When no session open (no logged user)...
{
/***** Set path of theme and path of icon set *****/
snprintf (URL,sizeof (URL),"%s/%s",
Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Gbl.Prefs.Theme ]);
Str_Copy (Gbl.Prefs.URLTheme ,URL,sizeof (Gbl.Prefs.URLTheme ) - 1);
snprintf (URL,sizeof (URL),"%s/%s",
Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]);
Str_Copy (Gbl.Prefs.URLIconSet,URL,sizeof (Gbl.Prefs.URLIconSet) - 1);
}
/***** Get country if exists (from menu) *****/ /***** Get country if exists (from menu) *****/
Par_GetParToText ("cty",LongStr,Cns_MAX_DECIMAL_DIGITS_LONG); Par_GetParToText ("cty",LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (LongStr[0]) // Parameter "cty" available if (LongStr[0]) // Parameter "cty" available

View File

@ -58,7 +58,6 @@ static void PhoSha_PutIconsPhotoShape (__attribute__((unused)) void *Args);
void PhoSha_PutIconsToSelectPhotoShape (void) void PhoSha_PutIconsToSelectPhotoShape (void)
{ {
extern const char *Hlp_PROFILE_Settings_user_photos; extern const char *Hlp_PROFILE_Settings_user_photos;
extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES];
extern const char *Txt_User_photos; extern const char *Txt_User_photos;
extern const char *Txt_PHOTO_SHAPES[PhoSha_NUM_SHAPES]; extern const char *Txt_PHOTO_SHAPES[PhoSha_NUM_SHAPES];
static const char *ClassPhoto[PhoSha_NUM_SHAPES] = static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
@ -88,9 +87,9 @@ void PhoSha_PutIconsToSelectPhotoShape (void)
Par_PutHiddenParamUnsigned (NULL,"PhotoShape",Shape); Par_PutHiddenParamUnsigned (NULL,"PhotoShape",Shape);
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user.svg", HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user.svg",
Txt_PHOTO_SHAPES[Shape], Txt_PHOTO_SHAPES[Shape],
"class=\"%s %s\"", "class=\"%s ICO_%s_%s\"",
ClassPhoto[Shape], ClassPhoto[Shape],
Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); Ico_GetPreffix (Ico_BLACK),The_GetSuffix ());
Frm_EndForm (); Frm_EndForm ();
HTM_DIV_End (); HTM_DIV_End ();
} }
@ -160,7 +159,6 @@ PhoSha_Shape_t PhoSha_GetShapeFromStr (const char *Str)
void PhoSha_GetAndShowNumUsrsPerPhotoShape (void) void PhoSha_GetAndShowNumUsrsPerPhotoShape (void)
{ {
extern const char *Hlp_ANALYTICS_Figures_user_photos; extern const char *Hlp_ANALYTICS_Figures_user_photos;
extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES];
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES]; extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
extern const char *Txt_User_photos; extern const char *Txt_User_photos;
extern const char *Txt_Number_of_users; extern const char *Txt_Number_of_users;
@ -215,9 +213,9 @@ void PhoSha_GetAndShowNumUsrsPerPhotoShape (void)
HTM_TD_Begin ("class=\"CM\""); HTM_TD_Begin ("class=\"CM\"");
HTM_IMG (Cfg_URL_ICON_PUBLIC,"user.svg",Txt_PHOTO_SHAPES[Shape], HTM_IMG (Cfg_URL_ICON_PUBLIC,"user.svg",Txt_PHOTO_SHAPES[Shape],
"class=\"%s %s\"", "class=\"%s ICO_%s_%s\"",
ClassPhoto[Shape], ClassPhoto[Shape],
Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); Ico_GetPreffix (Ico_BLACK),The_GetSuffix ());
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ()); HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());

View File

@ -1361,12 +1361,12 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
switch (ProjectView) switch (ProjectView)
{ {
case Prj_LIST_PROJECTS: case Prj_LIST_PROJECTS:
HTM_TD_Begin ("class=\"%s LT %s\"", HTM_TD_Begin ("class=\"LT %s_%s %s\"",
ClassTitle,The_GetColorRows ()); ClassTitle,The_GetSuffix (),The_GetColorRows ());
break; break;
default: default:
HTM_TD_Begin ("class=\"%s LT\"", HTM_TD_Begin ("class=\"LT %s_%s\"",
ClassTitle); ClassTitle,The_GetSuffix ());
break; break;
} }
HTM_ARTICLE_Begin (Anchor); HTM_ARTICLE_Begin (Anchor);

View File

@ -158,26 +158,20 @@ void Set_GetSettingsFromIP (void)
{ {
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
/* Get first day of week (row[0]) */ /* Get first day of week (row[0]),
date format (row[1]),
theme (row[2]),
icon set (row[3]),
menu (row[4]),
if user wants to show side columns (row[5]),
user photo shape (row[6]) */
Gbl.Prefs.FirstDayOfWeek = Cal_GetFirstDayOfWeekFromStr (row[0]); Gbl.Prefs.FirstDayOfWeek = Cal_GetFirstDayOfWeekFromStr (row[0]);
Gbl.Prefs.DateFormat = Dat_GetDateFormatFromStr (row[1]);
/* Get date format (row[1]) */ Gbl.Prefs.Theme = The_GetThemeFromStr (row[2]);
Gbl.Prefs.DateFormat = Dat_GetDateFormatFromStr (row[1]); Gbl.Prefs.IconSet = Ico_GetIconSetFromStr (row[3]);
Gbl.Prefs.Menu = Mnu_GetMenuFromStr (row[4]);
/* Get theme (row[2]) */ Gbl.Prefs.SideCols = Set_GetSideColsFromStr (row[5]);
Gbl.Prefs.Theme = The_GetThemeFromStr (row[2]); Gbl.Prefs.PhotoShape = PhoSha_GetShapeFromStr (row[6]);
/* Get icon set (row[3]) */
Gbl.Prefs.IconSet = Ico_GetIconSetFromStr (row[3]);
/* Get menu (row[4]) */
Gbl.Prefs.Menu = Mnu_GetMenuFromStr (row[4]);
/* Get if user wants to show side columns (row[5]) */
Gbl.Prefs.SideCols = Set_GetSideColsFromStr (row[5]);
/* Get user photo shape (row[6]) */
Gbl.Prefs.PhotoShape = PhoSha_GetShapeFromStr (row[6]);
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/

View File

@ -529,9 +529,10 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
/* Survey title */ /* Survey title */
if (ShowOnlyThisSvyComplete) if (ShowOnlyThisSvyComplete)
HTM_TD_Begin ("class=\"%s LT\"", HTM_TD_Begin ("class=\"LT %s_%s\"",
Svy.Status.Visible ? "ASG_TITLE" : Svy.Status.Visible ? "ASG_TITLE" :
"ASG_TITLE_LIGHT"); "ASG_TITLE_LIGHT",
The_GetSuffix ());
else else
HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ()); HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ());
HTM_ARTICLE_Begin (Anchor); HTM_ARTICLE_Begin (Anchor);

View File

@ -51,41 +51,20 @@ static const char *Tab_GetIcon (Tab_Tab_t Tab);
void Tab_DrawTabs (void) void Tab_DrawTabs (void)
{ {
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
extern const char *Txt_TABS_TXT[Tab_NUM_TABS]; extern const char *Txt_TABS_TXT[Tab_NUM_TABS];
extern const char *Txt_TABS_TXT[Tab_NUM_TABS]; extern const char *Txt_TABS_TXT[Tab_NUM_TABS];
Tab_Tab_t NumTab; Tab_Tab_t NumTab;
bool ICanViewTab; bool ICanViewTab;
static const char *ClassHeadRow3[The_NUM_THEMES] = char URLIconSet[PATH_MAX + 1];
static const char *ClassIcoTab[Ico_NUM_ICON_SETS] =
{ {
[The_THEME_WHITE ] = "HEAD_ROW_3_WHITE", [Ico_ICON_SET_AWESOME] = "TAB_ICO",
[The_THEME_GREY ] = "HEAD_ROW_3_GREY", [Ico_ICON_SET_NUVOLA ] = NULL,
[The_THEME_PURPLE] = "HEAD_ROW_3_PURPLE",
[The_THEME_BLUE ] = "HEAD_ROW_3_BLUE",
[The_THEME_YELLOW] = "HEAD_ROW_3_YELLOW",
[The_THEME_PINK ] = "HEAD_ROW_3_PINK",
[The_THEME_DARK ] = "HEAD_ROW_3_DARK",
};
static const char *ClassIcoTab[Ico_NUM_ICON_SETS][The_NUM_THEMES] =
{
[Ico_ICON_SET_AWESOME][The_THEME_WHITE ] = " TAB_ICO_WHITE",
[Ico_ICON_SET_AWESOME][The_THEME_GREY ] = " TAB_ICO_GREY",
[Ico_ICON_SET_AWESOME][The_THEME_PURPLE] = " TAB_ICO_PURPLE",
[Ico_ICON_SET_AWESOME][The_THEME_BLUE ] = " TAB_ICO_BLUE",
[Ico_ICON_SET_AWESOME][The_THEME_YELLOW] = " TAB_ICO_YELLOW",
[Ico_ICON_SET_AWESOME][The_THEME_PINK ] = " TAB_ICO_PINK",
[Ico_ICON_SET_AWESOME][The_THEME_DARK ] = " TAB_ICO_DARK",
[Ico_ICON_SET_NUVOLA ][The_THEME_WHITE ] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_GREY ] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_PURPLE] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_BLUE ] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_YELLOW] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_PINK ] = "",
[Ico_ICON_SET_NUVOLA ][The_THEME_DARK ] = "",
}; };
/***** Begin tabs container *****/ /***** Begin tabs container *****/
HTM_DIV_Begin ("class=\"%s\"",ClassHeadRow3[Gbl.Prefs.Theme]); HTM_DIV_Begin ("class=\"HEAD_ROW_3_%s\"",The_GetSuffix ());
HTM_Txt ("<nav id=\"tabs\">"); HTM_Txt ("<nav id=\"tabs\">");
HTM_UL_Begin ("class=\"TAB_LIST\""); HTM_UL_Begin ("class=\"TAB_LIST\"");
@ -120,8 +99,15 @@ void Tab_DrawTabs (void)
Par_PutHiddenParamUnsigned (NULL,"NxtTab",(unsigned) NumTab); Par_PutHiddenParamUnsigned (NULL,"NxtTab",(unsigned) NumTab);
HTM_BUTTON_Submit_Begin (Txt_TABS_TXT[NumTab], HTM_BUTTON_Submit_Begin (Txt_TABS_TXT[NumTab],
"class=\"BT_LINK\""); "class=\"BT_LINK\"");
HTM_IMG (Gbl.Prefs.URLIconSet,Tab_GetIcon (NumTab),Txt_TABS_TXT[NumTab], snprintf (URLIconSet,sizeof (URLIconSet),"%s/%s",
"class=\"TAB_ICO%s\"",ClassIcoTab[Gbl.Prefs.IconSet][Gbl.Prefs.Theme]); Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]);
if (ClassIcoTab[Gbl.Prefs.IconSet])
HTM_IMG (URLIconSet,Tab_GetIcon (NumTab),Txt_TABS_TXT[NumTab],
"class=\"TAB_ICO %s_%s\"",
ClassIcoTab[Gbl.Prefs.IconSet],The_GetSuffix ());
else
HTM_IMG (URLIconSet,Tab_GetIcon (NumTab),Txt_TABS_TXT[NumTab],
"class=\"TAB_ICO\"");
HTM_DIV_Begin ("class=\"TAB_TXT TAB_%s_TXT_%s\"", HTM_DIV_Begin ("class=\"TAB_TXT TAB_%s_TXT_%s\"",
NumTab == Gbl.Action.Tab ? "ON" : NumTab == Gbl.Action.Tab ? "ON" :
"OFF", "OFF",

View File

@ -17192,7 +17192,7 @@ const char *Txt_INFO_SRC_SHORT_TEXT[Inf_NUM_SOURCES] =
{ {
[Inf_NONE] = [Inf_NONE] =
#if L==1 // ca #if L==1 // ca
"Ninguna informaci&oacute;n" // Necessita traduccio "Cap informaci&oacute;"
#elif L==2 // de #elif L==2 // de
"Keine Angaben" "Keine Angaben"
#elif L==3 // en #elif L==3 // en
@ -17213,7 +17213,7 @@ const char *Txt_INFO_SRC_SHORT_TEXT[Inf_NUM_SOURCES] =
, ,
[Inf_EDITOR] = [Inf_EDITOR] =
#if L==1 // ca #if L==1 // ca
"Editor interno" // Necessita traduccio "Editor intern"
#elif L==2 // de #elif L==2 // de
"Interner Editor" "Interner Editor"
#elif L==3 // en #elif L==3 // en
@ -17269,14 +17269,14 @@ const char *Txt_INFO_SRC_SHORT_TEXT[Inf_NUM_SOURCES] =
#elif L==7 // it #elif L==7 // it
"Testo formattato" "Testo formattato"
#elif L==8 // pl #elif L==8 // pl
"Rich text" // Potrzebujesz tlumaczenie "Tekst sformatowany"
#elif L==9 // pt #elif L==9 // pt
"Texto enriquecido" "Texto enriquecido"
#endif #endif
, ,
[Inf_PAGE] = [Inf_PAGE] =
#if L==1 // ca #if L==1 // ca
"P&aacute;gina interna" // Necessita traduccio "P&agrave;gina interna"
#elif L==2 // de #elif L==2 // de
"Interne Webseite" "Interne Webseite"
#elif L==3 // en #elif L==3 // en
@ -17297,7 +17297,7 @@ const char *Txt_INFO_SRC_SHORT_TEXT[Inf_NUM_SOURCES] =
, ,
[Inf_URL] = [Inf_URL] =
#if L==1 // ca #if L==1 // ca
"P&aacute;gina externa" // Necessita traduccio "P&agrave;gina externa" // Necessita traduccio
#elif L==2 // de #elif L==2 // de
"Externe Webseite" "Externe Webseite"
#elif L==3 // en #elif L==3 // en

View File

@ -138,15 +138,8 @@ static void The_PutIconsTheme (__attribute__((unused)) void *Args)
void The_ChangeTheme (void) void The_ChangeTheme (void)
{ {
char Path[PATH_MAX + 1 +
NAME_MAX + 1 +
NAME_MAX + 1];
/***** Get param theme *****/ /***** Get param theme *****/
Gbl.Prefs.Theme = The_GetParamTheme (); Gbl.Prefs.Theme = The_GetParamTheme ();
snprintf (Path,sizeof (Path),"%s/%s",
Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Gbl.Prefs.Theme]);
Str_Copy (Gbl.Prefs.URLTheme,Path,sizeof (Gbl.Prefs.URLTheme) - 1);
/***** Store theme in database *****/ /***** Store theme in database *****/
if (Gbl.Usrs.Me.Logged) if (Gbl.Usrs.Me.Logged)
@ -207,11 +200,6 @@ static const char *The_CSS_Suffix[The_NUM_THEMES] =
[The_THEME_DARK ] = "DARK", [The_THEME_DARK ] = "DARK",
}; };
const char *The_GetSuffixForTheme (The_Theme_t Theme)
{
return The_CSS_Suffix[Theme];
}
const char *The_GetSuffix (void) const char *The_GetSuffix (void)
{ {
return The_CSS_Suffix[Gbl.Prefs.Theme]; return The_CSS_Suffix[Gbl.Prefs.Theme];

View File

@ -54,7 +54,6 @@ void The_ChangeTheme (void);
The_Theme_t The_GetParamTheme (void); The_Theme_t The_GetParamTheme (void);
The_Theme_t The_GetThemeFromStr (const char *Str); The_Theme_t The_GetThemeFromStr (const char *Str);
const char *The_GetSuffixForTheme (The_Theme_t Theme);
const char *The_GetSuffix (void); const char *The_GetSuffix (void);
const char *The_GetColorRows (void); const char *The_GetColorRows (void);
void The_ChangeRowColor (void); void The_ChangeRowColor (void);

View File

@ -1199,12 +1199,14 @@ void Usr_WriteFormLogin (Act_Action_t NextAction,void (*FuncParams) (void))
void Usr_WelcomeUsr (void) void Usr_WelcomeUsr (void)
{ {
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
extern const unsigned Txt_Current_CGI_SWAD_Language; extern const unsigned Txt_Current_CGI_SWAD_Language;
extern const char *Txt_NEW_YEAR_GREETING; extern const char *Txt_NEW_YEAR_GREETING;
extern const char *Txt_Happy_birthday_X; extern const char *Txt_Happy_birthday_X;
extern const char *Txt_Please_check_your_email_address; extern const char *Txt_Please_check_your_email_address;
extern const char *Txt_Check; extern const char *Txt_Check;
extern const char *Txt_Switching_to_LANGUAGE[1 + Lan_NUM_LANGUAGES]; extern const char *Txt_Switching_to_LANGUAGE[1 + Lan_NUM_LANGUAGES];
char URLIconSet[PATH_MAX + 1];
if (Gbl.Usrs.Me.Logged) if (Gbl.Usrs.Me.Logged)
{ {
@ -1232,7 +1234,9 @@ void Usr_WelcomeUsr (void)
Gbl.Usrs.Me.UsrDat.FrstName); Gbl.Usrs.Me.UsrDat.FrstName);
/* Show cake icon */ /* Show cake icon */
HTM_IMG (Gbl.Prefs.URLIconSet,"birthday-cake.svg",NULL, snprintf (URLIconSet,sizeof (URLIconSet),"%s/%s",
Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]);
HTM_IMG (URLIconSet,"birthday-cake.svg",NULL,
"class=\"ICO160x160\""); "class=\"ICO160x160\"");
/* End alert */ /* End alert */
@ -1944,7 +1948,6 @@ static void Usr_ShowAlertThereAreMoreThanOneUsr (void)
static void Usr_SetMyPrefsAndRoles (void) static void Usr_SetMyPrefsAndRoles (void)
{ {
extern const char *The_ThemeId[The_NUM_THEMES];
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS]; extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
bool GetRoleAndActionFromLastData; bool GetRoleAndActionFromLastData;
Act_Action_t LastSuperAction; Act_Action_t LastSuperAction;
@ -1967,10 +1970,6 @@ static void Usr_SetMyPrefsAndRoles (void)
Gbl.Prefs.Theme = Gbl.Usrs.Me.UsrDat.Prefs.Theme; Gbl.Prefs.Theme = Gbl.Usrs.Me.UsrDat.Prefs.Theme;
Gbl.Prefs.SideCols = Gbl.Usrs.Me.UsrDat.Prefs.SideCols; Gbl.Prefs.SideCols = Gbl.Usrs.Me.UsrDat.Prefs.SideCols;
Gbl.Prefs.PhotoShape = Gbl.Usrs.Me.UsrDat.Prefs.PhotoShape; Gbl.Prefs.PhotoShape = Gbl.Usrs.Me.UsrDat.Prefs.PhotoShape;
snprintf (Gbl.Prefs.URLIconSet,sizeof (Gbl.Prefs.URLIconSet),"%s/%s",
Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]);
snprintf (Gbl.Prefs.URLTheme,sizeof (Gbl.Prefs.URLTheme),"%s/%s",
Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Gbl.Prefs.Theme]);
/***** Construct the path to my directory *****/ /***** Construct the path to my directory *****/
Usr_ConstructPathUsr (Gbl.Usrs.Me.UsrDat.UsrCod,Gbl.Usrs.Me.PathDir); Usr_ConstructPathUsr (Gbl.Usrs.Me.UsrDat.UsrCod,Gbl.Usrs.Me.PathDir);
@ -6385,7 +6384,7 @@ void Usr_WriteAuthor1Line (long UsrCod,bool Hidden)
/***** Write name *****/ /***** Write name *****/
HTM_DIV_Begin ("class=\"AUTHOR_1_LINE %s_%s\"", HTM_DIV_Begin ("class=\"AUTHOR_1_LINE %s_%s\"",
Hidden ? "MSG_AUT_REM" : Hidden ? "MSG_AUT_LIGHT" :
"MSG_AUT", "MSG_AUT",
The_GetSuffix ()); The_GetSuffix ());
HTM_Txt (UsrDat.FullName); HTM_Txt (UsrDat.FullName);
@ -6483,7 +6482,6 @@ void Usr_ShowTableCellWithUsrData (struct UsrData *UsrDat,unsigned NumRows)
void Usr_PutWhoIcon (Usr_Who_t Who) void Usr_PutWhoIcon (Usr_Who_t Who)
{ {
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 const char *Icon[Usr_NUM_WHO] = static const char *Icon[Usr_NUM_WHO] =
{ {
@ -6510,8 +6508,8 @@ void Usr_PutWhoIcon (Usr_Who_t Who)
case Usr_WHO_FOLLOWED: case Usr_WHO_FOLLOWED:
case Usr_WHO_ALL: case Usr_WHO_ALL:
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon[Who],Txt_WHO[Who], HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon[Who],Txt_WHO[Who],
"class=\"ICO_HIGHLIGHT ICOx20 %s\"", "class=\"ICO_HIGHLIGHT ICOx20 ICO_%s_%s\"",
Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); Ico_GetPreffix (Ico_BLACK),The_GetSuffix ());
break; break;
default: default:
Err_WrongWhoExit (); Err_WrongWhoExit ();