Version 15.225.11

This commit is contained in:
Antonio Cañas Vargas 2016-06-16 11:28:20 +02:00
parent bca5387cfe
commit 0d64b8b337
7 changed files with 101 additions and 53 deletions

View File

@ -1521,6 +1521,10 @@ a:hover img.CENTRE_PHOTO_SHOW
background-repeat:no-repeat; background-repeat:no-repeat;
} }
/************************** Listing of users *********************************/
.USR_LIST_NUM {color:#A0A0A0; font-size:15pt; font-weight:bold;}
.USR_LIST_NUM_N {color:#404040; font-size:15pt; font-weight:bold;}
/*****************************************************************************/ /*****************************************************************************/
.WHITE_USR {color:#E0E0E0; font-size:15pt; font-weight:bold; white-space:nowrap;} .WHITE_USR {color:#E0E0E0; font-size:15pt; font-weight:bold; white-space:nowrap;}
.GREY_USR {color:#E0E0E0; font-size:15pt; font-weight:bold; white-space:nowrap;} .GREY_USR {color:#E0E0E0; font-size:15pt; font-weight:bold; white-space:nowrap;}

View File

@ -128,13 +128,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.225.10 (2016-06-15)" #define Log_PLATFORM_VERSION "SWAD 15.225.11 (2016-06-16)"
#define CSS_FILE "swad15.224.3.css" #define CSS_FILE "swad15.225.11.css"
#define JS_FILE "swad15.216.js" #define JS_FILE "swad15.216.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/* /*
Version 15.225.11:Jun 16, 2016 Listing possible duplicate users. (202667 lines)
Version 15.225.10:Jun 15, 2016 Listing possible duplicate users. (202626 lines) Version 15.225.10:Jun 15, 2016 Listing possible duplicate users. (202626 lines)
Version 15.225.9: Jun 15, 2016 Code refactoring in list of students and teachers. (202636 lines) Version 15.225.9: Jun 15, 2016 Code refactoring in list of students and teachers. (202636 lines)
Version 15.225.8: Jun 15, 2016 Code refactoring in list of students and teachers. (202779 lines) Version 15.225.8: Jun 15, 2016 Code refactoring in list of students and teachers. (202779 lines)

View File

@ -2946,8 +2946,10 @@ static long Crs_GetParamOtherCrsCod (void)
/************************** Write courses of a user **************************/ /************************** Write courses of a user **************************/
/*****************************************************************************/ /*****************************************************************************/
void Crs_GetAndWriteCrssOfAUsr (long UsrCod,Rol_Role_t Role) void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
{ {
extern const char *Txt_USER_in_COURSE;
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Degree; extern const char *Txt_Degree;
extern const char *Txt_Year_OF_A_DEGREE; extern const char *Txt_Year_OF_A_DEGREE;
extern const char *Txt_Course; extern const char *Txt_Course;
@ -2969,20 +2971,26 @@ void Crs_GetAndWriteCrssOfAUsr (long UsrCod,Rol_Role_t Role)
" AND courses.DegCod=degrees.DegCod" " AND courses.DegCod=degrees.DegCod"
" AND degrees.CtrCod=centres.CtrCod" " AND degrees.CtrCod=centres.CtrCod"
" ORDER BY degrees.FullName,courses.Year,courses.FullName", " ORDER BY degrees.FullName,courses.Year,courses.FullName",
UsrCod,(unsigned) Role); UsrDat->UsrCod,(unsigned) Role);
/***** List the courses (one row per course) *****/ /***** List the courses (one row per course) *****/
if ((NumCrss = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get courses of a user"))) if ((NumCrss = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get courses of a user")))
{ {
/* Start frame and table */ /* Start frame and table */
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td colspan=\"2\"></td>" "<td colspan=\"2\" class=\"COLOR%u\"></td>"
"<td colspan=\"%u\">", "<td colspan=\"%u\" class=\"COLOR%u\">",
Usr_NUM_MAIN_FIELDS_DATA_USR-2); Gbl.RowEvenOdd,
Lay_StartRoundFrameTable (NULL,2,NULL); Usr_NUM_MAIN_FIELDS_DATA_USR-2,
Gbl.RowEvenOdd);
Lay_StartRoundFrameTable ("100%",2,NULL);
/* Heading row */ /* Heading row */
sprintf (Gbl.Title,Txt_USER_in_COURSE,Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]);
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<th colspan=\"7\" class=\"LEFT_MIDDLE\">%s</th>"
"</tr>"
"<tr>"
"<th class=\"BM\"></th>" "<th class=\"BM\"></th>"
"<th class=\"BM\"></th>" "<th class=\"BM\"></th>"
"<th class=\"LEFT_MIDDLE\">" "<th class=\"LEFT_MIDDLE\">"
@ -3001,6 +3009,7 @@ void Crs_GetAndWriteCrssOfAUsr (long UsrCod,Rol_Role_t Role)
"%s" "%s"
"</th>" "</th>"
"</tr>", "</tr>",
Gbl.Title,
Txt_Degree, Txt_Degree,
Txt_Year_OF_A_DEGREE, Txt_Year_OF_A_DEGREE,
Txt_Course, Txt_Course,
@ -3126,6 +3135,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
const char *StyleNoBR; const char *StyleNoBR;
const char *BgColor; const char *BgColor;
bool Accepted; bool Accepted;
static unsigned RowEvenOdd = 1;
/* /*
SELECT degrees.DegCod 0 SELECT degrees.DegCod 0
@ -3162,12 +3172,12 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
StyleNoBR = "DAT_NOBR"; StyleNoBR = "DAT_NOBR";
} }
BgColor = (CrsCod == Gbl.CurrentCrs.Crs.CrsCod) ? "LIGHT_BLUE" : BgColor = (CrsCod == Gbl.CurrentCrs.Crs.CrsCod) ? "LIGHT_BLUE" :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[RowEvenOdd];
/***** Start row *****/ /***** Start row *****/
fprintf (Gbl.F.Out,"<tr>"); fprintf (Gbl.F.Out,"<tr>");
/***** Teacher has accepted joining to this course/to any course in degree/to any course? *****/ /***** User has accepted joining to this course/to any course in degree/to any course? *****/
if (WriteColumnAccepted) if (WriteColumnAccepted)
{ {
Accepted = (Str_ConvertToUpperLetter (row[7][0]) == 'Y'); Accepted = (Str_ConvertToUpperLetter (row[7][0]) == 'Y');
@ -3237,7 +3247,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
"</tr>", "</tr>",
Style,BgColor,NumStds); Style,BgColor,NumStds);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; RowEvenOdd = 1 - RowEvenOdd;
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -31,6 +31,7 @@
#include <stdbool.h> // For boolean type #include <stdbool.h> // For boolean type
#include "swad_degree.h" #include "swad_degree.h"
#include "swad_user.h"
/*****************************************************************************/ /*****************************************************************************/
/***************************** Public constants ******************************/ /***************************** Public constants ******************************/
@ -132,7 +133,7 @@ void Crs_PutParamCrsCod (long CrsCod);
void Crs_ReqSelectOneOfMyCourses (void); void Crs_ReqSelectOneOfMyCourses (void);
void Crs_GetAndWriteCrssOfAUsr (long UsrCod,Rol_Role_t Role); void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role);
unsigned Crs_ListCrssFound (const char *Query); unsigned Crs_ListCrssFound (const char *Query);

View File

@ -49268,6 +49268,27 @@ const char *Txt_User_ID =
"N&ordm; de identif. do utilizador"; "N&ordm; de identif. do utilizador";
#endif #endif
const char *Txt_USER_in_COURSE = // Warning: it is very important to include %s in the following sentences
#if L==1
"%s en:";
#elif L==2
"%s im:";
#elif L==3
"%s in:";
#elif L==4
"%s en:";
#elif L==5
"%s dans:";
#elif L==6
"%s en:"; // Okoteve traducción
#elif L==7
"%s in:";
#elif L==8
"%s w:";
#elif L==9
"%s em:";
#endif
const char *Txt_User_not_found_or_you_do_not_have_permission_ = const char *Txt_User_not_found_or_you_do_not_have_permission_ =
#if L==1 #if L==1
"Usuari no trobat" "Usuari no trobat"

View File

@ -128,6 +128,9 @@ static void Usr_SetUsrRoleAndPrefs (void);
static void Usr_InsertMyLastData (void); static void Usr_InsertMyLastData (void);
static void Usr_WriteRowGstAllData (struct UsrData *UsrDat); static void Usr_WriteRowGstAllData (struct UsrData *UsrDat);
static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames);
static void Usr_WriteRowTchAllData (struct UsrData *UsrDat);
static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat);
static void Usr_RestrictLengthUsrName (struct UsrData *UsrDat); static void Usr_RestrictLengthUsrName (struct UsrData *UsrDat);
static void Usr_WriteMainUsrDataExceptUsrID (struct UsrData *UsrDat, static void Usr_WriteMainUsrDataExceptUsrID (struct UsrData *UsrDat,
const char *BgColor, const char *BgColor,
@ -2711,7 +2714,7 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
{ {
extern const char *Txt_Enrollment_confirmed; extern const char *Txt_Enrollment_confirmed;
extern const char *Txt_Enrollment_not_confirmed; extern const char *Txt_Enrollment_not_confirmed;
const char *BgColor; char BgColor[16];
char PhotoURL[PATH_MAX+1]; char PhotoURL[PATH_MAX+1];
bool ShowPhoto; bool ShowPhoto;
bool UsrIsTheMsgSender = PutCheckBoxToSelectUsr && bool UsrIsTheMsgSender = PutCheckBoxToSelectUsr &&
@ -2723,14 +2726,15 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
/***** Checkbox to select user *****/ /***** Checkbox to select user *****/
// Two colors are used alternatively to better distinguish the rows // Two colors are used alternatively to better distinguish the rows
BgColor = UsrIsTheMsgSender ? "LIGHT_GREEN" : if (UsrIsTheMsgSender)
Gbl.ColorRows[Gbl.RowEvenOdd]; strcpy (BgColor,"LIGHT_GREEN");
else
sprintf (BgColor,"COLOR%u",Gbl.RowEvenOdd);
if (PutCheckBoxToSelectUsr) if (PutCheckBoxToSelectUsr)
{ {
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE %s\">",BgColor); fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE %s\">",BgColor);
Usr_PutCheckboxToSelectUser (UsrDat,UsrIsTheMsgSender); Usr_PutCheckboxToSelectUser (UsrDat,UsrIsTheMsgSender);
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
} }
@ -2755,17 +2759,17 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
/***** Write number of user in the list *****/ /***** Write number of user in the list *****/
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
"&nbsp;%u&nbsp;" "%u"
"</td>", "</td>",
UsrDat->Accepted ? "DAT_SMALL_N" : UsrDat->Accepted ? "USR_LIST_NUM_N" :
"DAT_SMALL", "USR_LIST_NUM",
BgColor, BgColor,
NumUsr); NumUsr);
if (Gbl.Usrs.Listing.WithPhotos) if (Gbl.Usrs.Listing.WithPhotos)
{ {
/***** Show user's photo *****/ /***** Show user's photo *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE %s\">",BgColor); fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE %s\">",BgColor);
ShowPhoto = Pho_ShowUsrPhotoIsAllowed (UsrDat,PhotoURL); ShowPhoto = Pho_ShowUsrPhotoIsAllowed (UsrDat,PhotoURL);
Pho_ShowUsrPhoto (UsrDat,ShowPhoto ? PhotoURL : Pho_ShowUsrPhoto (UsrDat,ShowPhoto ? PhotoURL :
NULL, NULL,
@ -2791,8 +2795,6 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
/***** End row *****/ /***** End row *****/
fprintf (Gbl.F.Out,"</tr>"); fprintf (Gbl.F.Out,"</tr>");
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2888,15 +2890,13 @@ static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
/***** End row *****/ /***** End row *****/
fprintf (Gbl.F.Out,"</tr>"); fprintf (Gbl.F.Out,"</tr>");
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
/*****************************************************************************/ /*****************************************************************************/
/************ Write a row of a table with the data of a student **************/ /************ Write a row of a table with the data of a student **************/
/*****************************************************************************/ /*****************************************************************************/
void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames) static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
{ {
char PhotoURL[PATH_MAX+1]; char PhotoURL[PATH_MAX+1];
bool ShowPhoto; bool ShowPhoto;
@ -3005,15 +3005,13 @@ void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
/***** End row *****/ /***** End row *****/
fprintf (Gbl.F.Out,"</tr>"); fprintf (Gbl.F.Out,"</tr>");
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
/*****************************************************************************/ /*****************************************************************************/
/*** Write a row of a table with the data of a teacher or an administrator ***/ /*** Write a row of a table with the data of a teacher or an administrator ***/
/*****************************************************************************/ /*****************************************************************************/
void Usr_WriteRowTchAllData (struct UsrData *UsrDat) static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
{ {
char PhotoURL[PATH_MAX+1]; char PhotoURL[PATH_MAX+1];
bool ShowPhoto; bool ShowPhoto;
@ -3082,15 +3080,13 @@ void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
NULL,true,UsrDat->Accepted); NULL,true,UsrDat->Accepted);
fprintf (Gbl.F.Out,"</tr>"); fprintf (Gbl.F.Out,"</tr>");
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
/*****************************************************************************/ /*****************************************************************************/
/********** Write a row of a table with the data of an administrator *********/ /********** Write a row of a table with the data of an administrator *********/
/*****************************************************************************/ /*****************************************************************************/
void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat) static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
{ {
char PhotoURL[PATH_MAX+1]; char PhotoURL[PATH_MAX+1];
bool ShowPhoto; bool ShowPhoto;
@ -3138,8 +3134,6 @@ void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
Deg_GetAndWriteInsCtrDegAdminBy (UsrDat->UsrCod, Deg_GetAndWriteInsCtrDegAdminBy (UsrDat->UsrCod,
Gbl.Usrs.Listing.WithPhotos ? Usr_NUM_MAIN_FIELDS_DATA_ADM : Gbl.Usrs.Listing.WithPhotos ? Usr_NUM_MAIN_FIELDS_DATA_ADM :
Usr_NUM_MAIN_FIELDS_DATA_ADM-1); Usr_NUM_MAIN_FIELDS_DATA_ADM-1);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
/*****************************************************************************/ /*****************************************************************************/
@ -5143,7 +5137,7 @@ static void Usr_ListMainDataGsts (bool PutCheckBoxToSelectUsr)
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
/***** List students' data *****/ /***** List students' data *****/
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < Gbl.Usrs.LstGsts.NumUsrs; ) NumUsr < Gbl.Usrs.LstGsts.NumUsrs; )
{ {
UsrDat.UsrCod = Gbl.Usrs.LstGsts.Lst[NumUsr].UsrCod; UsrDat.UsrCod = Gbl.Usrs.LstGsts.Lst[NumUsr].UsrCod;
@ -5153,6 +5147,8 @@ static void Usr_ListMainDataGsts (bool PutCheckBoxToSelectUsr)
// ...so they have not accepted... // ...so they have not accepted...
// ...inscription in any course // ...inscription in any course
Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true); Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
@ -5226,7 +5222,7 @@ static void Usr_ListMainDataStds (bool PutCheckBoxToSelectUsr)
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
/***** List students' data *****/ /***** List students' data *****/
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < Gbl.Usrs.LstStds.NumUsrs; ) NumUsr < Gbl.Usrs.LstStds.NumUsrs; )
{ {
UsrDat.UsrCod = Gbl.Usrs.LstStds.Lst[NumUsr].UsrCod; UsrDat.UsrCod = Gbl.Usrs.LstStds.Lst[NumUsr].UsrCod;
@ -5234,6 +5230,8 @@ static void Usr_ListMainDataStds (bool PutCheckBoxToSelectUsr)
{ {
UsrDat.Accepted = Gbl.Usrs.LstStds.Lst[NumUsr].Accepted; UsrDat.Accepted = Gbl.Usrs.LstStds.Lst[NumUsr].Accepted;
Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,PutCheckBoxToSelectUsr); Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,PutCheckBoxToSelectUsr);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
@ -5297,7 +5295,7 @@ static void Usr_ListMainDataTchs (bool PutCheckBoxToSelectUsr)
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
/***** List data of teachers *****/ /***** List data of teachers *****/
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < Gbl.Usrs.LstTchs.NumUsrs; ) NumUsr < Gbl.Usrs.LstTchs.NumUsrs; )
{ {
UsrDat.UsrCod = Gbl.Usrs.LstTchs.Lst[NumUsr].UsrCod; UsrDat.UsrCod = Gbl.Usrs.LstTchs.Lst[NumUsr].UsrCod;
@ -5305,6 +5303,8 @@ static void Usr_ListMainDataTchs (bool PutCheckBoxToSelectUsr)
{ {
UsrDat.Accepted = Gbl.Usrs.LstTchs.Lst[NumUsr].Accepted; UsrDat.Accepted = Gbl.Usrs.LstTchs.Lst[NumUsr].Accepted;
Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,PutCheckBoxToSelectUsr); Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,PutCheckBoxToSelectUsr);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
@ -5403,7 +5403,7 @@ void Usr_ListAllDataGsts (void)
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
/***** List guests' data *****/ /***** List guests' data *****/
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < Gbl.Usrs.LstGsts.NumUsrs; ) NumUsr < Gbl.Usrs.LstGsts.NumUsrs; )
{ {
UsrDat.UsrCod = Gbl.Usrs.LstGsts.Lst[NumUsr].UsrCod; UsrDat.UsrCod = Gbl.Usrs.LstGsts.Lst[NumUsr].UsrCod;
@ -5414,6 +5414,8 @@ void Usr_ListAllDataGsts (void)
// ...inscription in any course // ...inscription in any course
NumUsr++; NumUsr++;
Usr_WriteRowGstAllData (&UsrDat); Usr_WriteRowGstAllData (&UsrDat);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
@ -5593,7 +5595,7 @@ void Usr_ListAllDataStds (void)
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
/***** List students' data *****/ /***** List students' data *****/
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < Gbl.Usrs.LstStds.NumUsrs; ) NumUsr < Gbl.Usrs.LstStds.NumUsrs; )
{ {
UsrDat.UsrCod = Gbl.Usrs.LstStds.Lst[NumUsr].UsrCod; UsrDat.UsrCod = Gbl.Usrs.LstStds.Lst[NumUsr].UsrCod;
@ -5602,6 +5604,8 @@ void Usr_ListAllDataStds (void)
UsrDat.Accepted = Gbl.Usrs.LstStds.Lst[NumUsr].Accepted; UsrDat.Accepted = Gbl.Usrs.LstStds.Lst[NumUsr].Accepted;
NumUsr++; NumUsr++;
Usr_WriteRowStdAllData (&UsrDat,GroupNames); Usr_WriteRowStdAllData (&UsrDat,GroupNames);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
@ -5668,7 +5672,7 @@ void Usr_ListUsrsForSelection (Rol_Role_t Role)
switch (Role) switch (Role)
{ {
case Rol_STUDENT: case Rol_STUDENT:
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < Gbl.Usrs.LstStds.NumUsrs; ) NumUsr < Gbl.Usrs.LstStds.NumUsrs; )
{ {
UsrDat.UsrCod = Gbl.Usrs.LstStds.Lst[NumUsr].UsrCod; UsrDat.UsrCod = Gbl.Usrs.LstStds.Lst[NumUsr].UsrCod;
@ -5676,11 +5680,13 @@ void Usr_ListUsrsForSelection (Rol_Role_t Role)
{ {
UsrDat.Accepted = Gbl.Usrs.LstStds.Lst[NumUsr].Accepted; UsrDat.Accepted = Gbl.Usrs.LstStds.Lst[NumUsr].Accepted;
Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true); Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
break; break;
case Rol_TEACHER: case Rol_TEACHER:
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < Gbl.Usrs.LstTchs.NumUsrs; ) NumUsr < Gbl.Usrs.LstTchs.NumUsrs; )
{ {
UsrDat.UsrCod = Gbl.Usrs.LstTchs.Lst[NumUsr].UsrCod; UsrDat.UsrCod = Gbl.Usrs.LstTchs.Lst[NumUsr].UsrCod;
@ -5688,6 +5694,8 @@ void Usr_ListUsrsForSelection (Rol_Role_t Role)
{ {
UsrDat.Accepted = Gbl.Usrs.LstTchs.Lst[NumUsr].Accepted; UsrDat.Accepted = Gbl.Usrs.LstTchs.Lst[NumUsr].Accepted;
Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true); Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
break; break;
@ -5779,7 +5787,7 @@ void Usr_ListAllDataTchs (void)
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
/***** List data of teachers *****/ /***** List data of teachers *****/
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < Gbl.Usrs.LstTchs.NumUsrs; ) NumUsr < Gbl.Usrs.LstTchs.NumUsrs; )
{ {
UsrDat.UsrCod = Gbl.Usrs.LstTchs.Lst[NumUsr].UsrCod; UsrDat.UsrCod = Gbl.Usrs.LstTchs.Lst[NumUsr].UsrCod;
@ -5788,6 +5796,8 @@ void Usr_ListAllDataTchs (void)
UsrDat.Accepted = Gbl.Usrs.LstTchs.Lst[NumUsr].Accepted; UsrDat.Accepted = Gbl.Usrs.LstTchs.Lst[NumUsr].Accepted;
NumUsr++; NumUsr++;
Usr_WriteRowTchAllData (&UsrDat); Usr_WriteRowTchAllData (&UsrDat);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
@ -5859,7 +5869,7 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,const char *UsrQuery)
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
/***** List data of users *****/ /***** List data of users *****/
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < NumUsrs; NumUsr < NumUsrs;
NumUsr++) NumUsr++)
{ {
@ -5873,7 +5883,9 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,const char *UsrQuery)
/* Write all the courses this user belongs to */ /* Write all the courses this user belongs to */
if (Role != Rol__GUEST_) if (Role != Rol__GUEST_)
Crs_GetAndWriteCrssOfAUsr (UsrDat.UsrCod,Role); Crs_GetAndWriteCrssOfAUsr (&UsrDat,Role);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
@ -6001,7 +6013,7 @@ void Usr_ListDataAdms (void)
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
/***** List data of administrators *****/ /***** List data of administrators *****/
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < Gbl.Usrs.LstAdms.NumUsrs; ) NumUsr < Gbl.Usrs.LstAdms.NumUsrs; )
{ {
UsrDat.UsrCod = Gbl.Usrs.LstAdms.Lst[NumUsr].UsrCod; UsrDat.UsrCod = Gbl.Usrs.LstAdms.Lst[NumUsr].UsrCod;
@ -6009,6 +6021,8 @@ void Usr_ListDataAdms (void)
{ {
UsrDat.Accepted = Gbl.Usrs.LstAdms.Lst[NumUsr].Accepted; UsrDat.Accepted = Gbl.Usrs.LstAdms.Lst[NumUsr].Accepted;
Usr_WriteRowAdmData (++NumUsr,&UsrDat); Usr_WriteRowAdmData (++NumUsr,&UsrDat);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
} }
@ -7739,7 +7753,6 @@ void Usr_ListDuplicateUsrs (void)
unsigned NumUsr; unsigned NumUsr;
struct UsrData UsrDat; struct UsrData UsrDat;
unsigned NumInformants; unsigned NumInformants;
Rol_Role_t Role;
/***** Start frame with list of possible duplicate users *****/ /***** Start frame with list of possible duplicate users *****/
Lay_StartRoundFrame (NULL,Txt_Possibly_duplicate_users,NULL); Lay_StartRoundFrame (NULL,Txt_Possibly_duplicate_users,NULL);
@ -7778,7 +7791,7 @@ void Usr_ListDuplicateUsrs (void)
fprintf (Gbl.F.Out,"</tr>"); fprintf (Gbl.F.Out,"</tr>");
/***** List users *****/ /***** List users *****/
for (NumUsr = 0; for (NumUsr = 0, Gbl.RowEvenOdd = 0;
NumUsr < NumUsrs; NumUsr < NumUsrs;
NumUsr++) NumUsr++)
{ {
@ -7806,10 +7819,10 @@ void Usr_ListDuplicateUsrs (void)
NumInformants); NumInformants);
/* Write all the courses this user belongs to */ /* Write all the courses this user belongs to */
for (Role = Rol_STUDENT; Crs_GetAndWriteCrssOfAUsr (&UsrDat,Rol_TEACHER);
Role <= Rol_TEACHER; Crs_GetAndWriteCrssOfAUsr (&UsrDat,Rol_STUDENT);
Role++)
Crs_GetAndWriteCrssOfAUsr (UsrDat.UsrCod,Role); Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
else // User does not exists ==> else // User does not exists ==>
// remove user from table of possible duplicate users // remove user from table of possible duplicate users

View File

@ -281,8 +281,6 @@ void Usr_InsertMyLastCrsTabAndTime (void);
void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat, void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
bool PutCheckboxToSelectUsr); bool PutCheckboxToSelectUsr);
void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GrpNames);
void Usr_WriteRowTchAllData (struct UsrData *UsrDat);
unsigned Usr_GetNumUsrsInCrs (Rol_Role_t Role,long CrsCod); unsigned Usr_GetNumUsrsInCrs (Rol_Role_t Role,long CrsCod);
unsigned Usr_GetNumUsrsInCrssOfDeg (Rol_Role_t Role,long DegCod); unsigned Usr_GetNumUsrsInCrssOfDeg (Rol_Role_t Role,long DegCod);