diff --git a/swad_attendance.c b/swad_attendance.c index fca266b2d..6e79b3db5 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -2268,7 +2268,7 @@ void Att_RegisterStudentsInAttEvent (void) Gbl.Usrs.LstStds.Lst[NumStd].Remove = true; /***** 3. Get list of students marked as present by me: Gbl.Usrs.Select.Std *****/ - Usr_GetListSelectedUsrs (); + Usr_GetListsSelectedUsrs (); /***** Initialize structure with user's data *****/ Usr_UsrDataConstructor (&UsrData); @@ -2298,7 +2298,7 @@ void Att_RegisterStudentsInAttEvent (void) /***** Free memory *****/ /* Free memory used for list of students */ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); // 5. Delete from att_usr all the students marked as Remove=true // 6. Replace (insert without duplicated) into att_usr all the students marked as Remove=false @@ -2608,7 +2608,7 @@ void Usr_ReqListAttendanceStdsCrs (void) if (Usr_GetIfShowBigList (Gbl.Usrs.LstStds.NumUsrs)) { /***** Get list of selected users *****/ - Usr_GetListSelectedUsrs (); + Usr_GetListsSelectedUsrs (); /***** Draw a class photo with students of the course *****/ /* Start form */ @@ -2628,7 +2628,7 @@ void Usr_ReqListAttendanceStdsCrs (void) Act_FormEnd (); /***** Free memory used for by the list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); } } else @@ -2657,10 +2657,10 @@ void Usr_ListAttendanceStdsCrs (void) Att_GetListAttEvents (Att_OLDEST_FIRST); /***** Get list of selected students *****/ - Usr_GetListSelectedUsrs (); + Usr_GetListsSelectedUsrs (); /* Check the number of students to list */ - if ((NumStdsInList = Usr_CountNumUsrsInEncryptedList ())) + if ((NumStdsInList = Usr_CountNumUsrsInListOfSelectedUsrs ())) { /***** Get boolean parameter that indicates if details must be shown *****/ Par_GetParToText ("ShowDetails",YN,1); @@ -2716,7 +2716,7 @@ void Usr_ListAttendanceStdsCrs (void) } /***** Free memory used for by the list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); /***** Free list of attendance events *****/ Att_FreeListAttEvents (); diff --git a/swad_changelog.h b/swad_changelog.h index 837b459eb..177b45394 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -98,11 +98,12 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 15.3.3 (2015/09/30)" +#define Log_PLATFORM_VERSION "SWAD 15.4 (2015/09/30)" // 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 15.4: Sep 30, 2015 Changes in global/course statistics forms. (184877 lines) Version 15.3.3: Sep 30, 2015 Changes in layout of form to selected initial and final dates. (185152 lines) Version 15.3.2: Sep 30, 2015 Changes in layout of statistical figures. (185156 lines) Version 15.3.1: Sep 29, 2015 Changes in background and fonts. (185156 lines) diff --git a/swad_file_browser.c b/swad_file_browser.c index 9a54fb81f..becf98950 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -2013,8 +2013,8 @@ void Brw_GetParAndInitFileBrowser (void) { case Brw_ADMI_ASSIG_CRS: case Brw_ADMI_WORKS_CRS: - /* Get list of the selected users's IDs */ - Usr_GetListSelectedUsrs (); + /* Get lists of the selected users */ + Usr_GetListsSelectedUsrs (); /* Get user whose folder will be used to make any operation */ Usr_GetParamOtherUsrCodEncrypted (); /* Get whether we must create the zip file or not */ @@ -2885,7 +2885,7 @@ void Brw_AskEditWorksCrs (void) Usr_FreeUsrsList (&Gbl.Usrs.LstStds); /***** Free the memory used by the list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); /***** Free memory for list of selected groups *****/ Grp_FreeListCodSelectedGrps (); @@ -2915,7 +2915,7 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void) struct UsrData UsrDat; /***** Check the number of users whose works will be shown *****/ - if (Usr_CountNumUsrsInEncryptedList ()) // If some users are selected... + if (Usr_CountNumUsrsInListOfSelectedUsrs ()) // If some users are selected... { if (Gbl.FileBrowser.ZIP.CreateZIP) { @@ -3006,7 +3006,7 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void) } /***** Free the memory used for the list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); } /*****************************************************************************/ diff --git a/swad_global.c b/swad_global.c index 26136ca08..710198554 100644 --- a/swad_global.c +++ b/swad_global.c @@ -477,7 +477,7 @@ void Gbl_Cleanup (void) Usr_FreeUsrsList (&Gbl.Usrs.LstTchs); Usr_FreeUsrsList (&Gbl.Usrs.LstStds); Usr_FreeListOtherRecipients (); - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); Syl_FreeListItemsSyllabus (); Tst_FreeTagsList (); Exa_FreeMemExamAnnouncement (); diff --git a/swad_message.c b/swad_message.c index 80fb644e6..64741a466 100644 --- a/swad_message.c +++ b/swad_message.c @@ -297,8 +297,8 @@ static void Msg_PutFormMsgUsrs (const char *Content) if (Gbl.Usrs.LstTchs.NumUsrs || Gbl.Usrs.LstStds.NumUsrs) - /***** Get list of selected users *****/ - Usr_GetListSelectedUsrs (); + /***** Get lists of selected users *****/ + Usr_GetListsSelectedUsrs (); } if (Usr_GetIfShowBigList (Gbl.Usrs.LstTchs.NumUsrs + @@ -364,7 +364,7 @@ static void Msg_PutFormMsgUsrs (const char *Content) Usr_FreeUsrsList (&Gbl.Usrs.LstStds); /***** Free memory used by list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); /***** Free memory for list of selected groups *****/ Grp_FreeListCodSelectedGrps (); @@ -581,14 +581,14 @@ void Msg_RecMsgFromUsr (void) /* Get user's code of possible preselected recipient */ Usr_GetParamOtherUsrCodEncrypted (); - /* Get list of selected users */ - Usr_GetListSelectedUsrs (); + /* Get lists of selected users */ + Usr_GetListsSelectedUsrs (); /* Get list of users' IDs or nicknames written explicitely */ Error = Usr_GetListMsgRecipientsWrittenExplicitelyBySender (true); /***** If there are no recipients... *****/ - if ((NumRecipients = Usr_CountNumUsrsInEncryptedList ())) + if ((NumRecipients = Usr_CountNumUsrsInListOfSelectedUsrs ())) { if (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT && NumRecipients > Cfg_MAX_RECIPIENTS) @@ -704,7 +704,7 @@ void Msg_RecMsgFromUsr (void) /* Free memory used for list of users */ Usr_FreeListOtherRecipients (); - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); /***** Update received message setting Replied field to true *****/ if (Replied) diff --git a/swad_record.c b/swad_record.c index 3d59093b5..232343168 100644 --- a/swad_record.c +++ b/swad_record.c @@ -878,10 +878,10 @@ void Rec_ListRecordsGsts (void) Rec_GetParamRecordsPerPage (); /***** Get list of selected users *****/ - Usr_GetListSelectedUsrs (); + Usr_GetListsSelectedUsrs (); /* Check the number of students to show */ - if (!Usr_CountNumUsrsInEncryptedList ()) // If no students selected... + if (!Usr_CountNumUsrsInListOfSelectedUsrs ()) // If no students selected... { // ...write warning notice Lay_ShowAlert (Lay_WARNING,Txt_You_must_select_one_ore_more_users); Usr_SeeGuests (); // ...show again the form @@ -938,7 +938,7 @@ void Rec_ListRecordsGsts (void) Rec_FreeListFields (); /***** Free memory used for by the list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); } /*****************************************************************************/ @@ -1034,10 +1034,10 @@ void Rec_ListRecordsStds (void) Rec_GetParamRecordsPerPage (); /***** Get list of selected students *****/ - Usr_GetListSelectedUsrs (); + Usr_GetListsSelectedUsrs (); /* Check the number of students to show */ - if (!Usr_CountNumUsrsInEncryptedList ()) // If no students selected... + if (!Usr_CountNumUsrsInListOfSelectedUsrs ()) // If no students selected... { // ...write warning notice Lay_ShowAlert (Lay_WARNING,Txt_You_must_select_one_ore_more_students); Usr_SeeStudents (); // ...show again the form @@ -1116,7 +1116,7 @@ void Rec_ListRecordsStds (void) Rec_FreeListFields (); /***** Free memory used for by the list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); } /*****************************************************************************/ @@ -1208,10 +1208,10 @@ void Rec_ListRecordsTchs (void) Rec_GetParamRecordsPerPage (); /***** Get list of selected teachers *****/ - Usr_GetListSelectedUsrs (); + Usr_GetListsSelectedUsrs (); /* Check the number of teachers to show */ - if (!Usr_CountNumUsrsInEncryptedList ()) // If no teachers selected... + if (!Usr_CountNumUsrsInListOfSelectedUsrs ()) // If no teachers selected... { // ...write warning notice Lay_ShowAlert (Lay_WARNING,Txt_You_must_select_one_ore_more_teachers); Usr_SeeTeachers (); // ...show again the form @@ -1285,7 +1285,7 @@ void Rec_ListRecordsTchs (void) Usr_UsrDataDestructor (&UsrDat); /***** Free memory used for by the list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); } /*****************************************************************************/ diff --git a/swad_statistic.c b/swad_statistic.c index ddc60ee4a..f9e512fb4 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -121,7 +121,6 @@ static void Sta_ShowNumAccessesPerDegree (unsigned long NumRows,MYSQL_RES *mysql static void Sta_ShowNumAccessesPerCourse (unsigned long NumRows,MYSQL_RES *mysql_res); static void Sta_WriteDegree (long DegCod); static void Sta_DrawBarNumClicks (char Color,float NumPagesGenerated,float MaxPagesGenerated,float TotalPagesGenerated,unsigned MaxBarWidth); -static void Sta_WriteSelectedRangeOfDates (unsigned NumDays); static void Sta_GetAndShowHierarchyStats (void); static void Sta_WriteHeadDegsCrssInSWAD (void); @@ -395,7 +394,7 @@ static void Sta_PutFormToRequestAccessesCrs (void) void Sta_AskSeeCrsAccesses (void) { extern const char *The_ClassForm[The_NUM_THEMES]; - extern const char *Txt_Statistics_of_access; + extern const char *Txt_Statistics_of_visits_to_the_course_X; extern const char *Txt_Users; extern const char *Txt_Show; extern const char *Txt_distributed_by; @@ -427,8 +426,8 @@ void Sta_AskSeeCrsAccesses (void) if (Usr_GetIfShowBigList (Gbl.Usrs.LstTchs.NumUsrs + Gbl.Usrs.LstStds.NumUsrs)) { - /***** Get list of selected users *****/ - Usr_GetListSelectedUsrs (); + /***** Get lists of selected users *****/ + Usr_GetListsSelectedUsrs (); Act_FormStart (ActSeeAccCrs); Grp_PutParamsCodGrps (); @@ -436,7 +435,9 @@ void Sta_AskSeeCrsAccesses (void) Par_PutHiddenParamLong ("LastRow",0); /***** Start frame *****/ - Lay_StartRoundFrameTable (NULL,2,Txt_Statistics_of_access); + sprintf (Gbl.Title,Txt_Statistics_of_visits_to_the_course_X, + Gbl.CurrentCrs.Crs.ShortName); + Lay_StartRoundFrameTable (NULL,2,Gbl.Title); /***** Put list of users to select some of them *****/ fprintf (Gbl.F.Out,"" @@ -532,7 +533,7 @@ void Sta_AskSeeCrsAccesses (void) Act_FormEnd (); /* Free the memory used by the list of users */ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); } } else // No teachers nor students found @@ -553,7 +554,7 @@ void Sta_AskSeeCrsAccesses (void) void Sta_AskSeeGblAccesses (void) { extern const char *The_ClassForm[The_NUM_THEMES]; - extern const char *Txt_Statistics_of_access; + extern const char *Txt_Statistics_of_all_visits; extern const char *Txt_Users; extern const char *Txt_ROLE_STATS[Sta_NUM_ROLES_STAT]; extern const char *Txt_Scope; @@ -579,7 +580,7 @@ void Sta_AskSeeGblAccesses (void) Act_FormStart (ActSeeAccGbl); /***** Start frame *****/ - Lay_StartRoundFrameTable (NULL,2,Txt_Statistics_of_access); + Lay_StartRoundFrameTable (NULL,2,Txt_Statistics_of_all_visits); /***** Start and end dates for the search *****/ Dat_WriteFormIniEndDates (); @@ -788,25 +789,12 @@ void Sta_SeeGblAccesses (void) static bool Sta_SeeAccesses (void) { - extern const char *Txt_User; - extern const char *Txt_Users; - extern const char *Txt_ROLE_STATS[Sta_NUM_ROLES_STAT]; - extern const char *Txt_Action; - extern const char *Txt_The_graph_shows_the_NUMBER; - extern const char *Txt_STAT_TYPE_COUNT_SMALL[Sta_NUM_COUNT_TYPES]; - extern const char *Txt_distributed_by; - extern const char *Txt_STAT_CLICKS_GROUPED_BY[Sta_NUM_CLICKS_GROUPED_BY]; extern const char *Txt_You_must_select_one_ore_more_users; extern const char *Txt_There_is_no_knowing_how_many_users_not_logged_have_accessed; extern const char *Txt_The_date_range_must_be_less_than_or_equal_to_X_days; extern const char *Txt_There_are_no_accesses_with_the_selected_search_criteria; - extern const char *Txt_List_of_detailed_clicks_in_the_course_X; - extern const char *Txt_Statistics_of_all_visits; - extern const char *Txt_Statistics_of_visits_to_COUNTRY_X; - extern const char *Txt_Statistics_of_visits_to_the_institution_X; - extern const char *Txt_Statistics_of_visits_to_the_centre_X; - extern const char *Txt_Statistics_of_visits_to_the_degree_X; - extern const char *Txt_Statistics_of_visits_to_the_course_X; + extern const char *Txt_List_of_detailed_clicks; + extern const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_COUNT_TYPES]; enum {STAT_GLOBAL,STAT_COURSE} StatsGlobalOrCourse; char Query[MAX_LENGTH_QUERY_ACCESS+1]; char QueryAux[512]; @@ -823,7 +811,6 @@ static bool Sta_SeeAccesses (void) char StrRole[256]; char StrQueryCountType[256]; unsigned NumDays; - char ActTxt[Act_MAX_LENGTH_ACTION_TXT+1]; /***** Initialize data structure of the user *****/ Usr_UsrDataConstructor (&UsrDat); @@ -914,11 +901,14 @@ static bool Sta_SeeAccesses (void) Lay_ShowErrorAndExit ("Number of rows per page is missing."); } - /****** Get list of selected users ******/ - Usr_GetListSelectedUsrs (); + /***** Show form again *****/ + Sta_AskSeeCrsAccesses (); + + /****** Get lists of selected users ******/ + Usr_GetListsSelectedUsrs (); /* Check the number of users whose clicks will be shown */ - if (!Usr_CountNumUsrsInEncryptedList ()) // If there are no users selected... + if (!Usr_CountNumUsrsInListOfSelectedUsrs ()) // If there are no users selected... { // ...write warning message and show the form again Lay_ShowAlert (Lay_WARNING,Txt_You_must_select_one_ore_more_users); return false; @@ -953,6 +943,9 @@ static bool Sta_SeeAccesses (void) 1 << Sco_SCOPE_CRS; Gbl.Scope.Default = Sco_SCOPE_SYS; Sco_GetScope (); + + /***** Show form again *****/ + Sta_AskSeeGblAccesses (); } /***** Check if range of dates is forbidden for me *****/ @@ -1293,92 +1286,13 @@ static bool Sta_SeeAccesses (void) Lay_ShowAlert (Lay_INFO,Txt_There_are_no_accesses_with_the_selected_search_criteria); else { - if (Gbl.Stat.ClicksGroupedBy == Sta_CLICKS_CRS_DETAILED_LIST) - { - sprintf (Gbl.Message,Txt_List_of_detailed_clicks_in_the_course_X, - Gbl.CurrentCrs.Crs.FullName); - Lay_WriteTitle (Gbl.Message); - Sta_WriteSelectedRangeOfDates (NumDays); - } - else - { - switch (Gbl.Stat.ClicksGroupedBy) - { - case Sta_CLICKS_CRS_PER_USR: - case Sta_CLICKS_CRS_PER_DAYS: - case Sta_CLICKS_CRS_PER_DAYS_AND_HOUR: - case Sta_CLICKS_CRS_PER_WEEKS: - case Sta_CLICKS_CRS_PER_MONTHS: - case Sta_CLICKS_CRS_PER_HOUR: - case Sta_CLICKS_CRS_PER_MINUTE: - case Sta_CLICKS_CRS_PER_ACTION: - sprintf (Gbl.Message,Txt_Statistics_of_visits_to_the_course_X, - Gbl.CurrentCrs.Crs.FullName); - Lay_WriteTitle (Gbl.Message); - Sta_WriteSelectedRangeOfDates (NumDays); - break; - default: - switch (Gbl.Scope.Current) - { - case Sco_SCOPE_SYS: - strcpy (Gbl.Message,Txt_Statistics_of_all_visits); - break; - case Sco_SCOPE_CTY: - sprintf (Gbl.Message,Txt_Statistics_of_visits_to_COUNTRY_X, - Gbl.CurrentCty.Cty.Name[Gbl.Prefs.Language]); - break; - case Sco_SCOPE_INS: - sprintf (Gbl.Message,Txt_Statistics_of_visits_to_the_institution_X, - Gbl.CurrentIns.Ins.ShortName); - break; - case Sco_SCOPE_CTR: - sprintf (Gbl.Message,Txt_Statistics_of_visits_to_the_centre_X, - Gbl.CurrentCtr.Ctr.ShortName); - break; - case Sco_SCOPE_DEG: - sprintf (Gbl.Message,Txt_Statistics_of_visits_to_the_degree_X, - Gbl.CurrentDeg.Deg.ShortName); - break; - case Sco_SCOPE_CRS: - sprintf (Gbl.Message,Txt_Statistics_of_visits_to_the_course_X, - Gbl.CurrentCrs.Crs.ShortName); - break; - default: - Lay_ShowErrorAndExit ("Wrong scope."); - break; - } - Lay_WriteTitle (Gbl.Message); - Sta_WriteSelectedRangeOfDates (NumDays); - fprintf (Gbl.F.Out,"

