Version 14.128.1

This commit is contained in:
Antonio Cañas Vargas 2015-09-12 14:12:40 +02:00
parent 9da7c01477
commit ce6a5e2d9b
9 changed files with 338 additions and 181 deletions

View File

@ -1230,12 +1230,13 @@ CREATE TABLE IF NOT EXISTS usr_webs (
'delicious','deviantart','diaspora',
'edmodo',
'facebook','flickr','foursquare',
'github','googleplus','googlescholar',
'instagram',
'github','gnusocial','googleplus','googlescholar',
'identica','instagram',
'linkedin',
'orcid',
'paperli','pinterest',
'quitter',
'researchgate',
'quitter',
'researchgate','researcherid',
'scoopit','slideshare','storify',
'tumblr','twitter',
'wikipedia',

View File

@ -240,7 +240,8 @@ static void Acc_PutLinkToRemoveMyAccount (void)
{
extern const char *Txt_Remove_account;
Act_PutContextualLink (ActUpdOthUsrDat,Acc_PutLinkToRemoveMyAccountParams,
// TODO: Put this option in Profile > Account
Act_PutContextualLink (ActUpdOthGst,Acc_PutLinkToRemoveMyAccountParams,
"delon",Txt_Remove_account);
}

View File

@ -916,14 +916,23 @@ Users:
760. ActReqRejSignUp Ask if reject the enrollment of a user in a course
761. ActRejSignUp Reject the enrollment of a user in a course
762. ActReqMdfOneUsr Request the enrollment/removing of a user
763. ActReqMdfUsr Register a user in this course
762b. ActReqMdfOneGst Request a user's ID for enrollment/removing
762c. ActReqMdfOneStd Request a user's ID for enrollment/removing
762d. ActReqMdfOneTch Request a user's ID for enrollment/removing
762e. ActReqMdfOneAdm Request a user's ID for enrollment/removing
763b. ActReqMdfGst Request enrollment/removing of a user
763c. ActReqMdfStd Request enrollment/removing of a user
763d. ActReqMdfTch Request enrollment/removing of a user
763e. ActReqMdfAdm Request enrollment/removing of a user
764. ActReqUsrPho Show form to send the photo of another user
765. ActDetUsrPho Receive other user's photo and detect faces on it
766. ActUpdUsrPho Update other user's photo
767. ActRemUsrPho Remove the photo of otro user
768. ActCreOthUsrDat Insertar a new user in this course
769. ActUpdOthUsrDat Actualizar the card of otro user
769b. ActUpdOthGst Update another user's data and groups
769c. ActUpdOthStd Update another user's data and groups
769d. ActUpdOthTch Update another user's data and groups
769e. ActUpdOthAdm Update another user's data and groups
770. ActReqAccEnrCrs Confirm acceptation / refusion of enrollment in current course
771. ActAccEnrCrs Accept enrollment in current course
772. ActRemMeCrs Refuse enrollment in current course
@ -2294,16 +2303,26 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActReqRejSignUp */{1058,-1,TabUsr,ActSeeSignUpReq ,0x1F0,0x1F0,0x1F0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AskIfRejectSignUp ,NULL},
/* ActRejSignUp */{1059,-1,TabUsr,ActSeeSignUpReq ,0x1F0,0x1F0,0x1F0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_RejectSignUp ,NULL},
/* ActReqMdfOneUsr */{ 177,-1,TabUsr,ActReqMdfSevUsr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqRegRemUsr ,NULL},
/* ActReqMdfUsr */{ 161,-1,TabUsr,ActReqMdfSevUsr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AskIfRegRemAnotherUsr ,NULL},
/* ActReqMdfOneGst */{1414,-1,TabUsr,ActLstInv ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqRegRemGst ,NULL},
/* ActReqMdfOneStd */{1415,-1,TabUsr,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqRegRemStd ,NULL},
/* ActReqMdfOneTch */{1416,-1,TabUsr,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqRegRemTch ,NULL},
/* ActReqMdfOneAdm */{1417,-1,TabUsr,ActLstAdm ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqRegRemAdm ,NULL},
/* ActReqMdfUsr */{1418,-1,TabUsr,ActLstInv ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AskIfRegRemAnotherGst ,NULL},
/* ActReqMdfUsr */{1419,-1,TabUsr,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AskIfRegRemAnotherStd ,NULL},
/* ActReqMdfUsr */{1420,-1,TabUsr,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AskIfRegRemAnotherTch ,NULL},
/* ActReqMdfUsr */{1421,-1,TabUsr,ActLstAdm ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AskIfRegRemAnotherAdm ,NULL},
/* ActReqUsrPho */{ 375,-1,TabUsr,ActReqMdfSevUsr ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_SendPhotoUsr ,NULL},
/* ActDetUsrPho */{ 695,-1,TabUsr,ActReqMdfSevUsr ,0x1F0,0x1E0,0x1E0,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Pho_RecUsrPhotoDetFaces ,NULL},
/* ActUpdUsrPho */{ 374,-1,TabUsr,ActReqMdfSevUsr ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_UpdateUsrPhoto1 ,Pho_UpdateUsrPhoto2 ,NULL},
/* ActRemUsrPho */{ 429,-1,TabUsr,ActReqMdfSevUsr ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_RemoveUsrPhoto ,NULL},
/* ActCreOthUsrDat */{ 440,-1,TabUsr,ActReqMdfSevUsr ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_CreatAndShowNewUsrRecordAndRegInCrs,NULL},
/* ActUpdOthUsrDat */{ 439,-1,TabUsr,ActReqMdfSevUsr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ModifAndShowUsrCardAndRegInCrsAndGrps,NULL},
/* ActCreOthUsrDat */{ 440,-1,TabUsr,ActReqMdfSevUsr ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_CreateNewUsr ,NULL},
/* ActUpdOthGst */{1422,-1,TabUsr,ActLstInv ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ModifyUsr ,NULL},
/* ActUpdOthStd */{1423,-1,TabUsr,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ModifyUsr ,NULL},
/* ActUpdOthTch */{1424,-1,TabUsr,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ModifyUsr ,NULL},
/* ActUpdOthAdm */{1425,-1,TabUsr,ActLstAdm ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ModifyUsr ,NULL},
/* ActReqAccEnrCrs */{ 592,-1,TabUsr,ActReqMdfSevUsr ,0x1F8,0x000,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqAcceptRegisterInCrs ,NULL},
/* ActAccEnrCrs */{ 558,-1,TabUsr,ActReqMdfSevUsr ,0x1F8,0x000,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AcceptRegisterMeInCrs ,NULL},
@ -2833,7 +2852,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
-1, // #158 (obsolete action)
-1, // #159 (obsolete action)
-1, // #160 (obsolete action)
ActReqMdfUsr, // #161
-1, // #161 (obsolete action)
-1, // #162 (obsolete action)
-1, // #163 (obsolete action)
ActRcvPagCrsLnk, // #164
@ -2849,7 +2868,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActNewGrpTyp, // #174
ActRemGrp, // #175
-1, // #176 (obsolete action)
ActReqMdfOneUsr, // #177
-1, // #177 (obsolete action)
-1, // #178 (obsolete action)
ActPrnExaAnn, // #179
-1, // #180 (obsolete action)
@ -3111,7 +3130,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActDelAllRcvMsg, // #436
-1, // #437 (obsolete action)
-1, // #438 (obsolete action)
ActUpdOthUsrDat, // #439
-1, // #439 (obsolete action)
ActCreOthUsrDat, // #440
-1, // #441 (obsolete action)
-1, // #442 (obsolete action)
@ -4089,6 +4108,18 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActUnfUsr, // #1411
ActSeeFlg, // #1412
ActSeeFlr, // #1413
ActReqMdfOneGst, // #1414
ActReqMdfOneStd, // #1415
ActReqMdfOneTch, // #1416
ActReqMdfOneAdm, // #1417
ActReqMdfGst, // #1418
ActReqMdfStd, // #1419
ActReqMdfTch, // #1420
ActReqMdfAdm, // #1421
ActUpdOthGst, // #1422
ActUpdOthStd, // #1423
ActUpdOthTch, // #1424
ActUpdOthAdm, // #1425
};
/*****************************************************************************/
@ -4484,7 +4515,7 @@ void Act_AdjustCurrentAction (void)
case ActReqEdiRecCom:
case ActReqEdiMyIns:
case ActReqSelGrp:
case ActReqMdfOneUsr: // A student use this action to remove him/herself from current course
case ActReqMdfOneStd: // A student use this action to remove him/herself from current course
case ActSeeCrsTimTbl:
case ActPrnCrsTimTbl:
case ActSeeMyTimTbl:

View File

@ -69,9 +69,9 @@ typedef enum
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+182+110+168+28+77)
#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+182+119+168+28+77)
#define Act_MAX_ACTION_COD 1413
#define Act_MAX_ACTION_COD 1425
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
@ -942,53 +942,63 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
#define ActReqRejSignUp (ActChgNumRowFooGrp+ 70)
#define ActRejSignUp (ActChgNumRowFooGrp+ 71)
#define ActReqMdfOneUsr (ActChgNumRowFooGrp+ 72)
#define ActReqMdfUsr (ActChgNumRowFooGrp+ 73)
#define ActReqMdfOneGst (ActChgNumRowFooGrp+ 72)
#define ActReqMdfOneStd (ActChgNumRowFooGrp+ 73)
#define ActReqMdfOneTch (ActChgNumRowFooGrp+ 74)
#define ActReqMdfOneAdm (ActChgNumRowFooGrp+ 75)
#define ActReqUsrPho (ActChgNumRowFooGrp+ 74)
#define ActDetUsrPho (ActChgNumRowFooGrp+ 75)
#define ActUpdUsrPho (ActChgNumRowFooGrp+ 76)
#define ActRemUsrPho (ActChgNumRowFooGrp+ 77)
#define ActCreOthUsrDat (ActChgNumRowFooGrp+ 78)
#define ActUpdOthUsrDat (ActChgNumRowFooGrp+ 79)
#define ActReqMdfGst (ActChgNumRowFooGrp+ 76)
#define ActReqMdfStd (ActChgNumRowFooGrp+ 77)
#define ActReqMdfTch (ActChgNumRowFooGrp+ 78)
#define ActReqMdfAdm (ActChgNumRowFooGrp+ 79)
#define ActReqAccEnrCrs (ActChgNumRowFooGrp+ 80)
#define ActAccEnrCrs (ActChgNumRowFooGrp+ 81)
#define ActRemMeCrs (ActChgNumRowFooGrp+ 82)
#define ActReqUsrPho (ActChgNumRowFooGrp+ 80)
#define ActDetUsrPho (ActChgNumRowFooGrp+ 81)
#define ActUpdUsrPho (ActChgNumRowFooGrp+ 82)
#define ActRemUsrPho (ActChgNumRowFooGrp+ 83)
#define ActCreOthUsrDat (ActChgNumRowFooGrp+ 84)
#define ActUpdOthGst (ActChgNumRowFooGrp+ 85)
#define ActUpdOthStd (ActChgNumRowFooGrp+ 86)
#define ActUpdOthTch (ActChgNumRowFooGrp+ 87)
#define ActUpdOthAdm (ActChgNumRowFooGrp+ 88)
#define ActNewAdmIns (ActChgNumRowFooGrp+ 83)
#define ActRemAdmIns (ActChgNumRowFooGrp+ 84)
#define ActNewAdmCtr (ActChgNumRowFooGrp+ 85)
#define ActRemAdmCtr (ActChgNumRowFooGrp+ 86)
#define ActNewAdmDeg (ActChgNumRowFooGrp+ 87)
#define ActRemAdmDeg (ActChgNumRowFooGrp+ 88)
#define ActReqAccEnrCrs (ActChgNumRowFooGrp+ 89)
#define ActAccEnrCrs (ActChgNumRowFooGrp+ 90)
#define ActRemMeCrs (ActChgNumRowFooGrp+ 91)
#define ActRcvFrmMdfUsrCrs (ActChgNumRowFooGrp+ 89)
#define ActFrmIDsOthUsr (ActChgNumRowFooGrp+ 90)
#define ActRemIDOth (ActChgNumRowFooGrp+ 91)
#define ActNewIDOth (ActChgNumRowFooGrp+ 92)
#define ActFrmPwdOthUsr (ActChgNumRowFooGrp+ 93)
#define ActChgPwdOthUsr (ActChgNumRowFooGrp+ 94)
#define ActRemUsrCrs (ActChgNumRowFooGrp+ 95)
#define ActRemUsrGbl (ActChgNumRowFooGrp+ 96)
#define ActNewAdmIns (ActChgNumRowFooGrp+ 92)
#define ActRemAdmIns (ActChgNumRowFooGrp+ 93)
#define ActNewAdmCtr (ActChgNumRowFooGrp+ 94)
#define ActRemAdmCtr (ActChgNumRowFooGrp+ 95)
#define ActNewAdmDeg (ActChgNumRowFooGrp+ 96)
#define ActRemAdmDeg (ActChgNumRowFooGrp+ 97)
#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+ 97)
#define ActRemAllStdCrs (ActChgNumRowFooGrp+ 98)
#define ActRcvFrmMdfUsrCrs (ActChgNumRowFooGrp+ 98)
#define ActFrmIDsOthUsr (ActChgNumRowFooGrp+ 99)
#define ActRemIDOth (ActChgNumRowFooGrp+100)
#define ActNewIDOth (ActChgNumRowFooGrp+101)
#define ActFrmPwdOthUsr (ActChgNumRowFooGrp+102)
#define ActChgPwdOthUsr (ActChgNumRowFooGrp+103)
#define ActRemUsrCrs (ActChgNumRowFooGrp+104)
#define ActRemUsrGbl (ActChgNumRowFooGrp+105)
#define ActReqRemOldUsr (ActChgNumRowFooGrp+ 99)
#define ActRemOldUsr (ActChgNumRowFooGrp+100)
#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+106)
#define ActRemAllStdCrs (ActChgNumRowFooGrp+107)
#define ActSeePubPrf (ActChgNumRowFooGrp+101)
#define ActCal1stClkTim (ActChgNumRowFooGrp+102)
#define ActCalNumClk (ActChgNumRowFooGrp+103)
#define ActCalNumFilVie (ActChgNumRowFooGrp+104)
#define ActCalNumForPst (ActChgNumRowFooGrp+105)
#define ActCalNumMsgSnt (ActChgNumRowFooGrp+106)
#define ActReqRemOldUsr (ActChgNumRowFooGrp+108)
#define ActRemOldUsr (ActChgNumRowFooGrp+109)
#define ActFolUsr (ActChgNumRowFooGrp+107)
#define ActUnfUsr (ActChgNumRowFooGrp+108)
#define ActSeeFlg (ActChgNumRowFooGrp+109)
#define ActSeeFlr (ActChgNumRowFooGrp+110)
#define ActSeePubPrf (ActChgNumRowFooGrp+110)
#define ActCal1stClkTim (ActChgNumRowFooGrp+111)
#define ActCalNumClk (ActChgNumRowFooGrp+112)
#define ActCalNumFilVie (ActChgNumRowFooGrp+113)
#define ActCalNumForPst (ActChgNumRowFooGrp+114)
#define ActCalNumMsgSnt (ActChgNumRowFooGrp+115)
#define ActFolUsr (ActChgNumRowFooGrp+116)
#define ActUnfUsr (ActChgNumRowFooGrp+117)
#define ActSeeFlg (ActChgNumRowFooGrp+118)
#define ActSeeFlr (ActChgNumRowFooGrp+119)
/*****************************************************************************/
/******************************* Messages tab ********************************/

