diff --git a/css/swad23.50.1.css b/css/swad23.51.2.css similarity index 98% rename from css/swad23.50.1.css rename to css/swad23.51.2.css index a31b6316..df14c317 100644 --- a/css/swad23.50.1.css +++ b/css/swad23.51.2.css @@ -4362,29 +4362,40 @@ legend {font-size:12pt;} } /********** Author of assignments, attendance, messages, surveys... **********/ -.AUTHOR_1_LINE - { - display:inline-block; - box-sizing:border-box; - max-width:100px; - height:20px; - text-align:left; - vertical-align:middle; - white-space:nowrap; - overflow:hidden; - text-overflow:ellipsis; + +@media only screen and (max-width: 600px) + { /* For mobile-phones */ + .AUTHOR_1_LINE, .AUTHOR_2_LINES + { + display:none; + } } -.AUTHOR_2_LINES - { - display:inline-block; - box-sizing:border-box; - max-width:60px; - height:40px; - text-align:left; - vertical-align:middle; - white-space:nowrap; - overflow:hidden; - text-overflow:ellipsis; +@media only screen and (min-width: 600px) + { /* For tablets and desktop */ + .AUTHOR_1_LINE + { + display:inline-block; + box-sizing:border-box; + max-width:100px; + height:20px; + text-align:left; + vertical-align:middle; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; + } + .AUTHOR_2_LINES + { + display:inline-block; + box-sizing:border-box; + max-width:60px; + height:40px; + text-align:left; + vertical-align:middle; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; + } } /************************** Owner of assignments and works *******************/ @@ -4782,6 +4793,29 @@ legend {font-size:12pt;} width:32px; } +/********************************* Notifications *****************************/ +@media only screen and (max-width: 600px) + { /* For mobile-phones */ + .Ntf_TYPE {display:none;} + .Ntf_LOCATION { + display:inline-block; + max-width:80px; + overflow:hidden; + text-overflow:ellipsis; + text-align:left; + vertical-align:bottom; + } + } +@media only screen and (min-width: 600px) + { /* For tablets and desktop */ + .Ntf_TYPE {display:inline;} + .Ntf_LOCATION { + display:inline-block; + text-align:left; + vertical-align:bottom; + } + } + /************************************ Forum **********************************/ .FOR_IMG_CONT { diff --git a/swad_changelog.h b/swad_changelog.h index f5d1c66b..2c2712de 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -633,10 +633,11 @@ Me sale este error, no s "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') */ -#define Log_PLATFORM_VERSION "SWAD 23.51.1 (2023-12-06)" -#define CSS_FILE "swad23.50.1.css" +#define Log_PLATFORM_VERSION "SWAD 23.51.2 (2023-12-06)" +#define CSS_FILE "swad23.51.2.css" #define JS_FILE "swad23.47.3.js" /* + Version 23.51.2: Dec 06, 2023 Responsive design in notifications. (335778 lines) Version 23.51.1: Dec 06, 2023 Code refactoring in notifications. (335743 lines) Version 23.51: Dec 06, 2023 Code refactoring in notifications and hierarchy. (335718 lines) Version 23.50.1: Nov 28, 2023 Responsive design in announcements and notices. (335630 lines) diff --git a/swad_icon.c b/swad_icon.c index d4d903c4..5609e00c 100644 --- a/swad_icon.c +++ b/swad_icon.c @@ -303,10 +303,10 @@ void Ico_PutContextualIconToView (Act_Action_t NextAction,const char *Anchor, "list.svg",Ico_BLACK); } -void Ico_PutContextualIconToConfigure (Act_Action_t NextAction, +void Ico_PutContextualIconToConfigure (Act_Action_t NextAction,const char *Anchor, void (*FuncPars) (void *Args),void *Args) { - Lay_PutContextualLinkOnlyIcon (NextAction,NULL, + Lay_PutContextualLinkOnlyIcon (NextAction,Anchor, FuncPars,Args, "cog.svg",Ico_BLACK); } diff --git a/swad_icon.h b/swad_icon.h index 408388a6..7db5e477 100644 --- a/swad_icon.h +++ b/swad_icon.h @@ -90,7 +90,7 @@ void Ico_PutContextualIconToViewFiles (Act_Action_t NextAction, void (*FuncPars) (void *Args),void *Args); void Ico_PutContextualIconToView (Act_Action_t NextAction,const char *Anchor, void (*FuncPars) (void *Args),void *Args); -void Ico_PutContextualIconToConfigure (Act_Action_t NextAction, +void Ico_PutContextualIconToConfigure (Act_Action_t NextAction,const char *Anchor, void (*FuncPars) (void *Args),void *Args); void Ico_PutContextualIconToHideUnhide (const Act_Action_t NextAction[HidVis_NUM_HIDDEN_VISIBLE], const char *Anchor, diff --git a/swad_message.c b/swad_message.c index fe3981d0..a775280a 100644 --- a/swad_message.c +++ b/swad_message.c @@ -2639,7 +2639,7 @@ void Msg_WriteMsgDate (time_t TimeUTC,const char *ClassTxt,const char *ClassBg) /***** Write date and time *****/ Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC, - Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA, + Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK, true,true,false,0x6); /***** End cell *****/ diff --git a/swad_notification.c b/swad_notification.c index 49f7ba44..780515f5 100644 --- a/swad_notification.c +++ b/swad_notification.c @@ -286,9 +286,9 @@ static const char *Ntf_Icons[Ntf_NUM_NOTIFY_EVENTS] = /***************************** Private prototypes ****************************/ /*****************************************************************************/ +static void Ntf_PutContextualLinks (bool AllNotifications, + unsigned NumNotifications); static void Ntf_PutIconsNotif (__attribute__((unused)) void *Args); - -static void Ntf_WriteFormAllNotifications (bool AllNotifications); static void Ntf_WriteHeading (void); static void Ntf_GetNotif (MYSQL_RES *mysql_res, Ntf_NotifyEvent_t *NotifyEvent, @@ -328,9 +328,6 @@ static void Ntf_GetParsNotifyEvents (void); void Ntf_ShowMyNotifications (void) { extern const char *Hlp_START_Notifications; - extern const char *Txt_Mark_all_NOTIFICATIONS_as_read; - extern const char *Txt_Settings; - extern const char *Txt_Domains; extern const char *Txt_Notifications; extern const char *Txt_You_have_no_notifications; extern const char *Txt_You_have_no_unread_notifications; @@ -350,22 +347,7 @@ void Ntf_ShowMyNotifications (void) NumNotifications = Ntf_DB_GetMyNotifications (&mysql_res,AllNotifications); /***** Contextual menu *****/ - Mnu_ContextMenuBegin (); - Ntf_WriteFormAllNotifications (AllNotifications); // Show all notifications - if (NumNotifications) // TODO: Show message only when I don't have notificacions at all - Lay_PutContextualLinkIconText (ActMrkNtfSee,NULL, - NULL,NULL, - "eye.svg",Ico_BLACK, - Txt_Mark_all_NOTIFICATIONS_as_read,NULL); // Mark notifications as read - Lay_PutContextualLinkIconText (ActReqEdiSet,Ntf_NOTIFICATIONS_ID, - NULL,NULL, - "cog.svg",Ico_BLACK, - Txt_Settings,NULL); // Change notification settings - Lay_PutContextualLinkIconText (ActSeeMai,NULL, - NULL,NULL, - "envelope.svg",Ico_BLACK, - Txt_Domains,NULL); // View allowed mail domains - Mnu_ContextMenuEnd (); + Ntf_PutContextualLinks (AllNotifications,NumNotifications); /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Notifications, @@ -417,33 +399,57 @@ void Ntf_ShowMyNotifications (void) Ntf_DB_UpdateMyLastAccessToNotifications (); } +/*****************************************************************************/ +/*************************** Put contextual links ****************************/ +/*****************************************************************************/ + +static void Ntf_PutContextualLinks (bool AllNotifications, + unsigned NumNotifications) + { + extern const char *Txt_Show_all_notifications; + extern const char *Txt_Show_all_NOTIFICATIONS; + extern const char *Txt_Mark_all_NOTIFICATIONS_as_read; + extern const char *Txt_Domains; + + Mnu_ContextMenuBegin (); + + /***** Show all notifications *****/ + Lay_PutContextualCheckbox (ActSeeNtf,NULL, + "All", + AllNotifications,false, + Txt_Show_all_notifications, + Txt_Show_all_NOTIFICATIONS); + + /***** Mark notifications as read *****/ + if (NumNotifications) // TODO: Show message only when I don't have notificacions at all + Lay_PutContextualLinkIconText (ActMrkNtfSee,NULL, + NULL,NULL, + "eye.svg",Ico_BLACK, + Txt_Mark_all_NOTIFICATIONS_as_read,NULL); + + /***** View allowed mail domains *****/ + Lay_PutContextualLinkIconText (ActSeeMai,NULL, + NULL,NULL, + "envelope.svg",Ico_BLACK, + Txt_Domains,NULL); + + Mnu_ContextMenuEnd (); + } + /*****************************************************************************/ /****************** Put contextual icons in notifications ********************/ /*****************************************************************************/ static void Ntf_PutIconsNotif (__attribute__((unused)) void *Args) { + /***** Edit notification settings *****/ + Ico_PutContextualIconToConfigure (ActReqEdiSet,Ntf_NOTIFICATIONS_ID, + NULL,NULL); + /***** Put icon to show a figure *****/ Fig_PutIconToShowFigure (Fig_NOTIFY_EVENTS); } -/*****************************************************************************/ -/********** Write a form to select whether show all notifications ************/ -/*****************************************************************************/ - -static void Ntf_WriteFormAllNotifications (bool AllNotifications) - { - extern const char *Txt_Show_all_notifications; - extern const char *Txt_Show_all_NOTIFICATIONS; - - Lay_PutContextualCheckbox (ActSeeNtf, - NULL, - "All", - AllNotifications,false, - Txt_Show_all_notifications, - Txt_Show_all_NOTIFICATIONS); - } - /*****************************************************************************/ /**************************** Write table heading ****************************/ /*****************************************************************************/ @@ -457,11 +463,11 @@ static void Ntf_WriteHeading (void) extern const char *Txt_Email; HTM_TR_Begin (NULL); - HTM_TH_Span (Txt_Event ,HTM_HEAD_LEFT ,1,2,NULL); - HTM_TH (Txt_MSG_From,HTM_HEAD_LEFT ); - HTM_TH (Txt_Location,HTM_HEAD_LEFT ); - HTM_TH (Txt_Date ,HTM_HEAD_CENTER); - HTM_TH (Txt_Email ,HTM_HEAD_LEFT ); + HTM_TH_Span (Txt_Event ,HTM_HEAD_LEFT ,1,2,NULL); + HTM_TH (Txt_MSG_From,HTM_HEAD_LEFT ); + HTM_TH (Txt_Location,HTM_HEAD_LEFT ); + HTM_TH (Txt_Date ,HTM_HEAD_RIGHT); + HTM_TH (Txt_Email ,HTM_HEAD_LEFT ); HTM_TR_End (); } @@ -603,7 +609,7 @@ static void Ntf_WriteNotif (Ntf_NotifyEvent_t NotifyEvent, switch (PutForm) { case Frm_DONT_PUT_FORM: - HTM_SPAN_Begin ("class=\"%s\"",Class.Txt); + HTM_SPAN_Begin ("class=\"Ntf_TYPE %s\"",Class.Txt); HTM_Txt (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent]); HTM_SPAN_End (); break; @@ -611,9 +617,8 @@ static void Ntf_WriteNotif (Ntf_NotifyEvent_t NotifyEvent, Action = Ntf_StartFormGoToAction (NotifyEvent,Hie[Hie_CRS].HieCod,UsrDat,Cod,&Forums); PutForm = Frm_CheckIfInside () ? Frm_PUT_FORM : Frm_DONT_PUT_FORM; - HTM_BUTTON_Submit_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent], - "class=\"LT %s_%s\"", + "class=\"Ntf_TYPE LT %s_%s\"", Class.Link,The_GetSuffix ()); HTM_Txt (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent]); HTM_BUTTON_End (); @@ -644,12 +649,12 @@ static void Ntf_WriteNotif (Ntf_NotifyEvent_t NotifyEvent, switch (PutForm) { case Frm_DONT_PUT_FORM: - HTM_SPAN_Begin ("class=\"%s_%s\"", + HTM_DIV_Begin ("class=\"Ntf_LOCATION %s_%s\"", Class.Txt,The_GetSuffix ()); break; case Frm_PUT_FORM: HTM_BUTTON_Submit_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent], - "class=\"LT %s_%s\"", + "class=\"Ntf_LOCATION %s_%s\"", Class.Link,The_GetSuffix ()); break; } @@ -657,11 +662,11 @@ static void Ntf_WriteNotif (Ntf_NotifyEvent_t NotifyEvent, For_ResetForums (&Forums); For_GetThreadForumTypeAndHieCodOfAPost (Cod,&Forums.Forum); For_SetForumName (&Forums.Forum,ForumName,Gbl.Prefs.Language,false); // Set forum name in recipient's language - HTM_TxtF ("%s: %s",Txt_Forum,ForumName); + HTM_TxtF ("%s: %s",Txt_Forum,ForumName); switch (PutForm) { case Frm_DONT_PUT_FORM: - HTM_SPAN_End (); + HTM_DIV_End (); break; case Frm_PUT_FORM: HTM_BUTTON_End (); @@ -681,12 +686,12 @@ static void Ntf_WriteNotif (Ntf_NotifyEvent_t NotifyEvent, switch (PutForm) { case Frm_DONT_PUT_FORM: - HTM_SPAN_Begin ("class=\"%s_%s\"", - Class.Txt,The_GetSuffix ()); + HTM_DIV_Begin ("class=\"Ntf_LOCATION %s_%s\"", + Class.Txt,The_GetSuffix ()); break; case Frm_PUT_FORM: HTM_BUTTON_Submit_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent], - "class=\"LT %s_%s\"", + "class=\"Ntf_LOCATION %s_%s\"", Class.Link,The_GetSuffix ()); break; } @@ -696,7 +701,7 @@ static void Ntf_WriteNotif (Ntf_NotifyEvent_t NotifyEvent, Level--) if (Hie[Level].HieCod > 0) { - HTM_TxtF ("%s: %s", + HTM_TxtF ("%s: %s", Txt_HIERARCHY_SINGUL_Abc[Level], Hie[Level].ShrtName); break; @@ -707,7 +712,7 @@ static void Ntf_WriteNotif (Ntf_NotifyEvent_t NotifyEvent, switch (PutForm) { case Frm_DONT_PUT_FORM: - HTM_SPAN_End (); + HTM_DIV_End (); break; case Frm_PUT_FORM: HTM_BUTTON_End (); diff --git a/swad_project.c b/swad_project.c index d91f8b31..36aa7fd2 100644 --- a/swad_project.c +++ b/swad_project.c @@ -1273,7 +1273,7 @@ void Prj_PutIconsListProjects (void *Projects) /***** Put form to go to configuration of projects *****/ if (ICanConfigAllProjects) - Ico_PutContextualIconToConfigure (ActCfgPrj, + Ico_PutContextualIconToConfigure (ActCfgPrj,NULL, NULL,NULL); /***** Link to get resource link *****/ diff --git a/swad_test.c b/swad_test.c index a42bdb94..8d5d331a 100644 --- a/swad_test.c +++ b/swad_test.c @@ -450,7 +450,7 @@ void Tst_PutIconsTests (__attribute__((unused)) void *Args) case Rol_TCH: case Rol_SYS_ADM: /***** Put icon to go to test configuration *****/ - Ico_PutContextualIconToConfigure (ActCfgTst, + Ico_PutContextualIconToConfigure (ActCfgTst,NULL, NULL,NULL); /***** Put icon to edit tags *****/