diff --git a/css/swad21.91.5.css b/css/swad21.92.css similarity index 96% rename from css/swad21.91.5.css rename to css/swad21.92.css index cae5cc6d..a5169045 100644 --- a/css/swad21.91.5.css +++ b/css/swad21.92.css @@ -474,7 +474,7 @@ a:hover /* Default ==> underlined */ .BC_PINK {color:#ffc040;} .BC_DARK {color:#ffb42e;} -.BC_ICON +.BC_ICO { display:inline-block; width:20px; @@ -483,6 +483,15 @@ a:hover /* Default ==> underlined */ 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 *********/ #main_title { @@ -584,6 +593,15 @@ a:hover /* Default ==> underlined */ .NOTIF_PINK {color:white; 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) ********************/ .HEAD_ROW_3_WHITE { @@ -1952,37 +1970,37 @@ a:hover img.CENTER_PHOTO_SHOW vertical-align:middle; } /* Creating filter from RGB: https://codepen.io/sosuke/pen/Pjoqqp */ -.BLACK_ICO_WHITE, -.BLACK_ICO_GREY, -.BLACK_ICO_PURPLE, -.BLACK_ICO_BLUE, -.BLACK_ICO_YELLOW, -.BLACK_ICO_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_WHITE, +.ICO_BLACK_GREY, +.ICO_BLACK_PURPLE, +.ICO_BLACK_BLUE, +.ICO_BLACK_YELLOW, +.ICO_BLACK_PINK {filter: invert(26%) sepia(0%) saturate(1%) hue-rotate(288deg) brightness(97%) contrast(102%);} /* #404040 */ +.ICO_BLACK_DARK {filter: invert(92%) sepia(44%) saturate(2%) hue-rotate(176deg) brightness(110%) contrast(88%);} /* #f0f0f0 */ -.GREEN_ICO_WHITE, -.GREEN_ICO_GREY, -.GREEN_ICO_PURPLE, -.GREEN_ICO_BLUE, -.GREEN_ICO_YELLOW, -.GREEN_ICO_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_WHITE, +.ICO_GREEN_GREY, +.ICO_GREEN_PURPLE, +.ICO_GREEN_BLUE, +.ICO_GREEN_YELLOW, +.ICO_GREEN_PINK {filter: invert(31%) sepia(16%) saturate(3727%) hue-rotate(60deg) brightness(94%) contrast(104%);} /* #246600 */ +.ICO_GREEN_DARK {filter: invert(75%) sepia(13%) saturate(1915%) hue-rotate(46deg) brightness(89%) contrast(89%);} /* #80c040 */ -.RED_ICO_WHITE, -.RED_ICO_GREY, -.RED_ICO_PURPLE, -.RED_ICO_BLUE, -.RED_ICO_YELLOW, -.RED_ICO_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_WHITE, +.ICO_RED_GREY, +.ICO_RED_PURPLE, +.ICO_RED_BLUE, +.ICO_RED_YELLOW, +.ICO_RED_PINK {filter: invert(8%) sepia(61%) saturate(5373%) hue-rotate(0deg) brightness(92%) contrast(114%);} /* #660000 */ +.ICO_RED_DARK {filter: invert(51%) sepia(58%) saturate(1457%) hue-rotate(320deg) brightness(126%) contrast(104%);} /* #ff8080 */ -.WHITE_ICO_WHITE, -.WHITE_ICO_GREY, -.WHITE_ICO_PURPLE, -.WHITE_ICO_BLUE, -.WHITE_ICO_YELLOW, -.WHITE_ICO_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_WHITE, +.ICO_WHITE_GREY, +.ICO_WHITE_PURPLE, +.ICO_WHITE_BLUE, +.ICO_WHITE_YELLOW, +.ICO_WHITE_PINK {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_INLINE @@ -2904,8 +2922,22 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;} .GRP_TITLE {color:#4d88a1; font-size:15pt; font-weight:bold;} -.ASG_TITLE {color:#4d88a1; font-size:15pt; font-weight:bold;} -.ASG_TITLE_LIGHT {color:#afc4cc; font-size:15pt; font-weight:bold;} +.ASG_TITLE_WHITE, +.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_LIGHT {color:#afc4cc; font-size:13pt;} .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_DARK {color:#afc4cc; font-size:11pt; font-weight:bold;} -.MSG_AUT_REM_WHITE, -.MSG_AUT_REM_GREY, -.MSG_AUT_REM_PURPLE, -.MSG_AUT_REM_BLUE, -.MSG_AUT_REM_YELLOW, -.MSG_AUT_REM_PINK {color:#afc4cc; font-size:11pt;} -.MSG_AUT_REM_DARK {color:#4d88a1; font-size:11pt;} +.MSG_AUT_LIGHT_WHITE, +.MSG_AUT_LIGHT_GREY, +.MSG_AUT_LIGHT_PURPLE, +.MSG_AUT_LIGHT_BLUE, +.MSG_AUT_LIGHT_YELLOW, +.MSG_AUT_LIGHT_PINK {color:rgba( 77,136,161,0.3); 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_NEW {color:#4d88a1; font-size:11pt; font-weight:bold;} diff --git a/js/swad21.78.2.js b/js/swad21.92.js similarity index 99% rename from js/swad21.78.2.js rename to js/swad21.92.js index 2b56b5c4..49eb5c47 100644 --- a/js/swad21.78.2.js +++ b/js/swad21.92.js @@ -1730,7 +1730,7 @@ function disableDetailedClicks () { /*****************************************************************************/ function Cal_DrawCalendar (id,FirstDayOfWeek, - TimeUTC,CurrentPlcCod,PrintView,Theme, + TimeUTC,CurrentPlcCod,PrintView,ColorSuffix, CGI,FormGoToCalendarParams,FormEventParams) { var StartingMonth = [ // Calendar starts one row before current month 10, // January --> October @@ -1776,7 +1776,7 @@ function Cal_DrawCalendar (id,FirstDayOfWeek, DrawMonth (MonthId,FirstDayOfWeek, Year,Month, CurrentMonth,CurrentDay, - CurrentPlcCod,true,PrintView,Theme, + CurrentPlcCod,true,PrintView,ColorSuffix, CGI,FormGoToCalendarParams,FormEventParams); Gbl_HTMLContent += ''; if (++Month == 13) { @@ -1795,7 +1795,7 @@ function Cal_DrawCalendar (id,FirstDayOfWeek, /***************************** Draw current month ****************************/ /*****************************************************************************/ -function DrawCurrentMonth (id,FirstDayOfWeek,TimeUTC,CurrentPlcCod,Theme, +function DrawCurrentMonth (id,FirstDayOfWeek,TimeUTC,CurrentPlcCod,ColorSuffix, CGI,FormGoToCalendarParams,FormEventParams) { var d = new Date(); d.setTime(TimeUTC * 1000); @@ -1806,7 +1806,7 @@ function DrawCurrentMonth (id,FirstDayOfWeek,TimeUTC,CurrentPlcCod,Theme, DrawMonth (id,FirstDayOfWeek, Year,Month, Month,CurrentDay, - CurrentPlcCod,false,false,Theme, + CurrentPlcCod,false,false,ColorSuffix, CGI,FormGoToCalendarParams,FormEventParams); document.getElementById(id).innerHTML = Gbl_HTMLContent; } @@ -1820,7 +1820,7 @@ function DrawCurrentMonth (id,FirstDayOfWeek,TimeUTC,CurrentPlcCod,Theme, function DrawMonth (id,FirstDayOfWeek, YearToDraw,MonthToDraw, CurrentMonth,CurrentDay, - CurrentPlcCod,DrawingCalendar,PrintView,Theme, + CurrentPlcCod,DrawingCalendar,PrintView,ColorSuffix, CGI,FormGoToCalendarParams,FormEventParams) { var Hld_HOLIDAY = 0; var Hld_NON_SCHOOL_PERIOD = 1; @@ -1873,13 +1873,13 @@ function DrawMonth (id,FirstDayOfWeek, /***** Month name *****/ if (DrawingCalendar) - Gbl_HTMLContent += '
'; + Gbl_HTMLContent += '
'; else { FormId = id + '_show_calendar'; Gbl_HTMLContent += '
' + FormGoToCalendarParams + '
' + - ''; } @@ -1893,8 +1893,8 @@ function DrawMonth (id,FirstDayOfWeek, Gbl_HTMLContent += '' + ''; for (DayOfWeek = 0; DayOfWeek < 7; DayOfWeek++) Gbl_HTMLContent += ''; @@ -1911,8 +1911,8 @@ function DrawMonth (id,FirstDayOfWeek, DayOfWeek < 7; DayOfWeek++) { /***** Set class for day being drawn *****/ - ClassForDay = ((Mon == MonthToDraw) ? 'DAY_WRK_' + Colors[Theme] : - 'DAY_WRK_LIGHT_' + Colors[Theme]); + ClassForDay = ((Mon == MonthToDraw) ? 'DAY_WRK_' + ColorSuffix : + 'DAY_WRK_LIGHT_' + ColorSuffix); TextForDay = ''; /* Check if day is a holiday or a school day */ @@ -1929,16 +1929,16 @@ function DrawMonth (id,FirstDayOfWeek, switch (Hlds[NumHld].HldTyp) { case Hld_HOLIDAY: if (Hlds[NumHld].StartDate == YYYYMMDD) { // If start date == date being drawn - ClassForDay = ((Mon == MonthToDraw) ? 'DAY_HLD_' + Colors[Theme] : - 'DAY_HLD_LIGHT_' + Colors[Theme]); + ClassForDay = ((Mon == MonthToDraw) ? 'DAY_HLD_' + ColorSuffix : + 'DAY_HLD_LIGHT_' + ColorSuffix); TextForDay = Hlds[NumHld].Name; ContinueSearching = false; } break; case Hld_NON_SCHOOL_PERIOD: if (Hlds[NumHld].EndDate >= YYYYMMDD) { // If start date <= date being drawn <= end date - ClassForDay = ((Mon == MonthToDraw) ? 'DAY_NO_WORK_' + Colors[Theme] : - 'DAY_NO_WORK_LIGHT_' + Colors[Theme]); + ClassForDay = ((Mon == MonthToDraw) ? 'DAY_NO_WORK_' + ColorSuffix : + 'DAY_NO_WORK_LIGHT_' + ColorSuffix); TextForDay = Hlds[NumHld].Name; } break; @@ -1947,8 +1947,8 @@ function DrawMonth (id,FirstDayOfWeek, /* Day being drawn is sunday? */ if (DayOfWeek == 6 - FirstDayOfWeek) // All the sundays are holidays - ClassForDay = (Mon == MonthToDraw) ? 'DAY_HLD_' + Colors[Theme] : - 'DAY_HLD_LIGHT_' + Colors[Theme]; + ClassForDay = (Mon == MonthToDraw) ? 'DAY_HLD_' + ColorSuffix : + 'DAY_HLD_LIGHT_' + ColorSuffix; /* Date being drawn is today? */ IsToday = (Yea == YearToDraw && diff --git a/swad_MFU.c b/swad_MFU.c index 98c34827..27564f72 100644 --- a/swad_MFU.c +++ b/swad_MFU.c @@ -180,7 +180,7 @@ void MFU_ShowMyMFUActions (void) void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions) { 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_TABS_TXT[Tab_NUM_TABS]; unsigned NumAct; @@ -189,6 +189,7 @@ void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions) char TabStr[MFU_MAX_BYTES_TAB + 1]; char MenuStr[MFU_MAX_BYTES_MENU + 1]; char TabMenuStr[MFU_MAX_BYTES_TAB + 6 + MFU_MAX_BYTES_MENU + 1]; + char URLIconSet[PATH_MAX + 1]; /***** Begin box *****/ Box_BoxBegin (NULL,Txt_My_frequent_actions, @@ -221,9 +222,11 @@ void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions) HTM_BUTTON_Submit_Begin (TabMenuStr, "class=\"BT_LINK FORM_IN_%s NOWRAP\"", The_GetSuffix ()); - HTM_IMG (Gbl.Prefs.URLIconSet,Act_GetIcon (Action),MenuStr, - "class=\"%s\"", - Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); + snprintf (URLIconSet,sizeof (URLIconSet),"%s/%s", + Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]); + HTM_IMG (URLIconSet,Act_GetIcon (Action),MenuStr, + "class=\"ICO_%s_%s\"", + Ico_GetPreffix (Ico_BLACK),The_GetSuffix ()); HTM_TxtF (" %s",TabMenuStr); HTM_BUTTON_End (); Frm_EndForm (); @@ -247,7 +250,7 @@ void MFU_WriteBigMFUActions (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_Frequent_ACTIONS; 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 MenuStr[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 *****/ 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\""); Frm_BeginForm (Action); HTM_BUTTON_Submit_Begin (TabMenuStr,"class=\"BT_LINK\""); - HTM_IMG (Gbl.Prefs.URLIconSet,Act_GetIcon (Action),MenuStr, - "class=\"%s\"", - Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); + snprintf (URLIconSet,sizeof (URLIconSet),"%s/%s", + Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]); + HTM_IMG (URLIconSet,Act_GetIcon (Action),MenuStr, + "class=\"ICO_%s_%s\"", + Ico_GetPreffix (Ico_BLACK),The_GetSuffix ()); HTM_TxtF (" %s",MenuStr); HTM_BUTTON_End (); Frm_EndForm (); diff --git a/swad_agenda.c b/swad_agenda.c index 5f8376df..c9a833b6 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -842,9 +842,10 @@ static void Agd_ShowOneEvent (struct Agd_Agenda *Agenda, } /* Event */ - HTM_TD_Begin ("class=\"%s LT %s\"", + HTM_TD_Begin ("class=\"LT %s_%s %s\"", AgdEvent.Hidden ? "ASG_TITLE_LIGHT" : "ASG_TITLE", + The_GetSuffix (), The_GetColorRows ()); HTM_ARTICLE_Begin (Anchor); HTM_Txt (AgdEvent.Event); @@ -853,8 +854,10 @@ static void Agd_ShowOneEvent (struct Agd_Agenda *Agenda, /* Location */ HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ()); - HTM_DIV_Begin ("class=\"%s\"",AgdEvent.Hidden ? "ASG_TITLE_LIGHT" : - "ASG_TITLE"); + HTM_DIV_Begin ("class=\"%s_%s\"", + AgdEvent.Hidden ? "ASG_TITLE_LIGHT" : + "ASG_TITLE", + The_GetSuffix ()); HTM_Txt (AgdEvent.Location); HTM_DIV_End (); HTM_TD_End (); diff --git a/swad_assignment.c b/swad_assignment.c index a1ac8526..28999fe9 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -457,13 +457,15 @@ static void Asg_ShowOneAssignment (struct Asg_Assignments *Assignments, /* Assignment title */ if (PrintView) - HTM_TD_Begin ("class=\"%s LT\"", - Asg.Hidden ? "ASG_TITLE_LIGHT" : - "ASG_TITLE"); - else - HTM_TD_Begin ("class=\"%s LT %s\"", + HTM_TD_Begin ("class=\"LT %s_%s\"", Asg.Hidden ? "ASG_TITLE_LIGHT" : "ASG_TITLE", + The_GetSuffix ()); + else + HTM_TD_Begin ("class=\"LT %s_%s %s\"", + Asg.Hidden ? "ASG_TITLE_LIGHT" : + "ASG_TITLE", + The_GetSuffix (), The_GetColorRows ()); HTM_ARTICLE_Begin (Anchor); HTM_Txt (Asg.Title); diff --git a/swad_attendance.c b/swad_attendance.c index 4ada7262..09b2b2a9 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -515,13 +515,15 @@ static void Att_ShowOneAttEvent (struct Att_Events *Events, /* Attendance event title */ if (ShowOnlyThisAttEventComplete) - HTM_TD_Begin ("class=\"%s LT\"", - Event->Hidden ? "ASG_TITLE_LIGHT" : - "ASG_TITLE"); - else - HTM_TD_Begin ("class=\"%s LT %s\"", + HTM_TD_Begin ("class=\"LT %s_%s\"", Event->Hidden ? "ASG_TITLE_LIGHT" : "ASG_TITLE", + The_GetSuffix ()); + else + HTM_TD_Begin ("class=\"LT %s_%s %s\"", + Event->Hidden ? "ASG_TITLE_LIGHT" : + "ASG_TITLE", + The_GetSuffix (), The_GetColorRows ()); HTM_ARTICLE_Begin (Anchor); 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 */ if (ShowOnlyThisAttEventComplete) - HTM_TD_Begin ("class=\"%s RT\"", - Event->Hidden ? "ASG_TITLE_LIGHT" : - "ASG_TITLE"); - else - HTM_TD_Begin ("class=\"%s RT %s\"", + HTM_TD_Begin ("class=\"RT %s_%s\"", Event->Hidden ? "ASG_TITLE_LIGHT" : "ASG_TITLE", + The_GetSuffix ()); + else + HTM_TD_Begin ("class=\"RT %s_%s %s\"", + Event->Hidden ? "ASG_TITLE_LIGHT" : + "ASG_TITLE", + The_GetSuffix (), The_GetColorRows ()); HTM_Unsigned (Event->NumStdsTotal); HTM_TD_End (); diff --git a/swad_box.c b/swad_box.c index 8ccc7d8c..0e75ca99 100644 --- a/swad_box.c +++ b/swad_box.c @@ -25,8 +25,10 @@ /********************************* Headers ***********************************/ /*****************************************************************************/ +#define _GNU_SOURCE // For asprintf #include // For boolean type #include // For malloc and free +#include // For asprintf #include "swad_action.h" #include "swad_box.h" @@ -82,42 +84,32 @@ void Box_BoxBegin (const char *Width,const char *Title, void (*FunctionToDrawContextualIcons) (void *Args),void *Args, const char *HelpLink,Box_Closable_t Closable) { - static const char *BgColor[The_NUM_THEMES] = - { - [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", - }; + char *ClassFrame; + /***** Begin box *****/ + if (asprintf (&ClassFrame,"FRAME FRAME_%s",The_GetSuffix ()) < 0) + Err_NotEnoughMemoryExit (); Box_BoxInternalBegin (Width,Title, FunctionToDrawContextualIcons,Args, HelpLink,Closable, - BgColor[Gbl.Prefs.Theme]); + ClassFrame); + free (ClassFrame); } void Box_BoxShadowBegin (const char *Width,const char *Title, void (*FunctionToDrawContextualIcons) (void *Args),void *Args, const char *HelpLink) { - static const char *BgColor[The_NUM_THEMES] = - { - [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", - }; + char *ClassFrame; + /***** Begin box *****/ + if (asprintf (&ClassFrame,"FRAME_SHADOW FRAME_SHADOW_%s",The_GetSuffix ()) < 0) + Err_NotEnoughMemoryExit (); Box_BoxInternalBegin (Width,Title, FunctionToDrawContextualIcons,Args, HelpLink,Box_NOT_CLOSABLE, - BgColor[Gbl.Prefs.Theme]); + ClassFrame); + free (ClassFrame); } // Return pointer to box id string diff --git a/swad_browser.c b/swad_browser.c index 7af0f716..7c134f05 100644 --- a/swad_browser.c +++ b/swad_browser.c @@ -5141,7 +5141,6 @@ static void Brw_PutIconNewFileOrFolder (void) static void Brw_PutIconFileWithLinkToViewMetadata (const struct FileMetadata *FileMetadata) { - extern const char *Ico_ClassColor[Ico_NUM_COLORS][The_NUM_THEMES]; extern const char *Txt_Link; /***** Begin cell *****/ @@ -5161,8 +5160,8 @@ static void Brw_PutIconFileWithLinkToViewMetadata (const struct FileMetadata *Fi true); // Put link to view metadata else HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"link.svg",Txt_Link, - "class=\"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO16x16 %s\"", - Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); + "class=\"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO16x16 ICO_%s_%s\"", + Ico_GetPreffix (Ico_BLACK),The_GetSuffix ()); /***** End form *****/ 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_Download; 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; /***** 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 */ 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) Brw_PutIconFile (FileMetadata->FilFolLnk.Name, @@ -8564,8 +8553,9 @@ static void Brw_WriteBigLinkToDownloadFile (const char *URL, Txt_Download; /* Put anchor and filename */ - HTM_A_Begin ("href=\"%s\" class=\"%s\" title=\"%s\" target=\"_blank\"", - URL,ClassFilename[Gbl.Prefs.Theme],Title); + HTM_A_Begin ("href=\"%s\" title=\"%s\" target=\"_blank\"" + " class=\"FILENAME_BIG_%s\"", + URL,Title,The_GetSuffix ()); if (FileMetadata->FilFolLnk.Type == Brw_IS_FILE) Brw_PutIconFile (FileMetadata->FilFolLnk.Name, "ICO40x40", diff --git a/swad_calendar.c b/swad_calendar.c index 4df3a93f..a1324f4e 100644 --- a/swad_calendar.c +++ b/swad_calendar.c @@ -217,11 +217,11 @@ void Cal_DrawCurrentMonth (void) /* Write script to draw the month */ HTM_SCRIPT_Begin (NULL,NULL); 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, (long) Gbl.StartExecutionTimeUTC, Gbl.Hierarchy.Ctr.PlcCod, - Gbl.Prefs.Theme, + The_GetSuffix (), Cfg_URL_SWAD_CGI,Lan_STR_LANG_ID[Gbl.Prefs.Language]); Frm_SetParamsForm (ParamsStr,ActSeeCal,true); HTM_TxtF ("'%s',",ParamsStr); @@ -286,13 +286,13 @@ static void Cal_DrawCalendar (Act_Action_t ActionSeeCalendar, /* Write script to draw the month */ HTM_SCRIPT_Begin (NULL,NULL); 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, (long) Gbl.StartExecutionTimeUTC, Gbl.Hierarchy.Ctr.PlcCod, PrintView ? "true" : "false", - Gbl.Prefs.Theme, + The_GetSuffix (), Cfg_URL_SWAD_CGI,Lan_STR_LANG_ID[Gbl.Prefs.Language]); Frm_SetParamsForm (ParamsStr,ActionSeeCalendar,true); HTM_TxtF ("'%s',",ParamsStr); diff --git a/swad_call_for_exam.c b/swad_call_for_exam.c index 0d603009..f5018156 100644 --- a/swad_call_for_exam.c +++ b/swad_call_for_exam.c @@ -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_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 *****/ Ins.InsCod = Gbl.Hierarchy.Ins.InsCod; @@ -991,11 +981,11 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams, /***** Institution logo *****/ HTM_TR_Begin (NULL); - HTM_TD_Begin ("colspan=\"2\" class=\"CM %s\"", - ClassTitle[Gbl.Prefs.Theme]); + HTM_TD_Begin ("colspan=\"2\" class=\"CM EXAM_TIT_%s\"", + The_GetSuffix ()); if (TypeViewCallForExam == Cfe_NORMAL_VIEW) - HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"", - Ins.WWW,ClassTitle[Gbl.Prefs.Theme]); + HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"EXAM_TIT_%s\"", + Ins.WWW,The_GetSuffix ()); Lgo_DrawLogo (HieLvl_INS,Ins.InsCod,Ins.FullName,64,NULL,true); HTM_BR (); HTM_Txt (Ins.FullName); @@ -1006,12 +996,12 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams, /***** Degree *****/ HTM_TR_Begin (NULL); - HTM_TD_Begin ("colspan=\"2\" class=\"CM %s\"", - ClassTitle[Gbl.Prefs.Theme]); + HTM_TD_Begin ("colspan=\"2\" class=\"CM EXAM_TIT_%s\"", + The_GetSuffix ()); 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, - ClassTitle[Gbl.Prefs.Theme]); + The_GetSuffix ()); HTM_Txt (Gbl.Hierarchy.Deg.FullName); if (TypeViewCallForExam == Cfe_NORMAL_VIEW) HTM_A_End (); diff --git a/swad_changelog.h b/swad_changelog.h index ef8d8e99..dc53ca4e 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -606,10 +606,12 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate TODO: Attach pdf files in multimedia. */ -#define Log_PLATFORM_VERSION "SWAD 21.91.5 (2022-04-07)" -#define CSS_FILE "swad21.91.5.css" -#define JS_FILE "swad21.78.2.js" +#define Log_PLATFORM_VERSION "SWAD 21.92 (2022-04-20)" +#define CSS_FILE "swad21.92.css" +#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.4: Apr 05, 2022 Working on design of dark theme. (323247 lines) Version 21.91.3: Apr 05, 2022 Changes in syllabus. (323227 lines) diff --git a/swad_course.c b/swad_course.c index bd802d84..3a257fea 100644 --- a/swad_course.c +++ b/swad_course.c @@ -2215,8 +2215,9 @@ void Crs_PutIconToSelectMyCoursesInBreadcrumb (void) Frm_BeginForm (ActMyCrs); /***** Put icon with link *****/ - HTM_INPUT_IMAGE (Gbl.Prefs.URLTheme,"sitemap.svg",Txt_My_courses, - "class=\"BC_ICON ICO_HIGHLIGHT\""); + HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"sitemap.svg",Txt_My_courses, + "class=\"BC_ICO BC_ICO_%s ICO_HIGHLIGHT\"", + The_GetSuffix ()); /***** End form *****/ Frm_EndForm (); diff --git a/swad_date.c b/swad_date.c index d5add3e2..574db970 100644 --- a/swad_date.c +++ b/swad_date.c @@ -1630,7 +1630,6 @@ void Dat_WriteScriptMonths (void) extern const char *Txt_MONTHS_SMALL[12]; extern const char *Txt_MONTHS_SMALL_SHORT[12]; unsigned NumMonth; - The_Theme_t Theme; /***** Month names (full) *****/ HTM_Txt ("\tvar Months = ["); @@ -1655,18 +1654,6 @@ void Dat_WriteScriptMonths (void) HTM_TxtF ("'%s'",Txt_MONTHS_SMALL_SHORT[NumMonth]); } 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"); } /*****************************************************************************/ diff --git a/swad_exam.c b/swad_exam.c index 01981287..f62786c0 100644 --- a/swad_exam.c +++ b/swad_exam.c @@ -539,13 +539,15 @@ static void Exa_ShowOneExam (struct Exa_Exams *Exams, /***** Exam title and main data *****/ if (ShowOnlyThisExam) - HTM_TD_Begin ("class=\"%s LT\"", - Exam->Hidden ? "ASG_TITLE_LIGHT": - "ASG_TITLE"); - else - HTM_TD_Begin ("class=\"%s LT %s\"", + HTM_TD_Begin ("class=\"LT %s_%s\"", Exam->Hidden ? "ASG_TITLE_LIGHT": "ASG_TITLE", + The_GetSuffix ()); + else + HTM_TD_Begin ("class=\"LT %s_%s %s\"", + Exam->Hidden ? "ASG_TITLE_LIGHT": + "ASG_TITLE", + The_GetSuffix (), The_GetColorRows ()); /* Exam title */ @@ -574,13 +576,15 @@ static void Exa_ShowOneExam (struct Exa_Exams *Exams, /***** Number of sessions in exam *****/ if (ShowOnlyThisExam) - HTM_TD_Begin ("class=\"%s RT\"", - Exam->Hidden ? "ASG_TITLE_LIGHT": - "ASG_TITLE"); - else - HTM_TD_Begin ("class=\"%s RT %s\"", + HTM_TD_Begin ("class=\"RT %s_%s\"", Exam->Hidden ? "ASG_TITLE_LIGHT": "ASG_TITLE", + The_GetSuffix ()); + else + HTM_TD_Begin ("class=\"RT %s_%s %s\"", + Exam->Hidden ? "ASG_TITLE_LIGHT": + "ASG_TITLE", + The_GetSuffix (), The_GetColorRows ()); Exams->ExaCod = Exam->ExaCod; diff --git a/swad_exam_session.c b/swad_exam_session.c index a8cf600d..d61aad73 100644 --- a/swad_exam_session.c +++ b/swad_exam_session.c @@ -514,9 +514,10 @@ static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams, extern const char *Txt_Play; 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": "ASG_TITLE", + The_GetSuffix (), The_GetColorRows ()); /***** Session title *****/ diff --git a/swad_follow.c b/swad_follow.c index 9ef1492b..12b6bbda 100644 --- a/swad_follow.c +++ b/swad_follow.c @@ -743,15 +743,14 @@ static void Fol_PutInactiveIconToFollowUnfollow (void) 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; /***** Form to unfollow *****/ Frm_BeginForm (ActFolUsr); Usr_PutParamUsrCodEncrypted (EncryptedUsrCod); HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-plus.svg",Txt_Follow, - "class=\"FOLLOW_USR_ICO ICO16x16 %s ICO_HIGHLIGHT\"", - Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); + "class=\"FOLLOW_USR_ICO ICO16x16 ICO_%s_%s ICO_HIGHLIGHT\"", + Ico_GetPreffix (Ico_BLACK),The_GetSuffix ()); Frm_EndForm (); } diff --git a/swad_game.c b/swad_game.c index 871eadc8..6665b1da 100644 --- a/swad_game.c +++ b/swad_game.c @@ -590,13 +590,15 @@ static void Gam_ShowOneGame (struct Gam_Games *Games, /***** Game title and main data *****/ if (ShowOnlyThisGame) - HTM_TD_Begin ("class=\"%s LT\"", - Game->Hidden ? "ASG_TITLE_LIGHT": - "ASG_TITLE"); - else - HTM_TD_Begin ("class=\"%s LT %s\"", + HTM_TD_Begin ("class=\"LT %s_%s\"", Game->Hidden ? "ASG_TITLE_LIGHT": "ASG_TITLE", + The_GetSuffix ()); + else + HTM_TD_Begin ("class=\"LT %s_%s %s\"", + Game->Hidden ? "ASG_TITLE_LIGHT": + "ASG_TITLE", + The_GetSuffix (), The_GetColorRows ()); /* Game title */ @@ -625,13 +627,15 @@ static void Gam_ShowOneGame (struct Gam_Games *Games, /***** Number of matches in game *****/ if (ShowOnlyThisGame) - HTM_TD_Begin ("class=\"%s RT\"", - Game->Hidden ? "ASG_TITLE_LIGHT": - "ASG_TITLE"); - else - HTM_TD_Begin ("class=\"%s RT %s\"", + HTM_TD_Begin ("class=\"RT %s_%s\"", Game->Hidden ? "ASG_TITLE_LIGHT": "ASG_TITLE", + The_GetSuffix ()); + else + HTM_TD_Begin ("class=\"RT %s_%s %s\"", + Game->Hidden ? "ASG_TITLE_LIGHT": + "ASG_TITLE", + The_GetSuffix (), The_GetColorRows ()); Games->GamCod = Game->GamCod; diff --git a/swad_global.c b/swad_global.c index c9b6341a..002e5342 100644 --- a/swad_global.c +++ b/swad_global.c @@ -68,8 +68,6 @@ struct Globals Gbl; // All the global parameters and variables must be in this s 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; Rol_Role_t Role; @@ -124,10 +122,6 @@ void Gbl_InitializeGlobals (void) Gbl.Prefs.Menu = Mnu_MENU_DEFAULT; // Default menu Gbl.Prefs.Theme = The_THEME_DEFAULT; // Default theme 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.IsOpen = false; diff --git a/swad_global.h b/swad_global.h index c3fcbedb..8cfd8168 100644 --- a/swad_global.h +++ b/swad_global.h @@ -150,8 +150,6 @@ struct Globals The_Theme_t Theme; unsigned SideCols; PhoSha_Shape_t PhotoShape; - char URLTheme[PATH_MAX + 1]; - char URLIconSet[PATH_MAX + 1]; } Prefs; struct diff --git a/swad_icon.c b/swad_icon.c index 59720c18..5ae080ff 100644 --- a/swad_icon.c +++ b/swad_icon.c @@ -68,55 +68,30 @@ const char *Ico_IconSetNames[Ico_NUM_ICON_SETS] = [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 ****************************/ /*****************************************************************************/ 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 *************/ /*****************************************************************************/ @@ -209,9 +184,6 @@ void Ico_ChangeIconSet (void) { /***** Get param with icon set *****/ 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 *****/ 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); - if (asprintf (&Class,"CONTEXT_ICO16x16 %s", - Ico_ClassColor[Color][Gbl.Prefs.Theme]) < 0) - Err_NotEnoughMemoryExit (); - Ico_PutIcon (Icon,Color,Title,Class); - free (Class); + if (Color == Ico_UNCHANGED) + Ico_PutIcon (Icon,Color,Title,"CONTEXT_ICO16x16"); + else + { + 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 (); } @@ -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) { - HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title, - "class=\"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO16x16 %s\"", - Ico_ClassColor[Color][Gbl.Prefs.Theme]); + if (Color == Ico_UNCHANGED) + HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title, + "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) { - HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title, - "class=\"ICO_HIGHLIGHT ICOx20 %s\"", - Ico_ClassColor[Color][Gbl.Prefs.Theme]); + if (Color == Ico_UNCHANGED) + HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title, + "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) { - const char *CC = Ico_ClassColor[Color][Gbl.Prefs.Theme]; - - HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,Title, - "class=\"%s%s%s\"",Class,CC[0] ? " " : "",CC); + if (Color == Ico_UNCHANGED) + HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,Title, + "class=\"%s\"", + 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_Number_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][The_THEME_GREY ] = "ICO20x20 BLACK_ICO_GREY", - [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_ICON_SET_AWESOME] = Ico_BLACK, + [Ico_ICON_SET_NUVOLA ] = Ico_UNCHANGED, }; Ico_IconSet_t IconSet; char *SubQuery; @@ -626,8 +602,13 @@ void Ico_GetAndShowNumUsrsPerIconSet (void) if (asprintf (&URL,"%s/%s", Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[IconSet]) < 0) Err_NotEnoughMemoryExit (); - HTM_IMG (URL,"cog.svg",Ico_IconSetNames[IconSet], - "class=\"%s\"",ClassIco[IconSet][Gbl.Prefs.Theme]); + if (Color[IconSet] == Ico_UNCHANGED) + 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); HTM_TD_End (); diff --git a/swad_icon.h b/swad_icon.h index 9ed31c5b..e63bb45f 100644 --- a/swad_icon.h +++ b/swad_icon.h @@ -54,6 +54,8 @@ typedef enum /***************************** Public prototypes *****************************/ /*****************************************************************************/ +const char *Ico_GetPreffix (Ico_Color_t Color); + const char *Ico_GetIcon (const char *IconWithoutExtension); void Ico_PutIconsToSelectIconSet (void); diff --git a/swad_indicator.c b/swad_indicator.c index 4f35befe..9eecae88 100644 --- a/swad_indicator.c +++ b/swad_indicator.c @@ -926,7 +926,7 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I HTM_TD_Begin ("class=\"LM %s_%s %s\"", (IndicatorsCrs.TeachingGuideSrc != Inf_NONE) ? "DAT_SMALL_GREEN" : - "DAT_SMAL_RED", + "DAT_SMALL_RED", The_GetSuffix (), The_GetColorRows ()); HTM_Txt (Txt_INFO_SRC_SHORT_TEXT[IndicatorsCrs.TeachingGuideSrc]); diff --git a/swad_layout.c b/swad_layout.c index c9b18647..2b9e80e6 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -288,6 +288,7 @@ void Lay_WriteStartOfPage (void) break; } HTM_Txt (">\n"); + Gbl.Prefs.Theme = The_THEME_WHITE; // In a new tab, use white background Gbl.Layout.WritingHTMLStart = false; Gbl.Layout.HTMLStartWritten = Gbl.Layout.DivsEndWritten = true; @@ -968,33 +969,14 @@ static void Lay_WritePageTopHeading (void) { extern const char *Txt_TAGLINE; 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 *****/ HTM_Txt ("
"); /***** 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 */ HTM_DIV_Begin ("id=\"head_row_1_left\""); @@ -1052,8 +1034,8 @@ static void Lay_WritePageTopHeading (void) /***** 2nd. row *****/ /* Begin second row */ - HTM_DIV_Begin ("id=\"head_row_2\" class=\"%s\"", - ClassHeadRow2[Gbl.Prefs.Theme]); + HTM_DIV_Begin ("id=\"head_row_2\" class=\"HEAD_ROW_2_%s\"", + The_GetSuffix ()); /* 2nd. row, 1st. column Clock with hour:minute (server hour is shown) */ diff --git a/swad_logo.c b/swad_logo.c index 0b56a3a2..a213b800 100644 --- a/swad_logo.c +++ b/swad_logo.c @@ -63,7 +63,6 @@ static void Lgo_PutIconToRemoveLogo (Act_Action_t ActionRem); void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText, 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] = { [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 *Icon; bool ClassNotEmpty; - Ico_Color_t Color; /***** Path to logo *****/ 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) { /***** Draw logo *****/ + ClassNotEmpty = false; + if (Class) + if (Class[0]) + ClassNotEmpty = true; + if (LogoFound) { 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 (); if (asprintf (&Icon,"%u.png",(unsigned) Cod) < 0) Err_NotEnoughMemoryExit (); - Color = Ico_UNCHANGED; + + HTM_IMG (URL,Icon,AltText, + "class=\"ICO%ux%u" + "%s%s\"", + Size,Size, + ClassNotEmpty ? " " : + "", + ClassNotEmpty ? Class : + ""); + } else { @@ -163,24 +175,18 @@ void Lgo_DrawLogo (HieLvl_Level_t Scope,long Cod,const char *AltText, Err_NotEnoughMemoryExit (); if (asprintf (&Icon,"%s",HieIcon[Scope]) < 0) 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 (URL); } diff --git a/swad_match.c b/swad_match.c index 03d03ae7..d405fe40 100644 --- a/swad_match.c +++ b/swad_match.c @@ -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 : Txt_Resume, - "class=\"BT_LINK LT ASG_TITLE\""); + "class=\"BT_LINK LT ASG_TITLE_%s\"", + The_GetSuffix ()); HTM_Txt (Match->Title); HTM_BUTTON_End (); diff --git a/swad_menu.c b/swad_menu.c index da34ee83..6a901ff9 100644 --- a/swad_menu.c +++ b/swad_menu.c @@ -214,24 +214,12 @@ Act_Action_t Mnu_GetFirstActionAvailableInCurrentTab (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]; - 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][The_THEME_GREY ] = " MENU_ICO_GREY", - [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 ] = "", + [Ico_ICON_SET_AWESOME] = "MENU_ICO", + [Ico_ICON_SET_NUVOLA ] = NULL, }; unsigned NumOptInMenu; Act_Action_t NumAct; @@ -271,10 +259,17 @@ void Mnu_WriteMenuThisTab (void) /***** Icon and text *****/ HTM_DIV_Begin ("class=\"MENU_ICO_TXT\""); - HTM_DIV_Begin ("class=\"MENU_ICO%s\" style=\"background-image:url('%s/%s');\"", - ClassIcoMenu[Gbl.Prefs.IconSet][Gbl.Prefs.Theme], - Gbl.Prefs.URLIconSet, - Act_GetIcon (NumAct)); + if (ClassIcoMenu[Gbl.Prefs.IconSet]) + HTM_DIV_Begin ("class=\"MENU_ICO %s_%s\"" + " style=\"background-image:url('%s/%s/%s');\"", + 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_Begin ("class=\"MENU_TXT MENU_TXT_%s\"", The_GetSuffix ()); diff --git a/swad_notification.c b/swad_notification.c index 1729cb8a..e55d7ce7 100644 --- a/swad_notification.c +++ b/swad_notification.c @@ -455,7 +455,7 @@ void Ntf_ShowMyNotifications (void) { ClassTxt = "MSG_TIT_REM"; ClassLink = "BT_LINK MSG_TIT_REM"; - ClassAuthor = "MSG_AUT_REM"; + ClassAuthor = "MSG_AUT_LIGHT"; ClassBg = "MSG_BG_REM"; PutLink = false; } @@ -1661,8 +1661,8 @@ void Ntf_WriteNumberOfNewNtfs (void) if (NumNewNtfs) { HTM_BR (); - HTM_IMG (Gbl.Prefs.URLTheme,"bell.svg",Txt_Notifications, - "class=\"ICO16x16\""); + HTM_IMG (Cfg_URL_ICON_PUBLIC,"bell.svg",Txt_Notifications, + "class=\"ICO16x16 NOTIF_ICO_%s\"",The_GetSuffix ()); HTM_TxtF (" %u",NumNewNtfs); HTM_SPAN_Begin ("id=\"notif_new\""); HTM_TxtF (" %s",NumNewNtfs == 1 ? Txt_NOTIF_new_SINGULAR : diff --git a/swad_parameter.c b/swad_parameter.c index a155df98..f471d980 100644 --- a/swad_parameter.c +++ b/swad_parameter.c @@ -649,11 +649,8 @@ static bool Par_CheckIsParamCanBeUsedInGETMethod (const char *ParamName) void Par_GetMainParams (void) { 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; char Nick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; - char URL[PATH_MAX + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1]; /***** 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 *****/ 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) *****/ Par_GetParToText ("cty",LongStr,Cns_MAX_DECIMAL_DIGITS_LONG); if (LongStr[0]) // Parameter "cty" available diff --git a/swad_photo_shape.c b/swad_photo_shape.c index 8bd46ca6..7cd0f642 100644 --- a/swad_photo_shape.c +++ b/swad_photo_shape.c @@ -58,7 +58,6 @@ static void PhoSha_PutIconsPhotoShape (__attribute__((unused)) void *Args); void PhoSha_PutIconsToSelectPhotoShape (void) { 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_PHOTO_SHAPES[PhoSha_NUM_SHAPES]; static const char *ClassPhoto[PhoSha_NUM_SHAPES] = @@ -88,9 +87,9 @@ void PhoSha_PutIconsToSelectPhotoShape (void) Par_PutHiddenParamUnsigned (NULL,"PhotoShape",Shape); HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user.svg", Txt_PHOTO_SHAPES[Shape], - "class=\"%s %s\"", + "class=\"%s ICO_%s_%s\"", ClassPhoto[Shape], - Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); + Ico_GetPreffix (Ico_BLACK),The_GetSuffix ()); Frm_EndForm (); HTM_DIV_End (); } @@ -160,7 +159,6 @@ PhoSha_Shape_t PhoSha_GetShapeFromStr (const char *Str) void PhoSha_GetAndShowNumUsrsPerPhotoShape (void) { 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_User_photos; extern const char *Txt_Number_of_users; @@ -215,9 +213,9 @@ void PhoSha_GetAndShowNumUsrsPerPhotoShape (void) HTM_TD_Begin ("class=\"CM\""); HTM_IMG (Cfg_URL_ICON_PUBLIC,"user.svg",Txt_PHOTO_SHAPES[Shape], - "class=\"%s %s\"", + "class=\"%s ICO_%s_%s\"", ClassPhoto[Shape], - Ico_ClassColor[Ico_BLACK][Gbl.Prefs.Theme]); + Ico_GetPreffix (Ico_BLACK),The_GetSuffix ()); HTM_TD_End (); HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ()); diff --git a/swad_project.c b/swad_project.c index 3c0de9ca..e2fdda2a 100644 --- a/swad_project.c +++ b/swad_project.c @@ -1361,12 +1361,12 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects, switch (ProjectView) { case Prj_LIST_PROJECTS: - HTM_TD_Begin ("class=\"%s LT %s\"", - ClassTitle,The_GetColorRows ()); + HTM_TD_Begin ("class=\"LT %s_%s %s\"", + ClassTitle,The_GetSuffix (),The_GetColorRows ()); break; default: - HTM_TD_Begin ("class=\"%s LT\"", - ClassTitle); + HTM_TD_Begin ("class=\"LT %s_%s\"", + ClassTitle,The_GetSuffix ()); break; } HTM_ARTICLE_Begin (Anchor); diff --git a/swad_setting.c b/swad_setting.c index dcab496b..d8f2cf9a 100644 --- a/swad_setting.c +++ b/swad_setting.c @@ -158,26 +158,20 @@ void Set_GetSettingsFromIP (void) { 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]); - - /* Get date format (row[1]) */ - Gbl.Prefs.DateFormat = Dat_GetDateFormatFromStr (row[1]); - - /* Get theme (row[2]) */ - Gbl.Prefs.Theme = The_GetThemeFromStr (row[2]); - - /* 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]); + Gbl.Prefs.DateFormat = Dat_GetDateFormatFromStr (row[1]); + Gbl.Prefs.Theme = The_GetThemeFromStr (row[2]); + Gbl.Prefs.IconSet = Ico_GetIconSetFromStr (row[3]); + Gbl.Prefs.Menu = Mnu_GetMenuFromStr (row[4]); + Gbl.Prefs.SideCols = Set_GetSideColsFromStr (row[5]); + Gbl.Prefs.PhotoShape = PhoSha_GetShapeFromStr (row[6]); } /***** Free structure that stores the query result *****/ diff --git a/swad_survey.c b/swad_survey.c index 1de1fb73..090c8120 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -529,9 +529,10 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys, /* Survey title */ if (ShowOnlyThisSvyComplete) - HTM_TD_Begin ("class=\"%s LT\"", + HTM_TD_Begin ("class=\"LT %s_%s\"", Svy.Status.Visible ? "ASG_TITLE" : - "ASG_TITLE_LIGHT"); + "ASG_TITLE_LIGHT", + The_GetSuffix ()); else HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ()); HTM_ARTICLE_Begin (Anchor); diff --git a/swad_tab.c b/swad_tab.c index bfda0e27..d4d6645c 100644 --- a/swad_tab.c +++ b/swad_tab.c @@ -51,41 +51,20 @@ static const char *Tab_GetIcon (Tab_Tab_t Tab); 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]; Tab_Tab_t NumTab; 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", - [The_THEME_GREY ] = "HEAD_ROW_3_GREY", - [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 ] = "", + [Ico_ICON_SET_AWESOME] = "TAB_ICO", + [Ico_ICON_SET_NUVOLA ] = NULL, }; /***** Begin tabs container *****/ - HTM_DIV_Begin ("class=\"%s\"",ClassHeadRow3[Gbl.Prefs.Theme]); + HTM_DIV_Begin ("class=\"HEAD_ROW_3_%s\"",The_GetSuffix ()); HTM_Txt ("
' + DAYS_CAPS[(DayOfWeek + FirstDayOfWeek) % 7] + '