Version18.110

This commit is contained in:
Antonio Cañas Vargas 2019-04-11 09:55:35 +02:00
parent 80639a5934
commit 57edcf317b
23 changed files with 392 additions and 238 deletions

View File

@ -508,16 +508,16 @@ Assessment:
365. ActShoPrj Show project 365. ActShoPrj Show project
366. ActReqAddStdPrj Request adding a student to a project 366. ActReqAddStdPrj Request adding a student to a project
367. ActReqAddTutPrj Request adding a tutor to a project 367. ActReqAddTutPrj Request adding a tutor to a project
368. ActReqAddEvaPrj Request adding an evaluator to a project 368. ActReqAddEvlPrj Request adding an evaluator to a project
369. ActAddStdPrj Add a student to a project 369. ActAddStdPrj Add a student to a project
370. ActAddTutPrj Add a tutor to a project 370. ActAddTutPrj Add a tutor to a project
371. ActAddEvaPrj Add an evaluator to a project 371. ActAddEvlPrj Add an evaluator to a project
372. ActReqRemStdPrj Request removing a student from a project 372. ActReqRemStdPrj Request removing a student from a project
373. ActReqRemTutPrj Request removing a tutor from a project 373. ActReqRemTutPrj Request removing a tutor from a project
374. ActReqRemEvaPrj Request removing an evaluator from a project 374. ActReqRemEvlPrj Request removing an evaluator from a project
375. ActRemStdPrj Remove a student from a project 375. ActRemStdPrj Remove a student from a project
376. ActRemTutPrj Remove a tutor from a project 376. ActRemTutPrj Remove a tutor from a project
377. ActRemEvaPrj Remove an emulator from a project 377. ActRemEvlPrj Remove an emulator from a project
378. ActAdmDocPrj Admin. project documents 378. ActAdmDocPrj Admin. project documents
379. ActReqRemFilDocPrj Request removal of a file from project documents 379. ActReqRemFilDocPrj Request removal of a file from project documents
@ -2042,18 +2042,18 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActRemPrj */{1681,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemoveProject ,NULL}, /* ActRemPrj */{1681,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemoveProject ,NULL},
/* ActHidPrj */{1682,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_HideProject ,NULL}, /* ActHidPrj */{1682,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_HideProject ,NULL},
/* ActShoPrj */{1683,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ShowProject ,NULL}, /* ActShoPrj */{1683,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ShowProject ,NULL},
/* ActReqAddStdPrj */{1684,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddStd ,NULL}, /* ActReqAddStdPrj */{1684,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddStds ,NULL},
/* ActReqAddTutPrj */{1685,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddTut ,NULL}, /* ActReqAddTutPrj */{1685,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddTuts ,NULL},
/* ActReqAddEvaPrj */{1686,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddEva ,NULL}, /* ActReqAddEvlPrj */{1686,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddEvls ,NULL},
/* ActAddStdPrj */{1687,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddStd ,NULL}, /* ActAddStdPrj */{1687,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_GetSelectedUsrsAndAddStds ,NULL},
/* ActAddTutPrj */{1688,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddTut ,NULL}, /* ActAddTutPrj */{1688,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_GetSelectedUsrsAndAddTuts ,NULL},
/* ActAddEvaPrj */{1689,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddEva ,NULL}, /* ActAddEvlPrj */{1689,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_GetSelectedUsrsAndAddEvls ,NULL},
/* ActReqRemStdPrj */{1690,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemStd ,NULL}, /* ActReqRemStdPrj */{1690,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemStd ,NULL},
/* ActReqRemTutPrj */{1691,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemTut ,NULL}, /* ActReqRemTutPrj */{1691,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemTut ,NULL},
/* ActReqRemEvaPrj */{1692,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemEva ,NULL}, /* ActReqRemEvlPrj */{1692,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemEvl ,NULL},
/* ActRemStdPrj */{1693,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemStd ,NULL}, /* ActRemStdPrj */{1693,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemStd ,NULL},
/* ActRemTutPrj */{1694,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemTut ,NULL}, /* ActRemTutPrj */{1694,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemTut ,NULL},
/* ActRemEvaPrj */{1695,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemEva ,NULL}, /* ActRemEvlPrj */{1695,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemEvl ,NULL},
/* ActAdmDocPrj */{1697,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFileBrowserOrWorks ,NULL}, /* ActAdmDocPrj */{1697,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFileBrowserOrWorks ,NULL},
/* ActReqRemFilDocPrj*/{1698,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_AskRemFileFromTree ,NULL}, /* ActReqRemFilDocPrj*/{1698,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_AskRemFileFromTree ,NULL},
@ -4859,16 +4859,16 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActShoPrj, // #1683 ActShoPrj, // #1683
ActReqAddStdPrj, // #1684 ActReqAddStdPrj, // #1684
ActReqAddTutPrj, // #1685 ActReqAddTutPrj, // #1685
ActReqAddEvaPrj, // #1686 ActReqAddEvlPrj, // #1686
ActAddStdPrj, // #1687 ActAddStdPrj, // #1687
ActAddTutPrj, // #1688 ActAddTutPrj, // #1688
ActAddEvaPrj, // #1689 ActAddEvlPrj, // #1689
ActReqRemStdPrj, // #1690 ActReqRemStdPrj, // #1690
ActReqRemTutPrj, // #1691 ActReqRemTutPrj, // #1691
ActReqRemEvaPrj, // #1692 ActReqRemEvlPrj, // #1692
ActRemStdPrj, // #1693 ActRemStdPrj, // #1693
ActRemTutPrj, // #1694 ActRemTutPrj, // #1694
ActRemEvaPrj, // #1695 ActRemEvlPrj, // #1695
ActSeeTblAllPrj, // #1696 ActSeeTblAllPrj, // #1696
ActAdmDocPrj, // #1697 ActAdmDocPrj, // #1697
ActReqRemFilDocPrj, // #1698 ActReqRemFilDocPrj, // #1698

View File

@ -524,16 +524,16 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActShoPrj (ActChgCrsTT1stDay + 37) #define ActShoPrj (ActChgCrsTT1stDay + 37)
#define ActReqAddStdPrj (ActChgCrsTT1stDay + 38) #define ActReqAddStdPrj (ActChgCrsTT1stDay + 38)
#define ActReqAddTutPrj (ActChgCrsTT1stDay + 39) #define ActReqAddTutPrj (ActChgCrsTT1stDay + 39)
#define ActReqAddEvaPrj (ActChgCrsTT1stDay + 40) #define ActReqAddEvlPrj (ActChgCrsTT1stDay + 40)
#define ActAddStdPrj (ActChgCrsTT1stDay + 41) #define ActAddStdPrj (ActChgCrsTT1stDay + 41)
#define ActAddTutPrj (ActChgCrsTT1stDay + 42) #define ActAddTutPrj (ActChgCrsTT1stDay + 42)
#define ActAddEvaPrj (ActChgCrsTT1stDay + 43) #define ActAddEvlPrj (ActChgCrsTT1stDay + 43)
#define ActReqRemStdPrj (ActChgCrsTT1stDay + 44) #define ActReqRemStdPrj (ActChgCrsTT1stDay + 44)
#define ActReqRemTutPrj (ActChgCrsTT1stDay + 45) #define ActReqRemTutPrj (ActChgCrsTT1stDay + 45)
#define ActReqRemEvaPrj (ActChgCrsTT1stDay + 46) #define ActReqRemEvlPrj (ActChgCrsTT1stDay + 46)
#define ActRemStdPrj (ActChgCrsTT1stDay + 47) #define ActRemStdPrj (ActChgCrsTT1stDay + 47)
#define ActRemTutPrj (ActChgCrsTT1stDay + 48) #define ActRemTutPrj (ActChgCrsTT1stDay + 48)
#define ActRemEvaPrj (ActChgCrsTT1stDay + 49) #define ActRemEvlPrj (ActChgCrsTT1stDay + 49)
#define ActAdmDocPrj (ActChgCrsTT1stDay + 50) #define ActAdmDocPrj (ActChgCrsTT1stDay + 50)
#define ActReqRemFilDocPrj (ActChgCrsTT1stDay + 51) #define ActReqRemFilDocPrj (ActChgCrsTT1stDay + 51)

View File

