mirror of https://github.com/acanas/swad-core.git
Version18.110
This commit is contained in:
parent
80639a5934
commit
57edcf317b
|
@ -508,16 +508,16 @@ Assessment:
|
|||
365. ActShoPrj Show project
|
||||
366. ActReqAddStdPrj Request adding a student 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
|
||||
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
|
||||
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
|
||||
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
|
||||
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},
|
||||
/* 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},
|
||||
/* ActReqAddStdPrj */{1684,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddStd ,NULL},
|
||||
/* ActReqAddTutPrj */{1685,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddTut ,NULL},
|
||||
/* ActReqAddEvaPrj */{1686,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddEva ,NULL},
|
||||
/* ActAddStdPrj */{1687,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddStd ,NULL},
|
||||
/* ActAddTutPrj */{1688,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddTut ,NULL},
|
||||
/* ActAddEvaPrj */{1689,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddEva ,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_ReqAddTuts ,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_GetSelectedUsrsAndAddStds ,NULL},
|
||||
/* ActAddTutPrj */{1688,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_GetSelectedUsrsAndAddTuts ,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},
|
||||
/* 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},
|
||||
/* 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},
|
||||
/* 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
|
||||
ActReqAddStdPrj, // #1684
|
||||
ActReqAddTutPrj, // #1685
|
||||
ActReqAddEvaPrj, // #1686
|
||||
ActReqAddEvlPrj, // #1686
|
||||
ActAddStdPrj, // #1687
|
||||
ActAddTutPrj, // #1688
|
||||
ActAddEvaPrj, // #1689
|
||||
ActAddEvlPrj, // #1689
|
||||
ActReqRemStdPrj, // #1690
|
||||
ActReqRemTutPrj, // #1691
|
||||
ActReqRemEvaPrj, // #1692
|
||||
ActReqRemEvlPrj, // #1692
|
||||
ActRemStdPrj, // #1693
|
||||
ActRemTutPrj, // #1694
|
||||
ActRemEvaPrj, // #1695
|
||||
ActRemEvlPrj, // #1695
|
||||
ActSeeTblAllPrj, // #1696
|
||||
ActAdmDocPrj, // #1697
|
||||
ActReqRemFilDocPrj, // #1698
|
||||
|
|
|
@ -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 ActReqAddStdPrj (ActChgCrsTT1stDay + 38)
|
||||
#define ActReqAddTutPrj (ActChgCrsTT1stDay + 39)
|
||||
#define ActReqAddEvaPrj (ActChgCrsTT1stDay + 40)
|
||||
#define ActReqAddEvlPrj (ActChgCrsTT1stDay + 40)
|
||||
#define ActAddStdPrj (ActChgCrsTT1stDay + 41)
|
||||
#define ActAddTutPrj (ActChgCrsTT1stDay + 42)
|
||||
#define ActAddEvaPrj (ActChgCrsTT1stDay + 43)
|
||||
#define ActAddEvlPrj (ActChgCrsTT1stDay + 43)
|
||||
#define ActReqRemStdPrj (ActChgCrsTT1stDay + 44)
|
||||
#define ActReqRemTutPrj (ActChgCrsTT1stDay + 45)
|
||||
#define ActReqRemEvaPrj (ActChgCrsTT1stDay + 46)
|
||||
#define ActReqRemEvlPrj (ActChgCrsTT1stDay + 46)
|
||||
#define ActRemStdPrj (ActChgCrsTT1stDay + 47)
|
||||
#define ActRemTutPrj (ActChgCrsTT1stDay + 48)
|
||||
#define ActRemEvaPrj (ActChgCrsTT1stDay + 49)
|
||||
#define ActRemEvlPrj (ActChgCrsTT1stDay + 49)
|
||||
|
||||
#define ActAdmDocPrj (ActChgCrsTT1stDay + 50)
|
||||
#define ActReqRemFilDocPrj (ActChgCrsTT1stDay + 51)
|
||||
|
|
|
@ -847,6 +847,11 @@ static void Att_GetAttEventDescriptionFromDB (long AttCod,char Description[Cns_M
|
|||
/************** Write parameter with code of attendance event ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Att_PutParamSelectedAttCod (void)
|
||||
{
|
||||
Att_PutParamAttCod (Gbl.AttEvents.AttCod);
|
||||
}
|
||||
|
||||
void Att_PutParamAttCod (long AttCod)
|
||||
{
|
||||
Par_PutHiddenParamLong ("AttCod",AttCod);
|
||||
|
@ -1948,7 +1953,8 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
|
|||
Hlp_USERS_Attendance,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** 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 *****/
|
||||
Lay_StartSection (Usr_USER_LIST_SECTION_ID);
|
||||
|
@ -2703,21 +2709,22 @@ void Usr_ReqListStdsAttendanceCrs (void)
|
|||
NULL,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** 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 *****/
|
||||
Lay_StartSection (Usr_USER_LIST_SECTION_ID);
|
||||
|
||||
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 *****/
|
||||
Usr_GetListsSelectedUsrsCods ();
|
||||
|
||||
/***** Draw a class photo with students of the course *****/
|
||||
/* Form to select type of list used for select several users */
|
||||
Usr_ShowFormsToSelectUsrListType (ActReqLstStdAtt);
|
||||
Usr_ShowFormsToSelectUsrListType (ActReqLstStdAtt,NULL);
|
||||
|
||||
/* Start form */
|
||||
Frm_StartForm (ActSeeLstStdAtt);
|
||||
|
|
|
@ -81,6 +81,7 @@ void Att_RequestCreatOrEditAttEvent (void);
|
|||
bool Att_GetDataOfAttEventByCod (struct AttendanceEvent *Att);
|
||||
void Att_FreeListAttEvents (void);
|
||||
|
||||
void Att_PutParamSelectedAttCod (void);
|
||||
void Att_PutParamAttCod (long AttCod);
|
||||
long Att_GetParamAttCod (void);
|
||||
|
||||
|
|
|
@ -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: 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:
|
||||
// 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
|
||||
|
@ -459,10 +456,14 @@ En OpenSWAD:
|
|||
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 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.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)
|
||||
|
|
|
@ -1042,7 +1042,7 @@ static void Fig_GetAndShowInstitutionsStats (void)
|
|||
|
||||
/***** Form to select type of list used to display degree photos *****/
|
||||
Usr_GetAndUpdatePrefsAboutUsrList ();
|
||||
Usr_ShowFormsToSelectUsrListType (ActSeeUseGbl);
|
||||
Usr_ShowFormsToSelectUsrListType (ActSeeUseGbl,Fig_PutHiddenParamFigures);
|
||||
|
||||
/***** Institutions ordered by number of centres *****/
|
||||
Fig_GetAndShowInssOrderedByNumCtrs ();
|
||||
|
|
|
@ -1602,7 +1602,7 @@ void Brw_GetParAndInitFileBrowser (void)
|
|||
case ActChgToSeeDocCrs: // Access to see a documents zone
|
||||
/* Set file browser type acording to last group accessed */
|
||||
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_SHOW_DOC_GRP :
|
||||
Brw_SHOW_DOC_CRS;
|
||||
Brw_SHOW_DOC_CRS;
|
||||
break;
|
||||
case ActSeeDocCrs:
|
||||
case ActExpSeeDocCrs:
|
||||
|
@ -1623,7 +1623,7 @@ void Brw_GetParAndInitFileBrowser (void)
|
|||
case ActChgToAdmDocCrs: // Access to admin a documents zone
|
||||
/* Set file browser type acording to last group accessed */
|
||||
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_DOC_GRP :
|
||||
Brw_ADMI_DOC_CRS;
|
||||
Brw_ADMI_DOC_CRS;
|
||||
break;
|
||||
case ActAdmDocCrs:
|
||||
case ActReqRemFilDocCrs:
|
||||
|
@ -1677,7 +1677,7 @@ void Brw_GetParAndInitFileBrowser (void)
|
|||
case ActChgToAdmTch: // Access to a teachers zone from menu
|
||||
/* Set file browser type acording to last group accessed */
|
||||
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_TCH_GRP :
|
||||
Brw_ADMI_TCH_CRS;
|
||||
Brw_ADMI_TCH_CRS;
|
||||
break;
|
||||
case ActAdmTchCrs:
|
||||
case ActReqRemFilTchCrs:
|
||||
|
@ -1727,7 +1727,7 @@ void Brw_GetParAndInitFileBrowser (void)
|
|||
case ActChgToAdmSha: // Access to a shared zone from menu
|
||||
/* Set file browser type acording to last group accessed */
|
||||
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_SHR_GRP :
|
||||
Brw_ADMI_SHR_CRS;
|
||||
Brw_ADMI_SHR_CRS;
|
||||
break;
|
||||
case ActAdmShaCrs:
|
||||
case ActReqRemFilShaCrs:
|
||||
|
@ -1917,12 +1917,12 @@ void Brw_GetParAndInitFileBrowser (void)
|
|||
case Rol_STD:
|
||||
case Rol_NET:
|
||||
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_SHOW_MRK_GRP :
|
||||
Brw_SHOW_MRK_CRS;
|
||||
Brw_SHOW_MRK_CRS;
|
||||
break;
|
||||
case Rol_TCH:
|
||||
case Rol_SYS_ADM:
|
||||
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_MRK_GRP :
|
||||
Brw_ADMI_MRK_CRS;
|
||||
Brw_ADMI_MRK_CRS;
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong role.");
|
||||
|
@ -1932,7 +1932,7 @@ void Brw_GetParAndInitFileBrowser (void)
|
|||
case ActChgToSeeMrk: // Access to see a marks zone
|
||||
/* Set file browser type acording to last group accessed */
|
||||
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_SHOW_MRK_GRP :
|
||||
Brw_SHOW_MRK_CRS;
|
||||
Brw_SHOW_MRK_CRS;
|
||||
break;
|
||||
case ActSeeMrkCrs:
|
||||
case ActExpSeeMrkCrs:
|
||||
|
@ -1951,7 +1951,7 @@ void Brw_GetParAndInitFileBrowser (void)
|
|||
case ActChgToAdmMrk: // Access to admin a marks zone
|
||||
/* Set file browser type acording to last group accessed */
|
||||
Gbl.FileBrowser.Type = (Gbl.Crs.Grps.GrpCod > 0) ? Brw_ADMI_MRK_GRP :
|
||||
Brw_ADMI_MRK_CRS;
|
||||
Brw_ADMI_MRK_CRS;
|
||||
break;
|
||||
case ActAdmMrkCrs:
|
||||
case ActReqRemFilMrkCrs:
|
||||
|
@ -3057,7 +3057,8 @@ void Brw_AskEditWorksCrs (void)
|
|||
Brw_GetParAndInitFileBrowser ();
|
||||
|
||||
/***** 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,
|
||||
Txt_View_homework);
|
||||
}
|
||||
|
@ -3408,24 +3409,8 @@ static void Brw_ShowDataOwnerAsgWrk (struct UsrData *UsrDat)
|
|||
|
||||
void Brw_GetSelectedUsrsAndShowWorks (void)
|
||||
{
|
||||
extern const char *Txt_You_must_select_one_ore_more_users;
|
||||
|
||||
/***** 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 ();
|
||||
Usr_GetSelectedUsrsAndGoToAct (Brw_ShowFileBrowserOrWorks, // when user(s) selected
|
||||
Brw_AskEditWorksCrs); // when no user selected
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -11648,7 +11633,7 @@ static bool Brw_CheckIfICanViewProjectDocuments (Prj_RoleInProject_t MyRoleInPro
|
|||
return false;
|
||||
case Prj_ROLE_STD:
|
||||
case Prj_ROLE_TUT:
|
||||
case Prj_ROLE_EVA:
|
||||
case Prj_ROLE_EVL:
|
||||
return true;
|
||||
}
|
||||
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
|
||||
return false;
|
||||
case Prj_ROLE_TUT:
|
||||
case Prj_ROLE_EVA:
|
||||
case Prj_ROLE_EVL:
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
@ -11710,7 +11695,7 @@ static bool Brw_CheckIfICanModifyPrjDocFileOrFolder (void)
|
|||
return false;
|
||||
case Prj_ROLE_STD:
|
||||
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?
|
||||
}
|
||||
break;
|
||||
|
@ -11743,7 +11728,7 @@ static bool Brw_CheckIfICanModifyPrjAssFileOrFolder (void)
|
|||
case Prj_ROLE_STD: // Students can not view or edit project assessment
|
||||
return false;
|
||||
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?
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -359,7 +359,7 @@ static void Grp_PutIconToCreateNewGroup (void)
|
|||
/*************** 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)
|
||||
{
|
||||
extern const char *Hlp_USERS_Groups;
|
||||
|
@ -385,9 +385,8 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
|
|||
depending on the groups selected *****/
|
||||
Frm_StartFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID);
|
||||
Usr_PutParamsPrefsAboutUsrList ();
|
||||
|
||||
/***** Put parameters needed depending on the action *****/
|
||||
Usr_PutExtraParamsUsrList (NextAction);
|
||||
if (FuncParams)
|
||||
FuncParams ();
|
||||
|
||||
/***** Select all groups *****/
|
||||
Grp_PutCheckboxAllGrps (GroupsSelectableByStdsOrNETs);
|
||||
|
|
|
@ -147,8 +147,8 @@ typedef enum
|
|||
void Grp_WriteNamesOfSelectedGrps (void);
|
||||
void Grp_ReqEditGroups (void);
|
||||
|
||||
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
|
||||
Grp_WhichGroups_t GroupsSelectable);
|
||||
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,void (*FuncParams) (),
|
||||
Grp_WhichGroups_t GroupsSelectableByStdsOrNETs);
|
||||
void Grp_PutParamsCodGrps (void);
|
||||
void Grp_GetParCodsSeveralGrpsToShowUsrs (void);
|
||||
void Grp_GetParCodsSeveralGrps (void);
|
||||
|
|
|
@ -906,14 +906,15 @@ void Mai_ListEmails (void)
|
|||
Hlp_MESSAGES_Email,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Form to select groups *****/
|
||||
Grp_ShowFormToSelectSeveralGroups (ActMaiStd,Grp_ONLY_MY_GROUPS);
|
||||
Grp_ShowFormToSelectSeveralGroups (ActMaiStd,NULL,
|
||||
Grp_ONLY_MY_GROUPS);
|
||||
|
||||
/***** Start section with user list *****/
|
||||
Lay_StartSection (Usr_USER_LIST_SECTION_ID);
|
||||
|
||||
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 *****/
|
||||
Usr_UsrDataConstructor (&UsrDat);
|
||||
|
|
|
@ -240,7 +240,7 @@ static void Msg_PutFormMsgUsrs (char Content[Cns_MAX_BYTES_LONG_TEXT + 1])
|
|||
if (GetUsrsInCrs)
|
||||
{
|
||||
/***** Form to select groups *****/
|
||||
Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr,
|
||||
Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr,Msg_PutParamsWriteMsg,
|
||||
Grp_ONLY_MY_GROUPS);
|
||||
|
||||
/***** Start section with user list *****/
|
||||
|
@ -249,13 +249,15 @@ static void Msg_PutFormMsgUsrs (char Content[Cns_MAX_BYTES_LONG_TEXT + 1])
|
|||
if (NumUsrsInCrs)
|
||||
{
|
||||
/***** Form to select type of list used for select several users *****/
|
||||
Usr_ShowFormsToSelectUsrListType (ActReqMsgUsr);
|
||||
Usr_ShowFormsToSelectUsrListType (ActReqMsgUsr,Msg_PutParamsWriteMsg);
|
||||
|
||||
/***** Put link to register students *****/
|
||||
Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs ();
|
||||
|
||||
/***** Check if it's a big list *****/
|
||||
ShowUsrsInCrs = Usr_GetIfShowBigList (NumUsrsInCrs,"CopyMessageToHiddenFields();");
|
||||
ShowUsrsInCrs = Usr_GetIfShowBigList (NumUsrsInCrs,
|
||||
Msg_PutParamsWriteMsg,
|
||||
"CopyMessageToHiddenFields();");
|
||||
|
||||
if (ShowUsrsInCrs)
|
||||
/***** Get lists of selected users *****/
|
||||
|
@ -388,6 +390,28 @@ static void Msg_PutParamsShowMorePotentialRecipients (void)
|
|||
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 ***********/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -59,6 +59,7 @@ typedef enum
|
|||
/*****************************************************************************/
|
||||
|
||||
void Msg_FormMsgUsrs (void);
|
||||
void Msg_PutParamsWriteMsg (void);
|
||||
void Msg_PutHiddenParamsSubjectAndContent (void);
|
||||
void Msg_PutHiddenParamAnotherRecipient (const struct UsrData *UsrDat);
|
||||
void Msg_PutHiddenParamOtherRecipients (void);
|
||||
|
|
15
swad_photo.c
15
swad_photo.c
|
@ -1761,6 +1761,17 @@ void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
|
|||
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 ******************/
|
||||
/*****************************************************************************/
|
||||
|
@ -2106,7 +2117,7 @@ static void Pho_ShowOrPrintClassPhotoDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrin
|
|||
{
|
||||
/***** Form to select type of list used to display degree photos *****/
|
||||
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||
Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg);
|
||||
Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg,Pho_PutParamsDegPhoto);
|
||||
Tbl_StartTableCenter (0);
|
||||
|
||||
/***** Get and print degrees *****/
|
||||
|
@ -2187,7 +2198,7 @@ static void Pho_ShowOrPrintListDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
|
|||
/***** Class photo start *****/
|
||||
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||
/***** Form to select type of list used to display degree photos *****/
|
||||
Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg);
|
||||
Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg,Pho_PutParamsDegPhoto);
|
||||
|
||||
/***** Write heading *****/
|
||||
Tbl_StartTableCenter (2);
|
||||
|
|
|
@ -120,6 +120,8 @@ void Pho_RemoveObsoleteStatDegrees (void);
|
|||
void Pho_ShowPhotoDegree (void);
|
||||
void Pho_PrintPhotoDegree (void);
|
||||
void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint);
|
||||
|
||||
void Pho_PutParamsDegPhoto ();
|
||||
void Pho_PutHiddenParamTypeOfAvg (void);
|
||||
void Pho_PutHiddenParamPhotoSize (void);
|
||||
void Pho_PutHiddenParamOrderDegrees (void);
|
||||
|
|
156
swad_project.c
156
swad_project.c
|
@ -75,7 +75,7 @@ static const Prj_RoleInProject_t Prj_RolesToShow[] =
|
|||
{
|
||||
Prj_ROLE_TUT, // Tutor
|
||||
Prj_ROLE_STD, // Student
|
||||
Prj_ROLE_EVA, // Evaluator
|
||||
Prj_ROLE_EVL, // Evaluator
|
||||
};
|
||||
static const unsigned Brw_NUM_ROLES_TO_SHOW = sizeof (Prj_RolesToShow) /
|
||||
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 void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject);
|
||||
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject);
|
||||
static void Prj_ReqAddUsrs (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_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_Remove;
|
||||
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_ROW row;
|
||||
bool WriteRow;
|
||||
|
@ -1566,14 +1569,14 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
|
|||
ActUnk, // Prj_ROLE_UNK, Unknown
|
||||
ActReqRemStdPrj, // Prj_ROLE_STD, Student
|
||||
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] =
|
||||
{
|
||||
ActUnk, // Prj_ROLE_UNK, Unknown
|
||||
ActReqAddStdPrj, // Prj_ROLE_STD, Student
|
||||
ActReqAddTutPrj, // Prj_ROLE_TUT, Tutor
|
||||
ActReqAddEvaPrj, // Prj_ROLE_EVA, Evaluator
|
||||
ActReqAddEvlPrj, // Prj_ROLE_EVL, Evaluator
|
||||
};
|
||||
|
||||
/***** 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
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
Txt_Add_USER,
|
||||
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
|
||||
Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]);
|
||||
Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInProject],NULL,
|
||||
Prj_PutCurrentParams,
|
||||
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 *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] =
|
||||
{
|
||||
ActUnk, // Prj_ROLE_UNK, Unknown
|
||||
ActAddStdPrj, // Prj_ROLE_STD, Student
|
||||
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 *****/
|
||||
if ((Gbl.Prjs.PrjCod = Prj_GetParamPrjCod ()) == -1L)
|
||||
Lay_ShowErrorAndExit ("Code of project is missing.");
|
||||
|
||||
/***** Start box *****/
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
/***** Put form to select users *****/
|
||||
snprintf (TxtButton,sizeof (TxtButton),
|
||||
Txt_Add_USER,
|
||||
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
|
||||
Box_StartBox (NULL,Gbl.Title,NULL,
|
||||
Hlp_ASSESSMENT_Projects_add_user,Box_NOT_CLOSABLE);
|
||||
Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]);
|
||||
Usr_PutFormToSelectUsrsToGoToAct (Gbl.Action.Act,Prj_PutCurrentParams, // Current action
|
||||
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 *****/
|
||||
Enr_WriteFormToReqAnotherUsrID (ActionAddUsr[RoleInProject],Prj_PutCurrentParams);
|
||||
// Enr_WriteFormToReqAnotherUsrID (ActionAddUsr[RoleInProject],Prj_PutCurrentParams);
|
||||
|
||||
/***** End box *****/
|
||||
Box_EndBox ();
|
||||
// Box_EndBox ();
|
||||
|
||||
/***** Put a form to create/edit project *****/
|
||||
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_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||
long PrjCod;
|
||||
struct ListUsrCods ListUsrCods;
|
||||
unsigned NumUsr;
|
||||
const char *Ptr;
|
||||
bool ItsMe;
|
||||
|
||||
/***** Get project code *****/
|
||||
if ((PrjCod = Prj_GetParamPrjCod ()) == -1L)
|
||||
Lay_ShowErrorAndExit ("Code of project is missing.");
|
||||
|
||||
/***** Use user's ID to identify the user(s) to be enroled /removed *****/
|
||||
Usr_GetParamOtherUsrIDNickOrEMailAndGetUsrCods (&ListUsrCods);
|
||||
|
||||
if (ListUsrCods.NumUsrs) // User(s) found with the ID
|
||||
/***** Add the selected users to project *****/
|
||||
Ptr = Gbl.Usrs.Selected.List[Rol_UNK];
|
||||
while (*Ptr)
|
||||
{
|
||||
/***** For each user found... *****/
|
||||
for (NumUsr = 0;
|
||||
NumUsr < ListUsrCods.NumUsrs;
|
||||
NumUsr++)
|
||||
{
|
||||
/* Get user's data */
|
||||
Gbl.Usrs.Other.UsrDat.UsrCod = ListUsrCods.Lst[NumUsr];
|
||||
Usr_GetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Usr_DONT_GET_PREFS);
|
||||
/* Get next user */
|
||||
Par_GetNextStrUntilSeparParamMult (&Ptr,Gbl.Usrs.Other.UsrDat.EncryptedUsrCod,
|
||||
Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64);
|
||||
Usr_GetUsrCodFromEncryptedUsrCod (&Gbl.Usrs.Other.UsrDat);
|
||||
|
||||
/* 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 */
|
||||
DB_QueryREPLACE ("can not add user to project",
|
||||
"REPLACE INTO prj_usr"
|
||||
" (PrjCod,RoleInProject,UsrCod)"
|
||||
" VALUES"
|
||||
" (%ld,%u,%ld)",
|
||||
PrjCod,(unsigned) RoleInProject,
|
||||
Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
PrjCod,(unsigned) RoleInProject,
|
||||
Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
|
||||
/***** Flush cache *****/
|
||||
/* Flush cache */
|
||||
ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
if (ItsMe)
|
||||
Prj_FlushCacheMyRoleInProject ();
|
||||
|
||||
/* Show success alert */
|
||||
Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project,
|
||||
Gbl.Usrs.Other.UsrDat.FullName,
|
||||
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
|
||||
}
|
||||
|
||||
/***** Free list of users' codes *****/
|
||||
Usr_FreeListUsrCods (&ListUsrCods);
|
||||
Gbl.Usrs.Other.UsrDat.FullName,
|
||||
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
|
||||
}
|
||||
}
|
||||
else // No users found
|
||||
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
|
||||
|
||||
/***** Free memory used by list of selected users' codes *****/
|
||||
Usr_FreeListsSelectedUsrsCods ();
|
||||
|
||||
/***** Put form to edit project again *****/
|
||||
Prj_RequestCreatOrEditPrj (PrjCod);
|
||||
|
@ -1996,9 +2026,9 @@ void Prj_ReqRemTut (void)
|
|||
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)
|
||||
|
@ -2013,7 +2043,7 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
|
|||
ActUnk, // Prj_ROLE_UNK, Unknown
|
||||
ActRemStdPrj, // Prj_ROLE_STD, Student
|
||||
ActRemTutPrj, // Prj_ROLE_TUT, Tutor
|
||||
ActRemEvaPrj, // Prj_ROLE_EVA, Evaluator
|
||||
ActRemEvlPrj, // Prj_ROLE_EVL, Evaluator
|
||||
};
|
||||
struct Project Prj;
|
||||
bool ItsMe;
|
||||
|
@ -2084,9 +2114,9 @@ void Prj_RemTut (void)
|
|||
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)
|
||||
|
@ -2221,7 +2251,7 @@ bool Prj_CheckIfICanViewProjectFiles (Prj_RoleInProject_t MyRoleInProject)
|
|||
return false;
|
||||
case Prj_ROLE_STD:
|
||||
case Prj_ROLE_TUT:
|
||||
case Prj_ROLE_EVA:
|
||||
case Prj_ROLE_EVL:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -113,7 +113,7 @@ typedef enum
|
|||
Prj_ROLE_UNK = 0, // Unknown
|
||||
Prj_ROLE_STD = 1, // Student
|
||||
Prj_ROLE_TUT = 2, // Tutor
|
||||
Prj_ROLE_EVA = 3, // Evaluator
|
||||
Prj_ROLE_EVL = 3, // Evaluator
|
||||
} Prj_RoleInProject_t;
|
||||
|
||||
/***** Struct to store a project *****/
|
||||
|
@ -154,21 +154,21 @@ void Prj_PrintOneProject (void);
|
|||
void Prj_FlushCacheMyRoleInProject (void);
|
||||
Prj_RoleInProject_t Prj_GetMyRoleInProject (long PrjCod);
|
||||
|
||||
void Prj_ReqAddStd (void);
|
||||
void Prj_ReqAddTut (void);
|
||||
void Prj_ReqAddEva (void);
|
||||
void Prj_ReqAddStds (void);
|
||||
void Prj_ReqAddTuts (void);
|
||||
void Prj_ReqAddEvls (void);
|
||||
|
||||
void Prj_AddStd (void);
|
||||
void Prj_AddTut (void);
|
||||
void Prj_AddEva (void);
|
||||
void Prj_GetSelectedUsrsAndAddStds (void);
|
||||
void Prj_GetSelectedUsrsAndAddTuts (void);
|
||||
void Prj_GetSelectedUsrsAndAddEvls (void);
|
||||
|
||||
void Prj_ReqRemStd (void);
|
||||
void Prj_ReqRemTut (void);
|
||||
void Prj_ReqRemEva (void);
|
||||
void Prj_ReqRemEvl (void);
|
||||
|
||||
void Prj_RemStd (void);
|
||||
void Prj_RemTut (void);
|
||||
void Prj_RemEva (void);
|
||||
void Prj_RemEvl (void);
|
||||
|
||||
void Prj_PutHiddenParamPrjOrder (void);
|
||||
|
||||
|
|
|
@ -169,6 +169,11 @@ void Sco_PutSelectorScope (const char *ParamName,bool SendOnChange)
|
|||
/********************** Put hidden parameter scope ***************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Sco_PutParamCurrentScope (void)
|
||||
{
|
||||
Sco_PutParamScope ("ScopeUsr",Gbl.Scope.Current);
|
||||
}
|
||||
|
||||
void Sco_PutParamScope (const char *ParamName,Hie_Level_t Scope)
|
||||
{
|
||||
Par_PutHiddenParamUnsigned (ParamName,(unsigned) Scope);
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
/*****************************************************************************/
|
||||
|
||||
void Sco_PutSelectorScope (const char *ParamName,bool SendOnChange);
|
||||
void Sco_PutParamCurrentScope (void);
|
||||
void Sco_PutParamScope (const char *ParamName,Hie_Level_t Scope);
|
||||
void Sco_GetScope (const char *ParamName);
|
||||
void Sco_AdjustScope (void);
|
||||
|
|
|
@ -350,17 +350,18 @@ void Sta_AskShowCrsHits (void)
|
|||
Hlp_ANALYTICS_Visits_visits_to_course,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** 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 *****/
|
||||
Lay_StartSection (Usr_USER_LIST_SECTION_ID);
|
||||
|
||||
if (NumTotalUsrs)
|
||||
{
|
||||
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL))
|
||||
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL,NULL))
|
||||
{
|
||||
/***** Form to select type of list used for select several users *****/
|
||||
Usr_ShowFormsToSelectUsrListType (ActReqAccCrs);
|
||||
Usr_ShowFormsToSelectUsrListType (ActReqAccCrs,NULL);
|
||||
|
||||
/***** Put link to register students *****/
|
||||
Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs ();
|
||||
|
|
|
@ -7329,17 +7329,18 @@ void Tst_SelUsrsToSeeUsrsTestResults (void)
|
|||
Hlp_ASSESSMENT_Tests_test_results,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** 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 *****/
|
||||
Lay_StartSection (Usr_USER_LIST_SECTION_ID);
|
||||
|
||||
if (NumTotalUsrs)
|
||||
{
|
||||
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL))
|
||||
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL,NULL))
|
||||
{
|
||||
/***** Form to select type of list used for select several users *****/
|
||||
Usr_ShowFormsToSelectUsrListType (ActReqSeeUsrTstRes);
|
||||
Usr_ShowFormsToSelectUsrListType (ActReqSeeUsrTstRes,NULL);
|
||||
|
||||
/***** Start form *****/
|
||||
Frm_StartForm (ActSeeUsrTstRes);
|
||||
|
|
90
swad_text.c
90
swad_text.c
|
@ -30098,7 +30098,7 @@ const char *Txt_PROJECT_ROLES_SINGUL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
|
|||
"Tutor/a"
|
||||
#endif
|
||||
,
|
||||
#if L==1 // ca // Prj_ROLE_EVA
|
||||
#if L==1 // ca // Prj_ROLE_EVL
|
||||
"Avaluador/a"
|
||||
#elif L==2 // de
|
||||
"Auswerter"
|
||||
|
@ -30181,7 +30181,7 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] =
|
|||
"tutor/a"
|
||||
#endif
|
||||
,
|
||||
#if L==1 // ca // Prj_ROLE_EVA
|
||||
#if L==1 // ca // Prj_ROLE_EVL
|
||||
"avaluador/a"
|
||||
#elif L==2 // de
|
||||
"Auswerter"
|
||||
|
@ -30264,7 +30264,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
|
|||
"Tutores"
|
||||
#endif
|
||||
,
|
||||
#if L==1 // ca // Prj_ROLE_EVA
|
||||
#if L==1 // ca // Prj_ROLE_EVL
|
||||
"Avaluadors"
|
||||
#elif L==2 // de
|
||||
"Auswerter"
|
||||
|
@ -30285,6 +30285,90 @@ const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
|
|||
#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
|
||||
"é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
|
||||
"évaluateurs"
|
||||
#elif L==6 // gn
|
||||
"evaluadores" // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"valutatori"
|
||||
#elif L==8 // pl
|
||||
"ewaluatorów"
|
||||
#elif L==9 // pt
|
||||
"avaliadores"
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES] =
|
||||
{
|
||||
#if L==1 // ca // Prj_PROPOSAL_NEW
|
||||
|
|
156
swad_user.c
156
swad_user.c
|
@ -151,9 +151,11 @@ const char *Usr_UsrDatMainFieldNames[Usr_NUM_MAIN_FIELDS_DATA_USR];
|
|||
extern struct Globals Gbl;
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Internal global variables *************************/
|
||||
/****************************** Private variables ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void (*Usr_FuncParamsBigList) (); // Used to pass pointer to function
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** 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_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_AllocateListSelectedUsrCod (Rol_Role_t Role);
|
||||
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);
|
||||
|
||||
|
@ -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 ********/
|
||||
/*****************************************************************************/
|
||||
|
||||
bool Usr_GetIfShowBigList (unsigned NumUsrs,const char *OnSubmit)
|
||||
bool Usr_GetIfShowBigList (unsigned NumUsrs,
|
||||
void (*FuncParams) (),
|
||||
const char *OnSubmit)
|
||||
{
|
||||
bool ShowBigList;
|
||||
|
||||
|
@ -5599,7 +5606,7 @@ bool Usr_GetIfShowBigList (unsigned NumUsrs,const char *OnSubmit)
|
|||
/***** Get parameter with user's confirmation
|
||||
to see a big list of users *****/
|
||||
if (!(ShowBigList = Par_GetParToBool ("ShowBigList")))
|
||||
Usr_PutButtonToConfirmIWantToSeeBigList (NumUsrs,OnSubmit);
|
||||
Usr_PutButtonToConfirmIWantToSeeBigList (NumUsrs,FuncParams,OnSubmit);
|
||||
|
||||
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 ********/
|
||||
/*****************************************************************************/
|
||||
|
||||
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_Show_anyway;
|
||||
|
||||
/***** 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,
|
||||
Usr_PutParamsConfirmIWantToSeeBigList,
|
||||
Btn_CONFIRM_BUTTON,Txt_Show_anyway,
|
||||
|
@ -5628,7 +5638,8 @@ static void Usr_PutParamsConfirmIWantToSeeBigList (void)
|
|||
{
|
||||
Grp_PutParamsCodGrps ();
|
||||
Usr_PutParamsPrefsAboutUsrList ();
|
||||
Usr_PutExtraParamsUsrList (Gbl.Action.Act);
|
||||
if (Usr_FuncParamsBigList)
|
||||
Usr_FuncParamsBigList ();
|
||||
Par_PutHiddenParamChar ("ShowBigList",'Y');
|
||||
}
|
||||
|
||||
|
@ -6003,7 +6014,7 @@ void Usr_FreeListOtherRecipients (void)
|
|||
/*************************** Selection of list type **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
|
||||
void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction,void (*FuncParams) ())
|
||||
{
|
||||
Set_StartSettingsHead ();
|
||||
Set_StartOneSettingSelector ();
|
||||
|
@ -6012,15 +6023,16 @@ void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
|
|||
fprintf (Gbl.F.Out,"<div class=\"%s\">",
|
||||
Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO ? "PREF_ON" :
|
||||
"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 */
|
||||
Frm_StartFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID);
|
||||
Grp_PutParamsCodGrps ();
|
||||
Usr_PutParamUsrListType (Usr_LIST_AS_CLASS_PHOTO);
|
||||
Usr_PutParamListWithPhotos ();
|
||||
Usr_PutExtraParamsUsrList (NextAction);
|
||||
Usr_PutSelectorNumColsClassPhoto ();
|
||||
if (FuncParams)
|
||||
FuncParams ();
|
||||
Frm_EndForm ();
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
|
||||
|
@ -6028,13 +6040,14 @@ void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction)
|
|||
fprintf (Gbl.F.Out,"<div class=\"%s\">",
|
||||
Gbl.Usrs.Me.ListType == Usr_LIST_AS_LISTING ? "PREF_ON" :
|
||||
"PREF_OFF");
|
||||
Usr_FormToSelectUsrListType (NextAction,Usr_LIST_AS_LISTING);
|
||||
Usr_FormToSelectUsrListType (NextAction,FuncParams,Usr_LIST_AS_LISTING);
|
||||
|
||||
/* See the photos in list? */
|
||||
Frm_StartFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID);
|
||||
Grp_PutParamsCodGrps ();
|
||||
Usr_PutParamUsrListType (Usr_LIST_AS_LISTING);
|
||||
Usr_PutExtraParamsUsrList (NextAction);
|
||||
if (FuncParams)
|
||||
FuncParams ();
|
||||
Usr_PutCheckboxListWithPhotos ();
|
||||
Frm_EndForm ();
|
||||
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 **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
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 *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 ();
|
||||
Usr_PutParamUsrListType (ListType);
|
||||
Usr_PutParamListWithPhotos ();
|
||||
Usr_PutExtraParamsUsrList (NextAction);
|
||||
if (FuncParams)
|
||||
FuncParams ();
|
||||
|
||||
/***** Link and image *****/
|
||||
Frm_LinkFormSubmit (Txt_USR_LIST_TYPES[ListType],
|
||||
|
@ -6078,59 +6093,12 @@ static void Usr_FormToSelectUsrListType (Act_Action_t NextAction,Usr_ShowUsrsTyp
|
|||
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 **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
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 *TxtButton)
|
||||
{
|
||||
|
@ -6157,23 +6125,26 @@ void Usr_PutFormToSelectUsrsToGoToAct (Act_Action_t NextAction,
|
|||
Box_StartBox (NULL,Txt_Users,NULL,HelpLink,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** 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 *****/
|
||||
Lay_StartSection (Usr_USER_LIST_SECTION_ID);
|
||||
|
||||
if (NumTotalUsrs)
|
||||
{
|
||||
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL))
|
||||
if (Usr_GetIfShowBigList (NumTotalUsrs,FuncParamsCurrAction,NULL))
|
||||
{
|
||||
/* Form to select type of list used for select several users */
|
||||
Usr_ShowFormsToSelectUsrListType (ActReqAsgWrkCrs);
|
||||
Usr_ShowFormsToSelectUsrListType (CurrAction,FuncParamsCurrAction);
|
||||
|
||||
/***** Put link to register students *****/
|
||||
Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs ();
|
||||
|
||||
/* Start form */
|
||||
Frm_StartForm (ActAdmAsgWrkCrs);
|
||||
Frm_StartForm (NextAction);
|
||||
if (FuncParamsNextAction)
|
||||
FuncParamsNextAction ();
|
||||
Grp_PutParamsCodGrps ();
|
||||
Gbl.FileBrowser.FullTree = true; // By default, show all files
|
||||
Brw_PutHiddenParamFullTreeIfSelected ();
|
||||
|
@ -6214,6 +6185,29 @@ void Usr_PutFormToSelectUsrsToGoToAct (Act_Action_t NextAction,
|
|||
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 *************/
|
||||
/*****************************************************************************/
|
||||
|
@ -7314,7 +7308,7 @@ void Usr_ListDataAdms (void)
|
|||
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\""
|
||||
" style=\"margin-bottom:8px;\">");
|
||||
Frm_StartForm (ActLstOth);
|
||||
Sco_PutParamScope ("ScopeUsr",Gbl.Scope.Current);
|
||||
Sco_PutParamCurrentScope ();
|
||||
Usr_PutCheckboxListWithPhotos ();
|
||||
Frm_EndForm ();
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
|
@ -7788,13 +7782,14 @@ void Usr_SeeGuests (void)
|
|||
|
||||
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 *****/
|
||||
Usr_GetListsSelectedUsrsCods ();
|
||||
|
||||
/***** Form to select type of list of users *****/
|
||||
Usr_ShowFormsToSelectUsrListType (ActLstGst);
|
||||
Usr_ShowFormsToSelectUsrListType (ActLstGst,Sco_PutParamCurrentScope);
|
||||
|
||||
/***** Draw a class photo with guests *****/
|
||||
if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO)
|
||||
|
@ -7941,20 +7936,22 @@ void Usr_SeeStudents (void)
|
|||
|
||||
/***** Form to select groups *****/
|
||||
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 *****/
|
||||
Lay_StartSection (Usr_USER_LIST_SECTION_ID);
|
||||
|
||||
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 *****/
|
||||
Usr_GetListsSelectedUsrsCods ();
|
||||
|
||||
/***** 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 *****/
|
||||
if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO)
|
||||
|
@ -8116,17 +8113,19 @@ void Usr_SeeTeachers (void)
|
|||
|
||||
/***** Form to select groups *****/
|
||||
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 *****/
|
||||
Lay_StartSection (Usr_USER_LIST_SECTION_ID);
|
||||
|
||||
if (NumUsrs)
|
||||
{
|
||||
if (Usr_GetIfShowBigList (NumUsrs,NULL))
|
||||
if (Usr_GetIfShowBigList (NumUsrs,
|
||||
Sco_PutParamCurrentScope,NULL))
|
||||
{
|
||||
/***** 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 *****/
|
||||
if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO)
|
||||
|
@ -8643,21 +8642,18 @@ static void Usr_PutIconToShowTchsAllData (void)
|
|||
static void Usr_ShowGstsAllDataParams (void)
|
||||
{
|
||||
Usr_PutParamListWithPhotos ();
|
||||
Usr_PutExtraParamsUsrList (ActLstGstAll);
|
||||
}
|
||||
|
||||
static void Usr_ShowStdsAllDataParams (void)
|
||||
{
|
||||
Grp_PutParamsCodGrps ();
|
||||
Usr_PutParamListWithPhotos ();
|
||||
Usr_PutExtraParamsUsrList (ActLstStdAll);
|
||||
}
|
||||
|
||||
static void Usr_ShowTchsAllDataParams (void)
|
||||
{
|
||||
Sco_PutParamScope ("ScopeUsr",Gbl.Scope.Current);
|
||||
Sco_PutParamCurrentScope ();
|
||||
Usr_PutParamListWithPhotos ();
|
||||
Usr_PutExtraParamsUsrList (ActLstTchAll);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
12
swad_user.h
12
swad_user.h
|
@ -407,7 +407,9 @@ void Usr_GetUnorderedStdsCodesInDeg (long DegCod);
|
|||
void Usr_CopyBasicUsrDataFromList (struct UsrData *UsrDat,const struct UsrInList *UsrInList);
|
||||
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_GetListsSelectedUsrsCods (void);
|
||||
|
@ -417,16 +419,18 @@ unsigned Usr_CountNumUsrsInListOfSelectedUsrs (void);
|
|||
void Usr_FreeListsSelectedUsrsCods (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);
|
||||
unsigned Usr_GetColumnsForSelectUsrs (void);
|
||||
void Usr_SetUsrDatMainFieldNames (void);
|
||||
void Usr_WriteHeaderFieldsUsrDat (bool PutCheckBoxToSelectUsr);
|
||||
|
||||
void Usr_PutExtraParamsUsrList (Act_Action_t NextAction);
|
||||
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 *TxtButton);
|
||||
void Usr_GetSelectedUsrsAndGoToAct (void (*FuncWhenUsrsSelected) (),
|
||||
void (*FuncWhenNoUsrsSelected) ());
|
||||
void Usr_ListUsersToSelect (Rol_Role_t Role);
|
||||
|
||||
void Usr_ListAllDataGsts (void);
|
||||
|
|
Loading…
Reference in New Issue