diff --git a/swad_changelog.h b/swad_changelog.h
index 178b0cbe8..dba26bf48 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -39,11 +39,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 14.72.3 (2015/02/01)"
+#define Log_PLATFORM_VERSION "SWAD 14.72.4 (2015/02/01)"
// 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 | tail -1
/*
+ Version 14.72.4: Feb 01, 2015 Refactoring of registering and removing admins. (176787 lines)
Version 14.72.3: Feb 01, 2015 Refactoring of registering and removing admins. (177139 lines)
Version 14.72.2: Feb 01, 2015 Refactoring of registering and removing admins. (177496 lines)
Version 14.72.1: Feb 01, 2015 New options to register and remove institution and centre admins. (177477 lines)
diff --git a/swad_enrollment.c b/swad_enrollment.c
index dab977905..290e36ed8 100644
--- a/swad_enrollment.c
+++ b/swad_enrollment.c
@@ -107,18 +107,15 @@ static void Enr_AskIfRegRemUsr (struct ListUsrCods *ListUsrCods);
static void Enr_ShowFormToEditOtherUsr (void);
-static void Enr_RegisterAdminInCurrentIns (struct UsrData *UsrDat);
-static void Enr_RegisterAdminInCurrentCtr (struct UsrData *UsrDat);
-static void Enr_RegisterAdminInCurrentDeg (struct UsrData *UsrDat);
+static void Enr_AddAdm (Sco_Scope_t Scope,long Cod,const char *InsCtrDegName);
+static void Enr_RegisterAdmin (struct UsrData *UsrDat,Sco_Scope_t Scope,
+ long Cod,const char *InsCtrDegName);
static void Enr_ReqRemOrRemUsrFromCrs (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr);
static void Enr_ReqRemAdmOfDeg (void);
static void Enr_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,Sco_Scope_t Scope,
long Cod,const char *InsCtrDegName);
-static void Enr_ReqAddAdmOfIns (void);
-static void Enr_ReqAddAdmOfCtr (void);
-static void Enr_ReqAddAdmOfDeg (void);
-
+static void Enr_ReqAddAdm (Sco_Scope_t Scope,long Cod,const char *InsCtrDegName);
static void Enr_AskIfRemoveUsrFromCrs (struct UsrData *UsrDat,bool ItsMe);
static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,struct Course *Crs,
Enr_RemoveUsrWorks_t RemoveUsrWorks,Cns_QuietOrVerbose_t QuietOrVerbose);
@@ -2849,28 +2846,7 @@ static void Enr_ShowFormToEditOtherUsr (void)
void Enr_AddAdmToIns (void)
{
- extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
-
- if (Gbl.CurrentIns.Ins.InsCod > 0)
- {
- /***** Get plain user's ID of the user to add/modify *****/
- if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
- {
- /* Check if it's allowed to register this administrator in institution */
- if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
- {
- /***** Register administrator in current institution in database *****/
- Enr_RegisterAdminInCurrentIns (&Gbl.Usrs.Other.UsrDat);
-
- /***** Show user's record *****/
- Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
- }
- else
- Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
- }
- else
- Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
- }
+ Enr_AddAdm (Sco_SCOPE_INSTITUTION,Gbl.CurrentIns.Ins.InsCod,Gbl.CurrentIns.Ins.FullName);
}
/*****************************************************************************/
@@ -2879,28 +2855,7 @@ void Enr_AddAdmToIns (void)
void Enr_AddAdmToCtr (void)
{
- extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
-
- if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
- {
- /***** Get plain user's ID of the user to add/modify *****/
- if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
- {
- /* Check if it's allowed to register this administrator in centre */
- if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
- {
- /***** Register administrator in current centre in database *****/
- Enr_RegisterAdminInCurrentCtr (&Gbl.Usrs.Other.UsrDat);
-
- /***** Show user's record *****/
- Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
- }
- else
- Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
- }
- else
- Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
- }
+ Enr_AddAdm (Sco_SCOPE_CENTRE,Gbl.CurrentCtr.Ctr.CtrCod,Gbl.CurrentCtr.Ctr.FullName);
}
/*****************************************************************************/
@@ -2908,10 +2863,19 @@ void Enr_AddAdmToCtr (void)
/*****************************************************************************/
void Enr_AddAdmToDeg (void)
+ {
+ Enr_AddAdm (Sco_SCOPE_DEGREE,Gbl.CurrentDeg.Deg.DegCod,Gbl.CurrentDeg.Deg.FullName);
+ }
+
+/*****************************************************************************/
+/******************* Add an administrator to current degree ******************/
+/*****************************************************************************/
+
+static void Enr_AddAdm (Sco_Scope_t Scope,long Cod,const char *InsCtrDegName)
{
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
- if (Gbl.CurrentDeg.Deg.DegCod > 0)
+ if (Cod > 0)
{
/***** Get plain user's ID of the user to add/modify *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
@@ -2920,7 +2884,8 @@ void Enr_AddAdmToDeg (void)
if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
{
/***** Register administrator in current degree in database *****/
- Enr_RegisterAdminInCurrentDeg (&Gbl.Usrs.Other.UsrDat);
+ Enr_RegisterAdmin (&Gbl.Usrs.Other.UsrDat,Scope,
+ Cod,InsCtrDegName);
/***** Show user's record *****/
Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
@@ -2937,88 +2902,27 @@ void Enr_AddAdmToDeg (void)
/**************** Register administrator in current institution **************/
/*****************************************************************************/
-static void Enr_RegisterAdminInCurrentIns (struct UsrData *UsrDat)
+static void Enr_RegisterAdmin (struct UsrData *UsrDat,Sco_Scope_t Scope,long Cod,const char *InsCtrDegName)
{
- extern const char *Txt_THE_USER_X_is_already_an_administrator_of_the_institution_Y;
- extern const char *Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_institution_Y;
+ extern const char *Sco_ScopeAdminDB[Sco_NUM_SCOPES];
+ extern const char *Txt_THE_USER_X_is_already_an_administrator_of_Y;
+ extern const char *Txt_THE_USER_X_has_been_enrolled_as_administrator_of_Y;
char Query[512];
- /***** Check if user was and administrator of current institution *****/
- if (Usr_CheckIfUsrIsAdm (UsrDat->UsrCod,
- Sco_SCOPE_INSTITUTION,
- Gbl.CurrentIns.Ins.InsCod))
- sprintf (Gbl.Message,Txt_THE_USER_X_is_already_an_administrator_of_the_institution_Y,
- UsrDat->FullName,Gbl.CurrentIns.Ins.FullName);
- else // User was not administrator of current institution
+ /***** Check if user was and administrator of current institution/centre/degree *****/
+ if (Usr_CheckIfUsrIsAdm (UsrDat->UsrCod,Scope,Cod))
+ sprintf (Gbl.Message,Txt_THE_USER_X_is_already_an_administrator_of_Y,
+ UsrDat->FullName,InsCtrDegName);
+ else // User was not administrator of current institution/centre/degree
{
- /***** Insert or replace administrator in current institution *****/
+ /***** Insert or replace administrator in current institution/centre/degree *****/
sprintf (Query,"REPLACE INTO admin (UsrCod,Scope,Cod)"
- " VALUES ('%ld','Ins','%ld')",
- UsrDat->UsrCod,Gbl.CurrentIns.Ins.InsCod);
- DB_QueryREPLACE (Query,"can not create administrator of institution");
+ " VALUES ('%ld','%s','%ld')",
+ UsrDat->UsrCod,Sco_ScopeAdminDB[Scope],Cod);
+ DB_QueryREPLACE (Query,"can not create administrator");
- sprintf (Gbl.Message,Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_institution_Y,
- UsrDat->FullName,Gbl.CurrentIns.Ins.FullName);
- }
- Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
- }
-
-/*****************************************************************************/
-/******************* Register administrator in current centre ****************/
-/*****************************************************************************/
-
-static void Enr_RegisterAdminInCurrentCtr (struct UsrData *UsrDat)
- {
- extern const char *Txt_THE_USER_X_is_already_an_administrator_of_the_centre_Y;
- extern const char *Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_centre_Y;
- char Query[512];
-
- /***** Check if user was and administrator of current centre *****/
- if (Usr_CheckIfUsrIsAdm (UsrDat->UsrCod,
- Sco_SCOPE_CENTRE,
- Gbl.CurrentCtr.Ctr.CtrCod))
- sprintf (Gbl.Message,Txt_THE_USER_X_is_already_an_administrator_of_the_centre_Y,
- UsrDat->FullName,Gbl.CurrentCtr.Ctr.FullName);
- else // User was not administrator of current centre
- {
- /***** Insert or replace administrator in current centre *****/
- sprintf (Query,"REPLACE INTO admin (UsrCod,Scope,Cod)"
- " VALUES ('%ld','Ctr','%ld')",
- UsrDat->UsrCod,Gbl.CurrentCtr.Ctr.CtrCod);
- DB_QueryREPLACE (Query,"can not create administrator of centre");
-
- sprintf (Gbl.Message,Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_centre_Y,
- UsrDat->FullName,Gbl.CurrentCtr.Ctr.FullName);
- }
- Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
- }
-
-/*****************************************************************************/
-/******************* Register administrator in current degree ****************/
-/*****************************************************************************/
-
-static void Enr_RegisterAdminInCurrentDeg (struct UsrData *UsrDat)
- {
- extern const char *Txt_THE_USER_X_is_already_an_administrator_of_the_degree_Y;
- extern const char *Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_degree_Y;
- char Query[512];
-
- /***** Check if user was and administrator of current degree *****/
- if (Usr_CheckIfUsrIsAdm (UsrDat->UsrCod,
- Sco_SCOPE_DEGREE,
- Gbl.CurrentDeg.Deg.DegCod))
- sprintf (Gbl.Message,Txt_THE_USER_X_is_already_an_administrator_of_the_degree_Y,
- UsrDat->FullName,Gbl.CurrentDeg.Deg.FullName);
- else // User was not administrator of current degree
- {
- /***** Insert or replace administrator in current degree *****/
- sprintf (Query,"REPLACE INTO admin (UsrCod,Scope,Cod)"
- " VALUES ('%ld','Deg','%ld')",
- UsrDat->UsrCod,Gbl.CurrentDeg.Deg.DegCod);
- DB_QueryREPLACE (Query,"can not create administrator of degree");
-
- sprintf (Gbl.Message,Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_degree_Y,
- UsrDat->FullName,Gbl.CurrentDeg.Deg.FullName);
+ sprintf (Gbl.Message,Txt_THE_USER_X_has_been_enrolled_as_administrator_of_Y,
+ UsrDat->FullName,InsCtrDegName);
}
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
}
@@ -3205,142 +3109,46 @@ static void Enr_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,Sco_Scope_t
/**** Ask if really wanted to add an administrator to current institution ****/
/*****************************************************************************/
-static void Enr_ReqAddAdmOfIns (void)
+static void Enr_ReqAddAdm (Sco_Scope_t Scope,long Cod,const char *InsCtrDegName)
{
- extern const char *Txt_THE_USER_X_is_already_an_administrator_of_the_institution_Y;
- extern const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_the_institution_X;
+ extern const char *Txt_THE_USER_X_is_already_an_administrator_of_Y;
+ extern const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_X;
extern const char *Txt_Register_user_IN_A_COURSE_OR_DEGREE;
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
+ static const Act_Action_t Enr_ActNewAdm[Sco_NUM_SCOPES] =
+ {
+ ActUnk, // Sco_SCOPE_NONE
+ ActUnk, // Sco_SCOPE_PLATFORM,
+ ActUnk, // Sco_SCOPE_COUNTRY,
+ ActNewAdmIns, // Sco_SCOPE_INSTITUTION,
+ ActNewAdmCtr, // Sco_SCOPE_CENTRE,
+ ActNewAdmDeg, // Sco_SCOPE_DEGREE,
+ ActUnk, // Sco_SCOPE_COURSE,
+ };
- if (Gbl.CurrentIns.Ins.InsCod > 0)
+ if (Cod > 0)
{
/***** Get user's identificator of the user to register as admin *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
{
- /* Check if it's allowed to register this administrator in institution */
+ /* Check if it's allowed to register this administrator in institution/centre/degree */
if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
{
- if (Usr_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,
- Sco_SCOPE_INSTITUTION,
- Gbl.CurrentIns.Ins.InsCod)) // User is yet an administrator of current institution
+ if (Usr_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,Scope,Cod)) // User is yet an administrator of current institution/centre/degree
{
- sprintf (Gbl.Message,Txt_THE_USER_X_is_already_an_administrator_of_the_institution_Y,
- Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentIns.Ins.FullName);
+ sprintf (Gbl.Message,Txt_THE_USER_X_is_already_an_administrator_of_Y,
+ Gbl.Usrs.Other.UsrDat.FullName,InsCtrDegName);
Lay_ShowAlert (Lay_INFO,Gbl.Message);
Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
}
else
{
- sprintf (Gbl.Message,Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_the_institution_X,
- Gbl.CurrentIns.Ins.FullName);
+ sprintf (Gbl.Message,Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_X,
+ InsCtrDegName);
Lay_ShowAlert (Lay_INFO,Gbl.Message);
Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
- Act_FormStart (ActNewAdmIns);
- Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
- fprintf (Gbl.F.Out,"
"
- ""
- "
"
- "",
- Txt_Register_user_IN_A_COURSE_OR_DEGREE);
- }
- }
- else
- Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
- }
- else
- Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
- }
- }
-
-/*****************************************************************************/
-/****** Ask if really wanted to add an administrator to current centre *******/
-/*****************************************************************************/
-
-static void Enr_ReqAddAdmOfCtr (void)
- {
- extern const char *Txt_THE_USER_X_is_already_an_administrator_of_the_centre_Y;
- extern const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_the_centre_X;
- extern const char *Txt_Register_user_IN_A_COURSE_OR_DEGREE;
- extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
-
- if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
- {
- /***** Get user's identificator of the user to register as admin *****/
- if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
- {
- /* Check if it's allowed to register this administrator in centre */
- if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
- {
- if (Usr_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,
- Sco_SCOPE_CENTRE,
- Gbl.CurrentCtr.Ctr.CtrCod)) // User is yet an administrator of current centre
- {
- sprintf (Gbl.Message,Txt_THE_USER_X_is_already_an_administrator_of_the_centre_Y,
- Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentCtr.Ctr.FullName);
- Lay_ShowAlert (Lay_INFO,Gbl.Message);
- Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
- }
- else
- {
- sprintf (Gbl.Message,Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_the_centre_X,
- Gbl.CurrentCtr.Ctr.FullName);
- Lay_ShowAlert (Lay_INFO,Gbl.Message);
- Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
-
- Act_FormStart (ActNewAdmCtr);
- Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
- fprintf (Gbl.F.Out,"
"
- ""
- "
"
- "",
- Txt_Register_user_IN_A_COURSE_OR_DEGREE);
- }
- }
- else
- Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
- }
- else
- Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
- }
- }
-
-/*****************************************************************************/
-/****** Ask if really wanted to add an administrator to current degree *******/
-/*****************************************************************************/
-
-static void Enr_ReqAddAdmOfDeg (void)
- {
- extern const char *Txt_THE_USER_X_is_already_an_administrator_of_the_degree_Y;
- extern const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_the_degree_X;
- extern const char *Txt_Register_user_IN_A_COURSE_OR_DEGREE;
- extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
-
- if (Gbl.CurrentDeg.Deg.DegCod > 0)
- {
- /***** Get user's identificator of the user to register as admin *****/
- if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
- {
- /* Check if it's allowed to register this administrator in degree */
- if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
- {
- if (Usr_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,
- Sco_SCOPE_DEGREE,
- Gbl.CurrentDeg.Deg.DegCod)) // User is yet an administrator of current degree
- {
- sprintf (Gbl.Message,Txt_THE_USER_X_is_already_an_administrator_of_the_degree_Y,
- Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentDeg.Deg.FullName);
- Lay_ShowAlert (Lay_INFO,Gbl.Message);
- Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
- }
- else
- {
- sprintf (Gbl.Message,Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_the_degree_X,
- Gbl.CurrentDeg.Deg.FullName);
- Lay_ShowAlert (Lay_INFO,Gbl.Message);
- Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
-
- Act_FormStart (ActNewAdmDeg);
+ Act_FormStart (Enr_ActNewAdm[Scope]);
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
fprintf (Gbl.F.Out,"
"
""
@@ -3502,19 +3310,22 @@ void Enr_ModifAndShowUsrCardAndRegInCrsAndGrps (void)
break;
case Enr_REGISTER_ONE_DEGREE_ADMIN:
if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
- Enr_ReqAddAdmOfDeg ();
+ Enr_ReqAddAdm (Sco_SCOPE_DEGREE,Gbl.CurrentDeg.Deg.DegCod,
+ Gbl.CurrentDeg.Deg.FullName);
else
Error = true;
break;
case Enr_REGISTER_ONE_CENTRE_ADMIN:
if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
- Enr_ReqAddAdmOfCtr ();
+ Enr_ReqAddAdm (Sco_SCOPE_CENTRE,Gbl.CurrentCtr.Ctr.CtrCod,
+ Gbl.CurrentCtr.Ctr.FullName);
else
Error = true;
break;
case Enr_REGISTER_ONE_INSTITUTION_ADMIN:
if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
- Enr_ReqAddAdmOfIns ();
+ Enr_ReqAddAdm (Sco_SCOPE_INSTITUTION,Gbl.CurrentIns.Ins.InsCod,
+ Gbl.CurrentIns.Ins.FullName);
else
Error = true;
break;
diff --git a/swad_text.c b/swad_text.c
index 97e0852c0..839537449 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -8247,94 +8247,34 @@ const char *Txt_Do_you_really_want_to_delete_the_unread_messages_received_from_U
" from %s from %s related to %s?"; // Necessita de tradução
#endif
-const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_the_centre_X = // Warning: it is very important to include %s in the following sentences
+const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_X = // Warning: it is very important to include %s in the following sentences
#if L==0
"¿Realmente desea inscribir el siguiente usuario"
- " como administrador del centro %s?"; // Necessita traduccio
+ " como administrador de %s?"; // Necessita traduccio
#elif L==1
"Do you really want to register the following user"
- " as an administrator of the centre %s?"; // Need Übersetzung
+ " as an administrator of %s?"; // Need Übersetzung
#elif L==2
"Do you really want to register the following user"
- " as an administrator of the centre %s?";
+ " as an administrator of %s?";
#elif L==3
"¿Realmente desea inscribir el siguiente usuario"
- " como administrador del centro %s?";
+ " como administrador de %s?";
#elif L==4
"Do you really want to register the following user"
- " as an administrator of the centre %s?"; // Besoin de traduction
+ " as an administrator of %s?"; // Besoin de traduction
#elif L==5
"¿Realmente desea inscribir el siguiente usuario"
- " como administrador del centro %s?"; // Okoteve traducción
+ " como administrador de %s?"; // Okoteve traducción
#elif L==6
"Vuoi realmente registrare il seguente utente"
- " come amministratore del centro %s?";
+ " come amministratore de %s?";
#elif L==7
"Czy na pewno chcesz sie zarejestrowac nastepujace użytkownika"
- " jako administratora centrum %s?";
+ " jako administratora %s?";
#elif L==8
"Do you really want to register the following user"
- " as an administrator of the centre %s?"; // Necessita de tradução
-#endif
-
-const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_the_degree_X = // Warning: it is very important to include %s in the following sentences
-#if L==0
- "¿Realmente desea inscribir el siguiente usuario"
- " como administrador de la titulación %s?"; // Necessita traduccio
-#elif L==1
- "Do you really want to register the following user"
- " as an administrator of the degree %s?"; // Need Übersetzung
-#elif L==2
- "Do you really want to register the following user"
- " as an administrator of the degree %s?";
-#elif L==3
- "¿Realmente desea inscribir el siguiente usuario"
- " como administrador de la titulación %s?";
-#elif L==4
- "Do you really want to register the following user"
- " as an administrator of the degree %s?"; // Besoin de traduction
-#elif L==5
- "¿Realmente desea inscribir el siguiente usuario"
- " como administrador de la titulación %s?"; // Okoteve traducción
-#elif L==6
- "Vuoi realmente registrare il seguente utente"
- " come amministratore della laurea %s?";
-#elif L==7
- "Czy na pewno chcesz sie zarejestrowac nastepujace użytkownika"
- " jako administratora stopnia %s?";
-#elif L==8
- "Do you really want to register the following user"
- " as an administrator of the degree %s?"; // Necessita de tradução
-#endif
-
-const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_the_institution_X = // Warning: it is very important to include %s in the following sentences
-#if L==0
- "¿Realmente desea inscribir el siguiente usuario"
- " como administrador de la institución %s?"; // Necessita traduccio
-#elif L==1
- "Do you really want to register the following user"
- " as an administrator of the institution %s?"; // Need Übersetzung
-#elif L==2
- "Do you really want to register the following user"
- " as an administrator of the institution %s?";
-#elif L==3
- "¿Realmente desea inscribir el siguiente usuario"
- " como administrador de la institución %s?";
-#elif L==4
- "Do you really want to register the following user"
- " as an administrator of the institution %s?"; // Besoin de traduction
-#elif L==5
- "¿Realmente desea inscribir el siguiente usuario"
- " como administrador de la institución %s?"; // Okoteve traducción
-#elif L==6
- "Vuoi realmente registrare il seguente utente"
- " come amministratore della istituzione %s?";
-#elif L==7
- "Czy na pewno chcesz sie zarejestrowac nastepujace użytkownika"
- " jako administratora instytucji %s?";
-#elif L==8
- "Do you really want to register the following user"
- " as an administrator of the institution %s?"; // Necessita de tradução
+ " as an administrator of %s?"; // Necessita de tradução
#endif
const char *Txt_Do_you_really_want_to_reject_the_enrollment_request_ = // Warning: it is very important to include three %s in the following sentences
@@ -41842,94 +41782,34 @@ const char *Txt_THE_USER_X_already_exists_in_Y_but_is_not_yet_enrolled_in_the_co
" in the course %s."; // Necessita de tradução
#endif
-const char *Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_centre_Y = // Warning: it is very important to include two %s in the following sentences
+const char *Txt_THE_USER_X_has_been_enrolled_as_administrator_of_Y = // Warning: it is very important to include two %s in the following sentences
#if L==0
- "%s ha sido añadido/a como administrador/a"
- " del centro %s."; // Necessita traduccio
+ "%s ha sido añadido/a"
+ " como administrador/a de %s."; // Necessita traduccio
#elif L==1
- "%s has been enrolled as administrator"
- " of the centre %s."; // Übersetzung notwendig
+ "%s has been enrolled"
+ " as administrator of %s."; // Übersetzung notwendig
#elif L==2
- "%s has been enrolled as administrator"
- " of the centre %s.";
+ "%s has been enrolled"
+ " as administrator of %s.";
#elif L==3
- "%s ha sido añadido/a como administrador/a"
- " del centro %s.";
+ "%s ha sido añadido/a"
+ " como administrador/a de %s.";
#elif L==4
- "%s has been enrolled as administrator"
- " of the centre %s."; // Besoin de traduction
+ "%s has been enrolled"
+ " as administrator of %s."; // Besoin de traduction
#elif L==5
- "%s ha sido añadido/a como administrador/a"
- " del centro %s."; // Okoteve traducción
+ "%s ha sido añadido/a"
+ " como administrador/a de %s."; // Okoteve traducción
#elif L==6
- "%s è stato registrato come amministratore"
- " del centro %s.";
+ "%s è stato registrato"
+ " come amministratore de %s.";
#elif L==7
- "%s has been enrolled as administrator"
- " of the centre %s."; // Potrzebujesz tlumaczenie
+ "%s has been enrolled"
+ " as administrator of %s."; // Potrzebujesz tlumaczenie
#elif L==8
- "%s has been enrolled as administrator"
- " of the centre %s."; // Necessita de tradução
-#endif
-
-const char *Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_degree_Y = // Warning: it is very important to include two %s in the following sentences
-#if L==0
- "%s ha sido añadido/a como administrador/a"
- " de la titulación %s."; // Necessita traduccio
-#elif L==1
- "%s has been enrolled as administrator"
- " of the degree %s."; // Übersetzung notwendig
-#elif L==2
- "%s has been enrolled as administrator"
- " of the degree %s.";
-#elif L==3
- "%s ha sido añadido/a como administrador/a"
- " de la titulación %s.";
-#elif L==4
- "%s has been enrolled as administrator"
- " of the degree %s."; // Besoin de traduction
-#elif L==5
- "%s ha sido añadido/a como administrador/a"
- " de la titulación %s."; // Okoteve traducción
-#elif L==6
- "%s è stato registrato come amministratore"
- " della laurea %s.";
-#elif L==7
- "%s has been enrolled as administrator"
- " of the degree %s."; // Potrzebujesz tlumaczenie
-#elif L==8
- "%s has been enrolled as administrator"
- " of the degree %s."; // Necessita de tradução
-#endif
-
-const char *Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_institution_Y = // Warning: it is very important to include two %s in the following sentences
-#if L==0
- "%s ha sido añadido/a como administrador/a"
- " de la institución %s."; // Necessita traduccio
-#elif L==1
- "%s has been enrolled as administrator"
- " of the institution %s."; // Übersetzung notwendig
-#elif L==2
- "%s has been enrolled as administrator"
- " of the institution %s.";
-#elif L==3
- "%s ha sido añadido/a como administrador/a"
- " de la institución %s.";
-#elif L==4
- "%s has been enrolled as administrator"
- " of the institution %s."; // Besoin de traduction
-#elif L==5
- "%s ha sido añadido/a como administrador/a"
- " de la institución %s."; // Okoteve traducción
-#elif L==6
- "%s è stato registrato come amministratore"
- " della istituzione %s.";
-#elif L==7
- "%s has been enrolled as administrator"
- " of the institution %s."; // Potrzebujesz tlumaczenie
-#elif L==8
- "%s has been enrolled as administrator"
- " of the institution %s."; // Necessita de tradução
+ "%s has been enrolled"
+ " as administrator of %s."; // Necessita de tradução
#endif
const char *Txt_THE_USER_X_has_been_enrolled_in_the_course_Y = // Warning: it is very important to include two %s in the following sentences
@@ -42256,94 +42136,25 @@ const char *Txt_THE_USER_X_has_not_been_removed_from_any_group = // Warning: it
" from any group."; // Necessita de tradução
#endif
-const char *Txt_THE_USER_X_is_already_an_administrator_of_the_centre_Y = // Warning: it is very important to include two %s in the following sentences
+const char *Txt_THE_USER_X_is_already_an_administrator_of_Y = // Warning: it is very important to include two %s in the following sentences
#if L==0
- "%s ya es administrador/a"
- " del centro %s."; // Necessita traduccio
+ "%s ya es administrador/a de %s."; // Necessita traduccio
#elif L==1
- "%s is already an administrator"
- " of the centre %s."; // Übersetzung notwendig
+ "%s is already an administrator of %s."; // Übersetzung notwendig
#elif L==2
- "%s is already an administrator"
- " of the centre %s.";
+ "%s is already an administrator of %s.";
#elif L==3
- "%s ya es administrador/a"
- " de la titulación %s.";
+ "%s ya es administrador/a de %s.";
#elif L==4
- "%s is already an administrator"
- " of the centre %s."; // Besoin de traduction
+ "%s is already an administrator of %s."; // Besoin de traduction
#elif L==5
- "%s ya es administrador/a"
- " del centro %s."; // Okoteve traducción
+ "%s ya es administrador/a de %s."; // Okoteve traducción
#elif L==6
- "%s è già un amministratore"
- " del centro %s.";
+ "%s è già un amministratore de %s.";
#elif L==7
- "%s is already an administrator"
- " of the centre %s."; // Potrzebujesz tlumaczenie
+ "%s is already an administrator of %s."; // Potrzebujesz tlumaczenie
#elif L==8
- "%s is already an administrator"
- " of the centre %s."; // Necessita de tradução
-#endif
-
-const char *Txt_THE_USER_X_is_already_an_administrator_of_the_degree_Y = // Warning: it is very important to include two %s in the following sentences
-#if L==0
- "%s ya es administrador/a"
- " de la titulación %s."; // Necessita traduccio
-#elif L==1
- "%s is already an administrator"
- " of the degree %s."; // Übersetzung notwendig
-#elif L==2
- "%s is already an administrator"
- " of the degree %s.";
-#elif L==3
- "%s ya es administrador/a"
- " de la titulación %s.";
-#elif L==4
- "%s is already an administrator"
- " of the degree %s."; // Besoin de traduction
-#elif L==5
- "%s ya es administrador/a"
- " de la titulación %s."; // Okoteve traducción
-#elif L==6
- "%s è già un amministratore"
- " della laurea %s.";
-#elif L==7
- "%s is already an administrator"
- " of the degree %s."; // Potrzebujesz tlumaczenie
-#elif L==8
- "%s is already an administrator"
- " of the degree %s."; // Necessita de tradução
-#endif
-
-const char *Txt_THE_USER_X_is_already_an_administrator_of_the_institution_Y = // Warning: it is very important to include two %s in the following sentences
-#if L==0
- "%s ya es administrador/a"
- " de la institución %s."; // Necessita traduccio
-#elif L==1
- "%s is already an administrator"
- " of the institution %s."; // Übersetzung notwendig
-#elif L==2
- "%s is already an administrator"
- " of the institution %s.";
-#elif L==3
- "%s ya es administrador/a"
- " de la institución %s.";
-#elif L==4
- "%s is already an administrator"
- " of the institution %s."; // Besoin de traduction
-#elif L==5
- "%s ya es administrador/a"
- " de la institución %s."; // Okoteve traducción
-#elif L==6
- "%s è già un amministratore"
- " della istituzione %s.";
-#elif L==7
- "%s is already an administrator"
- " of the institution %s."; // Potrzebujesz tlumaczenie
-#elif L==8
- "%s is already an administrator"
- " of the institution %s."; // Necessita de tradução
+ "%s is already an administrator of %s."; // Necessita de tradução
#endif
const char *Txt_THE_USER_X_is_already_in_the_course_Y_but_has_not_yet_accepted_the_enrollment = // Warning: it is very important to include %s in the following sentences