@ -847,6 +847,11 @@ static void Att_GetAttEventDescriptionFromDB (long AttCod,char Description[Cns_M
/************** Write parameter with code of attendance event ****************/ /************** Write parameter with code of attendance event ****************/
/*****************************************************************************/ /*****************************************************************************/
void Att_PutParamSelectedAttCod (void)
{
Att_PutParamAttCod (Gbl.AttEvents.AttCod);
}
void Att_PutParamAttCod (long AttCod) void Att_PutParamAttCod (long AttCod)
{ {
Par_PutHiddenParamLong ("AttCod",AttCod); Par_PutHiddenParamLong ("AttCod",AttCod);
@ -1948,7 +1953,8 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
Hlp_USERS_Attendance,Box_NOT_CLOSABLE); Hlp_USERS_Attendance,Box_NOT_CLOSABLE);
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (ActSeeOneAtt,Grp_ONLY_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (ActSeeOneAtt,Att_PutParamSelectedAttCod,
Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
@ -2703,21 +2709,22 @@ void Usr_ReqListStdsAttendanceCrs (void)
NULL,Box_NOT_CLOSABLE); NULL,Box_NOT_CLOSABLE);
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (ActReqLstStdAtt,Grp_ONLY_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (ActReqLstStdAtt,Att_PutParamSelectedAttCod,
Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs) if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs)
{ {
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs,NULL)) if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs,NULL,NULL))
{ {
/***** Get list of selected users *****/ /***** Get list of selected users *****/
Usr_GetListsSelectedUsrsCods (); Usr_GetListsSelectedUsrsCods ();
/***** Draw a class photo with students of the course *****/ /***** Draw a class photo with students of the course *****/
/* Form to select type of list used for select several users */ /* Form to select type of list used for select several users */
Usr_ShowFormsToSelectUsrListType (ActReqLstStdAtt); Usr_ShowFormsToSelectUsrListType (ActReqLstStdAtt,NULL);
/* Start form */ /* Start form */
Frm_StartForm (ActSeeLstStdAtt); Frm_StartForm (ActSeeLstStdAtt);

View File

@ -81,6 +81,7 @@ void Att_RequestCreatOrEditAttEvent (void);
bool Att_GetDataOfAttEventByCod (struct AttendanceEvent *Att); bool Att_GetDataOfAttEventByCod (struct AttendanceEvent *Att);
void Att_FreeListAttEvents (void); void Att_FreeListAttEvents (void);
void Att_PutParamSelectedAttCod (void);
void Att_PutParamAttCod (long AttCod); void Att_PutParamAttCod (long AttCod);
long Att_GetParamAttCod (void); long Att_GetParamAttCod (void);

View File

@ -431,9 +431,6 @@ Lo de mutear anuncios, en principio prefiero hacer una opci
// TODO: Ver cómo recibir un fichero desde el cliente (SWADroid) en gsoap // TODO: Ver cómo recibir un fichero desde el cliente (SWADroid) en gsoap
// TODO: Pedro Villar Castro:
// Al asignar un TFG a alumnos, no escribir el DNI del alumno, sino escogerlo de una lista de entre los alumnos inscritos en la asignatura.
// TODO: Pedro Villar Castro: // TODO: Pedro Villar Castro:
// Bloquear individualmente la edición con una casilla de configuración para cada TFG, sólo el profesor de la asignatura (Perico) podría bloquear/desbloquear // Bloquear individualmente la edición con una casilla de configuración para cada TFG, sólo el profesor de la asignatura (Perico) podría bloquear/desbloquear
// Que haya una opción general que los bloquee todos y que los desbloquee todos // Que haya una opción general que los bloquee todos y que los desbloquee todos
@ -459,10 +456,14 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 18.109.2 (2019-04-10)" #define Log_PLATFORM_VERSION "SWAD 18.110 (2019-04-10)"
#define CSS_FILE "swad18.92.css" #define CSS_FILE "swad18.92.css"
#define JS_FILE "swad18.92.js" #define JS_FILE "swad18.92.js"
/* /*
Comprobar si Gbl.AttEvents.AttCodToEdit puede ser sustituido por Gbl.AttEvents.AttCod
Version 18.110: Apr 10, 2019 Code refactoring in selection of groups and users.
Adding multiple users ad once to a project, suggested by Pedro Villar Castro. (242563 lines)
Version 18.109.2: Apr 10, 2019 Code refactoring in selection of users to view homework. (242421 lines) Version 18.109.2: Apr 10, 2019 Code refactoring in selection of users to view homework. (242421 lines)
Version 18.109.1: Apr 10, 2019 A non-editing teacher can choose students with no groups of a type. (242406 lines) Version 18.109.1: Apr 10, 2019 A non-editing teacher can choose students with no groups of a type. (242406 lines)
Version 18.109: Apr 09, 2019 Code refactoring in edition of plugins. (242421 lines) Version 18.109: Apr 09, 2019 Code refactoring in edition of plugins. (242421 lines)

View File

@ -1042,7 +1042,7 @@ static void Fig_GetAndShowInstitutionsStats (void)
/***** Form to select type of list used to display degree photos *****/ /***** Form to select type of list used to display degree photos *****/
Usr_GetAndUpdatePrefsAboutUsrList (); Usr_GetAndUpdatePrefsAboutUsrList ();
Usr_ShowFormsToSelectUsrListType (ActSeeUseGbl); Usr_ShowFormsToSelectUsrListType (ActSeeUseGbl,Fig_PutHiddenParamFigures);
/***** Institutions ordered by number of centres *****/ /***** Institutions ordered by number of centres *****/
Fig_GetAndShowInssOrderedByNumCtrs (); Fig_GetAndShowInssOrderedByNumCtrs ();

View File

@ -1602,7 +1602,7 @@ void Brw_GetParAndInitFileBrowser (void)
case ActChgToSeeDocCrs: // Access to see a documents zone case ActChgToSeeDocCrs: // Access to see a documents zone
/* Set file browser type acording to last group accessed */ /* Set file browser type acording to last group accessed */
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_SHOW_DOC_GRP : Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_SHOW_DOC_GRP :
Brw_SHOW_DOC_CRS; Brw_SHOW_DOC_CRS;
break; break;
case ActSeeDocCrs: case ActSeeDocCrs:
case ActExpSeeDocCrs: case ActExpSeeDocCrs:
@ -1623,7 +1623,7 @@ void Brw_GetParAndInitFileBrowser (void)
case ActChgToAdmDocCrs: // Access to admin a documents zone case ActChgToAdmDocCrs: // Access to admin a documents zone
/* Set file browser type acording to last group accessed */ /* Set file browser type acording to last group accessed */
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_DOC_GRP : Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_DOC_GRP :
Brw_ADMI_DOC_CRS; Brw_ADMI_DOC_CRS;
break; break;
case ActAdmDocCrs: case ActAdmDocCrs:
case ActReqRemFilDocCrs: case ActReqRemFilDocCrs:
@ -1677,7 +1677,7 @@ void Brw_GetParAndInitFileBrowser (void)
case ActChgToAdmTch: // Access to a teachers zone from menu case ActChgToAdmTch: // Access to a teachers zone from menu
/* Set file browser type acording to last group accessed */ /* Set file browser type acording to last group accessed */
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_TCH_GRP : Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_TCH_GRP :
Brw_ADMI_TCH_CRS; Brw_ADMI_TCH_CRS;
break; break;
case ActAdmTchCrs: case ActAdmTchCrs:
case ActReqRemFilTchCrs: case ActReqRemFilTchCrs:
@ -1727,7 +1727,7 @@ void Brw_GetParAndInitFileBrowser (void)
case ActChgToAdmSha: // Access to a shared zone from menu case ActChgToAdmSha: // Access to a shared zone from menu
/* Set file browser type acording to last group accessed */ /* Set file browser type acording to last group accessed */
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_SHR_GRP : Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_SHR_GRP :
Brw_ADMI_SHR_CRS; Brw_ADMI_SHR_CRS;
break; break;
case ActAdmShaCrs: case ActAdmShaCrs:
case ActReqRemFilShaCrs: case ActReqRemFilShaCrs:
@ -1917,12 +1917,12 @@ void Brw_GetParAndInitFileBrowser (void)
case Rol_STD: case Rol_STD:
case Rol_NET: case Rol_NET:
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_SHOW_MRK_GRP : Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_SHOW_MRK_GRP :
Brw_SHOW_MRK_CRS; Brw_SHOW_MRK_CRS;
break; break;
case Rol_TCH: case Rol_TCH:
case Rol_SYS_ADM: case Rol_SYS_ADM:
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_MRK_GRP : Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_MRK_GRP :
Brw_ADMI_MRK_CRS; Brw_ADMI_MRK_CRS;
break; break;
default: default:
Lay_ShowErrorAndExit ("Wrong role."); Lay_ShowErrorAndExit ("Wrong role.");
@ -1932,7 +1932,7 @@ void Brw_GetParAndInitFileBrowser (void)
case ActChgToSeeMrk: // Access to see a marks zone case ActChgToSeeMrk: // Access to see a marks zone
/* Set file browser type acording to last group accessed */ /* Set file browser type acording to last group accessed */
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_SHOW_MRK_GRP : Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_SHOW_MRK_GRP :
Brw_SHOW_MRK_CRS; Brw_SHOW_MRK_CRS;
break; break;
case ActSeeMrkCrs: case ActSeeMrkCrs:
case ActExpSeeMrkCrs: case ActExpSeeMrkCrs:
@ -1951,7 +1951,7 @@ void Brw_GetParAndInitFileBrowser (void)
case ActChgToAdmMrk: // Access to admin a marks zone case ActChgToAdmMrk: // Access to admin a marks zone
/* Set file browser type acording to last group accessed */ /* Set file browser type acording to last group accessed */
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_MRK_GRP : Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_MRK_GRP :
Brw_ADMI_MRK_CRS; Brw_ADMI_MRK_CRS;
break; break;
case ActAdmMrkCrs: case ActAdmMrkCrs:
case ActReqRemFilMrkCrs: case ActReqRemFilMrkCrs:
@ -3057,7 +3057,8 @@ void Brw_AskEditWorksCrs (void)
Brw_GetParAndInitFileBrowser (); Brw_GetParAndInitFileBrowser ();
/***** List users to select some of them *****/ /***** List users to select some of them *****/
Usr_PutFormToSelectUsrsToGoToAct (ActReqAsgWrkCrs, Usr_PutFormToSelectUsrsToGoToAct (ActReqAsgWrkCrs,NULL, // Current action
ActAdmAsgWrkCrs,NULL, // Next action
Hlp_FILES_Homework_for_teachers, Hlp_FILES_Homework_for_teachers,
Txt_View_homework); Txt_View_homework);
} }
@ -3408,24 +3409,8 @@ static void Brw_ShowDataOwnerAsgWrk (struct UsrData *UsrDat)
void Brw_GetSelectedUsrsAndShowWorks (void) void Brw_GetSelectedUsrsAndShowWorks (void)
{ {
extern const char *Txt_You_must_select_one_ore_more_users; Usr_GetSelectedUsrsAndGoToAct (Brw_ShowFileBrowserOrWorks, // when user(s) selected
Brw_AskEditWorksCrs); // when no user selected
/***** Get lists of the selected users if not already got *****/
Usr_GetListsSelectedUsrsCods ();
/***** Check the number of users whose works will be shown *****/
if (Usr_CountNumUsrsInListOfSelectedUsrs ()) // If some users are selected...
Brw_ShowFileBrowserOrWorks ();
else // If no users are selected...
{
// ...write warning alert
Ale_ShowAlert (Ale_WARNING,Txt_You_must_select_one_ore_more_users);
// ...and show again the form
Brw_AskEditWorksCrs ();
}
/***** Free memory used by list of selected users' codes *****/
Usr_FreeListsSelectedUsrsCods ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -11648,7 +11633,7 @@ static bool Brw_CheckIfICanViewProjectDocuments (Prj_RoleInProject_t MyRoleInPro
return false; return false;
case Prj_ROLE_STD: case Prj_ROLE_STD:
case Prj_ROLE_TUT: case Prj_ROLE_TUT:
case Prj_ROLE_EVA: case Prj_ROLE_EVL:
return true; return true;
} }
break; break;
@ -11677,7 +11662,7 @@ static bool Brw_CheckIfICanViewProjectAssessment (Prj_RoleInProject_t MyRoleInPr
case Prj_ROLE_STD: // Students can not view or edit project assessment case Prj_ROLE_STD: // Students can not view or edit project assessment
return false; return false;
case Prj_ROLE_TUT: case Prj_ROLE_TUT:
case Prj_ROLE_EVA: case Prj_ROLE_EVL:
return true; return true;
} }
break; break;
@ -11710,7 +11695,7 @@ static bool Brw_CheckIfICanModifyPrjDocFileOrFolder (void)
return false; return false;
case Prj_ROLE_STD: case Prj_ROLE_STD:
case Prj_ROLE_TUT: case Prj_ROLE_TUT:
case Prj_ROLE_EVA: case Prj_ROLE_EVL:
return (Gbl.Usrs.Me.UsrDat.UsrCod == Brw_GetPublisherOfSubtree ()); // Am I the publisher of subtree? return (Gbl.Usrs.Me.UsrDat.UsrCod == Brw_GetPublisherOfSubtree ()); // Am I the publisher of subtree?
} }
break; break;
@ -11743,7 +11728,7 @@ static bool Brw_CheckIfICanModifyPrjAssFileOrFolder (void)
case Prj_ROLE_STD: // Students can not view or edit project assessment case Prj_ROLE_STD: // Students can not view or edit project assessment
return false; return false;
case Prj_ROLE_TUT: case Prj_ROLE_TUT:
case Prj_ROLE_EVA: case Prj_ROLE_EVL:
return (Gbl.Usrs.Me.UsrDat.UsrCod == Brw_GetPublisherOfSubtree ()); // Am I the publisher of subtree? return (Gbl.Usrs.Me.UsrDat.UsrCod == Brw_GetPublisherOfSubtree ()); // Am I the publisher of subtree?
} }
break; break;