"); - if (Gbl.Stat.Role == Sta_ME) - fprintf (Gbl.F.Out,"%s: %s", - Txt_User, - Gbl.Usrs.Me.UsrDat.FullName); - else - fprintf (Gbl.F.Out,"%s: %s", - Txt_Users, - Txt_ROLE_STATS[Gbl.Stat.Role]); - fprintf (Gbl.F.Out,"

"); - break; - } - - fprintf (Gbl.F.Out,"

%s: %s

", - Txt_Action, - Act_GetActionTextFromDB (Act_Actions[Gbl.Stat.NumAction].ActCod,ActTxt)); - - sprintf (Gbl.Message,"%s %s, %s %s", - Txt_The_graph_shows_the_NUMBER, - Txt_STAT_TYPE_COUNT_SMALL[Gbl.Stat.CountType], - Txt_distributed_by, - Txt_STAT_CLICKS_GROUPED_BY[Gbl.Stat.ClicksGroupedBy]); - Lay_WriteTitle (Gbl.Message); - } - /***** Put the table with the clicks *****/ /* Write start of table frame */ - Lay_StartRoundFrameTable ((Gbl.Stat.ClicksGroupedBy == Sta_CLICKS_CRS_DETAILED_LIST) ? "95%" : - NULL, - 0,NULL); + if (Gbl.Stat.ClicksGroupedBy == Sta_CLICKS_CRS_DETAILED_LIST) + Lay_StartRoundFrameTable ("95%",0,Txt_List_of_detailed_clicks); + else + Lay_StartRoundFrameTable (NULL,0,Txt_STAT_TYPE_COUNT_CAPS[Gbl.Stat.CountType]); + switch (Gbl.Stat.ClicksGroupedBy) { case Sta_CLICKS_CRS_DETAILED_LIST: @@ -1441,7 +1355,7 @@ static bool Sta_SeeAccesses (void) /***** Free the memory used by the list of users *****/ if (Gbl.CurrentAct == ActSeeAccCrs) - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); /***** Free memory used by the data of the user *****/ Usr_UsrDataDestructor (&UsrDat); @@ -1548,7 +1462,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql Act_FormEnd (); /* Write number of current page */ - fprintf (Gbl.F.Out,"" + fprintf (Gbl.F.Out,"" "" "%s %lu-%lu %s %lu (%s %ld %s %lu)" "" @@ -3511,35 +3425,6 @@ void Sta_WriteParamsDatesSeeAccesses (void) Par_PutHiddenParamUnsigned ("EndYear" ,Gbl.DateRange.DateEnd.Year); } -/*****************************************************************************/ -/******************** Write the selected range of dates **********************/ -/*****************************************************************************/ - -static void Sta_WriteSelectedRangeOfDates (unsigned NumDays) - { - extern const char *Txt_Date; - extern const char *Txt_Dates; - extern const char *Txt_DATES_RANGE; - extern const char *Txt_one_day; - extern const char *Txt_days; - char StrDateIni[2+1+2+1+4+1]; - char StrDateEnd[2+1+2+1+4+1]; - char StrDatesRange[1024]; - - sprintf (StrDateIni,"%02u/%02u/%04u",Gbl.DateRange.DateIni.Day,Gbl.DateRange.DateIni.Month,Gbl.DateRange.DateIni.Year); - fprintf (Gbl.F.Out,"

