mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-16 05:34:12 +02:00
Version 15.5
This commit is contained in:
parent
59818a13ff
commit
85a0b50430
|
@ -417,7 +417,7 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
|
||||||
/****** Contextual links with small icons and text to go to some action ******/
|
/****** Contextual links with small icons and text to go to some action ******/
|
||||||
.CONTEXT_MENU
|
.CONTEXT_MENU
|
||||||
{
|
{
|
||||||
margin-bottom:12px;
|
margin:6px 0 8px 0;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
}
|
}
|
||||||
.CONTEXT_OPT
|
.CONTEXT_OPT
|
||||||
|
@ -772,7 +772,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
list-style-type:none;
|
list-style-type:none;
|
||||||
border:0;
|
border:0;
|
||||||
margin:0 auto;
|
margin:0 auto;
|
||||||
padding:0 0 10px 0;
|
padding:0 0 4px 0;
|
||||||
}
|
}
|
||||||
#horizontal_menu_container li
|
#horizontal_menu_container li
|
||||||
{
|
{
|
||||||
|
@ -995,7 +995,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
.MSJ_AVISO {color:#632921; font-size:12pt;}
|
.MSJ_AVISO {color:#632921; font-size:12pt;}
|
||||||
.TIT_TBL {color:#4D88A1; font-size:12pt; font-weight:bold;}
|
.TIT_TBL {color:#4D88A1; font-size:12pt; font-weight:bold;}
|
||||||
.TIT_CLASSPHOTO {font-family:Georgia,"DejaVu LGC Serif","Bitstream Vera Serif",serif; color:#606060; font-size:13pt;}
|
.TIT_CLASSPHOTO {font-family:Georgia,"DejaVu LGC Serif","Bitstream Vera Serif",serif; color:#606060; font-size:13pt;}
|
||||||
.CLASSPHOTO {color:#606060; font-size:10pt; line-height:100%; white-space:nowrap;}
|
.CLASSPHOTO {color:#606060; font-size:10pt; line-height:110%; white-space:nowrap;}
|
||||||
|
|
||||||
.GRP_TITLE {color:#4D88A1; font-size:15pt; font-weight:bold;}
|
.GRP_TITLE {color:#4D88A1; font-size:15pt; font-weight:bold;}
|
||||||
|
|
||||||
|
|
|
@ -382,7 +382,7 @@ form {margin:0; display:inline;}
|
||||||
/****** Contextual links with small icons and text to go to some action ******/
|
/****** Contextual links with small icons and text to go to some action ******/
|
||||||
.CONTEXT_MENU
|
.CONTEXT_MENU
|
||||||
{
|
{
|
||||||
margin-bottom:12px;
|
margin:6px 0 8px 0;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
}
|
}
|
||||||
.CONTEXT_OPT
|
.CONTEXT_OPT
|
||||||
|
@ -798,7 +798,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
.MSJ_AVISO {color:#632921; font-size:15pt;}
|
.MSJ_AVISO {color:#632921; font-size:15pt;}
|
||||||
.TIT_TBL {color:#4D88A1; font-size:18pt; font-weight:bold;}
|
.TIT_TBL {color:#4D88A1; font-size:18pt; font-weight:bold;}
|
||||||
.TIT_CLASSPHOTO {font-family:Georgia,"DejaVu LGC Serif","Bitstream Vera Serif",serif; color:#606060; font-size:13pt;}
|
.TIT_CLASSPHOTO {font-family:Georgia,"DejaVu LGC Serif","Bitstream Vera Serif",serif; color:#606060; font-size:13pt;}
|
||||||
.CLASSPHOTO {color:#606060; font-size:13pt; line-height:100%; white-space:nowrap;}
|
.CLASSPHOTO {color:#606060; font-size:13pt; line-height:110%; white-space:nowrap;}
|
||||||
|
|
||||||
.GRP_TITLE {color:#4D88A1; font-size:20pt; font-weight:bold;}
|
.GRP_TITLE {color:#4D88A1; font-size:20pt; font-weight:bold;}
|
||||||
|
|
||||||
|
|
|
@ -2597,9 +2597,6 @@ void Usr_ReqListAttendanceStdsCrs (void)
|
||||||
/***** Form to select groups *****/
|
/***** Form to select groups *****/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqLstAttStd);
|
Grp_ShowFormToSelectSeveralGroups (ActReqLstAttStd);
|
||||||
|
|
||||||
/***** Form to select type of list used for select several users *****/
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActReqLstAttStd);
|
|
||||||
|
|
||||||
/***** Get and order lists of users from current course *****/
|
/***** Get and order lists of users from current course *****/
|
||||||
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
||||||
|
|
||||||
|
@ -2611,22 +2608,30 @@ void Usr_ReqListAttendanceStdsCrs (void)
|
||||||
Usr_GetListsSelectedUsrs ();
|
Usr_GetListsSelectedUsrs ();
|
||||||
|
|
||||||
/***** Draw a class photo with students of the course *****/
|
/***** Draw a class photo with students of the course *****/
|
||||||
|
/* Start frame */
|
||||||
|
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN]);
|
||||||
|
|
||||||
|
/* Form to select type of list used for select several users */
|
||||||
|
Usr_ShowFormsToSelectUsrListType (ActReqLstAttStd);
|
||||||
|
|
||||||
/* Start form */
|
/* Start form */
|
||||||
Act_FormStart (ActSeeLstAttStd);
|
Act_FormStart (ActSeeLstAttStd);
|
||||||
Grp_PutParamsCodGrps ();
|
Grp_PutParamsCodGrps ();
|
||||||
|
|
||||||
/* Start frame */
|
|
||||||
Lay_StartRoundFrameTable (NULL,0,Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN]);
|
|
||||||
|
|
||||||
/* Write list of students to select some of them */
|
/* Write list of students to select some of them */
|
||||||
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">");
|
||||||
Usr_ListUsersToSelect (Rol_STUDENT);
|
Usr_ListUsersToSelect (Rol_STUDENT);
|
||||||
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
/* Send button and end frame */
|
/* Send button */
|
||||||
Lay_EndRoundFrameTableWithButton (Lay_CONFIRM_BUTTON,Txt_Show_list);
|
Lay_PutConfirmButton (Txt_Show_list);
|
||||||
|
|
||||||
/* End form */
|
/* End form */
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
|
||||||
|
/* End frame */
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
|
|
||||||
/***** Free memory used for by the list of users *****/
|
/***** Free memory used for by the list of users *****/
|
||||||
Usr_FreeListsSelectedUsrCods ();
|
Usr_FreeListsSelectedUsrCods ();
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,12 +98,13 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.4.2 (2015/10/01)"
|
#define Log_PLATFORM_VERSION "SWAD 15.5 (2015/10/01)"
|
||||||
|
|
||||||
// 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.4.2: Oct 31, 2015 Institution admins can edit holidays. (184863 lines)
|
Version 15.5: Oct 01, 2015 Changes in layout of selectors classphoto/list. (184909 lines)
|
||||||
|
Version 15.4.2: Oct 01, 2015 Institution admins can edit holidays. (184863 lines)
|
||||||
Version 15.4.1: Sep 30, 2015 Code refactoring in global/course statistics. (184861 lines)
|
Version 15.4.1: Sep 30, 2015 Code refactoring in global/course statistics. (184861 lines)
|
||||||
Version 15.4: Sep 30, 2015 Changes in global/course statistics forms. (184877 lines)
|
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.3: Sep 30, 2015 Changes in layout of form to selected initial and final dates. (185152 lines)
|
||||||
|
|
|
@ -2848,9 +2848,6 @@ void Brw_AskEditWorksCrs (void)
|
||||||
/***** Show form to select the groups *****/
|
/***** Show form to select the groups *****/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqAsgWrkCrs);
|
Grp_ShowFormToSelectSeveralGroups (ActReqAsgWrkCrs);
|
||||||
|
|
||||||
/***** Form to select type of list used for select several users *****/
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActReqAsgWrkCrs);
|
|
||||||
|
|
||||||
/***** Get and order lists of users from this course *****/
|
/***** Get and order lists of users from this course *****/
|
||||||
Usr_GetUsrsLst (Rol_TEACHER,Sco_SCOPE_CRS,NULL,false);
|
Usr_GetUsrsLst (Rol_TEACHER,Sco_SCOPE_CRS,NULL,false);
|
||||||
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
||||||
|
@ -2862,19 +2859,30 @@ void Brw_AskEditWorksCrs (void)
|
||||||
Gbl.Usrs.LstStds.NumUsrs))
|
Gbl.Usrs.LstStds.NumUsrs))
|
||||||
{
|
{
|
||||||
/***** Draw class photos to select users *****/
|
/***** Draw class photos to select users *****/
|
||||||
|
Lay_StartRoundFrame (NULL,Txt_Users);
|
||||||
|
|
||||||
|
/* Form to select type of list used for select several users */
|
||||||
|
Usr_ShowFormsToSelectUsrListType (ActReqAsgWrkCrs);
|
||||||
|
|
||||||
/* Start form */
|
/* Start form */
|
||||||
Act_FormStart (ActAdmAsgWrkCrs);
|
Act_FormStart (ActAdmAsgWrkCrs);
|
||||||
Grp_PutParamsCodGrps ();
|
Grp_PutParamsCodGrps ();
|
||||||
Par_PutHiddenParamChar ("FullTree",'Y'); // By default, show all files
|
Par_PutHiddenParamChar ("FullTree",'Y'); // By default, show all files
|
||||||
|
|
||||||
/* Put list of users to select some of them */
|
/* Put list of users to select some of them */
|
||||||
Lay_StartRoundFrameTable (NULL,0,Txt_Users);
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">");
|
||||||
Usr_ListUsersToSelect (Rol_TEACHER);
|
Usr_ListUsersToSelect (Rol_TEACHER);
|
||||||
Usr_ListUsersToSelect (Rol_STUDENT);
|
Usr_ListUsersToSelect (Rol_STUDENT);
|
||||||
Lay_EndRoundFrameTableWithButton (Lay_CONFIRM_BUTTON,Txt_View_works);
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
|
/* Send button */
|
||||||
|
Lay_PutConfirmButton (Txt_View_works);
|
||||||
|
|
||||||
/* End form */
|
/* End form */
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
|
||||||
|
/* End frame */
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -288,9 +288,6 @@ static void Msg_PutFormMsgUsrs (const char *Content)
|
||||||
/***** Form to select groups *****/
|
/***** Form to select groups *****/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr);
|
Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr);
|
||||||
|
|
||||||
/***** Form to select type of list used for select several users *****/
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActReqMsgUsr);
|
|
||||||
|
|
||||||
/***** Get and order lists of users from this course *****/
|
/***** Get and order lists of users from this course *****/
|
||||||
Usr_GetUsrsLst (Rol_TEACHER,Sco_SCOPE_CRS,NULL,false);
|
Usr_GetUsrsLst (Rol_TEACHER,Sco_SCOPE_CRS,NULL,false);
|
||||||
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
||||||
|
@ -304,6 +301,14 @@ static void Msg_PutFormMsgUsrs (const char *Content)
|
||||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstTchs.NumUsrs +
|
if (Usr_GetIfShowBigList (Gbl.Usrs.LstTchs.NumUsrs +
|
||||||
Gbl.Usrs.LstStds.NumUsrs))
|
Gbl.Usrs.LstStds.NumUsrs))
|
||||||
{
|
{
|
||||||
|
/***** Start frame *****/
|
||||||
|
Lay_StartRoundFrame (NULL,Txt_New_message);
|
||||||
|
|
||||||
|
/***** Form to select type of list used for select several users *****/
|
||||||
|
if (Gbl.Usrs.LstTchs.NumUsrs ||
|
||||||
|
Gbl.Usrs.LstStds.NumUsrs)
|
||||||
|
Usr_ShowFormsToSelectUsrListType (ActReqMsgUsr);
|
||||||
|
|
||||||
/***** Start form to select recipients and write the message *****/
|
/***** Start form to select recipients and write the message *****/
|
||||||
Act_FormStart (ActRcvMsgUsr);
|
Act_FormStart (ActRcvMsgUsr);
|
||||||
if (Gbl.Msg.IsReply)
|
if (Gbl.Msg.IsReply)
|
||||||
|
@ -313,11 +318,9 @@ static void Msg_PutFormMsgUsrs (const char *Content)
|
||||||
Usr_PutParamOtherUsrCodEncrypted ();
|
Usr_PutParamOtherUsrCodEncrypted ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Start frame *****/
|
|
||||||
Lay_StartRoundFrameTable (NULL,2,Txt_New_message);
|
|
||||||
|
|
||||||
/***** Draw lists of users with the recipients *****/
|
/***** Draw lists of users with the recipients *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">"
|
||||||
|
"<tr>"
|
||||||
"<td class=\"%s RIGHT_TOP\">"
|
"<td class=\"%s RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:"
|
||||||
"</td>"
|
"</td>"
|
||||||
|
@ -347,13 +350,17 @@ static void Msg_PutFormMsgUsrs (const char *Content)
|
||||||
"<td colspan=\"2\">");
|
"<td colspan=\"2\">");
|
||||||
Lay_HelpPlainEditor ();
|
Lay_HelpPlainEditor ();
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>"
|
||||||
|
"</table>");
|
||||||
|
|
||||||
/***** End frame *****/
|
/***** Send button *****/
|
||||||
Lay_EndRoundFrameTableWithButton (Lay_CREATE_BUTTON,Txt_Send_message);
|
Lay_PutCreateButton (Txt_Send_message);
|
||||||
|
|
||||||
/***** End form *****/
|
/***** End form *****/
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
|
||||||
|
/***** End frame *****/
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Free memory used by the list of nicknames *****/
|
/***** Free memory used by the list of nicknames *****/
|
||||||
|
|
294
swad_photo.c
294
swad_photo.c
|
@ -1505,9 +1505,6 @@ void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</table>");
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
/***** Form to select type of list used to display degree photos *****/
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg);
|
|
||||||
|
|
||||||
/***** Link to print view *****/
|
/***** Link to print view *****/
|
||||||
Pho_PutLinkToPrintViewOfDegreeStats ();
|
Pho_PutLinkToPrintViewOfDegreeStats ();
|
||||||
|
|
||||||
|
@ -1886,73 +1883,89 @@ static void Pho_GetMaxStdsPerDegree (void)
|
||||||
static void Pho_ShowOrPrintClassPhotoDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
|
static void Pho_ShowOrPrintClassPhotoDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Degrees;
|
extern const char *Txt_Degrees;
|
||||||
|
extern const char *Txt_No_users_found[Rol_NUM_ROLES];
|
||||||
char Query[512];
|
char Query[512];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned long NumRow,NumRows;
|
unsigned long NumRow;
|
||||||
|
unsigned long NumRows;
|
||||||
struct Degree Deg;
|
struct Degree Deg;
|
||||||
unsigned NumDegsNotEmpty;
|
unsigned NumDegsNotEmpty;
|
||||||
int NumStds,NumStdsWithPhoto;
|
int NumStds;
|
||||||
|
int NumStdsWithPhoto;
|
||||||
struct Date DateAvgPhoto;
|
struct Date DateAvgPhoto;
|
||||||
bool TRIsOpen = false;
|
bool TRIsOpen = false;
|
||||||
|
|
||||||
/***** Start frame *****/
|
|
||||||
Lay_StartRoundFrameTable (NULL,0,Txt_Degrees);
|
|
||||||
|
|
||||||
/***** Get degrees from database *****/
|
/***** Get degrees from database *****/
|
||||||
Pho_BuildQueryOfDegrees (Query);
|
Pho_BuildQueryOfDegrees (Query);
|
||||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get degrees");
|
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get degrees");
|
||||||
|
|
||||||
/***** Get degrees *****/
|
if (NumRows) // Degrees with students found
|
||||||
for (NumRow = 0, NumDegsNotEmpty = 0;
|
|
||||||
NumRow < NumRows;
|
|
||||||
NumRow++)
|
|
||||||
{
|
{
|
||||||
/***** Get next degree *****/
|
/***** Start frame *****/
|
||||||
row = mysql_fetch_row (mysql_res);
|
Lay_StartRoundFrame (NULL,Txt_Degrees);
|
||||||
|
|
||||||
/* Get degree code (row[0]) */
|
/***** Form to select type of list used to display degree photos *****/
|
||||||
if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||||
Lay_ShowErrorAndExit ("Wrong code of degree.");
|
Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg);
|
||||||
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">");
|
||||||
|
|
||||||
/* Get data of degree */
|
/***** Get and print degrees *****/
|
||||||
Deg_GetDataOfDegreeByCod (&Deg);
|
for (NumRow = 0, NumDegsNotEmpty = 0;
|
||||||
|
NumRow < NumRows;
|
||||||
|
NumRow++)
|
||||||
|
{
|
||||||
|
/***** Get next degree *****/
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Get number of students and number of students with photo in this degree */
|
/* Get degree code (row[0]) */
|
||||||
Pho_GetNumStdsInDegree (Deg.DegCod,Usr_SEX_ALL,&NumStds,&NumStdsWithPhoto);
|
if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||||
|
Lay_ShowErrorAndExit ("Wrong code of degree.");
|
||||||
|
|
||||||
if (NumStds > 0)
|
/* Get data of degree */
|
||||||
{
|
Deg_GetDataOfDegreeByCod (&Deg);
|
||||||
/* Get year, month and day (row[1] holds the date in YYYYMMDD format) */
|
|
||||||
if (!(Dat_GetDateFromYYYYMMDD (&DateAvgPhoto,row[1])))
|
|
||||||
Lay_ShowErrorAndExit ("Wrong date.");
|
|
||||||
|
|
||||||
if ((NumDegsNotEmpty % Gbl.Usrs.ClassPhoto.Cols) == 0)
|
/* Get number of students and number of students with photo in this degree */
|
||||||
{
|
Pho_GetNumStdsInDegree (Deg.DegCod,Usr_SEX_ALL,&NumStds,&NumStdsWithPhoto);
|
||||||
fprintf (Gbl.F.Out,"<tr>");
|
|
||||||
TRIsOpen = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Show average photo of students belonging to this degree *****/
|
if (NumStds > 0)
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CLASSPHOTO CENTER_MIDDLE\">");
|
{
|
||||||
Pho_ShowDegreeAvgPhotoAndStat (&Deg,SeeOrPrint,Usr_SEX_ALL,NumStds,NumStdsWithPhoto,&DateAvgPhoto);
|
/* Get year, month and day (row[1] holds the date in YYYYMMDD format) */
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
if (!(Dat_GetDateFromYYYYMMDD (&DateAvgPhoto,row[1])))
|
||||||
|
Lay_ShowErrorAndExit ("Wrong date.");
|
||||||
|
|
||||||
if ((++NumDegsNotEmpty % Gbl.Usrs.ClassPhoto.Cols) == 0)
|
if ((NumDegsNotEmpty % Gbl.Usrs.ClassPhoto.Cols) == 0)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"</tr>");
|
fprintf (Gbl.F.Out,"<tr>");
|
||||||
TRIsOpen = false;
|
TRIsOpen = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/***** Show average photo of students belonging to this degree *****/
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"CLASSPHOTO CENTER_MIDDLE\">");
|
||||||
|
Pho_ShowDegreeAvgPhotoAndStat (&Deg,SeeOrPrint,Usr_SEX_ALL,NumStds,NumStdsWithPhoto,&DateAvgPhoto);
|
||||||
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
|
if ((++NumDegsNotEmpty % Gbl.Usrs.ClassPhoto.Cols) == 0)
|
||||||
|
{
|
||||||
|
fprintf (Gbl.F.Out,"</tr>");
|
||||||
|
TRIsOpen = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (TRIsOpen)
|
||||||
|
fprintf (Gbl.F.Out,"</tr>");
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
|
/***** End frame *****/
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
}
|
}
|
||||||
if (TRIsOpen)
|
else // No degrees with students found
|
||||||
fprintf (Gbl.F.Out,"</tr>");
|
Lay_ShowAlert (Lay_INFO,Txt_No_users_found[Rol_STUDENT]);
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
|
||||||
/***** End frame *****/
|
|
||||||
Lay_EndRoundFrameTable ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1961,113 +1974,126 @@ static void Pho_ShowOrPrintClassPhotoDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrin
|
||||||
|
|
||||||
static void Pho_ShowOrPrintListDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
|
static void Pho_ShowOrPrintListDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
|
||||||
{
|
{
|
||||||
|
extern const char *Txt_Degrees;
|
||||||
extern const char *Txt_No_INDEX;
|
extern const char *Txt_No_INDEX;
|
||||||
extern const char *Txt_Degree;
|
extern const char *Txt_Degree;
|
||||||
extern const char *Txt_SEX_PLURAL_Abc[Usr_NUM_SEXS];
|
extern const char *Txt_SEX_PLURAL_Abc[Usr_NUM_SEXS];
|
||||||
|
extern const char *Txt_No_users_found[Rol_NUM_ROLES];
|
||||||
char Query[512];
|
char Query[512];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned long NumRow,NumRows;
|
unsigned long NumRow;
|
||||||
|
unsigned long NumRows;
|
||||||
unsigned NumDegsNotEmpty;
|
unsigned NumDegsNotEmpty;
|
||||||
int NumStds,NumStdsWithPhoto;
|
int NumStds;
|
||||||
|
int NumStdsWithPhoto;
|
||||||
struct Date DateAvgPhoto;
|
struct Date DateAvgPhoto;
|
||||||
struct Degree Deg;
|
struct Degree Deg;
|
||||||
Usr_Sex_t Sex;
|
Usr_Sex_t Sex;
|
||||||
|
|
||||||
/***** Class photo start *****/
|
|
||||||
if (SeeOrPrint == Pho_DEGREES_SEE)
|
|
||||||
Lay_StartRoundFrameTable (NULL,0,NULL);
|
|
||||||
else
|
|
||||||
fprintf (Gbl.F.Out,"<table>");
|
|
||||||
|
|
||||||
/***** Write heading *****/
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<th class=\"RIGHT_TOP\">"
|
|
||||||
"%s"
|
|
||||||
"</th>"
|
|
||||||
"<th class=\"CENTER_TOP\">"
|
|
||||||
"%s"
|
|
||||||
"</th>",
|
|
||||||
Txt_No_INDEX,
|
|
||||||
Txt_Degree);
|
|
||||||
for (Sex = (Usr_Sex_t) 0;
|
|
||||||
Sex < Usr_NUM_SEXS;
|
|
||||||
Sex++)
|
|
||||||
fprintf (Gbl.F.Out,"<th class=\"CENTER_TOP\">"
|
|
||||||
"%s"
|
|
||||||
"</th>",
|
|
||||||
Txt_SEX_PLURAL_Abc[Sex]);
|
|
||||||
fprintf (Gbl.F.Out,"</tr>");
|
|
||||||
|
|
||||||
/***** Get degrees from database *****/
|
/***** Get degrees from database *****/
|
||||||
Pho_BuildQueryOfDegrees (Query);
|
Pho_BuildQueryOfDegrees (Query);
|
||||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get degrees");
|
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get degrees");
|
||||||
|
|
||||||
/***** Get degrees *****/
|
if (NumRows) // Degrees with students found
|
||||||
for (NumRow = 0, Gbl.RowEvenOdd = 0, NumDegsNotEmpty = 0;
|
|
||||||
NumRow < NumRows;
|
|
||||||
NumRow++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd)
|
|
||||||
{
|
{
|
||||||
/***** Get next degree *****/
|
/***** Class photo start *****/
|
||||||
row = mysql_fetch_row (mysql_res);
|
|
||||||
|
|
||||||
/* Get degree code (row[0]) */
|
|
||||||
if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
|
||||||
Lay_ShowErrorAndExit ("Wrong code of degree.");
|
|
||||||
|
|
||||||
/* Get year, month and day (row[1] holds the date in YYYYMMDD format) */
|
|
||||||
if (!(Dat_GetDateFromYYYYMMDD (&DateAvgPhoto,row[1])))
|
|
||||||
Lay_ShowErrorAndExit ("Wrong date.");
|
|
||||||
|
|
||||||
/* Get data of degree */
|
|
||||||
Deg_GetDataOfDegreeByCod (&Deg);
|
|
||||||
|
|
||||||
/***** Show logo and name of this degree *****/
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<td class=\"DAT RIGHT_MIDDLE COLOR%u\">"
|
|
||||||
"%u"
|
|
||||||
"</td>",
|
|
||||||
Gbl.RowEvenOdd,++NumDegsNotEmpty);
|
|
||||||
|
|
||||||
/***** Show logo and name of this degree *****/
|
|
||||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE COLOR%u\">",
|
|
||||||
Gbl.RowEvenOdd);
|
|
||||||
if (SeeOrPrint == Pho_DEGREES_SEE)
|
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||||
fprintf (Gbl.F.Out,"<a href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\">",
|
{
|
||||||
Deg.WWW,Deg.FullName);
|
Lay_StartRoundFrame (NULL,Txt_Degrees);
|
||||||
Log_DrawLogo (Sco_SCOPE_DEG,Deg.DegCod,Deg.ShortName,
|
|
||||||
16,"CENTER_TOP",true);
|
|
||||||
fprintf (Gbl.F.Out," %s ",
|
|
||||||
Deg.ShortName);
|
|
||||||
if (SeeOrPrint == Pho_DEGREES_SEE)
|
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
|
||||||
|
|
||||||
|
/***** Form to select type of list used to display degree photos *****/
|
||||||
|
Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Write heading *****/
|
||||||
|
fprintf (Gbl.F.Out,"<table class=\"CELLS_PAD_2\""
|
||||||
|
" style=\"margin:0 auto;\">"
|
||||||
|
"<tr>"
|
||||||
|
"<th class=\"RIGHT_TOP\">"
|
||||||
|
"%s"
|
||||||
|
"</th>"
|
||||||
|
"<th class=\"CENTER_TOP\">"
|
||||||
|
"%s"
|
||||||
|
"</th>",
|
||||||
|
Txt_No_INDEX,
|
||||||
|
Txt_Degree);
|
||||||
for (Sex = (Usr_Sex_t) 0;
|
for (Sex = (Usr_Sex_t) 0;
|
||||||
Sex < Usr_NUM_SEXS;
|
Sex < Usr_NUM_SEXS;
|
||||||
Sex++)
|
Sex++)
|
||||||
{
|
fprintf (Gbl.F.Out,"<th class=\"CENTER_TOP\">"
|
||||||
/***** Show average photo of students belonging to this degree *****/
|
"%s"
|
||||||
Pho_GetNumStdsInDegree (Deg.DegCod,Sex,&NumStds,&NumStdsWithPhoto);
|
"</th>",
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE COLOR%u\">",
|
Txt_SEX_PLURAL_Abc[Sex]);
|
||||||
Gbl.RowEvenOdd);
|
|
||||||
if (Gbl.Usrs.Listing.WithPhotos)
|
|
||||||
Pho_ShowDegreeAvgPhotoAndStat (&Deg,SeeOrPrint,Sex,NumStds,NumStdsWithPhoto,&DateAvgPhoto);
|
|
||||||
else
|
|
||||||
Pho_ShowDegreeStat (NumStds,NumStdsWithPhoto);
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
|
||||||
}
|
|
||||||
fprintf (Gbl.F.Out,"</tr>");
|
fprintf (Gbl.F.Out,"</tr>");
|
||||||
|
|
||||||
|
/***** Get degrees *****/
|
||||||
|
for (NumRow = 0, Gbl.RowEvenOdd = 0, NumDegsNotEmpty = 0;
|
||||||
|
NumRow < NumRows;
|
||||||
|
NumRow++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd)
|
||||||
|
{
|
||||||
|
/***** Get next degree *****/
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
|
/* Get degree code (row[0]) */
|
||||||
|
if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||||
|
Lay_ShowErrorAndExit ("Wrong code of degree.");
|
||||||
|
|
||||||
|
/* Get year, month and day (row[1] holds the date in YYYYMMDD format) */
|
||||||
|
if (!(Dat_GetDateFromYYYYMMDD (&DateAvgPhoto,row[1])))
|
||||||
|
Lay_ShowErrorAndExit ("Wrong date.");
|
||||||
|
|
||||||
|
/* Get data of degree */
|
||||||
|
Deg_GetDataOfDegreeByCod (&Deg);
|
||||||
|
|
||||||
|
/***** Show logo and name of this degree *****/
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<td class=\"DAT RIGHT_MIDDLE COLOR%u\">"
|
||||||
|
"%u"
|
||||||
|
"</td>",
|
||||||
|
Gbl.RowEvenOdd,++NumDegsNotEmpty);
|
||||||
|
|
||||||
|
/***** Show logo and name of this degree *****/
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE COLOR%u\">",
|
||||||
|
Gbl.RowEvenOdd);
|
||||||
|
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||||
|
fprintf (Gbl.F.Out,"<a href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\">",
|
||||||
|
Deg.WWW,Deg.FullName);
|
||||||
|
Log_DrawLogo (Sco_SCOPE_DEG,Deg.DegCod,Deg.ShortName,
|
||||||
|
16,"CENTER_TOP",true);
|
||||||
|
fprintf (Gbl.F.Out," %s ",
|
||||||
|
Deg.ShortName);
|
||||||
|
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||||
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
|
for (Sex = (Usr_Sex_t) 0;
|
||||||
|
Sex < Usr_NUM_SEXS;
|
||||||
|
Sex++)
|
||||||
|
{
|
||||||
|
/***** Show average photo of students belonging to this degree *****/
|
||||||
|
Pho_GetNumStdsInDegree (Deg.DegCod,Sex,&NumStds,&NumStdsWithPhoto);
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE COLOR%u\">",
|
||||||
|
Gbl.RowEvenOdd);
|
||||||
|
if (Gbl.Usrs.Listing.WithPhotos)
|
||||||
|
Pho_ShowDegreeAvgPhotoAndStat (&Deg,SeeOrPrint,Sex,NumStds,NumStdsWithPhoto,&DateAvgPhoto);
|
||||||
|
else
|
||||||
|
Pho_ShowDegreeStat (NumStds,NumStdsWithPhoto);
|
||||||
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
}
|
||||||
|
fprintf (Gbl.F.Out,"</tr>");
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Photos end *****/
|
||||||
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
}
|
}
|
||||||
|
else // No degrees with students found!
|
||||||
|
Lay_ShowAlert (Lay_INFO,Txt_No_users_found[Rol_STUDENT]);
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
|
||||||
/***** Photos end *****/
|
|
||||||
if (SeeOrPrint == Pho_DEGREES_SEE)
|
|
||||||
Lay_EndRoundFrameTable ();
|
|
||||||
else
|
|
||||||
fprintf (Gbl.F.Out,"</table>");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2081,25 +2107,33 @@ static void Pho_BuildQueryOfDegrees (char *Query)
|
||||||
case Pho_NUMBER_OF_STUDENTS:
|
case Pho_NUMBER_OF_STUDENTS:
|
||||||
sprintf (Query,"SELECT degrees.DegCod,DATE_FORMAT(sta_degrees.TimeAvgPhoto,'%%Y%%m%%d')"
|
sprintf (Query,"SELECT degrees.DegCod,DATE_FORMAT(sta_degrees.TimeAvgPhoto,'%%Y%%m%%d')"
|
||||||
" FROM degrees,sta_degrees"
|
" FROM degrees,sta_degrees"
|
||||||
" WHERE sta_degrees.Sex='all' AND sta_degrees.NumStds>'0' AND degrees.DegCod=sta_degrees.DegCod"
|
" WHERE sta_degrees.Sex='all'"
|
||||||
|
" AND sta_degrees.NumStds>'0'"
|
||||||
|
" AND degrees.DegCod=sta_degrees.DegCod"
|
||||||
" ORDER BY sta_degrees.NumStds DESC,sta_degrees.NumStdsWithPhoto DESC,degrees.ShortName");
|
" ORDER BY sta_degrees.NumStds DESC,sta_degrees.NumStdsWithPhoto DESC,degrees.ShortName");
|
||||||
break;
|
break;
|
||||||
case Pho_NUMBER_OF_PHOTOS:
|
case Pho_NUMBER_OF_PHOTOS:
|
||||||
sprintf (Query,"SELECT degrees.DegCod,DATE_FORMAT(sta_degrees.TimeAvgPhoto,'%%Y%%m%%d')"
|
sprintf (Query,"SELECT degrees.DegCod,DATE_FORMAT(sta_degrees.TimeAvgPhoto,'%%Y%%m%%d')"
|
||||||
" FROM degrees,sta_degrees"
|
" FROM degrees,sta_degrees"
|
||||||
" WHERE sta_degrees.Sex='all' AND sta_degrees.NumStds>'0' AND degrees.DegCod=sta_degrees.DegCod"
|
" WHERE sta_degrees.Sex='all'"
|
||||||
|
" AND sta_degrees.NumStds>'0'"
|
||||||
|
" AND degrees.DegCod=sta_degrees.DegCod"
|
||||||
" ORDER BY sta_degrees.NumStdsWithPhoto DESC,sta_degrees.NumStds DESC,degrees.ShortName");
|
" ORDER BY sta_degrees.NumStdsWithPhoto DESC,sta_degrees.NumStds DESC,degrees.ShortName");
|
||||||
break;
|
break;
|
||||||
case Pho_PERCENT:
|
case Pho_PERCENT:
|
||||||
sprintf (Query,"SELECT degrees.DegCod,DATE_FORMAT(sta_degrees.TimeAvgPhoto,'%%Y%%m%%d')"
|
sprintf (Query,"SELECT degrees.DegCod,DATE_FORMAT(sta_degrees.TimeAvgPhoto,'%%Y%%m%%d')"
|
||||||
" FROM degrees,sta_degrees"
|
" FROM degrees,sta_degrees"
|
||||||
" WHERE sta_degrees.Sex='all' AND sta_degrees.NumStds>'0' AND degrees.DegCod=sta_degrees.DegCod"
|
" WHERE sta_degrees.Sex='all'"
|
||||||
|
" AND sta_degrees.NumStds>'0'"
|
||||||
|
" AND degrees.DegCod=sta_degrees.DegCod"
|
||||||
" ORDER BY sta_degrees.NumStdsWithPhoto/sta_degrees.NumStds DESC,degrees.ShortName");
|
" ORDER BY sta_degrees.NumStdsWithPhoto/sta_degrees.NumStds DESC,degrees.ShortName");
|
||||||
break;
|
break;
|
||||||
case Pho_DEGREE_NAME:
|
case Pho_DEGREE_NAME:
|
||||||
sprintf (Query,"SELECT degrees.DegCod,DATE_FORMAT(sta_degrees.TimeAvgPhoto,'%%Y%%m%%d')"
|
sprintf (Query,"SELECT degrees.DegCod,DATE_FORMAT(sta_degrees.TimeAvgPhoto,'%%Y%%m%%d')"
|
||||||
" FROM degrees,sta_degrees"
|
" FROM degrees,sta_degrees"
|
||||||
" WHERE sta_degrees.Sex='all' AND sta_degrees.NumStds>'0' AND degrees.DegCod=sta_degrees.DegCod"
|
" WHERE sta_degrees.Sex='all'"
|
||||||
|
" AND sta_degrees.NumStds>'0'"
|
||||||
|
" AND degrees.DegCod=sta_degrees.DegCod"
|
||||||
" ORDER BY degrees.ShortName");
|
" ORDER BY degrees.ShortName");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -419,9 +419,6 @@ void Sta_AskSeeCrsAccesses (void)
|
||||||
/***** Show form to select the grupos *****/
|
/***** Show form to select the grupos *****/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqAccCrs);
|
Grp_ShowFormToSelectSeveralGroups (ActReqAccCrs);
|
||||||
|
|
||||||
/***** Form to select type of list used for select several users *****/
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActReqAccCrs);
|
|
||||||
|
|
||||||
/***** Get and order the lists of users of this course *****/
|
/***** Get and order the lists of users of this course *****/
|
||||||
Usr_GetUsrsLst (Rol_TEACHER,Sco_SCOPE_CRS,NULL,false);
|
Usr_GetUsrsLst (Rol_TEACHER,Sco_SCOPE_CRS,NULL,false);
|
||||||
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
||||||
|
@ -435,18 +432,24 @@ void Sta_AskSeeCrsAccesses (void)
|
||||||
/***** Get lists of selected users *****/
|
/***** Get lists of selected users *****/
|
||||||
Usr_GetListsSelectedUsrs ();
|
Usr_GetListsSelectedUsrs ();
|
||||||
|
|
||||||
|
/***** Start frame *****/
|
||||||
|
sprintf (Gbl.Title,Txt_Statistics_of_visits_to_the_course_X,
|
||||||
|
Gbl.CurrentCrs.Crs.ShortName);
|
||||||
|
Lay_StartRoundFrame (NULL,Gbl.Title);
|
||||||
|
|
||||||
|
/***** Form to select type of list used for select several users *****/
|
||||||
|
Usr_ShowFormsToSelectUsrListType (ActReqAccCrs);
|
||||||
|
|
||||||
|
/***** Start form *****/
|
||||||
Act_FormStart (ActSeeAccCrs);
|
Act_FormStart (ActSeeAccCrs);
|
||||||
Grp_PutParamsCodGrps ();
|
Grp_PutParamsCodGrps ();
|
||||||
Par_PutHiddenParamLong ("FirstRow",0);
|
Par_PutHiddenParamLong ("FirstRow",0);
|
||||||
Par_PutHiddenParamLong ("LastRow",0);
|
Par_PutHiddenParamLong ("LastRow",0);
|
||||||
|
|
||||||
/***** Start frame *****/
|
|
||||||
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 *****/
|
/***** Put list of users to select some of them *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<table class=\"CELLS_PAD_2\""
|
||||||
|
" style=\"margin:0 auto;\">"
|
||||||
|
"<tr>"
|
||||||
"<td class=\"%s RIGHT_TOP\">"
|
"<td class=\"%s RIGHT_TOP\">"
|
||||||
"%s:"
|
"%s:"
|
||||||
"</td>"
|
"</td>"
|
||||||
|
@ -530,14 +533,18 @@ void Sta_AskSeeCrsAccesses (void)
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"</select>)"
|
fprintf (Gbl.F.Out,"</select>)"
|
||||||
"</td>"
|
"</td>"
|
||||||
"</tr>");
|
"</tr>"
|
||||||
|
"</table>");
|
||||||
|
|
||||||
/***** End frame *****/
|
/***** Send button *****/
|
||||||
Lay_EndRoundFrameTableWithButton (Lay_CONFIRM_BUTTON,Txt_Show_visits);
|
Lay_PutConfirmButton (Txt_Show_visits);
|
||||||
|
|
||||||
/***** End form *****/
|
/***** End form *****/
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
|
||||||
|
/***** End frame *****/
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
|
|
||||||
/* Free the memory used by the list of users */
|
/* Free the memory used by the list of users */
|
||||||
Usr_FreeListsSelectedUsrCods ();
|
Usr_FreeListsSelectedUsrCods ();
|
||||||
}
|
}
|
||||||
|
|
33
swad_test.c
33
swad_test.c
|
@ -5897,9 +5897,6 @@ void Tst_SelUsrsToSeeUsrsTstExams (void)
|
||||||
/***** Show form to select the groups *****/
|
/***** Show form to select the groups *****/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqSeeUsrTstExa);
|
Grp_ShowFormToSelectSeveralGroups (ActReqSeeUsrTstExa);
|
||||||
|
|
||||||
/***** Form to select type of list used for select several users *****/
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActReqSeeUsrTstExa);
|
|
||||||
|
|
||||||
/***** Get and order lists of users from this course *****/
|
/***** Get and order lists of users from this course *****/
|
||||||
Usr_GetUsrsLst (Rol_TEACHER,Sco_SCOPE_CRS,NULL,false);
|
Usr_GetUsrsLst (Rol_TEACHER,Sco_SCOPE_CRS,NULL,false);
|
||||||
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
Usr_GetUsrsLst (Rol_STUDENT,Sco_SCOPE_CRS,NULL,false);
|
||||||
|
@ -5910,31 +5907,35 @@ void Tst_SelUsrsToSeeUsrsTstExams (void)
|
||||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstTchs.NumUsrs +
|
if (Usr_GetIfShowBigList (Gbl.Usrs.LstTchs.NumUsrs +
|
||||||
Gbl.Usrs.LstStds.NumUsrs))
|
Gbl.Usrs.LstStds.NumUsrs))
|
||||||
{
|
{
|
||||||
|
/***** Start frame *****/
|
||||||
|
Lay_StartRoundFrame (NULL,Txt_Users);
|
||||||
|
|
||||||
|
/***** Form to select type of list used for select several users *****/
|
||||||
|
Usr_ShowFormsToSelectUsrListType (ActReqSeeUsrTstExa);
|
||||||
|
|
||||||
/***** Start form *****/
|
/***** Start form *****/
|
||||||
Act_FormStart (ActSeeUsrTstExa);
|
Act_FormStart (ActSeeUsrTstExa);
|
||||||
Grp_PutParamsCodGrps ();
|
Grp_PutParamsCodGrps ();
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\">"
|
|
||||||
"<table style=\"margin:0 auto; border-spacing:5px;\">"
|
|
||||||
"<tr>"
|
|
||||||
"<td colspan=\"2\" class=\"LEFT_MIDDLE\">");
|
|
||||||
|
|
||||||
/***** Put list of users to select some of them *****/
|
/***** Put list of users to select some of them *****/
|
||||||
Lay_StartRoundFrameTable (NULL,0,Txt_Users);
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">");
|
||||||
Usr_ListUsersToSelect (Rol_TEACHER);
|
Usr_ListUsersToSelect (Rol_TEACHER);
|
||||||
Usr_ListUsersToSelect (Rol_STUDENT);
|
Usr_ListUsersToSelect (Rol_STUDENT);
|
||||||
Lay_EndRoundFrameTable ();
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
|
||||||
"</tr>");
|
|
||||||
|
|
||||||
/***** Starting and ending dates in the search *****/
|
/***** Starting and ending dates in the search *****/
|
||||||
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">");
|
||||||
Dat_WriteFormIniEndDates ();
|
Dat_WriteFormIniEndDates ();
|
||||||
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
/***** Button to send the form *****/
|
/***** Send button *****/
|
||||||
fprintf (Gbl.F.Out,"</table>"
|
Lay_PutConfirmButton (Txt_See_exams);
|
||||||
"</div>");
|
|
||||||
Lay_PutConfirmButton (Txt_See_exams);
|
/***** End form *****/
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
|
||||||
|
/***** End frame *****/
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -15640,27 +15640,6 @@ const char *Txt_List_of_nicks_emails_or_IDs =
|
||||||
"Lista de @alcunhas, e-mails ou nºs. identif.";
|
"Lista de @alcunhas, e-mails ou nºs. identif.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_List_type =
|
|
||||||
#if L==0
|
|
||||||
"Tipus de llista";
|
|
||||||
#elif L==1
|
|
||||||
"Listentyp";
|
|
||||||
#elif L==2
|
|
||||||
"List type";
|
|
||||||
#elif L==3
|
|
||||||
"Tipo de lista";
|
|
||||||
#elif L==4
|
|
||||||
"Type de liste";
|
|
||||||
#elif L==5
|
|
||||||
"Tipo de lista"; // Okoteve traducción
|
|
||||||
#elif L==6
|
|
||||||
"Tipo di lista";
|
|
||||||
#elif L==7
|
|
||||||
"Typ listy";
|
|
||||||
#elif L==8
|
|
||||||
"Tipo de lista";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Links =
|
const char *Txt_Links =
|
||||||
#if L==0
|
#if L==0
|
||||||
"Enllaços";
|
"Enllaços";
|
||||||
|
|
125
swad_user.c
125
swad_user.c
|
@ -146,6 +146,7 @@ static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,Usr_ShowUsrsTyp
|
||||||
static Usr_Sex_t Usr_GetSexOfUsrsLst (struct ListUsers *LstUsrs);
|
static Usr_Sex_t Usr_GetSexOfUsrsLst (struct ListUsers *LstUsrs);
|
||||||
|
|
||||||
static void Usr_PutCheckboxToSelectUser (struct UsrData *UsrDat,bool UsrIsTheMsgSender);
|
static void Usr_PutCheckboxToSelectUser (struct UsrData *UsrDat,bool UsrIsTheMsgSender);
|
||||||
|
static void Usr_PutCheckboxListWithPhotos (void);
|
||||||
|
|
||||||
static void Usr_SetUsrDatMainFieldNames (void);
|
static void Usr_SetUsrDatMainFieldNames (void);
|
||||||
static void Usr_ListMainDataGsts (bool PutCheckBoxToSelectUsr);
|
static void Usr_ListMainDataGsts (bool PutCheckBoxToSelectUsr);
|
||||||
|
@ -4758,13 +4759,9 @@ void Usr_FreeListOtherRecipients (void)
|
||||||
|
|
||||||
void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
|
void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
|
||||||
{
|
{
|
||||||
extern const char *Txt_List_type;
|
|
||||||
|
|
||||||
/***** Start table *****/
|
|
||||||
Lay_StartRoundFrameTable (NULL,8,Txt_List_type);
|
|
||||||
|
|
||||||
/***** Select USR_CLASS_ROOM *****/
|
/***** Select USR_CLASS_ROOM *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<table class=\"CELLS_PAD_4\" style=\"margin:4px auto;\">"
|
||||||
|
"<tr>"
|
||||||
"<td class=\"%s LEFT_MIDDLE\">",
|
"<td class=\"%s LEFT_MIDDLE\">",
|
||||||
Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO ? "USR_LIST_TYPE_ON" :
|
Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO ? "USR_LIST_TYPE_ON" :
|
||||||
"USR_LIST_TYPE_OFF");
|
"USR_LIST_TYPE_OFF");
|
||||||
|
@ -4794,10 +4791,8 @@ void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
|
||||||
Usr_PutCheckboxListWithPhotos ();
|
Usr_PutCheckboxListWithPhotos ();
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>"
|
||||||
|
"</table>");
|
||||||
/***** End of table *****/
|
|
||||||
Lay_EndRoundFrameTable ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -5007,7 +5002,7 @@ static void Usr_PutCheckboxToSelectUser (struct UsrData *UsrDat,bool UsrIsTheMsg
|
||||||
/********* Put a checkbox to select whether list users with photos ***********/
|
/********* Put a checkbox to select whether list users with photos ***********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Usr_PutCheckboxListWithPhotos (void)
|
static void Usr_PutCheckboxListWithPhotos (void)
|
||||||
{
|
{
|
||||||
extern const char *The_ClassForm[The_NUM_THEMES];
|
extern const char *The_ClassForm[The_NUM_THEMES];
|
||||||
extern const char *Txt_Display_photos;
|
extern const char *Txt_Display_photos;
|
||||||
|
@ -5943,23 +5938,25 @@ void Usr_ListDataAdms (void)
|
||||||
|
|
||||||
if (Gbl.Usrs.LstAdms.NumUsrs)
|
if (Gbl.Usrs.LstAdms.NumUsrs)
|
||||||
{
|
{
|
||||||
/****** See the photos? *****/
|
/***** Initialize number of columns *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\">");
|
NumColumns = Usr_NUM_MAIN_FIELDS_DATA_ADM;
|
||||||
|
|
||||||
|
/***** Start table with list of administrators *****/
|
||||||
|
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_DEG_ADM][Usr_SEX_UNKNOWN]);
|
||||||
|
|
||||||
|
/****** Show photos? *****/
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\""
|
||||||
|
" style=\"margin-bottom:8px;\">");
|
||||||
Act_FormStart (ActLstOth);
|
Act_FormStart (ActLstOth);
|
||||||
Sco_PutParamScope (Gbl.Scope.Current);
|
Sco_PutParamScope (Gbl.Scope.Current);
|
||||||
Usr_PutCheckboxListWithPhotos ();
|
Usr_PutCheckboxListWithPhotos ();
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Initialize number of columns *****/
|
|
||||||
NumColumns = Usr_NUM_MAIN_FIELDS_DATA_ADM;
|
|
||||||
|
|
||||||
/***** Start table with list of administrators *****/
|
|
||||||
Lay_StartRoundFrameTable (NULL,0,Txt_ROLES_PLURAL_Abc[Rol_DEG_ADM][Usr_SEX_UNKNOWN]);
|
|
||||||
|
|
||||||
/***** Heading row with column names *****/
|
/***** Heading row with column names *****/
|
||||||
/* Start row */
|
/* Start row */
|
||||||
fprintf (Gbl.F.Out,"<tr>");
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">"
|
||||||
|
"<tr>");
|
||||||
for (NumCol = 0;
|
for (NumCol = 0;
|
||||||
NumCol < NumColumns;
|
NumCol < NumColumns;
|
||||||
NumCol++)
|
NumCol++)
|
||||||
|
@ -5991,7 +5988,8 @@ void Usr_ListDataAdms (void)
|
||||||
Usr_UsrDataDestructor (&UsrDat);
|
Usr_UsrDataDestructor (&UsrDat);
|
||||||
|
|
||||||
/***** End of table *****/
|
/***** End of table *****/
|
||||||
Lay_EndRoundFrameTable ();
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
}
|
}
|
||||||
else // Gbl.Usrs.LstAdms.NumUsrs == 0
|
else // Gbl.Usrs.LstAdms.NumUsrs == 0
|
||||||
Lay_ShowAlert (Lay_INFO,Txt_No_users_found[Rol_DEG_ADM]);
|
Lay_ShowAlert (Lay_INFO,Txt_No_users_found[Rol_DEG_ADM]);
|
||||||
|
@ -6412,9 +6410,6 @@ void Usr_SeeGuests (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Form to select type of list of users *****/
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActLstGst);
|
|
||||||
|
|
||||||
/***** Get and order list of students in current scope *****/
|
/***** Get and order list of students in current scope *****/
|
||||||
Usr_GetGstsLst (Gbl.Scope.Current);
|
Usr_GetGstsLst (Gbl.Scope.Current);
|
||||||
|
|
||||||
|
@ -6441,13 +6436,19 @@ void Usr_SeeGuests (void)
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
|
/***** Start frame *****/
|
||||||
|
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol__GUEST_][Usr_SEX_UNKNOWN]);
|
||||||
|
|
||||||
|
/***** Form to select type of list of users *****/
|
||||||
|
Usr_ShowFormsToSelectUsrListType (ActLstGst);
|
||||||
|
|
||||||
/***** Draw a class photo with students of the course *****/
|
/***** Draw a class photo with students of the course *****/
|
||||||
/* Start form */
|
/* Start form */
|
||||||
Act_FormStart (ActSeeRecSevGst);
|
Act_FormStart (ActSeeRecSevGst);
|
||||||
Grp_PutParamsCodGrps ();
|
Grp_PutParamsCodGrps ();
|
||||||
|
|
||||||
/* Header */
|
/* Start table */
|
||||||
Lay_StartRoundFrameTable (NULL,0,Txt_ROLES_PLURAL_Abc[Rol__GUEST_][Usr_SEX_UNKNOWN]);
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">");
|
||||||
|
|
||||||
if (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO)
|
if (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO)
|
||||||
Lay_WriteHeaderClassPhoto (Gbl.Usrs.ClassPhoto.Cols,false,true,
|
Lay_WriteHeaderClassPhoto (Gbl.Usrs.ClassPhoto.Cols,false,true,
|
||||||
|
@ -6472,11 +6473,17 @@ void Usr_SeeGuests (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send button and end frame */
|
/* End table */
|
||||||
Lay_EndRoundFrameTableWithButton (Lay_CONFIRM_BUTTON,Txt_Show_records);
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
|
/* Send button */
|
||||||
|
Lay_PutConfirmButton (Txt_Show_records);
|
||||||
|
|
||||||
/* End form */
|
/* End form */
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
|
||||||
|
/* End frame */
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -6588,9 +6595,6 @@ void Usr_SeeStudents (void)
|
||||||
if (Gbl.Scope.Current == Sco_SCOPE_CRS)
|
if (Gbl.Scope.Current == Sco_SCOPE_CRS)
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActLstStd);
|
Grp_ShowFormToSelectSeveralGroups (ActLstStd);
|
||||||
|
|
||||||
/***** Form to select type of list of users *****/
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActLstStd);
|
|
||||||
|
|
||||||
/***** Get and order list of students *****/
|
/***** Get and order list of students *****/
|
||||||
Usr_GetUsrsLst (Rol_STUDENT,Gbl.Scope.Current,NULL,false);
|
Usr_GetUsrsLst (Rol_STUDENT,Gbl.Scope.Current,NULL,false);
|
||||||
|
|
||||||
|
@ -6622,6 +6626,12 @@ void Usr_SeeStudents (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***** Start frame *****/
|
||||||
|
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN]);
|
||||||
|
|
||||||
|
/***** Form to select type of list of users *****/
|
||||||
|
Usr_ShowFormsToSelectUsrListType (ActLstStd);
|
||||||
|
|
||||||
/***** Draw a class photo with students of the course *****/
|
/***** Draw a class photo with students of the course *****/
|
||||||
/* Start form */
|
/* Start form */
|
||||||
if (ICanViewRecords)
|
if (ICanViewRecords)
|
||||||
|
@ -6630,8 +6640,8 @@ void Usr_SeeStudents (void)
|
||||||
Grp_PutParamsCodGrps ();
|
Grp_PutParamsCodGrps ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Header */
|
/* Start table */
|
||||||
Lay_StartRoundFrameTable (NULL,0,Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN]);
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">");
|
||||||
|
|
||||||
if (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO)
|
if (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO)
|
||||||
Lay_WriteHeaderClassPhoto (Gbl.Usrs.ClassPhoto.Cols,false,true,
|
Lay_WriteHeaderClassPhoto (Gbl.Usrs.ClassPhoto.Cols,false,true,
|
||||||
|
@ -6663,14 +6673,20 @@ void Usr_SeeStudents (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send button and end frame */
|
/* End table */
|
||||||
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
if (ICanViewRecords)
|
if (ICanViewRecords)
|
||||||
{
|
{
|
||||||
Lay_EndRoundFrameTableWithButton (Lay_CONFIRM_BUTTON,Txt_Show_records);
|
/* Send button */
|
||||||
Act_FormEnd ();
|
Lay_PutConfirmButton (Txt_Show_records);
|
||||||
|
|
||||||
|
/* End form */
|
||||||
|
Act_FormEnd ();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
Lay_EndRoundFrameTable ();
|
/* End frame */
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -6742,9 +6758,6 @@ void Usr_SeeTeachers (void)
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Form to select type of list of users *****/
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActLstTch);
|
|
||||||
|
|
||||||
/***** Get and order list of teachers *****/
|
/***** Get and order list of teachers *****/
|
||||||
Usr_GetUsrsLst (Rol_TEACHER,Gbl.Scope.Current,NULL,false);
|
Usr_GetUsrsLst (Rol_TEACHER,Gbl.Scope.Current,NULL,false);
|
||||||
|
|
||||||
|
@ -6773,15 +6786,19 @@ void Usr_SeeTeachers (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Draw a class photo with teachers of the course *****/
|
/***** Start frame *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\">");
|
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_TEACHER][Usr_SEX_UNKNOWN]);
|
||||||
|
|
||||||
|
/***** Form to select type of list of users *****/
|
||||||
|
Usr_ShowFormsToSelectUsrListType (ActLstTch);
|
||||||
|
|
||||||
|
/***** Draw a class photo with teachers of the course *****/
|
||||||
/* Start form */
|
/* Start form */
|
||||||
if (ICanViewRecords)
|
if (ICanViewRecords)
|
||||||
Act_FormStart (ActSeeRecSevTch);
|
Act_FormStart (ActSeeRecSevTch);
|
||||||
|
|
||||||
/* Header */
|
/* Start table */
|
||||||
Lay_StartRoundFrameTable (NULL,0,Txt_ROLES_PLURAL_Abc[Rol_TEACHER][Usr_SEX_UNKNOWN]);
|
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">");
|
||||||
|
|
||||||
if (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO)
|
if (Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO)
|
||||||
Lay_WriteHeaderClassPhoto (Gbl.Usrs.ClassPhoto.Cols,false,true,
|
Lay_WriteHeaderClassPhoto (Gbl.Usrs.ClassPhoto.Cols,false,true,
|
||||||
|
@ -6813,16 +6830,20 @@ void Usr_SeeTeachers (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send button and end frame */
|
/* End table */
|
||||||
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
if (ICanViewRecords)
|
if (ICanViewRecords)
|
||||||
{
|
{
|
||||||
Lay_EndRoundFrameTableWithButton (Lay_CONFIRM_BUTTON,Txt_Show_records);
|
/* Send button */
|
||||||
Act_FormEnd ();
|
Lay_PutConfirmButton (Txt_Show_records);
|
||||||
}
|
|
||||||
else
|
|
||||||
Lay_EndRoundFrameTable ();
|
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
/* End form */
|
||||||
|
Act_FormEnd ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* End frame */
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -308,7 +308,6 @@ unsigned Usr_GetColumnsForSelectUsrs (void);
|
||||||
void Usr_PutExtraParamsUsrList (Act_Action_t NextAction);
|
void Usr_PutExtraParamsUsrList (Act_Action_t NextAction);
|
||||||
void Usr_ListUsersToSelect (Rol_Role_t Role);
|
void Usr_ListUsersToSelect (Rol_Role_t Role);
|
||||||
|
|
||||||
void Usr_PutCheckboxListWithPhotos (void);
|
|
||||||
void Usr_ListAllDataGsts (void);
|
void Usr_ListAllDataGsts (void);
|
||||||
void Usr_ListAllDataStds (void);
|
void Usr_ListAllDataStds (void);
|
||||||
void Usr_ListUsrsForSelection (Rol_Role_t Role);
|
void Usr_ListUsrsForSelection (Rol_Role_t Role);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user