View File

@ -359,7 +359,7 @@ static void Grp_PutIconToCreateNewGroup (void)
/*************** Show form to select one or several groups *******************/ /*************** Show form to select one or several groups *******************/
/*****************************************************************************/ /*****************************************************************************/
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction, void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,void (*FuncParams) (),
Grp_WhichGroups_t GroupsSelectableByStdsOrNETs) Grp_WhichGroups_t GroupsSelectableByStdsOrNETs)
{ {
extern const char *Hlp_USERS_Groups; extern const char *Hlp_USERS_Groups;
@ -385,9 +385,8 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
depending on the groups selected *****/ depending on the groups selected *****/
Frm_StartFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID); Frm_StartFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID);
Usr_PutParamsPrefsAboutUsrList (); Usr_PutParamsPrefsAboutUsrList ();
if (FuncParams)
/***** Put parameters needed depending on the action *****/ FuncParams ();
Usr_PutExtraParamsUsrList (NextAction);
/***** Select all groups *****/ /***** Select all groups *****/
Grp_PutCheckboxAllGrps (GroupsSelectableByStdsOrNETs); Grp_PutCheckboxAllGrps (GroupsSelectableByStdsOrNETs);

View File

@ -147,8 +147,8 @@ typedef enum
void Grp_WriteNamesOfSelectedGrps (void); void Grp_WriteNamesOfSelectedGrps (void);
void Grp_ReqEditGroups (void); void Grp_ReqEditGroups (void);
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction, void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,void (*FuncParams) (),
Grp_WhichGroups_t GroupsSelectable); Grp_WhichGroups_t GroupsSelectableByStdsOrNETs);
void Grp_PutParamsCodGrps (void); void Grp_PutParamsCodGrps (void);
void Grp_GetParCodsSeveralGrpsToShowUsrs (void); void Grp_GetParCodsSeveralGrpsToShowUsrs (void);
void Grp_GetParCodsSeveralGrps (void); void Grp_GetParCodsSeveralGrps (void);

View File

@ -906,14 +906,15 @@ void Mai_ListEmails (void)
Hlp_MESSAGES_Email,Box_NOT_CLOSABLE); Hlp_MESSAGES_Email,Box_NOT_CLOSABLE);
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (ActMaiStd,Grp_ONLY_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (ActMaiStd,NULL,
Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs) if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs)
{ {
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs,NULL)) if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs,NULL,NULL))
{ {
/***** Initialize structure with user's data *****/ /***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);

View File

@ -240,7 +240,7 @@ static void Msg_PutFormMsgUsrs (char Content[Cns_MAX_BYTES_LONG_TEXT + 1])
if (GetUsrsInCrs) if (GetUsrsInCrs)
{ {
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr, Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr,Msg_PutParamsWriteMsg,
Grp_ONLY_MY_GROUPS); Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
@ -249,13 +249,15 @@ static void Msg_PutFormMsgUsrs (char Content[Cns_MAX_BYTES_LONG_TEXT + 1])
if (NumUsrsInCrs) if (NumUsrsInCrs)
{ {
/***** Form to select type of list used for select several users *****/ /***** Form to select type of list used for select several users *****/
Usr_ShowFormsToSelectUsrListType (ActReqMsgUsr); Usr_ShowFormsToSelectUsrListType (ActReqMsgUsr,Msg_PutParamsWriteMsg);
/***** Put link to register students *****/ /***** Put link to register students *****/
Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (); Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs ();
/***** Check if it's a big list *****/ /***** Check if it's a big list *****/
ShowUsrsInCrs = Usr_GetIfShowBigList (NumUsrsInCrs,"CopyMessageToHiddenFields();"); ShowUsrsInCrs = Usr_GetIfShowBigList (NumUsrsInCrs,
Msg_PutParamsWriteMsg,
"CopyMessageToHiddenFields();");
if (ShowUsrsInCrs) if (ShowUsrsInCrs)
/***** Get lists of selected users *****/ /***** Get lists of selected users *****/
@ -388,6 +390,28 @@ static void Msg_PutParamsShowMorePotentialRecipients (void)
Msg_PutHiddenParamsSubjectAndContent (); Msg_PutHiddenParamsSubjectAndContent ();
} }
/*****************************************************************************/
/***************** Put parameters when writing a message *********************/
/*****************************************************************************/
void Msg_PutParamsWriteMsg (void)
{
Usr_PutHiddenParUsrCodAll (ActReqMsgUsr,Gbl.Usrs.Selected.List[Rol_UNK]);
Msg_PutHiddenParamOtherRecipients ();
Msg_PutHiddenParamsSubjectAndContent ();
if (Gbl.Msg.Reply.IsReply)
{
Par_PutHiddenParamChar ("IsReply",'Y');
Msg_PutHiddenParamMsgCod (Gbl.Msg.Reply.OriginalMsgCod);
}
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
{
Usr_PutParamOtherUsrCodEncrypted ();
if (Gbl.Msg.ShowOnlyOneRecipient)
Par_PutHiddenParamChar ("ShowOnlyOneRecipient",'Y');
}
}
/*****************************************************************************/ /*****************************************************************************/
/********** Put hidden parameters with message subject and content ***********/ /********** Put hidden parameters with message subject and content ***********/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -59,6 +59,7 @@ typedef enum
/*****************************************************************************/ /*****************************************************************************/
void Msg_FormMsgUsrs (void); void Msg_FormMsgUsrs (void);
void Msg_PutParamsWriteMsg (void);
void Msg_PutHiddenParamsSubjectAndContent (void); void Msg_PutHiddenParamsSubjectAndContent (void);
void Msg_PutHiddenParamAnotherRecipient (const struct UsrData *UsrDat); void Msg_PutHiddenParamAnotherRecipient (const struct UsrData *UsrDat);
void Msg_PutHiddenParamOtherRecipients (void); void Msg_PutHiddenParamOtherRecipients (void);

View File