View File

@ -103,12 +103,31 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 14.128.1 (2015/09/10)"
#define Log_PLATFORM_VERSION "SWAD 14.129 (2015/09/11)"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/*
Version 14.128.1: Sep 10, 2015 Two new social networks. (184278 lines)
Version 14.129: Sep 11, 2015 New links to admin a user in list of students.
Changes in user enrollment.
Fixed bug in user enrollment. (184411 lines)
UPDATE actions SET Obsolete='Y' WHERE ActCod='177';
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1414','es','N','Solicitar ID modif. invitado');
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1415','es','N','Solicitar ID modif. estudiante');
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1416','es','N','Solicitar ID modif. profesor');
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1417','es','N','Solicitar ID modif. administrador');
UPDATE actions SET Obsolete='Y' WHERE ActCod='161';
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1418','es','N','Confirmar modif. invitado');
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1419','es','N','Confirmar modif. estudiante');
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1420','es','N','Confirmar modif. profesor');
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1421','es','N','Confirmar modif. administrador');
UPDATE actions SET Obsolete='Y' WHERE ActCod='439';
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1422','es','N','Modificar datos invitado');
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1423','es','N','Modificar datos estudiante');
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1424','es','N','Modificar datos profesor');
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1425','es','N','Modificar datos administrador');
Version 14.128.1: Sep 11, 2015 Two new social networks. (184278 lines)
1 change necessary in database:
ALTER TABLE usr_webs CHANGE Web Web ENUM('www','500px','delicious','deviantart','diaspora','edmodo','facebook','flickr','foursquare','github','gnusocial','googleplus','googlescholar','identica','instagram','linkedin','orcid','paperli','pinterest','quitter','researchgate','researcherid','scoopit','slideshare','storify','tumblr','twitter','wikipedia','youtube') NOT NULL;