"); - if (NumDays == 1) - fprintf (Gbl.F.Out,"%s: %s (%s)",Txt_Date,StrDateIni,Txt_one_day); - else - { - sprintf (StrDateEnd,"%02u/%02u/%04u",Gbl.DateRange.DateEnd.Day,Gbl.DateRange.DateEnd.Month,Gbl.DateRange.DateEnd.Year); - sprintf (StrDatesRange,Txt_DATES_RANGE,StrDateIni,StrDateEnd); - fprintf (Gbl.F.Out,"%s: %s (%u %s)", - Txt_Dates,StrDatesRange,NumDays,Txt_days); - } - fprintf (Gbl.F.Out,"

"); - } - /*****************************************************************************/ /************************** Show use of the platform *************************/ /*****************************************************************************/ diff --git a/swad_test.c b/swad_test.c index 34dd05a30..650ae939e 100644 --- a/swad_test.c +++ b/swad_test.c @@ -5945,7 +5945,7 @@ void Tst_SelUsrsToSeeUsrsTstExams (void) Usr_FreeUsrsList (&Gbl.Usrs.LstStds); /***** Free the memory used by the list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); /***** Free memory for list of selected groups *****/ Grp_FreeListCodSelectedGrps (); @@ -6022,13 +6022,13 @@ void Tst_ShowUsrsTestResults (void) const char *Ptr; /***** Get list of the selected users's IDs *****/ - Usr_GetListSelectedUsrs (); + Usr_GetListsSelectedUsrs (); /***** Get starting and ending dates *****/ Dat_GetIniEndDatesFromForm (); /***** Check the number of users whose tests results will be shown *****/ - if (Usr_CountNumUsrsInEncryptedList ()) // If some users are selected... + if (Usr_CountNumUsrsInListOfSelectedUsrs ()) // If some users are selected... { /***** Header of the table with the list of users *****/ Lay_StartRoundFrameTable (NULL,2,Txt_Exams); @@ -6060,7 +6060,7 @@ void Tst_ShowUsrsTestResults (void) } /***** Free the memory used for the list of users *****/ - Usr_FreeListsEncryptedUsrCods (); + Usr_FreeListsSelectedUsrCods (); } /*****************************************************************************/ diff --git a/swad_text.c b/swad_text.c index 5f1fd621a..c47f64513 100644 --- a/swad_text.c +++ b/swad_text.c @@ -6724,48 +6724,6 @@ const char *Txt_Date_of_creation = "Data da criação"; #endif -const char *Txt_Dates = -#if L==0 - "Dates"; -#elif L==1 - "Datum"; -#elif L==2 - "Dates"; -#elif L==3 - "Fechas"; -#elif L==4 - "Dates"; -#elif L==5 - "Fechas"; // Okoteve traducción -#elif L==6 - "Date"; -#elif L==7 - "Daty"; -#elif L==8 - "Datas"; -#endif - -const char *Txt_DATES_RANGE = // Warning: it is very important to include two %s in the following sentences -#if L==0 - "desde el %s hasta el %s"; // Necessita traduccio -#elif L==1 - "von %s bis %s"; -#elif L==2 - "from %s to %s"; -#elif L==3 - "desde el %s hasta el %s"; -#elif L==4 - "de %s jusqu'à %s"; -#elif L==5 - "desde el %s hasta el %s"; // Okoteve traducción -#elif L==6 - "dal %s al %s"; -#elif L==7 - "z %s do %s"; -#elif L==8 - "%s até %s"; -#endif - const char *Txt_Day = #if L==0 "Día"; // Necessita traduccio @@ -15640,25 +15598,25 @@ const char *Txt_Link_to_announcement_of_exam = "Link para chamada para exame"; #endif -const char *Txt_List_of_detailed_clicks_in_the_course_X = // Warning: it is very important to include %s in the following sentences +const char *Txt_List_of_detailed_clicks = #if L==0 - "Listado de clics detallados en la asignatura %s"; // Necessita traduccio + "Listado de clics detallados"; // Necessita traduccio #elif L==1 - "List of detailed clicks in the course %s"; // Need Übersetzung + "List of detailed clicks"; // Need Übersetzung #elif L==2 - "List of detailed clicks in the course %s"; + "List of detailed clicks"; #elif L==3 - "Listado de clics detallados en la asignatura %s"; + "Listado de clics detallados"; #elif L==4 - "List of detailed clicks in the course %s"; // Besoin de traduction + "List of detailed clicks"; // Besoin de traduction #elif L==5 - "Listado de clics detallados en la asignatura %s"; // Okoteve traducción + "Listado de clics detallados"; // Okoteve traducción #elif L==6 - "Lista di scatti dettagliati nel corso %s"; + "Lista di scatti dettagliati"; #elif L==7 - "Lista szczególowa klikniec w trakcie %s"; + "Lista szczególowa klikniec"; #elif L==8 - "List of detailed clicks in the course %s"; // Necessita de tradução + "List of detailed clicks"; // Necessita de tradução #endif const char *Txt_List_of_nicks_emails_or_IDs = @@ -25505,27 +25463,6 @@ const char *Txt_Official_students = "Estudantes oficiais"; #endif -const char *Txt_one_day = -#if L==0 - "un día"; // Necessita traduccio -#elif L==1 - "ein Tag"; -#elif L==2 - "one day"; -#elif L==3 - "un día"; -#elif L==4 - "un jour"; -#elif L==5 - "un día"; // Okoteve traducción -#elif L==6 - "un giorno"; -#elif L==7 - "jeden dzien"; -#elif L==8 - "um dia"; -#endif - const char *Txt_One_message_has_been_deleted = #if L==0 "Se ha eliminado un mensaje."; // Necessita traduccio @@ -36451,27 +36388,6 @@ const char *Txt_Statistic = "Estatísticas"; #endif -const char *Txt_Statistics_of_access = -#if L==0 - "Estadístiques d'accesso"; -#elif L==1 - "Zugriffsstatistik"; -#elif L==2 - "Statistics of access"; -#elif L==3 - "Estadísticas de acceso"; -#elif L==4 - "Statistiques de connexion"; -#elif L==5 - "Estadísticas de acceso"; // Okoteve traducción -#elif L==6 - "Statistiche di accesso"; -#elif L==7 - "Statystyki dostęp"; -#elif L==8 - "Estatísticas de acesso"; -#endif - const char *Txt_Statistics_of_all_visits = #if L==0 "Estadística de todos los accesos"; // Necessita traduccio @@ -36493,48 +36409,6 @@ const char *Txt_Statistics_of_all_visits = "Statistics of all visits"; // Necessita de tradução #endif -const char *Txt_Statistics_of_visits_to_COUNTRY_X = // Warning: it is very important to include %s in the following sentences -#if L==0 - "Estadística de accesos a %s"; // Necessita traduccio -#elif L==1 - "Statistics of visits to %s"; // Need Übersetzung -#elif L==2 - "Statistics of visits to %s"; -#elif L==3 - "Estadística de accesos a %s"; -#elif L==4 - "Statistics of visits to %s"; // Besoin de traduction -#elif L==5 - "Estadística de accesos a %s"; // Okoteve traducción -#elif L==6 - "Statistiche degli accessi al centro %s"; -#elif L==7 - "Statistics of visits to the centre %s"; // Potrzebujesz tlumaczenie -#elif L==8 - "Statistics of visits to the centre %s"; // Necessita de tradução -#endif - -const char *Txt_Statistics_of_visits_to_the_centre_X = // Warning: it is very important to include %s in the following sentences -#if L==0 - "Estadística de accesos al centro %s"; // Necessita traduccio -#elif L==1 - "Statistics of visits to the centre %s"; // Need Übersetzung -#elif L==2 - "Statistics of visits to the centre %s"; -#elif L==3 - "Estadística de accesos al centro %s"; -#elif L==4 - "Statistics of visits to the centre %s"; // Besoin de traduction -#elif L==5 - "Estadística de accesos al centro %s"; // Okoteve traducción -#elif L==6 - "Statistiche degli accessi al centro %s"; -#elif L==7 - "Statistics of visits to the centre %s"; // Potrzebujesz tlumaczenie -#elif L==8 - "Statistics of visits to the centre %s"; // Necessita de tradução -#endif - const char *Txt_Statistics_of_visits_to_the_course_X = // Warning: it is very important to include %s in the following sentences #if L==0 "Estadística d'accessos a l'assignatura %s"; @@ -36556,48 +36430,6 @@ const char *Txt_Statistics_of_visits_to_the_course_X = // Warning: it is very im "Statistics of visits to the course %s"; // Necessita de tradução #endif -const char *Txt_Statistics_of_visits_to_the_degree_X = // Warning: it is very important to include %s in the following sentences -#if L==0 - "Estadística de accesos a la titulación %s"; // Necessita traduccio -#elif L==1 - "Statistics of visits to the degree %s"; // Need Übersetzung -#elif L==2 - "Statistics of visits to the degree %s"; -#elif L==3 - "Estadística de accesos a la titulación %s"; -#elif L==4 - "Statistics of visits to the degree %s"; // Besoin de traduction -#elif L==5 - "Estadística de accesos a la titulación %s"; // Okoteve traducción -#elif L==6 - "Statistiche degli accessi alla laurea %s"; -#elif L==7 - "Statistics of visits to the degree %s"; // Potrzebujesz tlumaczenie -#elif L==8 - "Statistics of visits to the degree %s"; // Necessita de tradução -#endif - -const char *Txt_Statistics_of_visits_to_the_institution_X = // Warning: it is very important to include %s in the following sentences -#if L==0 - "Estadística de accesos a la institución %s"; // Necessita traduccio -#elif L==1 - "Statistics of visits to the institution %s"; // Need Übersetzung -#elif L==2 - "Statistics of visits to the institution %s"; -#elif L==3 - "Estadística de accesos a la institución %s"; -#elif L==4 - "Statistics of visits to the institution %s"; // Besoin de traduction -#elif L==5 - "Estadística de accesos a la institución %s"; // Okoteve traducción -#elif L==6 - "Statistiche degli accessi alla istituzione %s"; -#elif L==7 - "Statistics of visits to the institution %s"; // Potrzebujesz tlumaczenie -#elif L==8 - "Statistics of visits to the institution %s"; // Necessita de tradução -#endif - const char *Txt_Status = #if L==0 "Estado"; // Necessita traduccio @@ -39694,27 +39526,6 @@ const char *Txt_The_folder_name_X_has_not_changed_because_there_is_already_a_fol " because there is already a folder or a file with the name %s."; // Necessita de tradução #endif -const char *Txt_The_graph_shows_the_NUMBER = -#if L==0 - "La gráfica muestra el"; // Necessita traduccio -#elif L==1 - "Die Grafik zeigt die"; -#elif L==2 - "The graph shows the"; -#elif L==3 - "La gráfica muestra el"; -#elif L==4 - "Le graphique montre le"; -#elif L==5 - "La gráfica muestra el"; // Okoteve traducción -#elif L==6 - "Il grafico mostra il"; -#elif L==7 - "The graph shows the"; // Potrzebujesz tlumaczenie -#elif L==8 - "O gráfico mostra o"; -#endif - const char *Txt_The_group_X_already_exists = // Warning: it is very important to include %s in the following sentences #if L==0 "El grupo %s ya existe."; // Necessita traduccio diff --git a/swad_user.c b/swad_user.c index 441fe784b..279b1827c 100644 --- a/swad_user.c +++ b/swad_user.c @@ -145,6 +145,8 @@ static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,Usr_ShowUsrsTyp static Usr_Sex_t Usr_GetSexOfUsrsLst (struct ListUsers *LstUsrs); +static void Usr_PutCheckboxToSelectUser (struct UsrData *UsrDat,bool UsrIsTheMsgSender); + static void Usr_SetUsrDatMainFieldNames (void); static void Usr_ListMainDataGsts (bool PutCheckBoxToSelectUsr); static void Usr_ListMainDataStds (bool PutCheckBoxToSelectUsr); @@ -2650,7 +2652,7 @@ static void Usr_WriteRowGstMainData (unsigned NumUsr,struct UsrData *UsrDat) // Two colors are used alternatively to better distinguish the rows fprintf (Gbl.F.Out,"", Gbl.RowEvenOdd); - Usr_PutCheckboxToSelectUser (Rol__GUEST_,UsrDat->EncryptedUsrCod,false); + Usr_PutCheckboxToSelectUser (UsrDat,false); fprintf (Gbl.F.Out,""); /***** Student has accepted enrollment in current course? *****/ @@ -2737,7 +2739,9 @@ void Usr_WriteRowStdMainData (unsigned NumUsr,struct UsrData *UsrDat,bool PutChe if (PutCheckBoxToSelectUsr) { fprintf (Gbl.F.Out,"",BgColor); - Usr_PutCheckboxToSelectUser (Rol_STUDENT,UsrDat->EncryptedUsrCod,UsrIsTheMsgSender); + + Usr_PutCheckboxToSelectUser (UsrDat,UsrIsTheMsgSender); + fprintf (Gbl.F.Out,""); } @@ -3049,7 +3053,9 @@ static void Usr_WriteRowTchMainData (unsigned NumUsr,struct UsrData *UsrDat,bool if (PutCheckBoxToSelectUsr) { fprintf (Gbl.F.Out,"",BgColor); - Usr_PutCheckboxToSelectUser (Rol_TEACHER,UsrDat->EncryptedUsrCod,UsrIsTheMsgSender); + + Usr_PutCheckboxToSelectUser (UsrDat,UsrIsTheMsgSender); + fprintf (Gbl.F.Out,""); } @@ -4382,14 +4388,14 @@ void Usr_PutHiddenParUsrCodAll (Act_Action_t NextAction,const char *ListUsrCods) /************************* Get list of selected users ************************/ /*****************************************************************************/ -void Usr_GetListSelectedUsrs (void) +void Usr_GetListsSelectedUsrs (void) { unsigned Length; /***** Allocate memory for the lists of users *****/ - Usr_AllocateListEncryptedUsrCodAll (); - Usr_AllocateListEncryptedUsrCodTch (); - Usr_AllocateListEncryptedUsrCodStd (); + Usr_AllocateListSelectedUsrCodAll (); + Usr_AllocateListSelectedUsrCodTch (); + Usr_AllocateListSelectedUsrCodStd (); /***** Get selected users *****/ if (Gbl.Session.IsOpen) // If the session is open, get parameter from DB @@ -4402,9 +4408,9 @@ void Usr_GetListSelectedUsrs (void) else Par_GetParMultiToText ("UsrCodAll",Gbl.Usrs.Select.All,Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); - Par_GetParMultiToText ("UsrCodTch",Gbl.Usrs.Select.Tch,Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); + Par_GetParMultiToText ("UsrCodTch",Gbl.Usrs.Select.Tch,Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); // Teachers or guests - Par_GetParMultiToText ("UsrCodStd",Gbl.Usrs.Select.Std,Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); + Par_GetParMultiToText ("UsrCodStd",Gbl.Usrs.Select.Std,Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); // Students /* sprintf (Gbl.Message,"UsrCodAll = %s / UsrCodTch = %s / UsrCodStd = %s", Gbl.Usrs.Select.All,Gbl.Usrs.Select.Tch,Gbl.Usrs.Select.Std); @@ -4457,7 +4463,7 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs) bool Error = false; /***** Allocate memory for the lists of users's IDs *****/ - Usr_AllocateListEncryptedUsrCodAll (); + Usr_AllocateListSelectedUsrCodAll (); /***** Allocate memory for the lists of recipients written explicetely *****/ Usr_AllocateListOtherRecipients (); @@ -4580,7 +4586,7 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs) Usr_GetUsrDataFromUsrCod (&UsrDat); // Really only EncryptedUsrCod is needed /* Find if encrypted user's code is already in list */ - if (!Usr_FindEncryptedUsrCodInList (UsrDat.EncryptedUsrCod)) // If not in list ==> add it + if (!Usr_FindUsrCodInListOfSelectedUsrs (UsrDat.EncryptedUsrCod)) // If not in list ==> add it { /* Add encrypted user's code to list of users */ if ((Length = strlen (Gbl.Usrs.Select.All)) == 0) // First user in list @@ -4614,26 +4620,29 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs) /*****************************************************************************/ // Returns true if EncryptedUsrCodToFind is in Gbl.Usrs.Select.All -bool Usr_FindEncryptedUsrCodInList (const char *EncryptedUsrCodToFind) +bool Usr_FindUsrCodInListOfSelectedUsrs (const char *EncryptedUsrCodToFind) { const char *Ptr; char EncryptedUsrCod[Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64+1]; - Ptr = Gbl.Usrs.Select.All; - while (*Ptr) + if (Gbl.Usrs.Select.All) { - Par_GetNextStrUntilSeparParamMult (&Ptr,EncryptedUsrCod,Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64); - if (!strcmp (EncryptedUsrCodToFind,EncryptedUsrCod)) - return true; // Found! + Ptr = Gbl.Usrs.Select.All; + while (*Ptr) + { + Par_GetNextStrUntilSeparParamMult (&Ptr,EncryptedUsrCod,Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64); + if (!strcmp (EncryptedUsrCodToFind,EncryptedUsrCod)) + return true; // Found! + } } - return false; // Not found + return false; // List not allocated or user not found } /*****************************************************************************/ /************ Count number of valid users' IDs in encrypted list *************/ /*****************************************************************************/ -unsigned Usr_CountNumUsrsInEncryptedList (void) +unsigned Usr_CountNumUsrsInListOfSelectedUsrs (void) { const char *Ptr; unsigned NumUsrs = 0; @@ -4655,7 +4664,7 @@ unsigned Usr_CountNumUsrsInEncryptedList (void) /********************* Allocate memory for list of users *********************/ /*****************************************************************************/ -void Usr_AllocateListEncryptedUsrCodAll (void) +void Usr_AllocateListSelectedUsrCodAll (void) { if (!Gbl.Usrs.Select.All) { @@ -4669,26 +4678,26 @@ void Usr_AllocateListEncryptedUsrCodAll (void) /****************** Allocate memory for list of students *********************/ /*****************************************************************************/ -void Usr_AllocateListEncryptedUsrCodStd (void) +void Usr_AllocateListSelectedUsrCodStd (void) { if (!Gbl.Usrs.Select.Std) { if ((Gbl.Usrs.Select.Std = (char *) malloc (Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS+1)) == NULL) - Lay_ShowErrorAndExit ("Not enough memory to store list of students."); + Lay_ShowErrorAndExit ("Not enough memory to store list of users."); Gbl.Usrs.Select.Std[0] = '\0'; } } /*****************************************************************************/ -/****************** Allocate memory for list of teachers *********************/ +/************* Allocate memory for list of teachers or guests ****************/ /*****************************************************************************/ -void Usr_AllocateListEncryptedUsrCodTch (void) +void Usr_AllocateListSelectedUsrCodTch (void) { if (!Gbl.Usrs.Select.Tch) { if ((Gbl.Usrs.Select.Tch = (char *) malloc (Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS+1)) == NULL) - Lay_ShowErrorAndExit ("Not enough memory to store list of teachers."); + Lay_ShowErrorAndExit ("Not enough memory to store list of users."); Gbl.Usrs.Select.Tch[0] = '\0'; } } @@ -4697,7 +4706,7 @@ void Usr_AllocateListEncryptedUsrCodTch (void) /********************** Free memory for lists of users ***********************/ /*****************************************************************************/ -void Usr_FreeListsEncryptedUsrCods (void) +void Usr_FreeListsSelectedUsrCods (void) { if (Gbl.Usrs.Select.All) { @@ -4911,7 +4920,7 @@ void Usr_PutCheckboxToSelectAllTheUsers (Rol_Role_t Role) " onclick=\"togglecheckChildren(this,'UsrCodStd')\" />"); LstUsrs = &Gbl.Usrs.LstStds; } - else + else // Role == Rol_TEACHER or Role == Rol__GUEST_ { fprintf (Gbl.F.Out,""); @@ -4922,7 +4931,7 @@ void Usr_PutCheckboxToSelectAllTheUsers (Rol_Role_t Role) "" "", LstUsrs->NumUsrs == 1 ? Txt_ROLES_SINGUL_Abc[Role][Sex] : - Txt_ROLES_PLURAL_Abc [Role][Sex]); + Txt_ROLES_PLURAL_Abc[Role][Sex]); } /*****************************************************************************/ @@ -4966,15 +4975,31 @@ unsigned Usr_GetColumnsForSelectUsrs (void) /******* Put a checkbox, in a classphoto or a list, to select a user *********/ /*****************************************************************************/ -void Usr_PutCheckboxToSelectUser (Rol_Role_t Role,const char *EncryptedUsrCod,bool UsrIsTheMsgSender) +static void Usr_PutCheckboxToSelectUser (struct UsrData *UsrDat,bool UsrIsTheMsgSender) { + bool CheckboxChecked; + + /***** Check box *****/ fprintf (Gbl.F.Out,"RoleInCurrentCrsDB == Rol_STUDENT) + fprintf (Gbl.F.Out,"UsrCodStd\" value=\"%s\"" + " onclick=\"checkParent(this,'SEL_UNSEL_STDS')\"", + UsrDat->EncryptedUsrCod); + else // Role == Rol_TEACHER or Role == Rol__GUEST_ + fprintf (Gbl.F.Out,"UsrCodTch\" value=\"%s\"" + " onclick=\"checkParent(this,'SEL_UNSEL_TCHS')\"", + UsrDat->EncryptedUsrCod); + + /***** Check box must be checked? *****/ + CheckboxChecked = false; + if (UsrIsTheMsgSender) + CheckboxChecked = true; else - fprintf (Gbl.F.Out,"UsrCodTch\" value=\"%s\" onclick=\"checkParent(this,'SEL_UNSEL_TCHS')\"",EncryptedUsrCod); - if (UsrIsTheMsgSender) // Reply to a user + /* 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," />"); } @@ -6398,7 +6423,7 @@ void Usr_SeeGuests (void) if (Usr_GetIfShowBigList (Gbl.Usrs.LstGsts.NumUsrs)) { /***** Get list of selected users *****/ - Usr_GetListSelectedUsrs (); + Usr_GetListsSelectedUsrs (); fprintf (Gbl.F.Out,"
"); switch (Gbl.Usrs.Me.ListType) @@ -6574,7 +6599,7 @@ void Usr_SeeStudents (void) if (Usr_GetIfShowBigList (Gbl.Usrs.LstStds.NumUsrs)) { /***** Get list of selected users *****/ - Usr_GetListSelectedUsrs (); + Usr_GetListsSelectedUsrs (); switch (Gbl.Usrs.Me.ListType) { @@ -7056,7 +7081,7 @@ static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType, /***** Checkbox to select this user *****/ if (PutCheckBoxToSelectUsr) - Usr_PutCheckboxToSelectUser (RoleInClassPhoto,UsrDat.EncryptedUsrCod,UsrIsTheMsgSender); + Usr_PutCheckboxToSelectUser (&UsrDat,UsrIsTheMsgSender); /***** Show photo *****/ ShowPhoto = Pho_ShowUsrPhotoIsAllowed (&UsrDat,PhotoURL); diff --git a/swad_user.h b/swad_user.h index fa3c27040..f364ddf5d 100644 --- a/swad_user.h +++ b/swad_user.h @@ -292,14 +292,14 @@ void Usr_GetUnorderedStdsCodesInDeg (long DegCod); void Usr_FreeUsrsList (struct ListUsers *LstUsrs); bool Usr_GetIfShowBigList (unsigned NumUsrs); void Usr_PutHiddenParUsrCodAll (Act_Action_t NextAction,const char *ListUsrCods); -void Usr_GetListSelectedUsrs (void); +void Usr_GetListsSelectedUsrs (void); bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs); -bool Usr_FindEncryptedUsrCodInList (const char *EncryptedUsrCodToFind); -unsigned Usr_CountNumUsrsInEncryptedList (void); -void Usr_AllocateListEncryptedUsrCodAll (void); -void Usr_AllocateListEncryptedUsrCodStd (void); -void Usr_AllocateListEncryptedUsrCodTch (void); -void Usr_FreeListsEncryptedUsrCods (void); +bool Usr_FindUsrCodInListOfSelectedUsrs (const char *EncryptedUsrCodToFind); +unsigned Usr_CountNumUsrsInListOfSelectedUsrs (void); +void Usr_AllocateListSelectedUsrCodAll (void); +void Usr_AllocateListSelectedUsrCodStd (void); +void Usr_AllocateListSelectedUsrCodTch (void); +void Usr_FreeListsSelectedUsrCods (void); void Usr_FreeListOtherRecipients (void); void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction); @@ -307,7 +307,6 @@ void Usr_PutCheckboxToSelectAllTheUsers (Rol_Role_t Role); unsigned Usr_GetColumnsForSelectUsrs (void); void Usr_PutExtraParamsUsrList (Act_Action_t NextAction); void Usr_ListUsersToSelect (Rol_Role_t Role); -void Usr_PutCheckboxToSelectUser (Rol_Role_t Role,const char *EncryptedUsrCod,bool UsrIsTheMsgSender); void Usr_PutCheckboxListWithPhotos (void); void Usr_ListAllDataGsts (void);