@ -1761,6 +1761,17 @@ void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
Box_EndBox (); Box_EndBox ();
} }
/*****************************************************************************/
/**************** Put parameter for degree average photos ********************/
/*****************************************************************************/
void Pho_PutParamsDegPhoto ()
{
Pho_PutHiddenParamTypeOfAvg ();
Pho_PutHiddenParamPhotoSize ();
Pho_PutHiddenParamOrderDegrees ();
}
/*****************************************************************************/ /*****************************************************************************/
/******************* Put a selector for the type of average ******************/ /******************* Put a selector for the type of average ******************/
/*****************************************************************************/ /*****************************************************************************/
@ -2106,7 +2117,7 @@ static void Pho_ShowOrPrintClassPhotoDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrin
{ {
/***** Form to select type of list used to display degree photos *****/ /***** Form to select type of list used to display degree photos *****/
if (SeeOrPrint == Pho_DEGREES_SEE) if (SeeOrPrint == Pho_DEGREES_SEE)
Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg); Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg,Pho_PutParamsDegPhoto);
Tbl_StartTableCenter (0); Tbl_StartTableCenter (0);
/***** Get and print degrees *****/ /***** Get and print degrees *****/
@ -2187,7 +2198,7 @@ static void Pho_ShowOrPrintListDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
/***** Class photo start *****/ /***** Class photo start *****/
if (SeeOrPrint == Pho_DEGREES_SEE) if (SeeOrPrint == Pho_DEGREES_SEE)
/***** Form to select type of list used to display degree photos *****/ /***** Form to select type of list used to display degree photos *****/
Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg); Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg,Pho_PutParamsDegPhoto);
/***** Write heading *****/ /***** Write heading *****/
Tbl_StartTableCenter (2); Tbl_StartTableCenter (2);

View File

@ -120,6 +120,8 @@ void Pho_RemoveObsoleteStatDegrees (void);
void Pho_ShowPhotoDegree (void); void Pho_ShowPhotoDegree (void);
void Pho_PrintPhotoDegree (void); void Pho_PrintPhotoDegree (void);
void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint); void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint);
void Pho_PutParamsDegPhoto ();
void Pho_PutHiddenParamTypeOfAvg (void); void Pho_PutHiddenParamTypeOfAvg (void);
void Pho_PutHiddenParamPhotoSize (void); void Pho_PutHiddenParamPhotoSize (void);
void Pho_PutHiddenParamOrderDegrees (void); void Pho_PutHiddenParamOrderDegrees (void);

View File

@ -75,7 +75,7 @@ static const Prj_RoleInProject_t Prj_RolesToShow[] =
{ {
Prj_ROLE_TUT, // Tutor Prj_ROLE_TUT, // Tutor
Prj_ROLE_STD, // Student Prj_ROLE_STD, // Student
Prj_ROLE_EVA, // Evaluator Prj_ROLE_EVL, // Evaluator
}; };
static const unsigned Brw_NUM_ROLES_TO_SHOW = sizeof (Prj_RolesToShow) / static const unsigned Brw_NUM_ROLES_TO_SHOW = sizeof (Prj_RolesToShow) /
sizeof (Prj_RolesToShow[0]); sizeof (Prj_RolesToShow[0]);
@ -159,8 +159,11 @@ static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
static Prj_RoleInProject_t Prj_ConvertUnsignedStrToRoleInProject (const char *UnsignedStr); static Prj_RoleInProject_t Prj_ConvertUnsignedStrToRoleInProject (const char *UnsignedStr);
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject); static void Prj_ReqAddUsrs (Prj_RoleInProject_t RoleInProject);
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject); static void Prj_AddStds (void);
static void Prj_AddTuts (void);
static void Prj_AddEvls (void);
static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject);
static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject); static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject); static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
@ -1553,7 +1556,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
extern const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT];
extern const char *Txt_Remove; extern const char *Txt_Remove;
extern const char *Txt_Add_USER; extern const char *Txt_Add_USER;
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
bool WriteRow; bool WriteRow;
@ -1566,14 +1569,14 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
ActUnk, // Prj_ROLE_UNK, Unknown ActUnk, // Prj_ROLE_UNK, Unknown
ActReqRemStdPrj, // Prj_ROLE_STD, Student ActReqRemStdPrj, // Prj_ROLE_STD, Student
ActReqRemTutPrj, // Prj_ROLE_TUT, Tutor ActReqRemTutPrj, // Prj_ROLE_TUT, Tutor
ActReqRemEvaPrj, // Prj_ROLE_EVA, Evaluator ActReqRemEvlPrj, // Prj_ROLE_EVL, Evaluator
}; };
static const Act_Action_t ActionReqAddUsr[Prj_NUM_ROLES_IN_PROJECT] = static const Act_Action_t ActionReqAddUsr[Prj_NUM_ROLES_IN_PROJECT] =
{ {
ActUnk, // Prj_ROLE_UNK, Unknown ActUnk, // Prj_ROLE_UNK, Unknown
ActReqAddStdPrj, // Prj_ROLE_STD, Student ActReqAddStdPrj, // Prj_ROLE_STD, Student
ActReqAddTutPrj, // Prj_ROLE_TUT, Tutor ActReqAddTutPrj, // Prj_ROLE_TUT, Tutor
ActReqAddEvaPrj, // Prj_ROLE_EVA, Evaluator ActReqAddEvlPrj, // Prj_ROLE_EVL, Evaluator
}; };
/***** Get users in project from database *****/ /***** Get users in project from database *****/
@ -1698,7 +1701,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter
snprintf (Gbl.Title,sizeof (Gbl.Title), snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Add_USER, Txt_Add_USER,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]); Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]);
Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInProject],NULL, Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInProject],NULL,
Prj_PutCurrentParams, Prj_PutCurrentParams,
Gbl.Title); Gbl.Title);
@ -1854,129 +1857,156 @@ static Prj_RoleInProject_t Prj_ConvertUnsignedStrToRoleInProject (const char *Un
} }
/*****************************************************************************/ /*****************************************************************************/
/*** Request another user's ID, @nickname or email to add user to project ****/ /******************* Request users to be added to project ********************/
/*****************************************************************************/ /*****************************************************************************/
void Prj_ReqAddStd (void) void Prj_ReqAddStds (void)
{ {
Prj_ReqAnotherUsrID (Prj_ROLE_STD); Prj_ReqAddUsrs (Prj_ROLE_STD);
} }
void Prj_ReqAddTut (void) void Prj_ReqAddTuts (void)
{ {
Prj_ReqAnotherUsrID (Prj_ROLE_TUT); Prj_ReqAddUsrs (Prj_ROLE_TUT);
} }
void Prj_ReqAddEva (void) void Prj_ReqAddEvls (void)
{ {
Prj_ReqAnotherUsrID (Prj_ROLE_EVA); Prj_ReqAddUsrs (Prj_ROLE_EVL);
} }
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject) static void Prj_ReqAddUsrs (Prj_RoleInProject_t RoleInProject)
{ {
extern const char *Hlp_ASSESSMENT_Projects_add_user; extern const char *Hlp_ASSESSMENT_Projects_add_user;
extern const char *Txt_Add_USER; extern const char *Txt_Add_USER;
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT];
static Act_Action_t ActionAddUsr[Prj_NUM_ROLES_IN_PROJECT] = static Act_Action_t ActionAddUsr[Prj_NUM_ROLES_IN_PROJECT] =
{ {
ActUnk, // Prj_ROLE_UNK, Unknown ActUnk, // Prj_ROLE_UNK, Unknown
ActAddStdPrj, // Prj_ROLE_STD, Student ActAddStdPrj, // Prj_ROLE_STD, Student
ActAddTutPrj, // Prj_ROLE_TUT, Tutor ActAddTutPrj, // Prj_ROLE_TUT, Tutor
ActAddEvaPrj, // Prj_ROLE_EVA, Evaluator ActAddEvlPrj, // Prj_ROLE_EVL, Evaluator
}; };
char TxtButton[Lay_MAX_BYTES_TITLE + 1];
/***** Get project code *****/ /***** Get project code *****/
if ((Gbl.Prjs.PrjCod = Prj_GetParamPrjCod ()) == -1L) if ((Gbl.Prjs.PrjCod = Prj_GetParamPrjCod ()) == -1L)
Lay_ShowErrorAndExit ("Code of project is missing."); Lay_ShowErrorAndExit ("Code of project is missing.");
/***** Start box *****/ /***** Put form to select users *****/
snprintf (Gbl.Title,sizeof (Gbl.Title), snprintf (TxtButton,sizeof (TxtButton),
Txt_Add_USER, Txt_Add_USER,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]); Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]);
Box_StartBox (NULL,Gbl.Title,NULL, Usr_PutFormToSelectUsrsToGoToAct (Gbl.Action.Act,Prj_PutCurrentParams, // Current action
Hlp_ASSESSMENT_Projects_add_user,Box_NOT_CLOSABLE); ActionAddUsr[RoleInProject],Prj_PutCurrentParams, // Next action
Hlp_ASSESSMENT_Projects_add_user,
TxtButton);
/***** Start box *****/
// snprintf (Gbl.Title,sizeof (Gbl.Title),
// Txt_Add_USER,
// Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
// Box_StartBox (NULL,Gbl.Title,NULL,
// Hlp_ASSESSMENT_Projects_add_user,Box_NOT_CLOSABLE);
/***** Write form to request another user's ID *****/ /***** Write form to request another user's ID *****/
Enr_WriteFormToReqAnotherUsrID (ActionAddUsr[RoleInProject],Prj_PutCurrentParams); // Enr_WriteFormToReqAnotherUsrID (ActionAddUsr[RoleInProject],Prj_PutCurrentParams);
/***** End box *****/ /***** End box *****/
Box_EndBox (); // Box_EndBox ();
/***** Put a form to create/edit project *****/ /***** Put a form to create/edit project *****/
Prj_RequestCreatOrEditPrj (Gbl.Prjs.PrjCod); Prj_RequestCreatOrEditPrj (Gbl.Prjs.PrjCod);
} }
/*****************************************************************************/ /*****************************************************************************/
/**************************** Add user to project ****************************/ /******* Get and check list of selected users, and show users' works ********/
/*****************************************************************************/ /*****************************************************************************/
void Prj_AddStd (void) void Prj_GetSelectedUsrsAndAddStds (void)
{ {
Prj_AddUsrToProject (Prj_ROLE_STD); Usr_GetSelectedUsrsAndGoToAct (Prj_AddStds, // when user(s) selected
Prj_ReqAddStds); // when no user selected
} }
void Prj_AddTut (void) void Prj_GetSelectedUsrsAndAddTuts (void)
{ {
Prj_AddUsrToProject (Prj_ROLE_TUT); Usr_GetSelectedUsrsAndGoToAct (Prj_AddTuts, // when user(s) selected
Prj_ReqAddTuts); // when no user selected
} }
void Prj_AddEva (void) void Prj_GetSelectedUsrsAndAddEvls (void)
{ {
Prj_AddUsrToProject (Prj_ROLE_EVA); Usr_GetSelectedUsrsAndGoToAct (Prj_AddEvls, // when user(s) selected
Prj_ReqAddEvls); // when no user selected
} }
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject) /*****************************************************************************/
/**************************** Add users to project ***************************/
/*****************************************************************************/
static void Prj_AddStds (void)
{
Prj_AddUsrsToProject (Prj_ROLE_STD);
}
static void Prj_AddTuts (void)
{
Prj_AddUsrsToProject (Prj_ROLE_TUT);
}
static void Prj_AddEvls (void)
{
Prj_AddUsrsToProject (Prj_ROLE_EVL);
}
static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject)
{ {
extern const char *Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project; extern const char *Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project;
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
long PrjCod; long PrjCod;
struct ListUsrCods ListUsrCods; const char *Ptr;
unsigned NumUsr;
bool ItsMe; bool ItsMe;
/***** Get project code *****/ /***** Get project code *****/
if ((PrjCod = Prj_GetParamPrjCod ()) == -1L) if ((PrjCod = Prj_GetParamPrjCod ()) == -1L)
Lay_ShowErrorAndExit ("Code of project is missing."); Lay_ShowErrorAndExit ("Code of project is missing.");
/***** Use user's ID to identify the user(s) to be enroled /removed *****/ /***** Add the selected users to project *****/
Usr_GetParamOtherUsrIDNickOrEMailAndGetUsrCods (&ListUsrCods); Ptr = Gbl.Usrs.Selected.List[Rol_UNK];
while (*Ptr)
if (ListUsrCods.NumUsrs) // User(s) found with the ID
{ {
/***** For each user found... *****/ /* Get next user */
for (NumUsr = 0; Par_GetNextStrUntilSeparParamMult (&Ptr,Gbl.Usrs.Other.UsrDat.EncryptedUsrCod,
NumUsr < ListUsrCods.NumUsrs; Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64);
NumUsr++) Usr_GetUsrCodFromEncryptedUsrCod (&Gbl.Usrs.Other.UsrDat);
{
/* Get user's data */
Gbl.Usrs.Other.UsrDat.UsrCod = ListUsrCods.Lst[NumUsr];
Usr_GetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Usr_DONT_GET_PREFS);
/* Get user's data */
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Usr_DONT_GET_PREFS)) // Get of the database the data of the user
{
/* Add user to project */ /* Add user to project */
DB_QueryREPLACE ("can not add user to project", DB_QueryREPLACE ("can not add user to project",
"REPLACE INTO prj_usr" "REPLACE INTO prj_usr"
" (PrjCod,RoleInProject,UsrCod)" " (PrjCod,RoleInProject,UsrCod)"
" VALUES" " VALUES"
" (%ld,%u,%ld)", " (%ld,%u,%ld)",
PrjCod,(unsigned) RoleInProject, PrjCod,(unsigned) RoleInProject,
Gbl.Usrs.Other.UsrDat.UsrCod); Gbl.Usrs.Other.UsrDat.UsrCod);
/***** Flush cache *****/ /* Flush cache */
ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
if (ItsMe) if (ItsMe)
Prj_FlushCacheMyRoleInProject (); Prj_FlushCacheMyRoleInProject ();
/* Show success alert */ /* Show success alert */
Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project, Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project,
Gbl.Usrs.Other.UsrDat.FullName, Gbl.Usrs.Other.UsrDat.FullName,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]); Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
} }
/***** Free list of users' codes *****/
Usr_FreeListUsrCods (&ListUsrCods);
} }
else // No users found
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission (); /***** Free memory used by list of selected users' codes *****/
Usr_FreeListsSelectedUsrsCods ();
/***** Put form to edit project again *****/ /***** Put form to edit project again *****/
Prj_RequestCreatOrEditPrj (PrjCod); Prj_RequestCreatOrEditPrj (PrjCod);
@ -1996,9 +2026,9 @@ void Prj_ReqRemTut (void)
Prj_ReqRemUsrFromPrj (Prj_ROLE_TUT); Prj_ReqRemUsrFromPrj (Prj_ROLE_TUT);
} }
void Prj_ReqRemEva (void) void Prj_ReqRemEvl (void)
{ {
Prj_ReqRemUsrFromPrj (Prj_ROLE_EVA); Prj_ReqRemUsrFromPrj (Prj_ROLE_EVL);
} }
static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject) static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
@ -2013,7 +2043,7 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
ActUnk, // Prj_ROLE_UNK, Unknown ActUnk, // Prj_ROLE_UNK, Unknown
ActRemStdPrj, // Prj_ROLE_STD, Student ActRemStdPrj, // Prj_ROLE_STD, Student
ActRemTutPrj, // Prj_ROLE_TUT, Tutor ActRemTutPrj, // Prj_ROLE_TUT, Tutor
ActRemEvaPrj, // Prj_ROLE_EVA, Evaluator ActRemEvlPrj, // Prj_ROLE_EVL, Evaluator
}; };
struct Project Prj; struct Project Prj;
bool ItsMe; bool ItsMe;
@ -2084,9 +2114,9 @@ void Prj_RemTut (void)
Prj_RemUsrFromPrj (Prj_ROLE_TUT); Prj_RemUsrFromPrj (Prj_ROLE_TUT);
} }
void Prj_RemEva (void) void Prj_RemEvl (void)
{ {
Prj_RemUsrFromPrj (Prj_ROLE_EVA); Prj_RemUsrFromPrj (Prj_ROLE_EVL);
} }
static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject) static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
@ -2221,7 +2251,7 @@ bool Prj_CheckIfICanViewProjectFiles (Prj_RoleInProject_t MyRoleInProject)
return false; return false;
case Prj_ROLE_STD: case Prj_ROLE_STD:
case Prj_ROLE_TUT: case Prj_ROLE_TUT:
case Prj_ROLE_EVA: case Prj_ROLE_EVL:
return true; return true;
} }
return false; return false;

