diff --git a/swad_ID.o b/swad_ID.o new file mode 100644 index 000000000..c8e1e6207 Binary files /dev/null and b/swad_ID.o differ diff --git a/swad_QR.o b/swad_QR.o new file mode 100644 index 000000000..39c45b38e Binary files /dev/null and b/swad_QR.o differ diff --git a/swad_RSS.o b/swad_RSS.o new file mode 100644 index 000000000..1dd00cd14 Binary files /dev/null and b/swad_RSS.o differ diff --git a/swad_action.o b/swad_action.o new file mode 100644 index 000000000..f54789538 Binary files /dev/null and b/swad_action.o differ diff --git a/swad_announcement.o b/swad_announcement.o new file mode 100644 index 000000000..91c85c25d Binary files /dev/null and b/swad_announcement.o differ diff --git a/swad_assignment.o b/swad_assignment.o new file mode 100644 index 000000000..435e7f25d Binary files /dev/null and b/swad_assignment.o differ diff --git a/swad_attendance.c b/swad_attendance.c index 4e7867285..5b5e1bced 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -95,7 +95,9 @@ static void Att_RegUsrInAttEventChangingComments (long AttCod,long UsrCod,bool P const char *CommentStd,const char *CommentTch); static void Att_RemoveUsrFromAttEvent (long AttCod,long UsrCod); -static void Att_ListAttEventsWithStds (void); +static void Att_GetListSelectedUsrCods (unsigned NumStdsInList,long **LstSelectedUsrCods); +static void Att_GetListSelectedAttCods (void); +static void Att_ListEventsToSelect (void); static void Att_ListStdsAttendanceTable (unsigned NumStdsInList,long *LstSelectedUsrCods); static void Att_WriteTableHeadSeveralAttEvents (void); static void Att_WriteRowStdSeveralAttEvents (unsigned NumStd,struct UsrData *UsrDat); @@ -201,7 +203,7 @@ static void Att_ShowAllAttEvents (void) Txt_ROLES_PLURAL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]); /***** Write all the attendance events *****/ - for (NumAttEvent = Pagination.FirstItemVisible; + for (NumAttEvent = Pagination.FirstItemVisible, Gbl.RowEvenOdd = 0; NumAttEvent <= Pagination.LastItemVisible; NumAttEvent++) Att_ShowOneAttEvent (&Gbl.AttEvents.Lst[NumAttEvent-1],false); @@ -1969,7 +1971,7 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att) Txt_Teachers_comment); /* List of students */ - for (NumStd = 0; + for (NumStd = 0, Gbl.RowEvenOdd = 0; NumStd < Gbl.Usrs.LstStds.NumUsrs; NumStd++) { @@ -1977,7 +1979,7 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att) if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // If user's data exist... { UsrDat.Accepted = Gbl.Usrs.LstStds.Lst[NumStd].Accepted; - Att_WriteRowStdToCallTheRoll (NumStd+1,&UsrDat,Att); + Att_WriteRowStdToCallTheRoll (NumStd + 1,&UsrDat,Att); } } @@ -2614,6 +2616,9 @@ void Usr_ReqListAttendanceStdsCrs (void) Usr_ListUsersToSelect (Rol_ROLE_STUDENT); Lay_EndRoundFrameTable10 (); + /* Free list of attendance events */ + Att_FreeListAttEvents (); + /* Send button */ Lay_PutSendButton (Txt_Show_list); fprintf (Gbl.F.Out,"" @@ -2642,11 +2647,8 @@ void Usr_ListAttendanceStdsCrs (void) extern const char *The_ClassFormul[The_NUM_THEMES]; extern const char *Txt_You_must_select_one_ore_more_students; unsigned NumStdsInList; - unsigned NumStd; long *LstSelectedUsrCods; unsigned NumAttEvent; - const char *Ptr; - struct UsrData UsrDat; /***** Get list of attendance events *****/ Att_GetListAttEvents (Att_OLDEST_FIRST); @@ -2660,25 +2662,8 @@ void Usr_ListAttendanceStdsCrs (void) if (Gbl.CurrentAct == ActSeeLstAttStd) Att_PutFormToPrintListStds (); - /***** Create list of user codes *****/ - if ((LstSelectedUsrCods = (long *) calloc ((size_t) NumStdsInList,sizeof (long))) == NULL) - Lay_ShowErrorAndExit ("Not enough memory to store list of user codes."); - - /***** Initialize structure with user's data *****/ - Usr_UsrDataConstructor (&UsrDat); - - /***** Loop over the list Gbl.Usrs.Select.All getting users' codes *****/ - for (NumStd = 0, Ptr = Gbl.Usrs.Select.All; - NumStd < NumStdsInList && *Ptr; - NumStd++) - { - Par_GetNextStrUntilSeparParamMult (&Ptr,UsrDat.EncryptedUsrCod,Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64); - Usr_GetUsrCodFromEncryptedUsrCod (&UsrDat); - LstSelectedUsrCods[NumStd] = UsrDat.UsrCod; - } - - /***** Free memory used for user's data *****/ - Usr_UsrDataDestructor (&UsrDat); + /***** Get list of students selected to show their attendances *****/ + Att_GetListSelectedUsrCods (NumStdsInList,&LstSelectedUsrCods); /***** Get number of students in each event *****/ for (NumAttEvent = 0; @@ -2688,8 +2673,11 @@ void Usr_ListAttendanceStdsCrs (void) Gbl.AttEvents.Lst[NumAttEvent].NumStdsFromList = Att_GetNumStdsFromAListWhoAreInAttEvent (Gbl.AttEvents.Lst[NumAttEvent].AttCod, LstSelectedUsrCods,NumStdsInList); - /***** List those events that have students (without comments) *****/ - Att_ListAttEventsWithStds (); + /***** Get list of attendance events selected *****/ + Att_GetListSelectedAttCods (); + + /***** List events to select *****/ + Att_ListEventsToSelect (); /***** Get my preference about photos in users' list for current course *****/ Usr_GetMyPrefAboutListWithPhotosFromDB (); @@ -2716,11 +2704,98 @@ void Usr_ListAttendanceStdsCrs (void) Att_FreeListAttEvents (); } +/*****************************************************************************/ +/********** Get list of students selected to show their attendances **********/ +/*****************************************************************************/ + +static void Att_GetListSelectedUsrCods (unsigned NumStdsInList,long **LstSelectedUsrCods) + { + unsigned NumStd; + const char *Ptr; + struct UsrData UsrDat; + + /***** Create list of user codes *****/ + if ((*LstSelectedUsrCods = (long *) calloc ((size_t) NumStdsInList,sizeof (long))) == NULL) + Lay_ShowErrorAndExit ("Not enough memory to store list of user codes."); + + /***** Initialize structure with user's data *****/ + Usr_UsrDataConstructor (&UsrDat); + + /***** Loop over the list Gbl.Usrs.Select.All getting users' codes *****/ + for (NumStd = 0, Ptr = Gbl.Usrs.Select.All; + NumStd < NumStdsInList && *Ptr; + NumStd++) + { + Par_GetNextStrUntilSeparParamMult (&Ptr,UsrDat.EncryptedUsrCod,Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64); + Usr_GetUsrCodFromEncryptedUsrCod (&UsrDat); + (*LstSelectedUsrCods)[NumStd] = UsrDat.UsrCod; + } + + /***** Free memory used for user's data *****/ + Usr_UsrDataDestructor (&UsrDat); + } + +/*****************************************************************************/ +/****************** Get list of attendance events selected *******************/ +/*****************************************************************************/ + +static void Att_GetListSelectedAttCods (void) + { + unsigned MaxSizeListAttCodsSelected; + char *StrAttCodsSelected; + unsigned NumAttEvent; + const char *Ptr; + long AttCod; + char LongStr[1+10+1]; + + /***** Allocate memory for list of attendance events selected *****/ + MaxSizeListAttCodsSelected = Gbl.AttEvents.Num * (1+10+1); + if ((StrAttCodsSelected = (char *) malloc (MaxSizeListAttCodsSelected+1)) == NULL) + Lay_ShowErrorAndExit ("Not enough memory to store list of attendance events selected."); + + /***** Get parameter multiple with list of attendance events selected *****/ + Par_GetParMultiToText ("AttCod",StrAttCodsSelected,MaxSizeListAttCodsSelected); + + /***** Reset selection *****/ + for (NumAttEvent = 0; + NumAttEvent < Gbl.AttEvents.Num; + NumAttEvent++) + Gbl.AttEvents.Lst[NumAttEvent].Selected = false; + + /***** Set which attendance events are selected *****/ + if (StrAttCodsSelected[0]) + for (Ptr = StrAttCodsSelected; + *Ptr; + ) + { + /* Get next attendance event selected */ + Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1+10); + AttCod = Str_ConvertStrCodToLongCod (LongStr); + + /* Set as selected */ + for (NumAttEvent = 0; + NumAttEvent < Gbl.AttEvents.Num; + NumAttEvent++) + if (Gbl.AttEvents.Lst[NumAttEvent].AttCod == AttCod) + Gbl.AttEvents.Lst[NumAttEvent].Selected = true; + } + else // No events selected + /* Set as selected */ + for (NumAttEvent = 0; + NumAttEvent < Gbl.AttEvents.Num; + NumAttEvent++) + if (Gbl.AttEvents.Lst[NumAttEvent].NumStdsFromList) + Gbl.AttEvents.Lst[NumAttEvent].Selected = true; + + /***** Free memory for list of attendance events selected *****/ + free ((void *) StrAttCodsSelected); + } + /*****************************************************************************/ /********** Write list of those attendance events that have students *********/ /*****************************************************************************/ -static void Att_ListAttEventsWithStds (void) +static void Att_ListEventsToSelect (void) { extern const char *Txt_Events; extern const char *Txt_Event; @@ -2746,37 +2821,51 @@ static void Att_ListAttEventsWithStds (void) Txt_ROLES_PLURAL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]); /***** List the events with students *****/ - for (NumAttEvent = 0; + for (NumAttEvent = 0, Gbl.RowEvenOdd = 0; NumAttEvent < Gbl.AttEvents.Num; NumAttEvent++) - if (Gbl.AttEvents.Lst[NumAttEvent].NumStdsFromList) - { - BgColor = Gbl.ColorRows[Gbl.RowEvenOdd]; + { + BgColor = Gbl.ColorRows[Gbl.RowEvenOdd]; - /***** Get data of the attendance event from database *****/ - Att_GetDataOfAttEventByCodAndCheckCrs (&Gbl.AttEvents.Lst[NumAttEvent]); - Att_GetNumStdsTotalWhoAreInAttEvent (&Gbl.AttEvents.Lst[NumAttEvent]); + /***** Get data of the attendance event from database *****/ + Att_GetDataOfAttEventByCodAndCheckCrs (&Gbl.AttEvents.Lst[NumAttEvent]); + Att_GetNumStdsTotalWhoAreInAttEvent (&Gbl.AttEvents.Lst[NumAttEvent]); - /***** Write a row for this event *****/ - fprintf (Gbl.F.Out,"" - "%u:" - "%02u/%02u/%04u %02u:%02u h %s" - "%u" - "", - BgColor, - NumAttEvent + 1, - BgColor, - Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Date.Day, - Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Date.Month, - Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Date.Year, - Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Time.Hour, - Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Time.Minute, - Gbl.AttEvents.Lst[NumAttEvent].Title, - BgColor, - Gbl.AttEvents.Lst[NumAttEvent].NumStdsTotal); + /***** Write a row for this event *****/ + fprintf (Gbl.F.Out,"" + "" + "" + "%u:" + "%02u/%02u/%04u %02u:%02u h %s" + "%u" + "", + BgColor, + NumAttEvent + 1, + BgColor, + Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Date.Day, + Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Date.Month, + Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Date.Year, + Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Time.Hour, + Gbl.AttEvents.Lst[NumAttEvent].DateTimes[Att_START_TIME].Time.Minute, + Gbl.AttEvents.Lst[NumAttEvent].Title, + BgColor, + Gbl.AttEvents.Lst[NumAttEvent].NumStdsTotal); - Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; - } + Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; + } + + /***** Put button to refresh *****/ + fprintf (Gbl.F.Out,"" + ""); + // TODO: Form to update attendance + Lay_PutSendIcon ("recycle","Actualizar asistencia en los eventos seleccionados","Actualizar asistencia"); // Need translation!!! + fprintf (Gbl.F.Out,"" + ""); /***** End frame *****/ if (Gbl.CurrentAct == ActSeeLstAttStd) @@ -2809,7 +2898,7 @@ static void Att_ListStdsAttendanceTable (unsigned NumStdsInList,long *LstSelecte Att_WriteTableHeadSeveralAttEvents (); /***** List the students *****/ - for (NumStd = 0; + for (NumStd = 0, Gbl.RowEvenOdd = 0; NumStd < NumStdsInList; NumStd++) { @@ -2831,7 +2920,7 @@ static void Att_ListStdsAttendanceTable (unsigned NumStdsInList,long *LstSelecte for (NumAttEvent = 0, Total = 0; NumAttEvent < Gbl.AttEvents.Num; NumAttEvent++) - if (Gbl.AttEvents.Lst[NumAttEvent].NumStdsFromList) + if (Gbl.AttEvents.Lst[NumAttEvent].Selected) { fprintf (Gbl.F.Out,"%u", @@ -2998,7 +3087,7 @@ static void Att_ListStdsWithAttEventsDetails (unsigned NumStdsInList,long *LstSe Lay_StartSquareFrameTable (NULL,NULL,NULL,2); /***** List students with attendance details *****/ - for (NumStd = 0; + for (NumStd = 0, Gbl.RowEvenOdd = 0; NumStd < NumStdsInList; NumStd++) { @@ -3088,7 +3177,7 @@ static void Att_ListAttEventsForAStd (unsigned NumStd,struct UsrData *UsrDat) for (NumAttEvent = 0; NumAttEvent < Gbl.AttEvents.Num; NumAttEvent++) - if (Gbl.AttEvents.Lst[NumAttEvent].NumStdsFromList) + if (Gbl.AttEvents.Lst[NumAttEvent].Selected) { /***** Get data of the attendance event from database *****/ Att_GetDataOfAttEventByCodAndCheckCrs (&Gbl.AttEvents.Lst[NumAttEvent]); diff --git a/swad_attendance.h b/swad_attendance.h index 891cf434f..055c2d6c4 100644 --- a/swad_attendance.h +++ b/swad_attendance.h @@ -55,6 +55,7 @@ struct AttendanceEvent bool CommentTchVisible; unsigned NumStdsTotal; // Number total of students who have assisted to the event unsigned NumStdsFromList; // Number of students (taken from a list) who has assisted to the event + bool Selected; // I have selected this attendance event }; typedef enum diff --git a/swad_attendance.o b/swad_attendance.o new file mode 100644 index 000000000..6f4bcf399 Binary files /dev/null and b/swad_attendance.o differ diff --git a/swad_banner.o b/swad_banner.o new file mode 100644 index 000000000..30b611b01 Binary files /dev/null and b/swad_banner.o differ diff --git a/swad_ca b/swad_ca new file mode 100755 index 000000000..9c66d2d4d Binary files /dev/null and b/swad_ca differ diff --git a/swad_centre.o b/swad_centre.o new file mode 100644 index 000000000..c7265a0b3 Binary files /dev/null and b/swad_centre.o differ diff --git a/swad_changelog.h b/swad_changelog.h index eddc18893..031ec3077 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -35,12 +35,13 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.32.1 (2014/12/06)" +#define Log_PLATFORM_VERSION "SWAD 14.33 (2014/12/07)" // 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 | tail -1 /* + Version 13.33 :Dic 07, 2014 A teacher can select attendance events in list of attendances. (170595 lines) Version 13.32.1 :Dic 06, 2014 Added new social network. (170518 lines) 1 change necessary in database: ALTER TABLE usr_webs CHANGE Web Web ENUM('www','delicious','edmodo','facebook','flickr','foursquare','github','googleplus','googlescholar','instagram','linkedin','paperli','pinterest','researchgate','scoopit','slideshare','storify','tumblr','twitter','wikipedia','youtube') NOT NULL; diff --git a/swad_chat.o b/swad_chat.o new file mode 100644 index 000000000..8600d2fa0 Binary files /dev/null and b/swad_chat.o differ diff --git a/swad_config.o b/swad_config.o new file mode 100644 index 000000000..360cdda61 Binary files /dev/null and b/swad_config.o differ diff --git a/swad_connected.o b/swad_connected.o new file mode 100644 index 000000000..98b252ad3 Binary files /dev/null and b/swad_connected.o differ diff --git a/swad_country.o b/swad_country.o new file mode 100644 index 000000000..d097d3167 Binary files /dev/null and b/swad_country.o differ diff --git a/swad_course.o b/swad_course.o new file mode 100644 index 000000000..c689291d1 Binary files /dev/null and b/swad_course.o differ diff --git a/swad_cryptography.o b/swad_cryptography.o new file mode 100644 index 000000000..31d9140c4 Binary files /dev/null and b/swad_cryptography.o differ diff --git a/swad_database.o b/swad_database.o new file mode 100644 index 000000000..74e9d5baf Binary files /dev/null and b/swad_database.o differ diff --git a/swad_date.o b/swad_date.o new file mode 100644 index 000000000..f962e1508 Binary files /dev/null and b/swad_date.o differ diff --git a/swad_de b/swad_de new file mode 100755 index 000000000..0d97bd61b Binary files /dev/null and b/swad_de differ diff --git a/swad_degree.o b/swad_degree.o new file mode 100644 index 000000000..d465dbae6 Binary files /dev/null and b/swad_degree.o differ diff --git a/swad_department.o b/swad_department.o new file mode 100644 index 000000000..57ca94050 Binary files /dev/null and b/swad_department.o differ diff --git a/swad_en b/swad_en new file mode 100755 index 000000000..74c675dfa Binary files /dev/null and b/swad_en differ diff --git a/swad_es b/swad_es new file mode 100755 index 000000000..73b58cfab Binary files /dev/null and b/swad_es differ diff --git a/swad_exam.o b/swad_exam.o new file mode 100644 index 000000000..56bce173b Binary files /dev/null and b/swad_exam.o differ diff --git a/swad_file.o b/swad_file.o new file mode 100644 index 000000000..a0bf67c3c Binary files /dev/null and b/swad_file.o differ diff --git a/swad_file_browser.o b/swad_file_browser.o new file mode 100644 index 000000000..55f5da811 Binary files /dev/null and b/swad_file_browser.o differ diff --git a/swad_forum.o b/swad_forum.o new file mode 100644 index 000000000..684bb63af Binary files /dev/null and b/swad_forum.o differ diff --git a/swad_fr b/swad_fr new file mode 100755 index 000000000..1b13b5cb1 Binary files /dev/null and b/swad_fr differ diff --git a/swad_global.o b/swad_global.o new file mode 100644 index 000000000..895517d53 Binary files /dev/null and b/swad_global.o differ diff --git a/swad_gn b/swad_gn new file mode 100755 index 000000000..9b2ca30b8 Binary files /dev/null and b/swad_gn differ diff --git a/swad_group.o b/swad_group.o new file mode 100644 index 000000000..7e75a0dd3 Binary files /dev/null and b/swad_group.o differ diff --git a/swad_holiday.o b/swad_holiday.o new file mode 100644 index 000000000..6204edf69 Binary files /dev/null and b/swad_holiday.o differ diff --git a/swad_icon.o b/swad_icon.o new file mode 100644 index 000000000..c13359d31 Binary files /dev/null and b/swad_icon.o differ diff --git a/swad_import.o b/swad_import.o new file mode 100644 index 000000000..c4c3d79a8 Binary files /dev/null and b/swad_import.o differ diff --git a/swad_indicator.o b/swad_indicator.o new file mode 100644 index 000000000..ef3d2e2c4 Binary files /dev/null and b/swad_indicator.o differ diff --git a/swad_info.o b/swad_info.o new file mode 100644 index 000000000..cb8c060e2 Binary files /dev/null and b/swad_info.o differ diff --git a/swad_institution.o b/swad_institution.o new file mode 100644 index 000000000..32ac0d80b Binary files /dev/null and b/swad_institution.o differ diff --git a/swad_it b/swad_it new file mode 100755 index 000000000..ccf2fc734 Binary files /dev/null and b/swad_it differ diff --git a/swad_layout.o b/swad_layout.o new file mode 100644 index 000000000..36646bcd4 Binary files /dev/null and b/swad_layout.o differ diff --git a/swad_link.o b/swad_link.o new file mode 100644 index 000000000..eacf4c627 Binary files /dev/null and b/swad_link.o differ diff --git a/swad_mail.o b/swad_mail.o new file mode 100644 index 000000000..91763dd1a Binary files /dev/null and b/swad_mail.o differ diff --git a/swad_main.o b/swad_main.o new file mode 100644 index 000000000..50d4a881b Binary files /dev/null and b/swad_main.o differ diff --git a/swad_mark.o b/swad_mark.o new file mode 100644 index 000000000..b8b4145df Binary files /dev/null and b/swad_mark.o differ diff --git a/swad_message.o b/swad_message.o new file mode 100644 index 000000000..fe56eaad1 Binary files /dev/null and b/swad_message.o differ diff --git a/swad_network.o b/swad_network.o new file mode 100644 index 000000000..c7d143e55 Binary files /dev/null and b/swad_network.o differ diff --git a/swad_nickname.o b/swad_nickname.o new file mode 100644 index 000000000..f1c119a4d Binary files /dev/null and b/swad_nickname.o differ diff --git a/swad_notice.o b/swad_notice.o new file mode 100644 index 000000000..3dc4c5203 Binary files /dev/null and b/swad_notice.o differ diff --git a/swad_notification.o b/swad_notification.o new file mode 100644 index 000000000..a2ebcf4b9 Binary files /dev/null and b/swad_notification.o differ diff --git a/swad_pagination.o b/swad_pagination.o new file mode 100644 index 000000000..09668c68d Binary files /dev/null and b/swad_pagination.o differ diff --git a/swad_parameter.o b/swad_parameter.o new file mode 100644 index 000000000..42d6b01e9 Binary files /dev/null and b/swad_parameter.o differ diff --git a/swad_password.o b/swad_password.o new file mode 100644 index 000000000..9339d6cef Binary files /dev/null and b/swad_password.o differ diff --git a/swad_photo.o b/swad_photo.o new file mode 100644 index 000000000..02bb39b3a Binary files /dev/null and b/swad_photo.o differ diff --git a/swad_pl b/swad_pl new file mode 100755 index 000000000..8fca76c90 Binary files /dev/null and b/swad_pl differ diff --git a/swad_place.o b/swad_place.o new file mode 100644 index 000000000..4674dec53 Binary files /dev/null and b/swad_place.o differ diff --git a/swad_plugin.o b/swad_plugin.o new file mode 100644 index 000000000..6b9500dec Binary files /dev/null and b/swad_plugin.o differ diff --git a/swad_preference.o b/swad_preference.o new file mode 100644 index 000000000..c030dadd8 Binary files /dev/null and b/swad_preference.o differ diff --git a/swad_pt b/swad_pt new file mode 100755 index 000000000..63693f49b Binary files /dev/null and b/swad_pt differ diff --git a/swad_record.o b/swad_record.o new file mode 100644 index 000000000..559b1d955 Binary files /dev/null and b/swad_record.o differ diff --git a/swad_scope.o b/swad_scope.o new file mode 100644 index 000000000..3c6aee37a Binary files /dev/null and b/swad_scope.o differ diff --git a/swad_search.o b/swad_search.o new file mode 100644 index 000000000..255bc07a4 Binary files /dev/null and b/swad_search.o differ diff --git a/swad_session.o b/swad_session.o new file mode 100644 index 000000000..6760f6390 Binary files /dev/null and b/swad_session.o differ diff --git a/swad_setup.o b/swad_setup.o new file mode 100644 index 000000000..23c14608e Binary files /dev/null and b/swad_setup.o differ diff --git a/swad_statistic.o b/swad_statistic.o new file mode 100644 index 000000000..5b46f7572 Binary files /dev/null and b/swad_statistic.o differ diff --git a/swad_string.o b/swad_string.o new file mode 100644 index 000000000..7924f1a30 Binary files /dev/null and b/swad_string.o differ diff --git a/swad_survey.o b/swad_survey.o new file mode 100644 index 000000000..97ef7ec44 Binary files /dev/null and b/swad_survey.o differ diff --git a/swad_syllabus.o b/swad_syllabus.o new file mode 100644 index 000000000..8d0c7e41d Binary files /dev/null and b/swad_syllabus.o differ diff --git a/swad_test.o b/swad_test.o new file mode 100644 index 000000000..992426c87 Binary files /dev/null and b/swad_test.o differ diff --git a/swad_test_import.o b/swad_test_import.o new file mode 100644 index 000000000..80e9d874c Binary files /dev/null and b/swad_test_import.o differ diff --git a/swad_text.o b/swad_text.o new file mode 100644 index 000000000..1f5707b89 Binary files /dev/null and b/swad_text.o differ diff --git a/swad_theme.o b/swad_theme.o new file mode 100644 index 000000000..e0b880951 Binary files /dev/null and b/swad_theme.o differ diff --git a/swad_timetable.o b/swad_timetable.o new file mode 100644 index 000000000..a97b00907 Binary files /dev/null and b/swad_timetable.o differ diff --git a/swad_user.o b/swad_user.o new file mode 100644 index 000000000..be8dbc168 Binary files /dev/null and b/swad_user.o differ diff --git a/swad_web_service.o b/swad_web_service.o new file mode 100644 index 000000000..54639bc6d Binary files /dev/null and b/swad_web_service.o differ diff --git a/swad_xml.o b/swad_xml.o new file mode 100644 index 000000000..64c167a27 Binary files /dev/null and b/swad_xml.o differ diff --git a/swad_zip.o b/swad_zip.o new file mode 100644 index 000000000..6b8bb7bd0 Binary files /dev/null and b/swad_zip.o differ