View File

@ -88,7 +88,6 @@ extern struct Globals Gbl;
static void Enr_ShowFormRegRemSeveralUsrs (void);
static void Enr_PutLinkToRemOldUsrs (void);
static void Enr_PutAreaToEnterUsrsIDs (void);
static void Enr_PutActionsRegRemSeveralUsrs (void);
@ -96,14 +95,13 @@ static void Enr_RegisterUsr (struct UsrData *UsrDat,Rol_Role_t RegRemRole,
struct ListCodGrps *LstGrps,unsigned *NumUsrsRegistered);
static void Enr_MarkOfficialStdsAsRemovable (long ImpGrpCod,bool RemoveSpecifiedUsrs);
static void Enr_PutLinkToRemAllStdsThisCrs (void);
static void Enr_RemoveEnrollmentRequest (long CrsCod,long UsrCod);
static void Enr_PutLinkToAdminOneUsr (void);
static void Enr_PutLinkToAdminSeveralUsrs (void);
static void Enr_ReqAnotherUsrIDToRegisterRemove (void);
static void Enr_AskIfRegRemMe (void);
static void Enr_AskIfRegRemUsr (struct ListUsrCods *ListUsrCods);
static void Enr_ReqRegRemUsr (Rol_Role_t Role);
static void Enr_ReqAnotherUsrIDToRegisterRemove (Rol_Role_t Role);
static void Enr_AskIfRegRemMe (Rol_Role_t Role);
static void Enr_AskIfRegRemAnotherUsr (Rol_Role_t Role);
static void Enr_AskIfRegRemUsr (struct ListUsrCods *ListUsrCods,Rol_Role_t Role);
static void Enr_ShowFormToEditOtherUsr (void);
@ -447,39 +445,28 @@ void Enr_ReqAdminUsrs (void)
switch (Gbl.Usrs.Me.LoggedRole)
{
case Rol__GUEST_:
case Rol_VISITOR:
Enr_AskIfRegRemMe (Rol__GUEST_);
break;
case Rol_STUDENT:
Enr_AskIfRegRemMe ();
Enr_AskIfRegRemMe (Rol_STUDENT);
break;
case Rol_TEACHER:
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
Enr_ShowFormRegRemSeveralUsrs ();
else
Enr_AskIfRegRemMe ();
Enr_AskIfRegRemMe (Rol_TEACHER);
break;
case Rol_DEG_ADM:
if (Gbl.CurrentDeg.Deg.DegCod > 0)
Enr_ReqAnotherUsrIDToRegisterRemove ();
else
Enr_AskIfRegRemMe ();
break;
case Rol_CTR_ADM:
if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
Enr_ReqAnotherUsrIDToRegisterRemove ();
else
Enr_AskIfRegRemMe ();
break;
case Rol_INS_ADM:
if (Gbl.CurrentIns.Ins.InsCod > 0)
Enr_ReqAnotherUsrIDToRegisterRemove ();
else
Enr_AskIfRegRemMe ();
Enr_ReqRegRemUsr (Rol_DEG_ADM);
break;
case Rol_SYS_ADM:
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
Enr_ShowFormRegRemSeveralUsrs ();
else
Enr_ReqAnotherUsrIDToRegisterRemove ();
Enr_ReqAnotherUsrIDToRegisterRemove (Rol_TEACHER); // TODO: Change this line to the following
// Enr_ReqAnotherUsrIDToRegisterRemove (Role);
break;
default:
Lay_ShowAlert (Lay_ERROR,Txt_You_dont_have_permission_to_perform_this_action);
@ -512,9 +499,6 @@ static void Enr_ShowFormRegRemSeveralUsrs (void)
/***** Put contextual links *****/
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
/* Put link to go to admin one user */
Enr_PutLinkToAdminOneUsr ();
/* Put link to remove all the students in the current course */
if (Gbl.CurrentCrs.Crs.CrsCod > 0) // Course selected
Enr_PutLinkToRemAllStdsThisCrs ();
@ -618,7 +602,7 @@ static void Enr_ShowFormRegRemSeveralUsrs (void)
/******************** Put a link (form) to remove old users ******************/
/*****************************************************************************/
static void Enr_PutLinkToRemOldUsrs (void)
void Enr_PutLinkToRemOldUsrs (void)
{
extern const char *Txt_Remove_old_users;
@ -1697,7 +1681,7 @@ static void Enr_MarkOfficialStdsAsRemovable (long ImpGrpCod,bool RemoveSpecified
/**** Put a link (form) to remove all the students in the current course *****/
/*****************************************************************************/
static void Enr_PutLinkToRemAllStdsThisCrs (void)
void Enr_PutLinkToRemAllStdsThisCrs (void)
{
extern const char *Txt_Remove_all_students;
@ -2411,15 +2395,20 @@ void Enr_ShowEnrollmentRequests (void)
/* Get user code (row[2]) */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[2]);
UsrExists = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat);
/***** Get requested role (row[3]) *****/
DesiredRole = Rol_ConvertUnsignedStrToRole (row[3]);
if (UsrExists)
UsrBelongsToCrs = Usr_CheckIfUsrBelongsToCrs (UsrDat.UsrCod,Crs.CrsCod);
else
UsrBelongsToCrs = false;
if (UsrExists & !UsrBelongsToCrs)
if (UsrExists &&
!UsrBelongsToCrs &&
(DesiredRole == Rol_STUDENT ||
DesiredRole == Rol_TEACHER))
{
/***** Number *****/
fprintf (Gbl.F.Out,"<tr>"
@ -2463,7 +2452,6 @@ void Enr_ShowEnrollmentRequests (void)
Usr_RestrictLengthAndWriteName (&UsrDat,20);
/***** Requested role (row[3]) *****/
DesiredRole = Rol_ConvertUnsignedStrToRole (row[3]);
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">"
"%s"
"</td>",
@ -2474,7 +2462,8 @@ void Enr_ShowEnrollmentRequests (void)
/***** Button to confirm the request *****/
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">");
Act_FormStart (ActReqMdfUsr);
Act_FormStart (DesiredRole == Rol_STUDENT ? ActReqMdfStd :
ActReqMdfTch);
Crs_PutParamCrsCod (Crs.CrsCod);
Usr_PutParamUsrCodEncrypted (UsrDat.EncryptedUsrCod);
Lay_PutCreateButton (Txt_Register);
@ -2550,11 +2539,11 @@ static void Enr_RemoveEnrollmentRequest (long CrsCod,long UsrCod)
/********************** Write a form to admin one user ***********************/
/*****************************************************************************/
static void Enr_PutLinkToAdminOneUsr (void)
void Enr_PutLinkToAdminOneUsr (Act_Action_t NextAction)
{
extern const char *Txt_Admin_one_user;
Act_PutContextualLink (ActReqMdfOneUsr,NULL,
Act_PutContextualLink (NextAction,NULL,
"configtest",Txt_Admin_one_user);
}
@ -2562,7 +2551,7 @@ static void Enr_PutLinkToAdminOneUsr (void)
/******************* Write a form to admin several users *********************/
/*****************************************************************************/
static void Enr_PutLinkToAdminSeveralUsrs (void)
void Enr_PutLinkToAdminSeveralUsrs (void)
{
extern const char *Txt_Admin_several_users;
@ -2574,43 +2563,64 @@ static void Enr_PutLinkToAdminSeveralUsrs (void)
/************** Form to request the user's ID of another user ****************/
/*****************************************************************************/
void Enr_ReqRegRemUsr (void)
void Enr_ReqRegRemGst (void)
{
Enr_ReqRegRemUsr (Rol__GUEST_);
}
void Enr_ReqRegRemStd (void)
{
Enr_ReqRegRemUsr (Rol_STUDENT);
}
void Enr_ReqRegRemTch (void)
{
Enr_ReqRegRemUsr (Rol_TEACHER);
}
void Enr_ReqRegRemAdm (void)
{
Enr_ReqRegRemUsr (Rol_DEG_ADM);
}
static void Enr_ReqRegRemUsr (Rol_Role_t Role)
{
extern const char *Txt_You_dont_have_permission_to_perform_this_action;
switch (Gbl.Usrs.Me.LoggedRole)
{
case Rol__GUEST_:
case Rol_VISITOR:
Enr_AskIfRegRemMe (Rol__GUEST_);
break;
case Rol_STUDENT:
Enr_AskIfRegRemMe ();
Enr_AskIfRegRemMe (Rol_STUDENT);
break;
case Rol_TEACHER:
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
Enr_ReqAnotherUsrIDToRegisterRemove ();
Enr_ReqAnotherUsrIDToRegisterRemove (Role);
else
Enr_AskIfRegRemMe ();
Enr_AskIfRegRemMe (Rol_TEACHER);
break;
case Rol_DEG_ADM:
if (Gbl.CurrentDeg.Deg.DegCod > 0)
Enr_ReqAnotherUsrIDToRegisterRemove ();
Enr_ReqAnotherUsrIDToRegisterRemove (Role);
else
Enr_AskIfRegRemMe ();
Enr_AskIfRegRemMe (Rol_DEG_ADM);
break;
case Rol_CTR_ADM:
if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
Enr_ReqAnotherUsrIDToRegisterRemove ();
Enr_ReqAnotherUsrIDToRegisterRemove (Role);
else
Enr_AskIfRegRemMe ();
Enr_AskIfRegRemMe (Rol_DEG_ADM);
break;
case Rol_INS_ADM:
if (Gbl.CurrentIns.Ins.InsCod > 0)
Enr_ReqAnotherUsrIDToRegisterRemove ();
Enr_ReqAnotherUsrIDToRegisterRemove (Role);
else
Enr_AskIfRegRemMe ();
Enr_AskIfRegRemMe (Rol_DEG_ADM);
break;
case Rol_SYS_ADM:
Enr_ReqAnotherUsrIDToRegisterRemove ();
Enr_ReqAnotherUsrIDToRegisterRemove (Role);
break;
default:
Lay_ShowAlert (Lay_ERROR,Txt_You_dont_have_permission_to_perform_this_action);
@ -2622,7 +2632,7 @@ void Enr_ReqRegRemUsr (void)
/****** Write a form to request another user's ID, @nickname or e-mail *******/
/*****************************************************************************/
static void Enr_ReqAnotherUsrIDToRegisterRemove (void)
static void Enr_ReqAnotherUsrIDToRegisterRemove (Rol_Role_t Role)
{
extern const char *Txt_Admin_one_user;
@ -2646,7 +2656,10 @@ static void Enr_ReqAnotherUsrIDToRegisterRemove (void)
Lay_StartRoundFrame (NULL,Txt_Admin_one_user);
/***** Write form to request another user's ID *****/
Enr_WriteFormToReqAnotherUsrID (ActReqMdfUsr);
Enr_WriteFormToReqAnotherUsrID ( Role == Rol__GUEST_ ? ActReqMdfGst :
(Role == Rol_STUDENT ? ActReqMdfStd :
(Role == Rol_TEACHER ? ActReqMdfTch :
ActReqMdfAdm)));
/***** End frame *****/
Lay_EndRoundFrame ();
@ -2656,7 +2669,7 @@ static void Enr_ReqAnotherUsrIDToRegisterRemove (void)
/********************** Ask me for register/remove me ************************/
/*****************************************************************************/
static void Enr_AskIfRegRemMe (void)
static void Enr_AskIfRegRemMe (Rol_Role_t Role)
{
struct ListUsrCods ListUsrCods;
@ -2666,14 +2679,34 @@ static void Enr_AskIfRegRemMe (void)
Usr_AllocateListUsrCods (&ListUsrCods);
ListUsrCods.Lst[0] = Gbl.Usrs.Other.UsrDat.UsrCod;
Enr_AskIfRegRemUsr (&ListUsrCods);
Enr_AskIfRegRemUsr (&ListUsrCods,Role);
}
/*****************************************************************************/
/****************** Ask me for register/remove another user ******************/
/*****************************************************************************/
void Enr_AskIfRegRemAnotherUsr (void)
void Enr_AskIfRegRemAnotherGst (void)
{
Enr_AskIfRegRemAnotherUsr (Rol__GUEST_);
}
void Enr_AskIfRegRemAnotherStd (void)
{
Enr_AskIfRegRemAnotherUsr (Rol_STUDENT);
}
void Enr_AskIfRegRemAnotherTch (void)
{
Enr_AskIfRegRemAnotherUsr (Rol_TEACHER);
}
void Enr_AskIfRegRemAnotherAdm (void)
{
Enr_AskIfRegRemAnotherUsr (Rol_DEG_ADM);
}
static void Enr_AskIfRegRemAnotherUsr (Rol_Role_t Role)
{
struct ListUsrCods ListUsrCods;
@ -2692,14 +2725,14 @@ void Enr_AskIfRegRemAnotherUsr (void)
use user's ID to identify the user to be enrolled /removed *****/
Usr_GetParamOtherUsrIDNickOrEMailAndGetUsrCods (&ListUsrCods);
Enr_AskIfRegRemUsr (&ListUsrCods);
Enr_AskIfRegRemUsr (&ListUsrCods,Role);
}
/*****************************************************************************/
/********************** Ask me for register/remove user **********************/
/*****************************************************************************/
static void Enr_AskIfRegRemUsr (struct ListUsrCods *ListUsrCods)
static void Enr_AskIfRegRemUsr (struct ListUsrCods *ListUsrCods,Rol_Role_t Role)
{
extern const char *Txt_There_are_X_users_with_the_ID_Y;
extern const char *Txt_THE_USER_X_is_already_enrolled_in_the_course_Y;
@ -2795,7 +2828,7 @@ static void Enr_AskIfRegRemUsr (struct ListUsrCods *ListUsrCods)
sprintf (Gbl.Message,Txt_If_this_is_a_new_user_in_X_you_should_indicate_her_his_ID,
Cfg_PLATFORM_SHORT_NAME);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
Enr_ReqRegRemUsr ();
Enr_ReqRegRemUsr (Role);
}
}
}
@ -3172,7 +3205,7 @@ void Enr_AcceptRegisterMeInCrs (void)
/******************* Create and show data from other user ********************/
/*****************************************************************************/
void Enr_CreatAndShowNewUsrRecordAndRegInCrs (void)
void Enr_CreateNewUsr (void)
{
extern const char *Txt_The_ID_X_is_not_valid;
Rol_Role_t NewRole;
@ -3227,15 +3260,12 @@ void Enr_CreatAndShowNewUsrRecordAndRegInCrs (void)
/**** Modify other user's data and register her/him in course and groups *****/
/*****************************************************************************/
void Enr_ModifAndShowUsrCardAndRegInCrsAndGrps (void)
void Enr_ModifyUsr (void)
{
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
char UnsignedStr[10+1];
unsigned UnsignedNum;
bool ItsMe;
bool IAmTeacher;
bool HeIsTeacher;
bool ICanChangeUsrName;
Enr_RegRemOneUsrAction_t RegRemAction;
Rol_Role_t NewRole;
bool Error = false;
@ -3254,13 +3284,8 @@ void Enr_ModifAndShowUsrCardAndRegInCrsAndGrps (void)
case Enr_REGISTER_MODIFY_ONE_USR_IN_CRS:
if (ItsMe || Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER)
{
IAmTeacher = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER); // I am logged as teacher
HeIsTeacher = (Gbl.Usrs.Other.UsrDat.Roles & (1 << Rol_TEACHER)); // He/she is already a teacher in any course
ICanChangeUsrName = ItsMe ||
!(IAmTeacher && HeIsTeacher); // A teacher can not change another teacher's name
/***** Get user's name from record form *****/
if (ICanChangeUsrName)
if (Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM) // Only an admin can change another user's name
Rec_GetUsrNameFromRecordForm (&Gbl.Usrs.Other.UsrDat);
/***** Update user's data in database *****/

View File

@ -94,6 +94,9 @@ void Enr_RemoveOldUsrs (void);
bool Enr_PutActionsRegRemOneUsr (bool ItsMe);
void Enr_ReceiveFormUsrsCrs (void);
void Enr_PutLinkToRemAllStdsThisCrs (void);
void Enr_PutLinkToRemOldUsrs (void);
void Enr_PutLinkToAdminSeveralUsrs (void);
void Enr_AskRemAllStdsThisCrs (void);
void Enr_RemAllStdsThisCrs (void);
unsigned Enr_RemAllStdsInCrs (struct Course *Crs);
@ -105,8 +108,16 @@ void Enr_AskIfRejectSignUp (void);
void Enr_RejectSignUp (void);
void Enr_ShowEnrollmentRequests (void);
void Enr_ReqRegRemUsr (void);
void Enr_AskIfRegRemAnotherUsr (void);
void Enr_PutLinkToAdminOneUsr (Act_Action_t NextAction);
void Enr_ReqRegRemGst (void);
void Enr_ReqRegRemStd (void);
void Enr_ReqRegRemTch (void);
void Enr_ReqRegRemAdm (void);
void Enr_AskIfRegRemAnotherGst (void);
void Enr_AskIfRegRemAnotherStd (void);
void Enr_AskIfRegRemAnotherTch (void);
void Enr_AskIfRegRemAnotherAdm (void);
void Enr_AddAdmToIns (void);
void Enr_AddAdmToCtr (void);
void Enr_AddAdmToDeg (void);
@ -119,8 +130,8 @@ void Enr_RemAdmCtr (void);
void Enr_RemAdmDeg (void);
void Enr_AcceptRegisterMeInCrs (void);
void Enr_CreatAndShowNewUsrRecordAndRegInCrs (void);
void Enr_ModifAndShowUsrCardAndRegInCrsAndGrps (void);
void Enr_CreateNewUsr (void);
void Enr_ModifyUsr (void);
void Enr_AcceptUsrInCrs (long UsrCod);
#endif

View File

@ -1991,58 +1991,58 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
UsrDat->RoleInCurrentCrsDB == Rol_TEACHER);
bool CountryForm = (TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_FORM_NEW_RECORD_OTHER_NEW_USR);
bool RoleForm = (Gbl.CurrentCrs.Crs.CrsCod > 0 &&
(TypeOfView == Rec_FORM_SIGN_UP ||
TypeOfView == Rec_FORM_NEW_RECORD_OTHER_NEW_USR ||
TypeOfView == Rec_FORM_MODIFY_RECORD_OTHER_EXISTING_USR));
bool SexForm = TypeOfView == Rec_FORM_MY_COMMON_RECORD;
bool DataForm = (TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
bool RoleForm = Gbl.CurrentCrs.Crs.CrsCod > 0 &&
(TypeOfView == Rec_FORM_SIGN_UP ||
TypeOfView == Rec_FORM_NEW_RECORD_OTHER_NEW_USR ||
(TypeOfView == Rec_FORM_MODIFY_RECORD_OTHER_EXISTING_USR &&
Gbl.Usrs.Me.LoggedRole > Rol_TEACHER));
TypeOfView == Rec_FORM_MODIFY_RECORD_OTHER_EXISTING_USR);
bool SexForm = TypeOfView == Rec_FORM_MY_COMMON_RECORD;
bool DataForm = TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_FORM_NEW_RECORD_OTHER_NEW_USR ||
(TypeOfView == Rec_FORM_MODIFY_RECORD_OTHER_EXISTING_USR &&
Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM);
bool PutFormLinks; // Put links (forms) inside record card
bool ShowEmail = (ItsMe ||
Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM ||
DataForm ||
TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ||
TypeOfView == Rec_FORM_MY_COURSE_RECORD_AS_STUDENT ||
TypeOfView == Rec_CHECK_MY_COURSE_RECORD_AS_STUDENT ||
(UsrDat->Accepted &&
(TypeOfView == Rec_CHECK_OTHER_USR_COMMON_RECORD ||
((TypeOfView == Rec_RECORD_LIST ||
TypeOfView == Rec_RECORD_PRINT) &&
(IAmLoggedAsTeacher || Gbl.Usrs.Listing.RecsUsrs == Rec_RECORD_USERS_TEACHERS)))));
bool ShowID = (ItsMe ||
Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM ||
DataForm ||
TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ||
TypeOfView == Rec_FORM_MY_COURSE_RECORD_AS_STUDENT ||
TypeOfView == Rec_CHECK_MY_COURSE_RECORD_AS_STUDENT ||
(UsrDat->Accepted &&
((TypeOfView == Rec_CHECK_OTHER_USR_COMMON_RECORD &&
!(IAmLoggedAsTeacher && HeIsTeacherInAnyCourse)) || // A teacher can not see another teacher's ID
((TypeOfView == Rec_RECORD_LIST ||
TypeOfView == Rec_RECORD_PRINT) &&
IAmLoggedAsTeacher && Gbl.Usrs.Listing.RecsUsrs == Rec_RECORD_USERS_STUDENTS))));
bool ShowEmail = ItsMe ||
Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM ||
DataForm ||
TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ||
TypeOfView == Rec_FORM_MY_COURSE_RECORD_AS_STUDENT ||
TypeOfView == Rec_CHECK_MY_COURSE_RECORD_AS_STUDENT ||
(UsrDat->Accepted &&
(TypeOfView == Rec_CHECK_OTHER_USR_COMMON_RECORD ||
((TypeOfView == Rec_RECORD_LIST ||
TypeOfView == Rec_RECORD_PRINT) &&
(IAmLoggedAsTeacher || Gbl.Usrs.Listing.RecsUsrs == Rec_RECORD_USERS_TEACHERS))));
bool ShowID = ItsMe ||
Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM ||
DataForm ||
TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ||
TypeOfView == Rec_FORM_MY_COURSE_RECORD_AS_STUDENT ||
TypeOfView == Rec_CHECK_MY_COURSE_RECORD_AS_STUDENT ||
(UsrDat->Accepted &&
((TypeOfView == Rec_CHECK_OTHER_USR_COMMON_RECORD &&
!(IAmLoggedAsTeacher && HeIsTeacherInAnyCourse)) || // A teacher can not see another teacher's ID
((TypeOfView == Rec_RECORD_LIST ||
TypeOfView == Rec_RECORD_PRINT) &&
IAmLoggedAsTeacher && Gbl.Usrs.Listing.RecsUsrs == Rec_RECORD_USERS_STUDENTS)));
bool ShowData = ItsMe ||
Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM ||
UsrDat->Accepted;
bool ShowIDRows = (TypeOfView != Rec_RECORD_PUBLIC);
bool ShowAddressRows = (TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ||
TypeOfView == Rec_FORM_MY_COURSE_RECORD_AS_STUDENT ||
TypeOfView == Rec_CHECK_MY_COURSE_RECORD_AS_STUDENT ||
((TypeOfView == Rec_RECORD_LIST ||
TypeOfView == Rec_RECORD_PRINT) &&
(IAmLoggedAsTeacher || IAmLoggedAsSysAdm) &&
UsrDat->RoleInCurrentCrsDB == Rol_STUDENT));
bool ShowIDRows = TypeOfView != Rec_RECORD_PUBLIC;
bool ShowAddressRows = TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ||
TypeOfView == Rec_FORM_MY_COURSE_RECORD_AS_STUDENT ||
TypeOfView == Rec_CHECK_MY_COURSE_RECORD_AS_STUDENT ||
((TypeOfView == Rec_RECORD_LIST ||
TypeOfView == Rec_RECORD_PRINT) &&
(IAmLoggedAsTeacher || IAmLoggedAsSysAdm) &&
UsrDat->RoleInCurrentCrsDB == Rol_STUDENT);
bool ShowTeacherRows = (((TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ||
TypeOfView == Rec_FORM_MY_COURSE_RECORD_AS_STUDENT ||
TypeOfView == Rec_CHECK_MY_COURSE_RECORD_AS_STUDENT) &&
(UsrDat->Roles & (1 << Rol_TEACHER))) || // He/she (me, really) is a teacher in any course
(UsrDat->Roles & (1 << Rol_TEACHER))) || // He/she (me, really) is a teacher in any course
((TypeOfView == Rec_RECORD_LIST ||
TypeOfView == Rec_RECORD_PRINT) &&
UsrDat->RoleInCurrentCrsDB == Rol_TEACHER)); // He/she is a teacher in the current course
@ -2200,8 +2200,8 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
IAmLoggedAsTeacher ||
IAmLoggedAsSysAdm))
{
Act_FormStart ((UsrDat->RoleInCurrentCrsDB == Rol_STUDENT) ? ActSeeRecOneStd :
ActSeeRecOneTch);
Act_FormStart (UsrDat->RoleInCurrentCrsDB == Rol_STUDENT ? ActSeeRecOneStd :
ActSeeRecOneTch);
Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod);
Act_LinkFormSubmit (Txt_View_record_for_this_course,NULL);
fprintf (Gbl.F.Out,"<div class=\"ICON_HIGHLIGHT\""
@ -2225,7 +2225,9 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
(Gbl.CurrentIns.Ins.InsCod > 0 && Gbl.Usrs.Me.LoggedRole == Rol_INS_ADM) ||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
{
Act_FormStart (ActReqMdfUsr);
Act_FormStart ( UsrDat->RoleInCurrentCrsDB == Rol_STUDENT ? ActReqMdfStd :
(UsrDat->RoleInCurrentCrsDB == Rol_TEACHER ? ActReqMdfTch :
ActReqMdfGst));
Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod);
Act_LinkFormSubmit (Txt_Admin_user,NULL);
fprintf (Gbl.F.Out,"<div class=\"ICON_HIGHLIGHT\""
@ -2450,7 +2452,10 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
ID_PutParamOtherUsrIDPlain (); // New user
break;
case Rec_FORM_MODIFY_RECORD_OTHER_EXISTING_USR:
Act_FormStart (ActUpdOthUsrDat);
Act_FormStart ( UsrDat->RoleInCurrentCrsDB < Rol_STUDENT ? ActUpdOthGst :
(UsrDat->RoleInCurrentCrsDB == Rol_STUDENT ? ActUpdOthStd :
(UsrDat->RoleInCurrentCrsDB == Rol_TEACHER ? ActUpdOthTch :
ActUpdOthAdm)));
Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod); // Existing user
break;
default:

View File

@ -5824,6 +5824,17 @@ void Usr_ListDataAdms (void)
struct UsrData UsrDat;
const char *FieldNames[Usr_NUM_MAIN_FIELDS_DATA_ADM];
/***** Put contextual links *****/
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
{
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
/* Put link to go to admin one user */
Enr_PutLinkToAdminOneUsr (ActReqMdfOneAdm);
fprintf (Gbl.F.Out,"</div>");
}
/***** Initialize field names *****/
FieldNames[0] = Txt_No_INDEX;
FieldNames[1] = Txt_Photo;
@ -6263,6 +6274,17 @@ void Usr_SeeGuests (void)
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Show_records;
/***** Put contextual links *****/
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
{
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
/* Put link to go to admin one user */
Enr_PutLinkToAdminOneUsr (ActReqMdfOneGst);
fprintf (Gbl.F.Out,"</div>");
}
/***** Get and update type of list,
number of columns in class photo
and preference about view photos *****/
@ -6401,18 +6423,34 @@ void Usr_SeeStudents (void)
extern const char *Txt_Show_records;
bool ICanViewRecords;
/***** Put contextual links *****/
if (Gbl.CurrentCrs.Crs.CrsCod > 0 && // Course selected
(Gbl.Usrs.Me.LoggedRole == Rol_TEACHER || // My role in current course is teacher...
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)) // ...or superuser
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)) // ...or system admin
{
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
/***** Link to list official students *****/
/* Put link to go to admin one user */
Enr_PutLinkToAdminOneUsr (ActReqMdfOneStd);
/* Put link to go to admin several users */
Enr_PutLinkToAdminSeveralUsrs ();
/* Put link to list official students */
Usr_PutLinkToListOfficialStudents ();
/***** Link to edit record fields *****/
/* Put link to edit record fields */
Rec_PutLinkToEditRecordFields ();
fprintf (Gbl.F.Out,"</div>");
}
else if (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT)
{
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
/* Put link to go to admin one user */
Enr_PutLinkToAdminOneUsr (ActReqMdfOneStd);
fprintf (Gbl.F.Out,"</div>");
}
@ -6564,6 +6602,22 @@ void Usr_SeeTeachers (void)
extern const char *Txt_No_users_found[Rol_NUM_ROLES];
bool ICanViewRecords;
/***** Put contextual links *****/
if (Gbl.CurrentCrs.Crs.CrsCod > 0 && // Course selected
(Gbl.Usrs.Me.LoggedRole == Rol_TEACHER || // My role in current course is teacher...
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)) // ...or system admin
{
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
/* Put link to go to admin one user */
Enr_PutLinkToAdminOneUsr (ActReqMdfOneTch);
/* Put link to go to admin several users */
Enr_PutLinkToAdminSeveralUsrs ();
fprintf (Gbl.F.Out,"</div>");
}
/***** Get and update type of list,
number of columns in class photo
and preference about view photos *****/