View File

@ -113,7 +113,7 @@ typedef enum
Prj_ROLE_UNK = 0, // Unknown Prj_ROLE_UNK = 0, // Unknown
Prj_ROLE_STD = 1, // Student Prj_ROLE_STD = 1, // Student
Prj_ROLE_TUT = 2, // Tutor Prj_ROLE_TUT = 2, // Tutor
Prj_ROLE_EVA = 3, // Evaluator Prj_ROLE_EVL = 3, // Evaluator
} Prj_RoleInProject_t; } Prj_RoleInProject_t;
/***** Struct to store a project *****/ /***** Struct to store a project *****/
@ -154,21 +154,21 @@ void Prj_PrintOneProject (void);
void Prj_FlushCacheMyRoleInProject (void); void Prj_FlushCacheMyRoleInProject (void);
Prj_RoleInProject_t Prj_GetMyRoleInProject (long PrjCod); Prj_RoleInProject_t Prj_GetMyRoleInProject (long PrjCod);
void Prj_ReqAddStd (void); void Prj_ReqAddStds (void);
void Prj_ReqAddTut (void); void Prj_ReqAddTuts (void);
void Prj_ReqAddEva (void); void Prj_ReqAddEvls (void);
void Prj_AddStd (void); void Prj_GetSelectedUsrsAndAddStds (void);
void Prj_AddTut (void); void Prj_GetSelectedUsrsAndAddTuts (void);
void Prj_AddEva (void); void Prj_GetSelectedUsrsAndAddEvls (void);
void Prj_ReqRemStd (void); void Prj_ReqRemStd (void);
void Prj_ReqRemTut (void); void Prj_ReqRemTut (void);
void Prj_ReqRemEva (void); void Prj_ReqRemEvl (void);
void Prj_RemStd (void); void Prj_RemStd (void);
void Prj_RemTut (void); void Prj_RemTut (void);
void Prj_RemEva (void); void Prj_RemEvl (void);
void Prj_PutHiddenParamPrjOrder (void); void Prj_PutHiddenParamPrjOrder (void);

View File

