From ea255a5fa3b1b50d5f9074eb382cec3659d084ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 26 May 2017 20:11:24 +0200 Subject: [PATCH] Version 16.225.7 --- swad_changelog.h | 6 +- swad_user.c | 235 +++++++++++++++++++---------------------------- 2 files changed, 97 insertions(+), 144 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 79c3b15f6..f43269183 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -231,19 +231,19 @@ // TODO: Statistics of hits in course accessible by non-editing teachers. -// TODO: Fix order of teachers when listing record cards of teachers - /*****************************************************************************/ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.225.6 (2017-05-26)" +#define Log_PLATFORM_VERSION "SWAD 16.225.7 (2017-05-26)" #define CSS_FILE "swad16.222.css" #define JS_FILE "swad16.206.3.js" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 /* + Version 16.225.7: May 26, 2017 Fix bug in order of users when listing record cards of teachers. + Code refactoring in checkboxes to select users. (220509 lines) Version 16.225.6: May 26, 2017 Fixed bug printing classphoto of teachers. (220553 lines) Version 16.225.5: May 26, 2017 Removed link to show all data of students. (220543 lines) Version 16.225.4: May 26, 2017 Removed link to show all data of teachers. (220562 lines) diff --git a/swad_user.c b/swad_user.c index 4bda4ae7c..a4c2d3b1c 100644 --- a/swad_user.c +++ b/swad_user.c @@ -74,23 +74,52 @@ const char *Usr_StringsSexDB[Usr_NUM_SEXS] = "all", }; -/*****************************************************************************/ -/***************************** Private constants *****************************/ -/*****************************************************************************/ - const char *Usr_StringsUsrListTypeInDB[Usr_NUM_USR_LIST_TYPES] = { "", // Usr_LIST_UNKNOWN "classphoto", // Usr_LIST_AS_CLASS_PHOTO "list", // Usr_LIST_AS_LISTING }; -const char *Usr_IconsClassPhotoOrList[Usr_NUM_USR_LIST_TYPES] = + +/*****************************************************************************/ +/***************************** Private constants *****************************/ +/*****************************************************************************/ + +static const char *Usr_IconsClassPhotoOrList[Usr_NUM_USR_LIST_TYPES] = { "", // Usr_LIST_UNKNOWN "classphoto16x16.gif", // Usr_LIST_AS_CLASS_PHOTO "list64x64.gif", // Usr_LIST_AS_LISTING }; + +static const char *Usr_NameSelUnsel[Rol_NUM_ROLES] = + { + NULL, // Rol_UNK + "SEL_UNSEL_GSTS", // Rol_GST + NULL, // Rol_USR + "SEL_UNSEL_STDS", // Rol_STD + "SEL_UNSEL_NETS", // Rol_NET + "SEL_UNSEL_TCHS", // Rol_TCH + NULL, // Rol_DEG_ADM + NULL, // Rol_CTR_ADM + NULL, // Rol_INS_ADM + NULL, // Rol_SYS_ADM + }; +static const char *Usr_ParamUsrCod[Rol_NUM_ROLES] = + { + "UsrCodAll", // Rol_UNK (here means all users) + "UsrCodGst", // Rol_GST + NULL, // Rol_USR + "UsrCodStd", // Rol_STD + "UsrCodNET", // Rol_NET + "UsrCodTch", // Rol_TCH + NULL, // Rol_DEG_ADM + NULL, // Rol_CTR_ADM + NULL, // Rol_INS_ADM + NULL, // Rol_SYS_ADM + }; + #define Usr_NUM_MAIN_FIELDS_DATA_ADM 7 #define Usr_NUM_ALL_FIELDS_DATA_GST 17 #define Usr_NUM_ALL_FIELDS_DATA_STD 13 @@ -5185,9 +5214,9 @@ void Usr_PutHiddenParUsrCodAll (Act_Action_t NextAction,const char *ListUsrCods) /***** Put a parameter with the encrypted user codes of several users *****/ if (Gbl.Session.IsOpen) - Ses_InsertHiddenParInDB (NextAction,"UsrCodAll",ListUsrCods); + Ses_InsertHiddenParInDB (NextAction,Usr_ParamUsrCod[Rol_UNK],ListUsrCods); else - Par_PutHiddenParamString ("UsrCodAll",ListUsrCods); + Par_PutHiddenParamString (Usr_ParamUsrCod[Rol_UNK],ListUsrCods); } /*****************************************************************************/ @@ -5197,95 +5226,47 @@ void Usr_PutHiddenParUsrCodAll (Act_Action_t NextAction,const char *ListUsrCods) void Usr_GetListsSelectedUsrsCods (void) { unsigned Length; + Rol_Role_t Role; - /***** Allocate memory for the lists of users *****/ + /***** Get possible list of all selected users *****/ Usr_AllocateListSelectedUsrCod (Rol_UNK); - Usr_AllocateListSelectedUsrCod (Rol_GST); - Usr_AllocateListSelectedUsrCod (Rol_STD); - Usr_AllocateListSelectedUsrCod (Rol_NET); - Usr_AllocateListSelectedUsrCod (Rol_TCH); - - /***** Get selected users *****/ if (Gbl.Session.IsOpen) // If the session is open, get parameter from DB { - Ses_GetHiddenParFromDB (Gbl.Action.Act,"UsrCodAll",Gbl.Usrs.Select[Rol_UNK], + Ses_GetHiddenParFromDB (Gbl.Action.Act,Usr_ParamUsrCod[Rol_UNK],Gbl.Usrs.Select[Rol_UNK], Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); Str_ChangeFormat (Str_FROM_FORM,Str_TO_TEXT,Gbl.Usrs.Select[Rol_UNK], Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS,true); } else - Par_GetParMultiToText ("UsrCodAll",Gbl.Usrs.Select[Rol_UNK], + Par_GetParMultiToText (Usr_ParamUsrCod[Rol_UNK],Gbl.Usrs.Select[Rol_UNK], Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); - Par_GetParMultiToText ("UsrCodGst",Gbl.Usrs.Select[Rol_GST], - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); // Guests - Par_GetParMultiToText ("UsrCodStd",Gbl.Usrs.Select[Rol_STD], - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); // Students - Par_GetParMultiToText ("UsrCodNET",Gbl.Usrs.Select[Rol_NET], - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); // Non-editing teachers - Par_GetParMultiToText ("UsrCodTch",Gbl.Usrs.Select[Rol_TCH], - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); // Teachers + /***** Get list of selected users for each possible role *****/ + for (Role = Rol_TCH; // From the highest possible role of selected users... + Role >= Rol_GST; // ...downto the lowest possible role of selected users + Role--) + if (Usr_ParamUsrCod[Role]) + { + /* Get parameter with selected users with this role */ + Usr_AllocateListSelectedUsrCod (Role); + Par_GetParMultiToText (Usr_ParamUsrCod[Role],Gbl.Usrs.Select[Role], + Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); -/* -sprintf (Gbl.Alert.Txt,"UsrCodAll = %s / UsrCodTch = %s / UsrCodStd = %s", - Gbl.Usrs.Select[Rol_UNK],Gbl.Usrs.Select.Tch,Gbl.Usrs.Select.Std); -Lay_ShowErrorAndExit (Gbl.Alert.Txt); -*/ - /***** Add guests to the list with all selected users *****/ - if (Gbl.Usrs.Select[Rol_GST][0]) - { - if (Gbl.Usrs.Select[Rol_UNK][0]) - if ((Length = strlen (Gbl.Usrs.Select[Rol_UNK])) < - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS) - { - Gbl.Usrs.Select[Rol_UNK][Length ] = Par_SEPARATOR_PARAM_MULTIPLE; - Gbl.Usrs.Select[Rol_UNK][Length + 1] = '\0'; - } - Str_Concat (Gbl.Usrs.Select[Rol_UNK],Gbl.Usrs.Select[Rol_GST], - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); - } - - /***** Add students to the list with all selected users *****/ - if (Gbl.Usrs.Select[Rol_STD][0]) - { - if (Gbl.Usrs.Select[Rol_UNK][0]) - if ((Length = strlen (Gbl.Usrs.Select[Rol_UNK])) < - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS) - { - Gbl.Usrs.Select[Rol_UNK][Length ] = Par_SEPARATOR_PARAM_MULTIPLE; - Gbl.Usrs.Select[Rol_UNK][Length + 1] = '\0'; - } - Str_Concat (Gbl.Usrs.Select[Rol_UNK],Gbl.Usrs.Select[Rol_STD], - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); - } - - /***** Add non-editing teachers to the list with all selected users *****/ - if (Gbl.Usrs.Select[Rol_NET][0]) - { - if (Gbl.Usrs.Select[Rol_UNK][0]) - if ((Length = strlen (Gbl.Usrs.Select[Rol_UNK])) < - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS) - { - Gbl.Usrs.Select[Rol_UNK][Length ] = Par_SEPARATOR_PARAM_MULTIPLE; - Gbl.Usrs.Select[Rol_UNK][Length + 1] = '\0'; - } - Str_Concat (Gbl.Usrs.Select[Rol_UNK],Gbl.Usrs.Select[Rol_NET], - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); - } - - /***** Add teachers to the list with all selected users *****/ - if (Gbl.Usrs.Select[Rol_TCH][0]) - { - if (Gbl.Usrs.Select[Rol_UNK][0]) - if ((Length = strlen (Gbl.Usrs.Select[Rol_UNK])) < - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS) - { - Gbl.Usrs.Select[Rol_UNK][Length ] = Par_SEPARATOR_PARAM_MULTIPLE; - Gbl.Usrs.Select[Rol_UNK][Length + 1] = '\0'; - } - Str_Concat (Gbl.Usrs.Select[Rol_UNK],Gbl.Usrs.Select[Rol_TCH], - Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); - } + /* Add selected users with this role + to the list with all selected users */ + if (Gbl.Usrs.Select[Role][0]) + { + if (Gbl.Usrs.Select[Rol_UNK][0]) + if ((Length = strlen (Gbl.Usrs.Select[Rol_UNK])) < + Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS) + { + Gbl.Usrs.Select[Rol_UNK][Length ] = Par_SEPARATOR_PARAM_MULTIPLE; + Gbl.Usrs.Select[Rol_UNK][Length + 1] = '\0'; + } + Str_Concat (Gbl.Usrs.Select[Rol_UNK],Gbl.Usrs.Select[Role], + Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); + } + } } /*****************************************************************************/ @@ -5752,29 +5733,15 @@ void Usr_PutCheckboxToSelectAllUsers (Rol_Role_t Role) "" "" @@ -5829,43 +5796,29 @@ static void Usr_PutCheckboxToSelectUser (struct UsrData *UsrDat,bool UsrIsTheMsg { bool CheckboxChecked; - /***** Check box *****/ - fprintf (Gbl.F.Out,"RoleInCurrentCrsDB) + if (Usr_NameSelUnsel[UsrDat->RoleInCurrentCrsDB] && + Usr_ParamUsrCod[UsrDat->RoleInCurrentCrsDB]) { - case Rol_STD: - fprintf (Gbl.F.Out,"UsrCodStd\" value=\"%s\"" - " onclick=\"checkParent(this,'SEL_UNSEL_STDS')\"", - UsrDat->EncryptedUsrCod); - break; - case Rol_NET: - fprintf (Gbl.F.Out,"UsrCodNET\" value=\"%s\"" - " onclick=\"checkParent(this,'SEL_UNSEL_NETS')\"", - UsrDat->EncryptedUsrCod); - break; - case Rol_TCH: - fprintf (Gbl.F.Out,"UsrCodTch\" value=\"%s\"" - " onclick=\"checkParent(this,'SEL_UNSEL_TCHS')\"", - UsrDat->EncryptedUsrCod); - break; - default: - fprintf (Gbl.F.Out,"UsrCodGst\" value=\"%s\"" - " onclick=\"checkParent(this,'SEL_UNSEL_GSTS')\"", - UsrDat->EncryptedUsrCod); - break; + /***** Check box must be checked? *****/ + CheckboxChecked = false; + if (UsrIsTheMsgSender) + CheckboxChecked = true; + else + /* Check if user is in lists of selected users */ + CheckboxChecked = Usr_FindUsrCodInListOfSelectedUsrs (UsrDat->EncryptedUsrCod); + + /***** Check box *****/ + fprintf (Gbl.F.Out,"RoleInCurrentCrsDB], + UsrDat->EncryptedUsrCod, + Usr_NameSelUnsel[UsrDat->RoleInCurrentCrsDB]); + if (CheckboxChecked) + fprintf (Gbl.F.Out," checked=\"checked\""); + fprintf (Gbl.F.Out," />"); } - - /***** Check box must be checked? *****/ - CheckboxChecked = false; - if (UsrIsTheMsgSender) - CheckboxChecked = true; else - /* Check if user is in lists of selected users */ - CheckboxChecked = Usr_FindUsrCodInListOfSelectedUsrs (UsrDat->EncryptedUsrCod); - if (CheckboxChecked) - fprintf (Gbl.F.Out," checked=\"checked\""); - - fprintf (Gbl.F.Out," />"); + Lay_ShowErrorAndExit ("Wrong role."); } /*****************************************************************************/