From 2a49a54c7b8e776ff05ec9a2d2db7477143c2741 Mon Sep 17 00:00:00 2001 From: acanas Date: Tue, 30 Jan 2024 14:12:03 +0100 Subject: [PATCH] Version 23.63.4: Jan 30, 2024 Code refactoring in users. --- css/{swad23.63.2.css => swad23.63.3.css} | 6 +- swad_changelog.h | 6 +- swad_message.c | 6 +- swad_statistic.c | 7 +- swad_user.c | 208 ++++++++++++----------- swad_user.h | 2 +- 6 files changed, 123 insertions(+), 112 deletions(-) rename css/{swad23.63.2.css => swad23.63.3.css} (99%) diff --git a/css/swad23.63.2.css b/css/swad23.63.3.css similarity index 99% rename from css/swad23.63.2.css rename to css/swad23.63.3.css index 11469d578..6b4306708 100644 --- a/css/swad23.63.2.css +++ b/css/swad23.63.3.css @@ -5157,7 +5157,7 @@ table.TBL_WIDE > tbody > tr > th {padding: 2px;} margin: 0 auto; } } -@media only screen and (min-width: 1024px) and (max-width: 1600px) +@media only screen and (min-width: 1024px) and (max-width: 1800px) { /* For desktop */ .TBL_SCROLL { @@ -5167,13 +5167,13 @@ table.TBL_WIDE > tbody > tr > th {padding: 2px;} margin: 0 auto; } } -@media only screen and (min-width: 1600px) +@media only screen and (min-width: 1800px) { /* For desktop */ .TBL_SCROLL { display: block; overflow-x: auto; - width: 1200px; + width: 1440px; margin: 0 auto; } } diff --git a/swad_changelog.h b/swad_changelog.h index 289498db1..1d8df9c8d 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -633,10 +633,12 @@ 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.63.2 (2024-01-30)" -#define CSS_FILE "swad23.63.2.css" +#define Log_PLATFORM_VERSION "SWAD 23.63.4 (2024-01-30)" +#define CSS_FILE "swad23.63.3.css" #define JS_FILE "swad23.53.6.js" /* + Version 23.63.4: Jan 30, 2024 Code refactoring in users. (335414 lines) + Version 23.63.3: Jan 30, 2024 Responsive design. (335406 lines) Version 23.63.2: Jan 30, 2024 Responsive design in questions. (335405 lines) Version 23.63.1: Jan 30, 2024 Responsive design in questions. (335400 lines) Version 23.63: Jan 29, 2024 Responsive design in tables. diff --git a/swad_message.c b/swad_message.c index 7fd57243f..3fe9fca0c 100644 --- a/swad_message.c +++ b/swad_message.c @@ -344,11 +344,7 @@ static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages, /***** Show potential recipients *****/ HTM_TABLE_Begin ("TBL_SCROLL_C2"); if (ShowUsrsInCrs) - { - Usr_ListUsersToSelect (Rol_TCH,&Gbl.Usrs.Selected); // All teachers in course - Usr_ListUsersToSelect (Rol_NET,&Gbl.Usrs.Selected); // All non-editing teachers in course - Usr_ListUsersToSelect (Rol_STD,&Gbl.Usrs.Selected); // All students in selected groups - } + Usr_ListUsersToSelect (&Gbl.Usrs.Selected); Msg_WriteFormUsrsIDsOrNicksOtherRecipients (); // Other users (nicknames) HTM_TABLE_End (); } diff --git a/swad_statistic.c b/swad_statistic.c index 6dcb4c5a7..dd26e6d42 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -306,12 +306,9 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats) Frm_LabelColumn ("REC_C1_BOT RT","",Txt_Users); /* Data */ - HTM_TD_Begin ("class=\"REC_C2_BOT LT FORM_IN_%s\"", - The_GetSuffix ()); + HTM_TD_Begin ("class=\"REC_C2_BOT LT\""); HTM_TABLE_Begin ("TBL_SCROLL_C2"); - Usr_ListUsersToSelect (Rol_TCH,&Gbl.Usrs.Selected); - Usr_ListUsersToSelect (Rol_NET,&Gbl.Usrs.Selected); - Usr_ListUsersToSelect (Rol_STD,&Gbl.Usrs.Selected); + Usr_ListUsersToSelect (&Gbl.Usrs.Selected); HTM_TABLE_End (); HTM_TD_End (); HTM_TR_End (); diff --git a/swad_user.c b/swad_user.c index 59a38421f..9bbb282d7 100644 --- a/swad_user.c +++ b/swad_user.c @@ -206,8 +206,12 @@ static void Usr_AllocateListOtherRecipients (void); static void Set_FormToSelectUsrListType (void (*FuncPars) (void *Args),void *Args, Set_ShowUsrsType_t ListType); -static void Usr_PutCheckboxToSelectAllUsers (Rol_Role_t Role, - struct Usr_SelectedUsrs *SelectedUsrs); +static void Usr_ListUsersByRoleToSelect (struct Usr_SelectedUsrs *SelectedUsrs, + Rol_Role_t Role); +static void Usr_ListUsrsForSelection (struct Usr_SelectedUsrs *SelectedUsrs, + Rol_Role_t Role); +static void Usr_PutCheckboxToSelectAllUsers (struct Usr_SelectedUsrs *SelectedUsrs, + Rol_Role_t Role); static Usr_Sex_t Usr_GetSexOfUsrsLst (Rol_Role_t Role); static void Usr_PutCheckboxToSelectUser (Rol_Role_t Role, const char *EncryptedUsrCod, @@ -219,8 +223,6 @@ static void Usr_ListMainDataGsts (bool PutCheckBoxToSelectUsr); static void Usr_ListMainDataStds (bool PutCheckBoxToSelectUsr); static void Usr_ListMainDataTchs (Rol_Role_t Role, bool PutCheckBoxToSelectUsr); -static void Usr_ListUsrsForSelection (Rol_Role_t Role, - struct Usr_SelectedUsrs *SelectedUsrs); static void Usr_ListRowsAllDataTchs (Rol_Role_t Role, const char *FieldNames[Usr_NUM_ALL_FIELDS_DATA_TCH], unsigned NumColumns); @@ -249,9 +251,9 @@ static void Usr_ShowGstsAllDataPars (__attribute__((unused)) void *Args); static void Usr_ShowStdsAllDataPars (__attribute__((unused)) void *Args); static void Usr_ShowTchsAllDataPars (__attribute__((unused)) void *Args); -static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType, +static void Usr_DrawClassPhoto (struct Usr_SelectedUsrs *SelectedUsrs, Rol_Role_t Role, - struct Usr_SelectedUsrs *SelectedUsrs, + Usr_ClassPhotoType_t ClassPhotoType, bool PutCheckBoxToSelectUsr); static void Usr_GetAndShowNumUsrsInCrss (Rol_Role_t Role); @@ -3754,15 +3756,12 @@ void Usr_PutFormToSelectUsrsToGoToAct (struct Usr_SelectedUsrs *SelectedUsrs, /* Put list of users to select some of them */ HTM_TR_Begin (NULL); /* Label */ - Frm_LabelColumn ("RT","Txt",Txt_Users); + Frm_LabelColumn ("REC_C1_BOT RT","Txt",Txt_Users); /* Data */ - HTM_TD_Begin ("class=\"LT FORM_IN_%s\"", - The_GetSuffix ()); - HTM_TABLE_Begin ("TBL_SCROLL"); - Usr_ListUsersToSelect (Rol_TCH,SelectedUsrs); - Usr_ListUsersToSelect (Rol_NET,SelectedUsrs); - Usr_ListUsersToSelect (Rol_STD,SelectedUsrs); + HTM_TD_Begin ("class=\"REC_C2_BOT LT\""); + HTM_TABLE_Begin ("TBL_SCROLL_C2"); + Usr_ListUsersToSelect (SelectedUsrs); HTM_TABLE_End (); HTM_TD_End (); HTM_TR_End (); @@ -3823,11 +3822,23 @@ void Usr_GetSelectedUsrsAndGoToAct (struct Usr_SelectedUsrs *SelectedUsrs, Usr_FreeListsSelectedEncryptedUsrsCods (SelectedUsrs); } +/*****************************************************************************/ +/********************** List users to select some of them ********************/ +/*****************************************************************************/ + +void Usr_ListUsersToSelect (struct Usr_SelectedUsrs *SelectedUsrs) + { + Usr_ListUsersByRoleToSelect (SelectedUsrs,Rol_TCH); + Usr_ListUsersByRoleToSelect (SelectedUsrs,Rol_NET); + Usr_ListUsersByRoleToSelect (SelectedUsrs,Rol_STD); + } + /*****************************************************************************/ /*********** List users with a given role to select some of them *************/ /*****************************************************************************/ -void Usr_ListUsersToSelect (Rol_Role_t Role,struct Usr_SelectedUsrs *SelectedUsrs) +static void Usr_ListUsersByRoleToSelect (struct Usr_SelectedUsrs *SelectedUsrs, + Rol_Role_t Role) { /***** If there are no users, don't list anything *****/ if (!Gbl.Usrs.LstUsrs[Role].NumUsrs) @@ -3837,22 +3848,71 @@ void Usr_ListUsersToSelect (Rol_Role_t Role,struct Usr_SelectedUsrs *SelectedUsr switch (Gbl.Usrs.Me.ListType) { case Set_USR_LIST_AS_CLASS_PHOTO: - Usr_DrawClassPhoto (Usr_CLASS_PHOTO_SEL,Role,SelectedUsrs,true); + Usr_DrawClassPhoto (SelectedUsrs,Role,Usr_CLASS_PHOTO_SEL, + true); // Put checkbox to select user break; case Set_USR_LIST_AS_LISTING: - Usr_ListUsrsForSelection (Role,SelectedUsrs); + Usr_ListUsrsForSelection (SelectedUsrs,Role); break; default: break; } } +/*****************************************************************************/ +/*************** List users (of current course) for selection ****************/ +/*****************************************************************************/ + +static void Usr_ListUsrsForSelection (struct Usr_SelectedUsrs *SelectedUsrs, + Rol_Role_t Role) + { + unsigned NumUsr; + struct Usr_Data UsrDat; + + if (Gbl.Usrs.LstUsrs[Role].NumUsrs) + { + /***** Initialize field names *****/ + Usr_SetUsrDatMainFieldNames (); + + /***** Put a row to select all users *****/ + Usr_PutCheckboxToSelectAllUsers (SelectedUsrs,Role); + + /***** Heading row with column names *****/ + Usr_WriteHeaderFieldsUsrDat (true); // Columns for the data + + /***** Initialize structure with user's data *****/ + Usr_UsrDataConstructor (&UsrDat); + + /***** List users' data *****/ + for (NumUsr = 0, The_ResetRowColor (); + NumUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs; ) + { + UsrDat.UsrCod = Gbl.Usrs.LstUsrs[Role].Lst[NumUsr].UsrCod; + if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat, + Usr_DONT_GET_PREFS, + Usr_DONT_GET_ROLE_IN_CRS)) + { + UsrDat.Roles.InCurrentCrs = Role; // We know the user's role. + // It is not necessary to retrieve + // his/her role from database. + UsrDat.Accepted = Gbl.Usrs.LstUsrs[Role].Lst[NumUsr].Accepted; + Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true,Role,SelectedUsrs); + + The_ChangeRowColor (); + } + } + + /***** Free memory used for user's data *****/ + Usr_UsrDataDestructor (&UsrDat); + } + } + /*****************************************************************************/ /******** Put a row, in a classphoto or a list, to select all users **********/ /*****************************************************************************/ -static void Usr_PutCheckboxToSelectAllUsers (Rol_Role_t Role, - struct Usr_SelectedUsrs *SelectedUsrs) +static void Usr_PutCheckboxToSelectAllUsers (struct Usr_SelectedUsrs *SelectedUsrs, + Rol_Role_t Role) { extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; @@ -4041,7 +4101,7 @@ static void Usr_ListMainDataGsts (bool PutCheckBoxToSelectUsr) /***** Put a row to select all users *****/ if (PutCheckBoxToSelectUsr) - Usr_PutCheckboxToSelectAllUsers (Rol_GST,&Gbl.Usrs.Selected); + Usr_PutCheckboxToSelectAllUsers (&Gbl.Usrs.Selected,Rol_GST); /***** Heading row with column names *****/ Usr_WriteHeaderFieldsUsrDat (PutCheckBoxToSelectUsr); // Columns for the data @@ -4111,7 +4171,7 @@ static void Usr_ListMainDataStds (bool PutCheckBoxToSelectUsr) /***** Put a row to select all users *****/ if (PutCheckBoxToSelectUsr) - Usr_PutCheckboxToSelectAllUsers (Rol_STD,&Gbl.Usrs.Selected); + Usr_PutCheckboxToSelectAllUsers (&Gbl.Usrs.Selected,Rol_STD); /***** Heading row with column names *****/ Usr_WriteHeaderFieldsUsrDat (PutCheckBoxToSelectUsr); // Columns for the data @@ -4168,7 +4228,7 @@ static void Usr_ListMainDataTchs (Rol_Role_t Role, { /***** Put a row to select all users *****/ if (PutCheckBoxToSelectUsr) - Usr_PutCheckboxToSelectAllUsers (Role,&Gbl.Usrs.Selected); + Usr_PutCheckboxToSelectAllUsers (&Gbl.Usrs.Selected,Role); /***** Heading row with column names *****/ /* Begin row */ @@ -4536,54 +4596,6 @@ void Usr_ListAllDataStds (void) Grp_FreeListGrpTypesAndGrps (); } -/*****************************************************************************/ -/*************** List users (of current course) for selection ****************/ -/*****************************************************************************/ - -static void Usr_ListUsrsForSelection (Rol_Role_t Role, - struct Usr_SelectedUsrs *SelectedUsrs) - { - unsigned NumUsr; - struct Usr_Data UsrDat; - - if (Gbl.Usrs.LstUsrs[Role].NumUsrs) - { - /***** Initialize field names *****/ - Usr_SetUsrDatMainFieldNames (); - - /***** Put a row to select all users *****/ - Usr_PutCheckboxToSelectAllUsers (Role,SelectedUsrs); - - /***** Heading row with column names *****/ - Usr_WriteHeaderFieldsUsrDat (true); // Columns for the data - - /***** Initialize structure with user's data *****/ - Usr_UsrDataConstructor (&UsrDat); - - /***** List users' data *****/ - for (NumUsr = 0, The_ResetRowColor (); - NumUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs; ) - { - UsrDat.UsrCod = Gbl.Usrs.LstUsrs[Role].Lst[NumUsr].UsrCod; - if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat, - Usr_DONT_GET_PREFS, - Usr_DONT_GET_ROLE_IN_CRS)) - { - UsrDat.Roles.InCurrentCrs = Role; // We know the user's role. - // It is not necessary to retrieve - // his/her role from database. - UsrDat.Accepted = Gbl.Usrs.LstUsrs[Role].Lst[NumUsr].Accepted; - Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true,Role,SelectedUsrs); - - The_ChangeRowColor (); - } - } - - /***** Free memory used for user's data *****/ - Usr_UsrDataDestructor (&UsrDat); - } - } - /*****************************************************************************/ /************************** List all teachers' data **************************/ /*****************************************************************************/ @@ -5093,12 +5105,12 @@ void Usr_SeeGuests (void) switch (Gbl.Usrs.Me.ListType) { case Set_USR_LIST_AS_CLASS_PHOTO: - Usr_DrawClassPhoto (Usr_CLASS_PHOTO_SEL_SEE, - Rol_GST,&Gbl.Usrs.Selected, - PutForm); // Put checkbox to select users? + Usr_DrawClassPhoto (&Gbl.Usrs.Selected,Rol_GST, + Usr_CLASS_PHOTO_SEL_SEE, + PutForm); // Put checkbox to select user? break; case Set_USR_LIST_AS_LISTING: - Usr_ListMainDataGsts (PutForm); // Put checkbox to select users? + Usr_ListMainDataGsts (PutForm); // Put checkbox to select user? break; default: break; @@ -5247,12 +5259,12 @@ void Usr_SeeStudents (void) switch (Gbl.Usrs.Me.ListType) { case Set_USR_LIST_AS_CLASS_PHOTO: - Usr_DrawClassPhoto (Usr_CLASS_PHOTO_SEL_SEE, - Rol_STD,&Gbl.Usrs.Selected, - PutForm); // Put checkbox to select users? + Usr_DrawClassPhoto (&Gbl.Usrs.Selected,Rol_STD, + Usr_CLASS_PHOTO_SEL_SEE, + PutForm); // Put checkbox to select user? break; case Set_USR_LIST_AS_LISTING: - Usr_ListMainDataStds (PutForm); // Put checkbox to select users? + Usr_ListMainDataStds (PutForm); // Put checkbox to select user? break; default: break; @@ -5415,12 +5427,12 @@ void Usr_SeeTeachers (void) { case Set_USR_LIST_AS_CLASS_PHOTO: /* List teachers and non-editing teachers */ - Usr_DrawClassPhoto (Usr_CLASS_PHOTO_SEL_SEE, - Rol_TCH,&Gbl.Usrs.Selected, - PutForm); // Put checkbox to select users? - Usr_DrawClassPhoto (Usr_CLASS_PHOTO_SEL_SEE, - Rol_NET,&Gbl.Usrs.Selected, - PutForm); // Put checkbox to select users? + Usr_DrawClassPhoto (&Gbl.Usrs.Selected,Rol_TCH, + Usr_CLASS_PHOTO_SEL_SEE, + PutForm); // Put checkbox to select user? + Usr_DrawClassPhoto (&Gbl.Usrs.Selected,Rol_NET, + Usr_CLASS_PHOTO_SEL_SEE, + PutForm); // Put checkbox to select user? break; case Set_USR_LIST_AS_LISTING: /* Initialize field names */ @@ -5428,9 +5440,9 @@ void Usr_SeeTeachers (void) /* List teachers and non-editing teachers */ Usr_ListMainDataTchs (Rol_TCH, - PutForm); // Put checkbox to select users? + PutForm); // Put checkbox to select user? Usr_ListMainDataTchs (Rol_NET, - PutForm); // Put checkbox to select users? + PutForm); // Put checkbox to select user? break; default: break; @@ -5924,8 +5936,9 @@ void Usr_SeeGstClassPhotoPrn (void) /***** Draw the guests' class photo *****/ Lay_WriteHeaderClassPhoto (Vie_PRINT); HTM_TABLE_BeginWide (); - Usr_DrawClassPhoto (Usr_CLASS_PHOTO_PRN, - Rol_GST,&Gbl.Usrs.Selected,false); + Usr_DrawClassPhoto (&Gbl.Usrs.Selected,Rol_GST, + Usr_CLASS_PHOTO_PRN, + false); // Don't put checkbox to select user HTM_TABLE_End (); } else // Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs @@ -5962,8 +5975,9 @@ void Usr_SeeStdClassPhotoPrn (void) /***** Draw the students' class photo *****/ Lay_WriteHeaderClassPhoto (Vie_PRINT); HTM_TABLE_BeginWide (); - Usr_DrawClassPhoto (Usr_CLASS_PHOTO_PRN, - Rol_STD,&Gbl.Usrs.Selected,false); + Usr_DrawClassPhoto (&Gbl.Usrs.Selected,Rol_STD, + Usr_CLASS_PHOTO_PRN, + false); // Don't put checkbox to select user HTM_TABLE_End (); } else // Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs == 0 @@ -6026,10 +6040,12 @@ void Usr_SeeTchClassPhotoPrn (void) HTM_TABLE_BeginWide (); /* List teachers and non-editing teachers */ - Usr_DrawClassPhoto (Usr_CLASS_PHOTO_PRN, - Rol_TCH,&Gbl.Usrs.Selected,false); - Usr_DrawClassPhoto (Usr_CLASS_PHOTO_PRN, - Rol_NET,&Gbl.Usrs.Selected,false); + Usr_DrawClassPhoto (&Gbl.Usrs.Selected,Rol_TCH, + Usr_CLASS_PHOTO_PRN, + false); // Don't put checkbox to select user + Usr_DrawClassPhoto (&Gbl.Usrs.Selected,Rol_NET, + Usr_CLASS_PHOTO_PRN, + false); // Don't put checkbox to select user HTM_TABLE_End (); } @@ -6049,9 +6065,9 @@ void Usr_SeeTchClassPhotoPrn (void) /****************** Draw class photo with students or teachers ***************/ /*****************************************************************************/ -static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType, +static void Usr_DrawClassPhoto (struct Usr_SelectedUsrs *SelectedUsrs, Rol_Role_t Role, - struct Usr_SelectedUsrs *SelectedUsrs, + Usr_ClassPhotoType_t ClassPhotoType, bool PutCheckBoxToSelectUsr) { static const char *ClassPhoto[Usr_NUM_CLASS_PHOTO_TYPE][PhoSha_NUM_SHAPES] = @@ -6078,7 +6094,7 @@ static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType, { /***** Put a row to select all users *****/ if (PutCheckBoxToSelectUsr) - Usr_PutCheckboxToSelectAllUsers (Role,SelectedUsrs); + Usr_PutCheckboxToSelectAllUsers (SelectedUsrs,Role); /***** Initialize structure with user's data *****/ Usr_UsrDataConstructor (&UsrDat); diff --git a/swad_user.h b/swad_user.h index 862835c0a..ca87528bc 100644 --- a/swad_user.h +++ b/swad_user.h @@ -407,7 +407,7 @@ void Usr_PutFormToSelectUsrsToGoToAct (struct Usr_SelectedUsrs *SelectedUsrs, void Usr_GetSelectedUsrsAndGoToAct (struct Usr_SelectedUsrs *SelectedUsrs, void (*FuncWhenUsrsSelected) (void *ArgsSelected),void *ArgsSelected, void (*FuncWhenNoUsrsSelected) (void *ArgsNoSelected),void *ArgsNoSelected); -void Usr_ListUsersToSelect (Rol_Role_t Role,struct Usr_SelectedUsrs *SelectedUsrs); +void Usr_ListUsersToSelect (struct Usr_SelectedUsrs *SelectedUsrs); void Usr_ListAllDataGsts (void); void Usr_ListAllDataStds (void);