From cf59d464d9b01034cf43c7beb2ff2b765939244e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Thu, 25 Apr 2019 02:58:42 +0200 Subject: [PATCH] Version18.119 --- swad_ID.c | 2 +- swad_assignment.c | 37 +++++++++++++++++++++++++++++++++---- swad_attendance.c | 6 +++--- swad_changelog.h | 3 ++- swad_file_browser.c | 15 ++++++--------- swad_follow.c | 19 ++++--------------- swad_message.c | 5 +++-- swad_message.h | 1 - swad_record.c | 20 +++++++++++++------- swad_statistic.c | 6 +++--- swad_user.c | 25 +++++++++++++++++++++---- swad_user.h | 3 ++- swad_zip.c | 5 ++--- 13 files changed, 93 insertions(+), 54 deletions(-) diff --git a/swad_ID.c b/swad_ID.c index 8ce3e9ec..820bbe0e 100644 --- a/swad_ID.c +++ b/swad_ID.c @@ -483,7 +483,7 @@ static void ID_PutLinkToConfirmID (struct UsrData *UsrDat,unsigned NumID, case ActSeeRecSevGst: case ActSeeRecSevStd: case ActSeeRecSevTch: - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); break; default: break; diff --git a/swad_assignment.c b/swad_assignment.c index cfadb57d..c3c3a122 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -488,20 +488,49 @@ static void Asg_WriteAssignmentFolder (struct Assignment *Asg,bool PrintView) extern const char *Txt_Folder; bool ICanSendFiles = !Asg->Hidden && // It's visible (not hidden) Asg->Open && // It's open (inside dates) - Asg->IBelongToCrsOrGrps && // I belong to course or groups - Gbl.Usrs.Me.Role.Logged == Rol_STD; // I am a student + Asg->IBelongToCrsOrGrps; // I belong to course or groups /***** Folder icon *****/ if (!PrintView && // Not print view ICanSendFiles) // I can send files to this assignment folder { /* Form to create a new file or folder */ - Frm_StartForm (ActFrmCreAsgUsr); + Gbl.FileBrowser.FullTree = true; // By default, show all files + switch (Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role) + { + case Rol_STD: + Gbl.FileBrowser.Type = Brw_ADMI_ASG_USR; // User assignments + Frm_StartForm (ActFrmCreAsgUsr); + break; + case Rol_NET: + case Rol_TCH: + Gbl.FileBrowser.Type = Brw_ADMI_ASG_CRS; // Course assignments + Str_Copy (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod,Gbl.Usrs.Me.UsrDat.EncryptedUsrCod, + Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64); + Usr_CreateListSelectedUsrsCodsAndFillWithOtherUsr (); + Frm_StartForm (ActFrmCreAsgCrs); + break; + default: + Lay_ShowErrorAndExit ("Wrong role."); + break; + } Brw_PutParamsFileBrowser (Brw_INTERNAL_NAME_ROOT_FOLDER_ASSIGNMENTS, Asg->Folder, Brw_IS_FOLDER,-1L); - Ico_PutIconLink ("folder-open-green.svg",Txt_Upload_file_or_create_folder); + Ico_PutIconLink ("folder-open-yellow-plus.png", + Txt_Upload_file_or_create_folder); Frm_EndForm (); + switch (Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role) + { + case Rol_STD: + break; + case Rol_NET: + case Rol_TCH: + Usr_FreeListsSelectedUsrsCods (); + break; + default: + break; + } } else // Sending of files disabled Ico_PutIconOff (ICanSendFiles ? "folder-open-green.svg" : diff --git a/swad_attendance.c b/swad_attendance.c index 51ae0e9d..79c6242b 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -3052,7 +3052,7 @@ static void Att_PutParamsToPrintStdsList (void) if (Gbl.AttEvents.ShowDetails) Par_PutHiddenParamChar ("ShowDetails",'Y'); Grp_PutParamsCodGrps (); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); if (Gbl.AttEvents.StrAttCodsSelected) if (Gbl.AttEvents.StrAttCodsSelected[0]) Par_PutHiddenParamString ("AttCods",Gbl.AttEvents.StrAttCodsSelected); @@ -3070,7 +3070,7 @@ static void Att_PutButtonToShowDetails (void) Frm_StartFormAnchor (Gbl.Action.Act,Att_ATTENDANCE_DETAILS_ID); Par_PutHiddenParamChar ("ShowDetails",'Y'); Grp_PutParamsCodGrps (); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); if (Gbl.AttEvents.StrAttCodsSelected) if (Gbl.AttEvents.StrAttCodsSelected[0]) Par_PutHiddenParamString ("AttCods",Gbl.AttEvents.StrAttCodsSelected); @@ -3109,7 +3109,7 @@ static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView) { Frm_StartFormAnchor (Gbl.Action.Act,Att_ATTENDANCE_TABLE_ID); Grp_PutParamsCodGrps (); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); } /***** Start table *****/ diff --git a/swad_changelog.h b/swad_changelog.h index a7775bfb..478b6c80 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -448,10 +448,11 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.118.5 (2019-04-23)" +#define Log_PLATFORM_VERSION "SWAD 18.119 (2019-04-25)" #define CSS_FILE "swad18.112.1.css" #define JS_FILE "swad18.116.5.js" /* + Version 18.119: Apr 25, 2019 Code refactoring related to selected users. (242536 lines) Version 18.118.5: Apr 23, 2019 Code refactoring in file browser. (242497 lines) Version 18.118.4: Apr 23, 2019 Changes in file browser. (242518 lines) Version 18.118.3: Apr 22, 2019 Changed the behaviour of creating zip in file browser. (242545 lines) diff --git a/swad_file_browser.c b/swad_file_browser.c index 902e1a80..5a57d822 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -2321,14 +2321,11 @@ void Brw_PutParamsFileBrowser (const char *PathInTree,const char *FileFolderName else if (Brw_GetIfProjectFileBrowser ()) // This file browser needs specify a project /***** Project code *****/ Prj_PutParamPrjCod (Gbl.Prjs.PrjCod); - else// if (NextAction != ActUnk) + else if (Brw_GetIfCrsAssigWorksFileBrowser ()) { - if (Brw_GetIfCrsAssigWorksFileBrowser ()) - { - /***** Users selected *****/ - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); - Usr_PutParamOtherUsrCodEncrypted (); - } + /***** Users selected *****/ + Usr_PutHiddenParSelectedUsrsCods (); + Usr_PutParamOtherUsrCodEncrypted (); } /***** If full tree selected? *****/ @@ -4960,7 +4957,7 @@ static void Brw_PutParamsFullTree (void) else if (Brw_GetIfProjectFileBrowser ()) // This file browser needs specify a project Prj_PutParamPrjCod (Gbl.Prjs.PrjCod); else if (Brw_GetIfCrsAssigWorksFileBrowser ()) - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); } /*****************************************************************************/ @@ -11453,7 +11450,7 @@ static bool Brw_CheckIfICanCreateIntoFolder (unsigned Level) if (!Gbl.FileBrowser.Asg.IBelongToCrsOrGrps) // If I do not belong to course / groups of this assignment return false; // I can not create anything inside this assignment - switch (Gbl.Usrs.Me.Role.Logged) + switch (Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role) { case Rol_STD: // Students... case Rol_NET: // ...and non-editing teachers... diff --git a/swad_follow.c b/swad_follow.c index 5a8f50e5..c36b1442 100644 --- a/swad_follow.c +++ b/swad_follow.c @@ -99,7 +99,6 @@ static void Fol_RequestFollowUsrs (Act_Action_t NextAction); static void Fol_RequestUnfollowUsrs (Act_Action_t NextAction); static void Fol_GetFollowedFromSelectedUsrs (unsigned *NumFollowed, unsigned *NumNotFollowed); -static void Fol_PutParamsSelectedUsrs (void); static void Fol_FollowUsr (struct UsrData *UsrDat); static void Fol_UnfollowUsr (struct UsrData *UsrDat); @@ -1115,12 +1114,12 @@ static void Fol_RequestFollowUsrs (Act_Action_t NextAction) { if (NumNotFollowed == 1) Ale_ShowAlertAndButton (NextAction,NULL,NULL, - Fol_PutParamsSelectedUsrs, + Usr_PutHiddenParSelectedUsrsCods, Btn_CREATE_BUTTON,Txt_Follow, Ale_QUESTION,Txt_Do_you_want_to_follow_the_selected_user_whom_you_do_not_follow_yet); else Ale_ShowAlertAndButton (NextAction,NULL,NULL, - Fol_PutParamsSelectedUsrs, + Usr_PutHiddenParSelectedUsrsCods, Btn_CREATE_BUTTON,Txt_Follow, Ale_QUESTION,Txt_Do_you_want_to_follow_the_X_selected_users_whom_you_do_not_follow_yet, NumNotFollowed); @@ -1159,12 +1158,12 @@ static void Fol_RequestUnfollowUsrs (Act_Action_t NextAction) { if (NumFollowed == 1) Ale_ShowAlertAndButton (NextAction,NULL,NULL, - Fol_PutParamsSelectedUsrs, + Usr_PutHiddenParSelectedUsrsCods, Btn_CREATE_BUTTON,Txt_Unfollow, Ale_QUESTION,Txt_Do_you_want_to_stop_following_the_selected_user_whom_you_follow); else Ale_ShowAlertAndButton (NextAction,NULL,NULL, - Fol_PutParamsSelectedUsrs, + Usr_PutHiddenParSelectedUsrsCods, Btn_CREATE_BUTTON,Txt_Unfollow, Ale_QUESTION,Txt_Do_you_want_to_stop_following_the_X_selected_users_whom_you_follow, NumFollowed); @@ -1320,16 +1319,6 @@ void Fol_UnfollowUsrs (void) NumUnfollowed); } -/*****************************************************************************/ -/**************** Put parameter with list of selected users ******************/ -/*****************************************************************************/ - -static void Fol_PutParamsSelectedUsrs (void) - { - /***** Hidden parameter with the encrypted codes of users selected *****/ - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); - } - /*****************************************************************************/ /******************************** Follow user ********************************/ /*****************************************************************************/ diff --git a/swad_message.c b/swad_message.c index 1500222a..b542af60 100644 --- a/swad_message.c +++ b/swad_message.c @@ -108,6 +108,7 @@ static void Msg_GetStatusOfReceivedMsg (long MsgCod,bool *Open,bool *Replied,boo static long Msg_GetParamMsgCod (void); static void Msg_PutLinkToShowMorePotentialRecipients (void); static void Msg_PutParamsShowMorePotentialRecipients (void); +static void Msg_PutParamsWriteMsg (void); static void Msg_ShowOneUniqueRecipient (void); static void Msg_WriteFormUsrsIDsOrNicksOtherRecipients (void); static void Msg_WriteFormSubjectAndContentMsgToUsrs (char Content[Cns_MAX_BYTES_LONG_TEXT + 1]); @@ -393,9 +394,9 @@ static void Msg_PutParamsShowMorePotentialRecipients (void) /***************** Put parameters when writing a message *********************/ /*****************************************************************************/ -void Msg_PutParamsWriteMsg (void) +static void Msg_PutParamsWriteMsg (void) { - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); Msg_PutHiddenParamOtherRecipients (); Msg_PutHiddenParamsSubjectAndContent (); if (Gbl.Msg.Reply.IsReply) diff --git a/swad_message.h b/swad_message.h index b1e90832..8e3bd95e 100644 --- a/swad_message.h +++ b/swad_message.h @@ -59,7 +59,6 @@ typedef enum /*****************************************************************************/ void Msg_FormMsgUsrs (void); -void Msg_PutParamsWriteMsg (void); void Msg_PutHiddenParamsSubjectAndContent (void); void Msg_PutHiddenParamAnotherRecipient (const struct UsrData *UsrDat); void Msg_PutHiddenParamOtherRecipients (void); diff --git a/swad_record.c b/swad_record.c index 006cb80b..0bb7243c 100644 --- a/swad_record.c +++ b/swad_record.c @@ -986,7 +986,7 @@ static void Rec_ListRecordsGsts (Rec_SharedRecordViewType_t TypeOfView) /* Link to print view */ Frm_StartForm (ActPrnRecSevGst); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); Rec_ShowLinkToPrintPreviewOfRecords (); Frm_EndForm (); fprintf (Gbl.F.Out,""); @@ -1083,7 +1083,9 @@ static void Rec_ShowRecordOneStdCrs (void) /* Link to print view */ Frm_StartForm (ActPrnRecSevStd); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod); + Usr_CreateListSelectedUsrsCodsAndFillWithOtherUsr (); + Usr_PutHiddenParSelectedUsrsCods (); + Usr_FreeListsSelectedUsrsCods (); Rec_ShowLinkToPrintPreviewOfRecords (); Frm_EndForm (); @@ -1184,7 +1186,7 @@ static void Rec_ListRecordsStds (Rec_SharedRecordViewType_t ShaTypeOfView, /* Link to print view */ Frm_StartForm (ActPrnRecSevStd); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); Rec_ShowLinkToPrintPreviewOfRecords (); Frm_EndForm (); fprintf (Gbl.F.Out,""); @@ -1310,7 +1312,9 @@ static void Rec_ShowRecordOneTchCrs (void) /* Link to print view */ Frm_StartForm (ActPrnRecSevTch); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod); + Usr_CreateListSelectedUsrsCodsAndFillWithOtherUsr (); + Usr_PutHiddenParSelectedUsrsCods (); + Usr_FreeListsSelectedUsrsCods (); Par_PutHiddenParamChar ("ParamOfficeHours",'Y'); Par_PutHiddenParamChar ("ShowOfficeHours",ShowOfficeHours ? 'Y' : 'N'); @@ -1398,7 +1402,7 @@ static void Rec_ListRecordsTchs (Rec_SharedRecordViewType_t TypeOfView) /* Link to print view */ Frm_StartForm (ActPrnRecSevTch); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); Par_PutHiddenParamChar ("ParamOfficeHours",'Y'); Par_PutHiddenParamChar ("ShowOfficeHours", ShowOfficeHours ? 'Y' : @@ -1554,7 +1558,7 @@ static void Rec_PutParamsShowOfficeHoursOneTch (void) static void Rec_PutParamsShowOfficeHoursSeveralTchs (void) { - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); Par_PutHiddenParamChar ("ParamOfficeHours",'Y'); } @@ -1728,7 +1732,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView, Act_GetActCod (ActSeeRecSevStd)); // Original action, used to know where we came from Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod); if (TypeOfView == Rec_CRS_LIST_SEVERAL_RECORDS) - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); } break; default: @@ -2656,6 +2660,8 @@ static void Rec_PutParamsWorks (void) { Rec_PutParamsStudent (); Par_PutHiddenParamChar ("FullTree",'Y'); // By default, show all files + Gbl.FileBrowser.FullTree = true; + Brw_PutHiddenParamFullTreeIfSelected (); } static void Rec_PutParamsStudent (void) diff --git a/swad_statistic.c b/swad_statistic.c index dda9c523..1837432f 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -1595,7 +1595,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql Par_PutHiddenParamLong ("FirstRow",FirstRow - Gbl.Stat.RowsPerPage); Par_PutHiddenParamLong ("LastRow" ,FirstRow - 1); Par_PutHiddenParamLong ("RowsPage",Gbl.Stat.RowsPerPage); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); } fprintf (Gbl.F.Out,""); if (FirstRow > 1) @@ -1631,7 +1631,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql Par_PutHiddenParamUnsigned ("FirstRow" ,(unsigned) (LastRow + 1)); Par_PutHiddenParamUnsigned ("LastRow" ,(unsigned) (LastRow + Gbl.Stat.RowsPerPage)); Par_PutHiddenParamUnsigned ("RowsPage" ,(unsigned) Gbl.Stat.RowsPerPage); - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); } fprintf (Gbl.F.Out,""); if (LastRow < NumRows) @@ -2106,7 +2106,7 @@ static void Sta_ShowDistrAccessesPerDayAndHour (unsigned long NumRows,MYSQL_RES Par_PutHiddenParamUnsigned ("CountType",(unsigned) Gbl.Stat.CountType); Par_PutHiddenParamUnsigned ("StatAct" ,(unsigned) Gbl.Stat.NumAction); if (Gbl.Action.Act == ActSeeAccCrs) - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); + Usr_PutHiddenParSelectedUsrsCods (); else // Gbl.Action.Act == ActSeeAccGbl { Par_PutHiddenParamUnsigned ("Role",(unsigned) Gbl.Stat.Role); diff --git a/swad_user.c b/swad_user.c index 52c8cf0f..d87405a1 100644 --- a/swad_user.c +++ b/swad_user.c @@ -581,7 +581,7 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat,Usr_GetPrefs_t GetPrefs) /* Get encrypted user's code (row[0]) */ Str_Copy (UsrDat->EncryptedUsrCod,row[0], - Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64); + Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64); /* Get encrypted password (row[1]) */ Str_Copy (UsrDat->Password,row[1], @@ -5643,16 +5643,33 @@ static void Usr_PutParamsConfirmIWantToSeeBigList (void) /************* Write parameter with the list of users selected ***************/ /*****************************************************************************/ -void Usr_PutHiddenParUsrCodAll (const char *ListUsrCods) +void Usr_PutHiddenParSelectedUsrsCods (void) { /***** Put a parameter indicating that a list of several users is present *****/ Par_PutHiddenParamChar ("MultiUsrs",'Y'); /***** Put a parameter with the encrypted user codes of several users *****/ if (Gbl.Session.IsOpen) - Ses_InsertHiddenParInDB (Usr_ParamUsrCod[Rol_UNK],ListUsrCods); + Ses_InsertHiddenParInDB (Usr_ParamUsrCod[Rol_UNK],Gbl.Usrs.Selected.List[Rol_UNK]); else - Par_PutHiddenParamString (Usr_ParamUsrCod[Rol_UNK],ListUsrCods); + Par_PutHiddenParamString (Usr_ParamUsrCod[Rol_UNK],Gbl.Usrs.Selected.List[Rol_UNK]); + } + +/*****************************************************************************/ +/**************** Create list of selected users with one given user ************************/ +/*****************************************************************************/ + +void Usr_CreateListSelectedUsrsCodsAndFillWithOtherUsr (void) + { + /***** Create list of user codes and put encrypted user code in it *****/ + if (!Gbl.Usrs.Selected.List[Rol_UNK]) + { + if ((Gbl.Usrs.Selected.List[Rol_UNK] = (char *) malloc (Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1)) == NULL) + Lay_NotEnoughMemoryExit (); + Str_Copy (Gbl.Usrs.Selected.List[Rol_UNK],Gbl.Usrs.Other.UsrDat.EncryptedUsrCod, + Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64); + Gbl.Usrs.Selected.Filled = true; + } } /*****************************************************************************/ diff --git a/swad_user.h b/swad_user.h index a1b48cfe..c7a24552 100644 --- a/swad_user.h +++ b/swad_user.h @@ -411,7 +411,8 @@ bool Usr_GetIfShowBigList (unsigned NumUsrs, void (*FuncParams) (void), const char *OnSubmit); -void Usr_PutHiddenParUsrCodAll (const char *ListUsrCods); +void Usr_PutHiddenParSelectedUsrsCods (void); +void Usr_CreateListSelectedUsrsCodsAndFillWithOtherUsr (void); void Usr_GetListsSelectedUsrsCods (void); bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs); bool Usr_FindUsrCodInListOfSelectedUsrs (const char *EncryptedUsrCodToFind); diff --git a/swad_zip.c b/swad_zip.c index bf42906f..69d9a2e1 100644 --- a/swad_zip.c +++ b/swad_zip.c @@ -99,9 +99,8 @@ void ZIP_PutLinkToCreateZIPAsgWrk (void) static void ZIP_PutLinkToCreateZIPAsgWrkParams (void) { - Usr_PutHiddenParUsrCodAll (Gbl.Usrs.Selected.List[Rol_UNK]); - if (Gbl.FileBrowser.FullTree) - Par_PutHiddenParamChar ("FullTree",'Y'); + Usr_PutHiddenParSelectedUsrsCods (); + Brw_PutHiddenParamFullTreeIfSelected (); Par_PutHiddenParamChar ("CreateZIP",'Y'); }