@ -169,6 +169,11 @@ void Sco_PutSelectorScope (const char *ParamName,bool SendOnChange)
/********************** Put hidden parameter scope ***************************/ /********************** Put hidden parameter scope ***************************/
/*****************************************************************************/ /*****************************************************************************/
void Sco_PutParamCurrentScope (void)
{
Sco_PutParamScope ("ScopeUsr",Gbl.Scope.Current);
}
void Sco_PutParamScope (const char *ParamName,Hie_Level_t Scope) void Sco_PutParamScope (const char *ParamName,Hie_Level_t Scope)
{ {
Par_PutHiddenParamUnsigned (ParamName,(unsigned) Scope); Par_PutHiddenParamUnsigned (ParamName,(unsigned) Scope);

View File

@ -44,6 +44,7 @@
/*****************************************************************************/ /*****************************************************************************/
void Sco_PutSelectorScope (const char *ParamName,bool SendOnChange); void Sco_PutSelectorScope (const char *ParamName,bool SendOnChange);
void Sco_PutParamCurrentScope (void);
void Sco_PutParamScope (const char *ParamName,Hie_Level_t Scope); void Sco_PutParamScope (const char *ParamName,Hie_Level_t Scope);
void Sco_GetScope (const char *ParamName); void Sco_GetScope (const char *ParamName);
void Sco_AdjustScope (void); void Sco_AdjustScope (void);

View File

@ -350,17 +350,18 @@ void Sta_AskShowCrsHits (void)
Hlp_ANALYTICS_Visits_visits_to_course,Box_NOT_CLOSABLE); Hlp_ANALYTICS_Visits_visits_to_course,Box_NOT_CLOSABLE);
/***** Show form to select the groups *****/ /***** Show form to select the groups *****/
Grp_ShowFormToSelectSeveralGroups (ActReqAccCrs,Grp_ONLY_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (ActReqAccCrs,NULL,
Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
if (NumTotalUsrs) if (NumTotalUsrs)
{ {
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL)) if (Usr_GetIfShowBigList (NumTotalUsrs,NULL,NULL))
{ {
/***** Form to select type of list used for select several users *****/ /***** Form to select type of list used for select several users *****/
Usr_ShowFormsToSelectUsrListType (ActReqAccCrs); Usr_ShowFormsToSelectUsrListType (ActReqAccCrs,NULL);
/***** Put link to register students *****/ /***** Put link to register students *****/
Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (); Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs ();

View File

@ -7329,17 +7329,18 @@ void Tst_SelUsrsToSeeUsrsTestResults (void)
Hlp_ASSESSMENT_Tests_test_results,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Tests_test_results,Box_NOT_CLOSABLE);
/***** Show form to select the groups *****/ /***** Show form to select the groups *****/
Grp_ShowFormToSelectSeveralGroups (ActReqSeeUsrTstRes,Grp_ONLY_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (ActReqSeeUsrTstRes,NULL,
Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
if (NumTotalUsrs) if (NumTotalUsrs)
{ {
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL)) if (Usr_GetIfShowBigList (NumTotalUsrs,NULL,NULL))
{ {
/***** Form to select type of list used for select several users *****/ /***** Form to select type of list used for select several users *****/
Usr_ShowFormsToSelectUsrListType (ActReqSeeUsrTstRes); Usr_ShowFormsToSelectUsrListType (ActReqSeeUsrTstRes,NULL);
/***** Start form *****/ /***** Start form *****/
Frm_StartForm (ActSeeUsrTstRes); Frm_StartForm (ActSeeUsrTstRes);

View File

@ -30098,7 +30098,7 @@ const char *Txt_PROJECT_ROLES_SINGUL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
"Tutor/a" "Tutor/a"
#endif #endif
, ,
#if L==1 // ca // Prj_ROLE_EVA #if L==1 // ca // Prj_ROLE_EVL
"Avaluador/a" "Avaluador/a"
#elif L==2 // de #elif L==2 // de
"Auswerter" "Auswerter"
@ -30181,7 +30181,7 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] =
"tutor/a" "tutor/a"
#endif #endif
, ,
#if L==1 // ca // Prj_ROLE_EVA #if L==1 // ca // Prj_ROLE_EVL
"avaluador/a" "avaluador/a"
#elif L==2 // de #elif L==2 // de
"Auswerter" "Auswerter"
@ -30264,7 +30264,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
"Tutores" "Tutores"
#endif #endif
, ,
#if L==1 // ca // Prj_ROLE_EVA #if L==1 // ca // Prj_ROLE_EVL
"Avaluadors" "Avaluadors"
#elif L==2 // de #elif L==2 // de
"Auswerter" "Auswerter"
@ -30285,6 +30285,90 @@ const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
#endif #endif
}; };
const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT] =
{
#if L==1 // ca // Prj_ROLE_UNK
"desconeguts"
#elif L==2 // de
"Unbekannte"
#elif L==3 // en
"unknown"
#elif L==4 // es
"desconocidos"
#elif L==5 // fr
"inconnus"
#elif L==6 // gn
"desconocidos" // Okoteve traducción
#elif L==7 // it
"sconosciuti"
#elif L==8 // pl
"nieznany"
#elif L==9 // pt
"desconhecidos"
#endif
,
#if L==1 // ca // Prj_ROLE_STD
"estudiants"
#elif L==2 // de
"Studenten"
#elif L==3 // en
"students"
#elif L==4 // es
"estudiantes"
#elif L==5 // fr
"&eacute;tudiants"
#elif L==6 // gn
"temimbo'e"
#elif L==7 // it
"studenti"
#elif L==8 // pl
"studenci"
#elif L==9 // pt
"estudantes"
#endif
,
#if L==1 // ca // Prj_ROLE_TUT
"tutors"
#elif L==2 // de
"Tutoren"
#elif L==3 // en
"tutors"
#elif L==4 // es
"tutores"
#elif L==5 // fr
"tuteurs"
#elif L==6 // gn
"tutores" // Okoteve traducción
#elif L==7 // it
"precettori"
#elif L==8 // pl
"nauczyciele"
#elif L==9 // pt
"tutores"
#endif
,
#if L==1 // ca // Prj_ROLE_EVL
"avaluadors"
#elif L==2 // de
"Auswerter"
#elif L==3 // en
"evaluators"
#elif L==4 // es
"evaluadores"
#elif L==5 // fr
"&eacute;valuateurs"
#elif L==6 // gn
"evaluadores" // Okoteve traducción
#elif L==7 // it
"valutatori"
#elif L==8 // pl
"ewaluator&oacute;w"
#elif L==9 // pt
"avaliadores"
#endif
};
const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES] = const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES] =
{ {
#if L==1 // ca // Prj_PROPOSAL_NEW #if L==1 // ca // Prj_PROPOSAL_NEW

View File

@ -151,9 +151,11 @@ const char *Usr_UsrDatMainFieldNames[Usr_NUM_MAIN_FIELDS_DATA_USR];
extern struct Globals Gbl; extern struct Globals Gbl;
/*****************************************************************************/ /*****************************************************************************/
/************************* Internal global variables *************************/ /****************************** Private variables ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void (*Usr_FuncParamsBigList) (); // Used to pass pointer to function
/*****************************************************************************/ /*****************************************************************************/
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -198,13 +200,16 @@ static void Usr_GetGstsLst (Hie_Level_t Scope);
static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,Hie_Level_t Scope); static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,Hie_Level_t Scope);
static void Usr_AllocateUsrsList (Rol_Role_t Role); static void Usr_AllocateUsrsList (Rol_Role_t Role);
static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs,const char *OnSubmit); static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs,
void (*FuncParams) (),
const char *OnSubmit);
static void Usr_PutParamsConfirmIWantToSeeBigList (void); static void Usr_PutParamsConfirmIWantToSeeBigList (void);
static void Usr_AllocateListSelectedUsrCod (Rol_Role_t Role); static void Usr_AllocateListSelectedUsrCod (Rol_Role_t Role);
static void Usr_AllocateListOtherRecipients (void); static void Usr_AllocateListOtherRecipients (void);
static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,Usr_ShowUsrsType_t ListType); static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,void (*FuncParams) (),
Usr_ShowUsrsType_t ListType);
static Usr_Sex_t Usr_GetSexOfUsrsLst (Rol_Role_t Role); static Usr_Sex_t Usr_GetSexOfUsrsLst (Rol_Role_t Role);
@ -5589,7 +5594,9 @@ void Usr_FreeUsrsList (Rol_Role_t Role)
/******** Show form to confirm that I want to see a big list of users ********/ /******** Show form to confirm that I want to see a big list of users ********/
/*****************************************************************************/ /*****************************************************************************/
bool Usr_GetIfShowBigList (unsigned NumUsrs,const char *OnSubmit) bool Usr_GetIfShowBigList (unsigned NumUsrs,
void (*FuncParams) (),
const char *OnSubmit)
{ {
bool ShowBigList; bool ShowBigList;
@ -5599,7 +5606,7 @@ bool Usr_GetIfShowBigList (unsigned NumUsrs,const char *OnSubmit)
/***** Get parameter with user's confirmation /***** Get parameter with user's confirmation
to see a big list of users *****/ to see a big list of users *****/
if (!(ShowBigList = Par_GetParToBool ("ShowBigList"))) if (!(ShowBigList = Par_GetParToBool ("ShowBigList")))
Usr_PutButtonToConfirmIWantToSeeBigList (NumUsrs,OnSubmit); Usr_PutButtonToConfirmIWantToSeeBigList (NumUsrs,FuncParams,OnSubmit);
return ShowBigList; return ShowBigList;
} }
@ -5611,12 +5618,15 @@ bool Usr_GetIfShowBigList (unsigned NumUsrs,const char *OnSubmit)
/******** Show form to confirm that I want to see a big list of users ********/ /******** Show form to confirm that I want to see a big list of users ********/
/*****************************************************************************/ /*****************************************************************************/
static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs,const char *OnSubmit) static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs,
void (*FuncParams) (),
const char *OnSubmit)
{ {
extern const char *Txt_The_list_of_X_users_is_too_large_to_be_displayed; extern const char *Txt_The_list_of_X_users_is_too_large_to_be_displayed;
extern const char *Txt_Show_anyway; extern const char *Txt_Show_anyway;
/***** Show alert and button to confirm that I want to see the big list *****/ /***** Show alert and button to confirm that I want to see the big list *****/
Usr_FuncParamsBigList = FuncParams; // Used to pass pointer to function
Ale_ShowAlertAndButton (Gbl.Action.Act,Usr_USER_LIST_SECTION_ID,OnSubmit, Ale_ShowAlertAndButton (Gbl.Action.Act,Usr_USER_LIST_SECTION_ID,OnSubmit,
Usr_PutParamsConfirmIWantToSeeBigList, Usr_PutParamsConfirmIWantToSeeBigList,
Btn_CONFIRM_BUTTON,Txt_Show_anyway, Btn_CONFIRM_BUTTON,Txt_Show_anyway,
@ -5628,7 +5638,8 @@ static void Usr_PutParamsConfirmIWantToSeeBigList (void)
{ {
Grp_PutParamsCodGrps (); Grp_PutParamsCodGrps ();
Usr_PutParamsPrefsAboutUsrList (); Usr_PutParamsPrefsAboutUsrList ();
Usr_PutExtraParamsUsrList (Gbl.Action.Act); if (Usr_FuncParamsBigList)
Usr_FuncParamsBigList ();
Par_PutHiddenParamChar ("ShowBigList",'Y'); Par_PutHiddenParamChar ("ShowBigList",'Y');
} }
@ -6003,7 +6014,7 @@ void Usr_FreeListOtherRecipients (void)
/*************************** Selection of list type **************************/ /*************************** Selection of list type **************************/
/*****************************************************************************/ /*****************************************************************************/
void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction) void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction,void (*FuncParams) ())
{ {
Set_StartSettingsHead (); Set_StartSettingsHead ();
Set_StartOneSettingSelector (); Set_StartOneSettingSelector ();
@ -6012,15 +6023,16 @@ void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
fprintf (Gbl.F.Out,"<div class=\"%s\">", fprintf (Gbl.F.Out,"<div class=\"%s\">",
Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO ? "PREF_ON" : Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO ? "PREF_ON" :
"PREF_OFF"); "PREF_OFF");
Usr_FormToSelectUsrListType (NextAction,Usr_LIST_AS_CLASS_PHOTO); Usr_FormToSelectUsrListType (NextAction,FuncParams,Usr_LIST_AS_CLASS_PHOTO);
/* Number of columns in the class photo */ /* Number of columns in the class photo */
Frm_StartFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID); Frm_StartFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID);
Grp_PutParamsCodGrps (); Grp_PutParamsCodGrps ();
Usr_PutParamUsrListType (Usr_LIST_AS_CLASS_PHOTO); Usr_PutParamUsrListType (Usr_LIST_AS_CLASS_PHOTO);
Usr_PutParamListWithPhotos (); Usr_PutParamListWithPhotos ();
Usr_PutExtraParamsUsrList (NextAction);
Usr_PutSelectorNumColsClassPhoto (); Usr_PutSelectorNumColsClassPhoto ();
if (FuncParams)
FuncParams ();
Frm_EndForm (); Frm_EndForm ();
fprintf (Gbl.F.Out,"</div>"); fprintf (Gbl.F.Out,"</div>");
@ -6028,13 +6040,14 @@ void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
fprintf (Gbl.F.Out,"<div class=\"%s\">", fprintf (Gbl.F.Out,"<div class=\"%s\">",
Gbl.Usrs.Me.ListType == Usr_LIST_AS_LISTING ? "PREF_ON" : Gbl.Usrs.Me.ListType == Usr_LIST_AS_LISTING ? "PREF_ON" :
"PREF_OFF"); "PREF_OFF");
Usr_FormToSelectUsrListType (NextAction,Usr_LIST_AS_LISTING); Usr_FormToSelectUsrListType (NextAction,FuncParams,Usr_LIST_AS_LISTING);
/* See the photos in list? */ /* See the photos in list? */
Frm_StartFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID); Frm_StartFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID);
Grp_PutParamsCodGrps (); Grp_PutParamsCodGrps ();
Usr_PutParamUsrListType (Usr_LIST_AS_LISTING); Usr_PutParamUsrListType (Usr_LIST_AS_LISTING);
Usr_PutExtraParamsUsrList (NextAction); if (FuncParams)
FuncParams ();
Usr_PutCheckboxListWithPhotos (); Usr_PutCheckboxListWithPhotos ();
Frm_EndForm (); Frm_EndForm ();
fprintf (Gbl.F.Out,"</div>"); fprintf (Gbl.F.Out,"</div>");
@ -6047,7 +6060,8 @@ void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
/************* Put a radio element to select a users' list type **************/ /************* Put a radio element to select a users' list type **************/
/*****************************************************************************/ /*****************************************************************************/
static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,Usr_ShowUsrsType_t ListType) static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,void (*FuncParams) (),
Usr_ShowUsrsType_t ListType)
{ {
extern const char *The_ClassFormInBoxNoWrap[The_NUM_THEMES]; extern const char *The_ClassFormInBoxNoWrap[The_NUM_THEMES];
extern const char *Txt_USR_LIST_TYPES[Usr_NUM_USR_LIST_TYPES]; extern const char *Txt_USR_LIST_TYPES[Usr_NUM_USR_LIST_TYPES];
@ -6057,7 +6071,8 @@ static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,Usr_ShowUsrsTyp
Grp_PutParamsCodGrps (); Grp_PutParamsCodGrps ();
Usr_PutParamUsrListType (ListType); Usr_PutParamUsrListType (ListType);
Usr_PutParamListWithPhotos (); Usr_PutParamListWithPhotos ();
Usr_PutExtraParamsUsrList (NextAction); if (FuncParams)
FuncParams ();
/***** Link and image *****/ /***** Link and image *****/
Frm_LinkFormSubmit (Txt_USR_LIST_TYPES[ListType], Frm_LinkFormSubmit (Txt_USR_LIST_TYPES[ListType],
@ -6078,59 +6093,12 @@ static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,Usr_ShowUsrsTyp
Frm_EndForm (); Frm_EndForm ();
} }
/*****************************************************************************/
/***************** Put extra parameters for a list of users ******************/
/*****************************************************************************/
void Usr_PutExtraParamsUsrList (Act_Action_t NextAction)
{
switch (Gbl.Action.Act)
{
case ActLstGst:
case ActLstStd:
case ActLstTch:
Sco_PutParamScope ("ScopeUsr",Gbl.Scope.Current);
break;
case ActSeeOneAtt:
case ActRecAttStd:
Att_PutParamAttCod (Gbl.AttEvents.AttCod);
break;
case ActReqMsgUsr:
Usr_PutHiddenParUsrCodAll (NextAction,Gbl.Usrs.Selected.List[Rol_UNK]);
Msg_PutHiddenParamOtherRecipients ();
Msg_PutHiddenParamsSubjectAndContent ();
if (Gbl.Msg.Reply.IsReply)
{
Par_PutHiddenParamChar ("IsReply",'Y');
Msg_PutHiddenParamMsgCod (Gbl.Msg.Reply.OriginalMsgCod);
}
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
{
Usr_PutParamOtherUsrCodEncrypted ();
if (Gbl.Msg.ShowOnlyOneRecipient)
Par_PutHiddenParamChar ("ShowOnlyOneRecipient",'Y');
}
break;
case ActSeeUseGbl:
/* Used in selector of "Class photo"/"List"
in STATS > Figures > Institutions */
Fig_PutHiddenParamFigures ();
break;
case ActSeePhoDeg:
Pho_PutHiddenParamTypeOfAvg ();
Pho_PutHiddenParamPhotoSize ();
Pho_PutHiddenParamOrderDegrees ();
break;
default:
break;
}
}
/*****************************************************************************/ /*****************************************************************************/
/******************** List users to select some of them **********************/ /******************** List users to select some of them **********************/
/*****************************************************************************/ /*****************************************************************************/
void Usr_PutFormToSelectUsrsToGoToAct (Act_Action_t NextAction, void Usr_PutFormToSelectUsrsToGoToAct (Act_Action_t CurrAction,void (*FuncParamsCurrAction) (),
Act_Action_t NextAction,void (*FuncParamsNextAction) (),
const char *HelpLink, const char *HelpLink,
const char *TxtButton) const char *TxtButton)
{ {
@ -6157,23 +6125,26 @@ void Usr_PutFormToSelectUsrsToGoToAct (Act_Action_t NextAction,
Box_StartBox (NULL,Txt_Users,NULL,HelpLink,Box_NOT_CLOSABLE); Box_StartBox (NULL,Txt_Users,NULL,HelpLink,Box_NOT_CLOSABLE);
/***** Show form to select the groups *****/ /***** Show form to select the groups *****/
Grp_ShowFormToSelectSeveralGroups (NextAction,Grp_ONLY_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (CurrAction,FuncParamsCurrAction,
Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
if (NumTotalUsrs) if (NumTotalUsrs)
{ {
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL)) if (Usr_GetIfShowBigList (NumTotalUsrs,FuncParamsCurrAction,NULL))
{ {
/* Form to select type of list used for select several users */ /* Form to select type of list used for select several users */
Usr_ShowFormsToSelectUsrListType (ActReqAsgWrkCrs); Usr_ShowFormsToSelectUsrListType (CurrAction,FuncParamsCurrAction);
/***** Put link to register students *****/ /***** Put link to register students *****/
Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (); Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs ();
/* Start form */ /* Start form */
Frm_StartForm (ActAdmAsgWrkCrs); Frm_StartForm (NextAction);
if (FuncParamsNextAction)
FuncParamsNextAction ();
Grp_PutParamsCodGrps (); Grp_PutParamsCodGrps ();
Gbl.FileBrowser.FullTree = true; // By default, show all files Gbl.FileBrowser.FullTree = true; // By default, show all files
Brw_PutHiddenParamFullTreeIfSelected (); Brw_PutHiddenParamFullTreeIfSelected ();
@ -6214,6 +6185,29 @@ void Usr_PutFormToSelectUsrsToGoToAct (Act_Action_t NextAction,
Grp_FreeListCodSelectedGrps (); Grp_FreeListCodSelectedGrps ();
} }
void Usr_GetSelectedUsrsAndGoToAct (void (*FuncWhenUsrsSelected) (),
void (*FuncWhenNoUsrsSelected) ())
{
extern const char *Txt_You_must_select_one_ore_more_users;
/***** Get lists of the selected users if not already got *****/
Usr_GetListsSelectedUsrsCods ();
/***** Check number of users *****/
if (Usr_CountNumUsrsInListOfSelectedUsrs ()) // If some users are selected...
FuncWhenUsrsSelected ();
else // If no users are selected...
{
// ...write warning alert
Ale_ShowAlert (Ale_WARNING,Txt_You_must_select_one_ore_more_users);
// ...and show again the form
FuncWhenNoUsrsSelected ();
}
/***** Free memory used by list of selected users' codes *****/
Usr_FreeListsSelectedUsrsCods ();
}
/*****************************************************************************/ /*****************************************************************************/
/*********** List users with a given role to select some of them *************/ /*********** List users with a given role to select some of them *************/
/*****************************************************************************/ /*****************************************************************************/
@ -7314,7 +7308,7 @@ void Usr_ListDataAdms (void)
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\"" fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\""
" style=\"margin-bottom:8px;\">"); " style=\"margin-bottom:8px;\">");
Frm_StartForm (ActLstOth); Frm_StartForm (ActLstOth);
Sco_PutParamScope ("ScopeUsr",Gbl.Scope.Current); Sco_PutParamCurrentScope ();
Usr_PutCheckboxListWithPhotos (); Usr_PutCheckboxListWithPhotos ();
Frm_EndForm (); Frm_EndForm ();
fprintf (Gbl.F.Out,"</div>"); fprintf (Gbl.F.Out,"</div>");
@ -7788,13 +7782,14 @@ void Usr_SeeGuests (void)
if (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs) if (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs)
{ {
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs,NULL)) if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs,
Sco_PutParamCurrentScope,NULL))
{ {
/***** Get list of selected users *****/ /***** Get list of selected users *****/
Usr_GetListsSelectedUsrsCods (); Usr_GetListsSelectedUsrsCods ();
/***** Form to select type of list of users *****/ /***** Form to select type of list of users *****/
Usr_ShowFormsToSelectUsrListType (ActLstGst); Usr_ShowFormsToSelectUsrListType (ActLstGst,Sco_PutParamCurrentScope);
/***** Draw a class photo with guests *****/ /***** Draw a class photo with guests *****/
if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO) if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO)
@ -7941,20 +7936,22 @@ void Usr_SeeStudents (void)
/***** Form to select groups *****/ /***** Form to select groups *****/
if (Gbl.Scope.Current == Hie_CRS) if (Gbl.Scope.Current == Hie_CRS)
Grp_ShowFormToSelectSeveralGroups (ActLstStd,Grp_ONLY_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (ActLstStd,Sco_PutParamCurrentScope,
Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs) if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs)
{ {
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs,NULL)) if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs,
Sco_PutParamCurrentScope,NULL))
{ {
/***** Get list of selected users *****/ /***** Get list of selected users *****/
Usr_GetListsSelectedUsrsCods (); Usr_GetListsSelectedUsrsCods ();
/***** Form to select type of list of users *****/ /***** Form to select type of list of users *****/
Usr_ShowFormsToSelectUsrListType (ActLstStd); Usr_ShowFormsToSelectUsrListType (ActLstStd,Sco_PutParamCurrentScope);
/***** Draw a class photo with students of the course *****/ /***** Draw a class photo with students of the course *****/
if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO) if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO)
@ -8116,17 +8113,19 @@ void Usr_SeeTeachers (void)
/***** Form to select groups *****/ /***** Form to select groups *****/
if (Gbl.Scope.Current == Hie_CRS) if (Gbl.Scope.Current == Hie_CRS)
Grp_ShowFormToSelectSeveralGroups (ActLstTch,Grp_ONLY_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (ActLstTch,Sco_PutParamCurrentScope,
Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
if (NumUsrs) if (NumUsrs)
{ {
if (Usr_GetIfShowBigList (NumUsrs,NULL)) if (Usr_GetIfShowBigList (NumUsrs,
Sco_PutParamCurrentScope,NULL))
{ {
/***** Form to select type of list of users *****/ /***** Form to select type of list of users *****/
Usr_ShowFormsToSelectUsrListType (ActLstTch); Usr_ShowFormsToSelectUsrListType (ActLstTch,Sco_PutParamCurrentScope);
/***** Draw a class photo with teachers of the course *****/ /***** Draw a class photo with teachers of the course *****/
if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO) if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO)
@ -8643,21 +8642,18 @@ static void Usr_PutIconToShowTchsAllData (void)
static void Usr_ShowGstsAllDataParams (void) static void Usr_ShowGstsAllDataParams (void)
{ {
Usr_PutParamListWithPhotos (); Usr_PutParamListWithPhotos ();
Usr_PutExtraParamsUsrList (ActLstGstAll);
} }
static void Usr_ShowStdsAllDataParams (void) static void Usr_ShowStdsAllDataParams (void)
{ {
Grp_PutParamsCodGrps (); Grp_PutParamsCodGrps ();
Usr_PutParamListWithPhotos (); Usr_PutParamListWithPhotos ();
Usr_PutExtraParamsUsrList (ActLstStdAll);
} }
static void Usr_ShowTchsAllDataParams (void) static void Usr_ShowTchsAllDataParams (void)
{ {
Sco_PutParamScope ("ScopeUsr",Gbl.Scope.Current); Sco_PutParamCurrentScope ();
Usr_PutParamListWithPhotos (); Usr_PutParamListWithPhotos ();
Usr_PutExtraParamsUsrList (ActLstTchAll);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -407,7 +407,9 @@ void Usr_GetUnorderedStdsCodesInDeg (long DegCod);
void Usr_CopyBasicUsrDataFromList (struct UsrData *UsrDat,const struct UsrInList *UsrInList); void Usr_CopyBasicUsrDataFromList (struct UsrData *UsrDat,const struct UsrInList *UsrInList);
void Usr_FreeUsrsList (Rol_Role_t Role); void Usr_FreeUsrsList (Rol_Role_t Role);
bool Usr_GetIfShowBigList (unsigned NumUsrs,const char *OnSubmit); bool Usr_GetIfShowBigList (unsigned NumUsrs,
void (*FuncParams) (),
const char *OnSubmit);
void Usr_PutHiddenParUsrCodAll (Act_Action_t NextAction,const char *ListUsrCods); void Usr_PutHiddenParUsrCodAll (Act_Action_t NextAction,const char *ListUsrCods);
void Usr_GetListsSelectedUsrsCods (void); void Usr_GetListsSelectedUsrsCods (void);
@ -417,16 +419,18 @@ unsigned Usr_CountNumUsrsInListOfSelectedUsrs (void);
void Usr_FreeListsSelectedUsrsCods (void); void Usr_FreeListsSelectedUsrsCods (void);
void Usr_FreeListOtherRecipients (void); void Usr_FreeListOtherRecipients (void);
void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction); void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction,void (*FuncParams) ());
void Usr_PutCheckboxToSelectAllUsers (Rol_Role_t Role); void Usr_PutCheckboxToSelectAllUsers (Rol_Role_t Role);
unsigned Usr_GetColumnsForSelectUsrs (void); unsigned Usr_GetColumnsForSelectUsrs (void);
void Usr_SetUsrDatMainFieldNames (void); void Usr_SetUsrDatMainFieldNames (void);
void Usr_WriteHeaderFieldsUsrDat (bool PutCheckBoxToSelectUsr); void Usr_WriteHeaderFieldsUsrDat (bool PutCheckBoxToSelectUsr);
void Usr_PutExtraParamsUsrList (Act_Action_t NextAction); void Usr_PutFormToSelectUsrsToGoToAct (Act_Action_t CurrAction,void (*FuncParamsCurrAction) (),
void Usr_PutFormToSelectUsrsToGoToAct (Act_Action_t NextAction, Act_Action_t NextAction,void (*FuncParamsNextAction) (),
const char *HelpLink, const char *HelpLink,
const char *TxtButton); const char *TxtButton);
void Usr_GetSelectedUsrsAndGoToAct (void (*FuncWhenUsrsSelected) (),
void (*FuncWhenNoUsrsSelected) ());
void Usr_ListUsersToSelect (Rol_Role_t Role); void Usr_ListUsersToSelect (Rol_Role_t Role);
void Usr_ListAllDataGsts (void); void Usr_ListAllDataGsts (void);