From 29d6c229fa42be7ad61fe79393ba147b3557847a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sun, 1 Feb 2015 14:47:40 +0100 Subject: [PATCH] Version 14.72.1 --- swad_action.c | 14 ++ swad_action.h | 36 ++-- swad_changelog.h | 11 +- swad_enrollment.c | 128 +++++++++++- swad_enrollment.h | 2 + swad_text.c | 483 +++++++++++++++++++++++++++++++++++++++++++--- 6 files changed, 625 insertions(+), 49 deletions(-) diff --git a/swad_action.c b/swad_action.c index 4620316c2..8c858b07a 100644 --- a/swad_action.c +++ b/swad_action.c @@ -861,6 +861,10 @@ Users: 710. ActReqAccEnrCrs Confirm acceptation / refusion of enrollment in current course 711. ActAccEnrCrs Accept enrollment in current course 712. ActRemMeCrs Refuse enrollment in current course + ---. ActNewAdmIns Register an administrador in this institution + ---. ActRemAdmIns Remove an administrador of this institution + ---. ActNewAdmCtr Register an administrador in this centre + ---. ActRemAdmCtr Remove an administrador of this centre 713. ActNewAdmDeg Register an administrador in this degree 714. ActRemAdmDeg Remove an administrador of this degree 715. ActRcvFrmMdfUsrCrs Receive a form with IDs of users to be registeres/removed to/from current course @@ -2156,6 +2160,12 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActAccEnrCrs */{ 558,-1,TabUsr,ActReqMdfSevUsr ,0x1F8,0x000,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AcceptRegisterMeInCrs ,NULL}, /* ActRemMeCrs */{ 559,-1,TabUsr,ActReqMdfSevUsr ,0x1F8,0x000,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqRemMeFromCrs ,NULL}, + /* ActNewAdmIns */{1337,-1,TabUsr,ActReqMdfSevUsr ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AddAdmToIns ,NULL}, + /* ActRemAdmIns */{1338,-1,TabUsr,ActReqMdfSevUsr ,0x180,0x180,0x180,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_RemAdmIns ,NULL}, + + /* ActNewAdmCtr */{1339,-1,TabUsr,ActReqMdfSevUsr ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AddAdmToCtr ,NULL}, + /* ActRemAdmCtr */{1340,-1,TabUsr,ActReqMdfSevUsr ,0x1C0,0x1C0,0x1C0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_RemAdmCtr ,NULL}, + /* ActNewAdmDeg */{ 586,-1,TabUsr,ActReqMdfSevUsr ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AddAdmToDeg ,NULL}, /* ActRemAdmDeg */{ 584,-1,TabUsr,ActReqMdfSevUsr ,0x1E0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_RemAdmDeg ,NULL}, @@ -3838,6 +3848,10 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActReqDatAdmDocIns, // #1334 ActChgDatAdmDocIns, // #1335 ActDowAdmDocIns, // #1336 + ActNewAdmIns, // #1337 + ActRemAdmIns, // #1338 + ActNewAdmCtr, // #1339 + ActRemAdmCtr, // #1340 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 3aef6bf9c..004d8312a 100644 --- a/swad_action.h +++ b/swad_action.h @@ -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+70+53+48+204+184+94+168+28+75) +#define Act_NUM_ACTIONS (7+52+15+70+53+48+204+184+98+168+28+75) -#define Act_MAX_ACTION_COD 1336 +#define Act_MAX_ACTION_COD 1340 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20 @@ -893,23 +893,27 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica #define ActAccEnrCrs (ActChgNumRowFooGrp+79) #define ActRemMeCrs (ActChgNumRowFooGrp+80) -#define ActNewAdmDeg (ActChgNumRowFooGrp+81) -#define ActRemAdmDeg (ActChgNumRowFooGrp+82) +#define ActNewAdmIns (ActChgNumRowFooGrp+81) +#define ActRemAdmIns (ActChgNumRowFooGrp+82) +#define ActNewAdmCtr (ActChgNumRowFooGrp+83) +#define ActRemAdmCtr (ActChgNumRowFooGrp+84) +#define ActNewAdmDeg (ActChgNumRowFooGrp+85) +#define ActRemAdmDeg (ActChgNumRowFooGrp+86) -#define ActRcvFrmMdfUsrCrs (ActChgNumRowFooGrp+83) -#define ActFrmIDsOthUsr (ActChgNumRowFooGrp+84) -#define ActRemIDOth (ActChgNumRowFooGrp+85) -#define ActNewIDOth (ActChgNumRowFooGrp+86) -#define ActFrmPwdOthUsr (ActChgNumRowFooGrp+87) -#define ActChgPwdOthUsr (ActChgNumRowFooGrp+88) -#define ActRemUsrCrs (ActChgNumRowFooGrp+89) -#define ActRemUsrGbl (ActChgNumRowFooGrp+90) +#define ActRcvFrmMdfUsrCrs (ActChgNumRowFooGrp+87) +#define ActFrmIDsOthUsr (ActChgNumRowFooGrp+88) +#define ActRemIDOth (ActChgNumRowFooGrp+89) +#define ActNewIDOth (ActChgNumRowFooGrp+90) +#define ActFrmPwdOthUsr (ActChgNumRowFooGrp+91) +#define ActChgPwdOthUsr (ActChgNumRowFooGrp+92) +#define ActRemUsrCrs (ActChgNumRowFooGrp+93) +#define ActRemUsrGbl (ActChgNumRowFooGrp+94) -#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+91) -#define ActRemAllStdCrs (ActChgNumRowFooGrp+92) +#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+95) +#define ActRemAllStdCrs (ActChgNumRowFooGrp+96) -#define ActReqRemOldUsr (ActChgNumRowFooGrp+93) -#define ActRemOldUsr (ActChgNumRowFooGrp+94) +#define ActReqRemOldUsr (ActChgNumRowFooGrp+97) +#define ActRemOldUsr (ActChgNumRowFooGrp+98) /*****************************************************************************/ /******************************* Messages tab ********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 6906895fc..7f0032d6b 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -39,11 +39,20 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.72 (2015/01/31)" +#define Log_PLATFORM_VERSION "SWAD 14.72.1 (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.1: Feb 01, 2015 New options to register and remove institution and centre admins. (177477 lines) + 6 changes necessary in database: +UPDATE actions SET Txt='Añadir administrador de titulación' WHERE ActCod='586' AND Language='es'; +UPDATE actions SET Txt='Eliminar administrador de titulación' WHERE ActCod='584' AND Language='es'; +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1337','es','N','Añadir administrador de institución'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1338','es','N','Eliminar administrador de institución'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1339','es','N','Añadir administrador de centro'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1340','es','N','Eliminar administrador de centro'); + Version 14.72: Jan 31, 2015 New options to register and remove institution and centre admins (not finished). (176934 lines) Version 14.71: Jan 29, 2015 New table admin to store system, institution, centre or degree admins. (176255 lines) 4 changes necessary in database: diff --git a/swad_enrollment.c b/swad_enrollment.c index 599d6a66e..031733e5f 100644 --- a/swad_enrollment.c +++ b/swad_enrollment.c @@ -107,6 +107,8 @@ 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_ReqRemOrRemUsrFromCrs (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr); static void Enr_ReqRemAdmOfDeg (void); @@ -1018,7 +1020,7 @@ static bool Enr_PutActionsRegRemOneUsr (bool ItsMe) sprintf (Gbl.Message, ItsMe ? Txt_Remove_me_as_an_administrator_of_the_institution_X : Txt_Remove_user_as_an_administrator_of_the_institution_X, - Gbl.CurrentDeg.Deg.ShortName); + Gbl.CurrentIns.Ins.ShortName); fprintf (Gbl.F.Out,"
  • " ""); } +/*****************************************************************************/ +/*************** Add an administrator to current institution *****************/ +/*****************************************************************************/ + +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_); + } + } + +/*****************************************************************************/ +/******************* Add an administrator to current centre ******************/ +/*****************************************************************************/ + +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_); + } + } + /*****************************************************************************/ /******************* Add an administrator to current degree ******************/ /*****************************************************************************/ @@ -2873,6 +2935,62 @@ void Enr_AddAdmToDeg (void) } } +/*****************************************************************************/ +/**************** Register administrator in current institution **************/ +/*****************************************************************************/ + +static void Enr_RegisterAdminInCurrentIns (struct UsrData *UsrDat) + { + 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; + char Query[512]; + + /***** Check if user was and administrator of current institution *****/ + if (Usr_CheckIfUsrIsAdmOfIns (UsrDat->UsrCod,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 + { + /***** Insert or replace administrator in current institution *****/ + 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"); + + 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_CheckIfUsrIsAdmOfCtr (UsrDat->UsrCod,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 ****************/ /*****************************************************************************/ @@ -2890,8 +3008,8 @@ static void Enr_RegisterAdminInCurrentDeg (struct UsrData *UsrDat) else // User was not administrator of current degree { /***** Insert or replace administrator in current degree *****/ - sprintf (Query,"REPLACE INTO deg_admin (UsrCod,DegCod)" - " VALUES ('%ld','%ld')", + 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"); @@ -3753,7 +3871,7 @@ static void Enr_EffectivelyRemAdmFromIns (struct UsrData *UsrDat) extern const char *Txt_THE_USER_X_is_not_an_administrator_of_the_institution_Y; char Query[1024]; - if (Usr_CheckIfUsrIsAdmOfDeg (UsrDat->UsrCod,Gbl.CurrentIns.Ins.InsCod)) // User is administrator of current institution + if (Usr_CheckIfUsrIsAdmOfIns (UsrDat->UsrCod,Gbl.CurrentIns.Ins.InsCod)) // User is administrator of current institution { /***** Remove user from the table of admins *****/ sprintf (Query,"DELETE FROM admin" @@ -3783,7 +3901,7 @@ static void Enr_EffectivelyRemAdmFromCtr (struct UsrData *UsrDat) extern const char *Txt_THE_USER_X_is_not_an_administrator_of_the_centre_Y; char Query[1024]; - if (Usr_CheckIfUsrIsAdmOfDeg (UsrDat->UsrCod,Gbl.CurrentCtr.Ctr.CtrCod)) // User is administrator of current centre + if (Usr_CheckIfUsrIsAdmOfCtr (UsrDat->UsrCod,Gbl.CurrentCtr.Ctr.CtrCod)) // User is administrator of current centre { /***** Remove user from the table of admins *****/ sprintf (Query,"DELETE FROM admin" diff --git a/swad_enrollment.h b/swad_enrollment.h index 0c662b684..bbabf6265 100644 --- a/swad_enrollment.h +++ b/swad_enrollment.h @@ -105,6 +105,8 @@ void Enr_ShowEnrollmentRequests (void); void Enr_ReqRegRemUsr (void); void Enr_AskIfRegRemAnotherUsr (void); +void Enr_AddAdmToIns (void); +void Enr_AddAdmToCtr (void); void Enr_AddAdmToDeg (void); void Enr_ReqRemMeFromCrs (void); diff --git a/swad_text.c b/swad_text.c index db869ff74..47b2346d4 100644 --- a/swad_text.c +++ b/swad_text.c @@ -7980,6 +7980,27 @@ const char *Txt_Do_not_show_again = "Não mostrar novamente"; #endif +const char *Txt_Do_you_really_want_to_be_removed_as_an_administrator_of_the_centre_X = // Warning: it is very important to include %s in the following sentences +#if L==0 + "¿Realmente desea dejar de ser administrador/a del centro %s?"; // Necessita traduccio +#elif L==1 + "Do you really want to be removed as an administrator of the centre %s?"; // Need Übersetzung +#elif L==2 + "Do you really want to be removed as an administrator of the centre %s?"; +#elif L==3 + "¿Realmente desea dejar de ser administrador/a del centro %s?"; +#elif L==4 + "Do you really want to be removed as an administrator of the centre %s?"; // Besoin de traduction +#elif L==5 + "¿Realmente desea dejar de ser administrador/a del centro %s?"; // Okoteve traducción +#elif L==6 + "Vuole realmente essere rimosso come amministratore del centro %s?"; +#elif L==7 + "Czy naprawde chcesz byc usuniety jako administrator centrum %s?"; +#elif L==8 + "Do you really want to be removed as an administrator of the centre %s?"; // Necessita de tradução +#endif + const char *Txt_Do_you_really_want_to_be_removed_as_an_administrator_of_the_degree_X = // Warning: it is very important to include %s in the following sentences #if L==0 "¿Realmente desea dejar de ser administrador/a de la titulación %s?"; // Necessita traduccio @@ -8001,6 +8022,27 @@ const char *Txt_Do_you_really_want_to_be_removed_as_an_administrator_of_the_degr "Do you really want to be removed as an administrator of the degree %s?"; // Necessita de tradução #endif +const char *Txt_Do_you_really_want_to_be_removed_as_an_administrator_of_the_institution_X = // Warning: it is very important to include %s in the following sentences +#if L==0 + "¿Realmente desea dejar de ser administrador/a de la institución %s?"; // Necessita traduccio +#elif L==1 + "Do you really want to be removed as an administrator of the institution %s?"; // Need Übersetzung +#elif L==2 + "Do you really want to be removed as an administrator of the institution %s?"; +#elif L==3 + "¿Realmente desea dejar de ser administrador/a de la institución %s?"; +#elif L==4 + "Do you really want to be removed as an administrator of the institution %s?"; // Besoin de traduction +#elif L==5 + "¿Realmente desea dejar de ser administrador/a de la institución %s?"; // Okoteve traducción +#elif L==6 + "Vuole realmente essere rimosso come amministratore della istituzione %s?"; +#elif L==7 + "Czy naprawde chcesz byc usuniety jako administrator instytucji %s?"; +#elif L==8 + "Do you really want to be removed as an administrator of the institution %s?"; // Necessita de tradução +#endif + const char *Txt_Do_you_really_want_to_be_removed_from_the_course_X = // Warning: it is very important to include %s in the following sentences #if L==0 "¿Realmente desea ser eliminado de la asignatura %s" @@ -8238,25 +8280,94 @@ 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 +#if L==0 + "¿Realmente desea inscribir el siguiente usuario" + " como administrador del centro %s?"; // Necessita traduccio +#elif L==1 + "Do you really want to register the following user" + " as an administrator of the centre %s?"; // Need Übersetzung +#elif L==2 + "Do you really want to register the following user" + " as an administrator of the centre %s?"; +#elif L==3 + "¿Realmente desea inscribir el siguiente usuario" + " como administrador del centro %s?"; +#elif L==4 + "Do you really want to register the following user" + " as an administrator of the centre %s?"; // Besoin de traduction +#elif L==5 + "¿Realmente desea inscribir el siguiente usuario" + " como administrador del centro %s?"; // Okoteve traducción +#elif L==6 + "Vuoi realmente registrare il seguente utente" + " come amministratore del centro %s?"; +#elif L==7 + "Czy na pewno chcesz sie zarejestrowac nastepujace użytkownika" + " jako administratora centrum %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 + "¿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 + "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?"; + "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?"; + "¿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 + "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 + "¿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?"; + "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?"; + "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 + "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 #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 @@ -8492,44 +8603,122 @@ const char *Txt_Do_you_really_want_to_remove_FILE_OR_LINK_X = // Warning: it is const char *Txt_Do_you_really_want_to_remove_the_folder_X = // Warning: it is very important to include %s in the following sentences #if L==0 - "¿Realmente desea eliminar la carpeta %s y todo su contenido?"; // Necessita traduccio + "¿Realmente desea eliminar" + " la carpeta %s y todo su contenido?"; // Necessita traduccio #elif L==1 - "Wollen Sie wirklich das Verzeichnis %s und alle Inhalte entfernen?"; + "Wollen Sie wirklich" + " das Verzeichnis %s und alle Inhalte entfernen?"; #elif L==2 - "Do you really want to remove the folder %s and all its contents?"; + "Do you really want to remove" + " the folder %s and all its contents?"; #elif L==3 - "¿Realmente desea eliminar la carpeta %s y todo su contenido?"; + "¿Realmente desea eliminar" + " la carpeta %s y todo su contenido?"; #elif L==4 - "Voulez-vous vraiment supprimer le répertoire %s et l'ensemble de son contenu?"; + "Voulez-vous vraiment supprimer" + " le répertoire %s et l'ensemble de son contenu?"; #elif L==5 - "¿Realmente desea eliminar la carpeta %s y todo su contenido?"; // Okoteve traducción + "¿Realmente desea eliminar" + " la carpeta %s y todo su contenido?"; // Okoteve traducción #elif L==6 - "Vuoi realmente rimuovere la cartella %s e tutto il suo contenuto?"; + "Vuoi realmente rimuovere" + " la cartella %s e tutto il suo contenuto?"; #elif L==7 - "Czy na pewno chcesz usunac folder %s i wszystkie jego skladniki?"; + "Czy na pewno chcesz usunac" + " folder %s i wszystkie jego skladniki?"; #elif L==8 - "Você realmente deseja remover o diretório %s e todo o seu conteúdo?"; + "Você realmente deseja remover" + " o diretório %s e todo o seu conteúdo?"; +#endif + +const char *Txt_Do_you_really_want_to_remove_the_following_user_as_an_administrator_of_the_centre_X = // Warning: it is very important to include %s in the following sentences +#if L==0 + "¿Realmente desea eliminar el siguiente usuario" + " como administrador del centro %s?"; // Necessita traduccio +#elif L==1 + "Do you really want to remove the following user" + " as an administrator of the centre %s?"; // Need Übersetzung +#elif L==2 + "Do you really want to remove the following user" + " as an administrator of the centre %s?"; +#elif L==3 + "¿Realmente desea eliminar el siguiente usuario" + " como administrador del centro %s?"; +#elif L==4 + "Do you really want to remove the following user" + " as an administrator of the centre %s?"; // Besoin de traduction +#elif L==5 + "¿Realmente desea eliminar el siguiente usuario" + " como administrador del centro %s?"; // Okoteve traducción +#elif L==6 + "Vuoi realmente rimuovere il seguente utente" + " come amministratore del centro %s?"; +#elif L==7 + "Czy na pewno chcesz usunac nastepujace użytkownika" + " jako administratora centrum %s?"; +#elif L==8 + "Do you really want to remove the following user" + " as an administrator of the centre %s?"; // Necessita de tradução #endif const char *Txt_Do_you_really_want_to_remove_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 eliminar el siguiente usuario como administrador de la titulación %s?"; // Necessita traduccio + "¿Realmente desea eliminar el siguiente usuario" + " como administrador de la titulación %s?"; // Necessita traduccio #elif L==1 - "Do you really want to remove the following user as an administrator of the degree %s?"; // Need Übersetzung + "Do you really want to remove the following user" + " as an administrator of the degree %s?"; // Need Übersetzung #elif L==2 - "Do you really want to remove the following user as an administrator of the degree %s?"; + "Do you really want to remove the following user" + " as an administrator of the degree %s?"; #elif L==3 - "¿Realmente desea eliminar el siguiente usuario como administrador de la titulación %s?"; + "¿Realmente desea eliminar el siguiente usuario" + " como administrador de la titulación %s?"; #elif L==4 - "Do you really want to remove the following user as an administrator of the degree %s?"; // Besoin de traduction + "Do you really want to remove the following user" + " as an administrator of the degree %s?"; // Besoin de traduction #elif L==5 - "¿Realmente desea eliminar el siguiente usuario como administrador de la titulación %s?"; // Okoteve traducción + "¿Realmente desea eliminar el siguiente usuario" + " como administrador de la titulación %s?"; // Okoteve traducción #elif L==6 - "Vuoi realmente rimuovere il seguente utente come amministratore della laurea %s?"; + "Vuoi realmente rimuovere il seguente utente" + " come amministratore della laurea %s?"; #elif L==7 - "Czy na pewno chcesz usunac nastepujace użytkownika jako administratora stopnia %s?"; + "Czy na pewno chcesz usunac nastepujace użytkownika" + " jako administratora stopnia %s?"; #elif L==8 - "Do you really want to remove the following user as an administrator of the degree %s?"; // Necessita de tradução + "Do you really want to remove the following user" + " as an administrator of the degree %s?"; // Necessita de tradução +#endif + +const char *Txt_Do_you_really_want_to_remove_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 eliminar el siguiente usuario" + " como administrador de la institución %s?"; // Necessita traduccio +#elif L==1 + "Do you really want to remove the following user" + " as an administrator of the institution %s?"; // Need Übersetzung +#elif L==2 + "Do you really want to remove the following user" + " as an administrator of the institution %s?"; +#elif L==3 + "¿Realmente desea eliminar el siguiente usuario" + " como administrador de la institución %s?"; +#elif L==4 + "Do you really want to remove the following user" + " as an administrator of the degree %s?"; // Besoin de traduction +#elif L==5 + "¿Realmente desea eliminar el siguiente usuario" + " como administrador de la institución %s?"; // Okoteve traducción +#elif L==6 + "Vuoi realmente rimuovere il seguente utente" + " come amministratore della istituzione %s?"; +#elif L==7 + "Czy na pewno chcesz usunac nastepujace użytkownika" + " jako administratora instytucji %s?"; +#elif L==8 + "Do you really want to remove the following user" + " as an administrator of the institution %s?"; // Necessita de tradução #endif const char *Txt_Do_you_really_want_to_remove_the_following_user_from_the_course_X = // Warning: it is very important to include %s in the following sentences @@ -41686,6 +41875,36 @@ 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 +#if L==0 + "%s ha sido añadido/a como administrador/a" + " del centro %s."; // Necessita traduccio +#elif L==1 + "%s has been enrolled as administrator" + " of the centre %s."; // Übersetzung notwendig +#elif L==2 + "%s has been enrolled as administrator" + " of the centre %s."; +#elif L==3 + "%s ha sido añadido/a como administrador/a" + " del centro %s."; +#elif L==4 + "%s has been enrolled as administrator" + " of the centre %s."; // Besoin de traduction +#elif L==5 + "%s ha sido añadido/a como administrador/a" + " del centro %s."; // Okoteve traducción +#elif L==6 + "%s è stato registrato come amministratore" + " del centro %s."; +#elif L==7 + "%s has been enrolled as administrator" + " of the centre %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" @@ -41716,6 +41935,36 @@ const char *Txt_THE_USER_X_has_been_enrolled_as_administrator_of_the_degree_Y = " 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 +#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 #if L==0 "%s ha estat afegit/da" @@ -41950,6 +42199,36 @@ const char *Txt_THE_USER_X_has_been_removed_from_the_course_Y = // Warning: it i " from the course %s."; // Necessita de tradução #endif +const char *Txt_THE_USER_X_has_been_removed_as_administrator_of_the_centre_Y = // Warning: it is very important to include two %s in the following sentences +#if L==0 + "%s ha sido eliminado/a como administrador" + " del centro %s."; // Necessita traduccio +#elif L==1 + "%s has been removed as administrator" + " of the centre %s."; // Übersetzung notwendig +#elif L==2 + "%s has been removed as administrator" + " of the centre %s."; +#elif L==3 + "%s ha sido eliminado/a como administrador" + " del centro %s."; +#elif L==4 + "%s has been removed as administrator" + " of the centre %s."; // Besoin de traduction +#elif L==5 + "%s ha sido eliminado/a como administrador" + " del centro %s."; // Okoteve traducción +#elif L==6 + "%s è stato rimosso come amministratore" + " del centro %s."; +#elif L==7 + "%s has been removed as administrator" + " of the centre %s."; // Potrzebujesz tlumaczenie +#elif L==8 + "%s has been removed as administrator" + " of the centre %s."; // Necessita de tradução +#endif + const char *Txt_THE_USER_X_has_been_removed_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 eliminado/a como administrador" @@ -41980,6 +42259,36 @@ const char *Txt_THE_USER_X_has_been_removed_as_administrator_of_the_degree_Y = / " of the degree %s."; // Necessita de tradução #endif +const char *Txt_THE_USER_X_has_been_removed_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 eliminado/a como administrador" + " de la institución %s."; // Necessita traduccio +#elif L==1 + "%s has been removed as administrator" + " of the institution %s."; // Übersetzung notwendig +#elif L==2 + "%s has been removed as administrator" + " of the institution %s."; +#elif L==3 + "%s ha sido eliminado/a como administrador" + " de la institución %s."; +#elif L==4 + "%s has been removed as administrator" + " of the institution %s."; // Besoin de traduction +#elif L==5 + "%s ha sido eliminado/a como administrador" + " de la institución %s."; // Okoteve traducción +#elif L==6 + "%s è stato rimosso come amministratore" + " della istituzione %s."; +#elif L==7 + "%s has been removed as administrator" + " of the institution %s."; // Potrzebujesz tlumaczenie +#elif L==8 + "%s has been removed as administrator" + " of the institution %s."; // Necessita de tradução +#endif + const char *Txt_THE_USER_X_has_been_removed_from_the_group_of_type_Y_to_which_it_belonged = // Warning: it is very important to include two %s in the following sentences #if L==0 "%s ha sido eliminado/a" @@ -42040,6 +42349,36 @@ 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 +#if L==0 + "%s ya es administrador/a" + " del centro %s."; // Necessita traduccio +#elif L==1 + "%s is already an administrator" + " of the centre %s."; // Übersetzung notwendig +#elif L==2 + "%s is already an administrator" + " of the centre %s."; +#elif L==3 + "%s ya es administrador/a" + " de la titulación %s."; +#elif L==4 + "%s is already an administrator" + " of the centre %s."; // Besoin de traduction +#elif L==5 + "%s ya es administrador/a" + " del centro %s."; // Okoteve traducción +#elif L==6 + "%s è già un amministratore" + " del centro %s."; +#elif L==7 + "%s is already an administrator" + " of the centre %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" @@ -42070,6 +42409,36 @@ const char *Txt_THE_USER_X_is_already_an_administrator_of_the_degree_Y = // Warn " 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 +#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 #if L==0 "%s ya está" @@ -42160,6 +42529,36 @@ const char *Txt_The_user_is_new_does_not_exists_yet_in_X = // Warning: it is ver "The user is new, does not exist yet in %s."; // Necessita de tradução #endif +const char *Txt_THE_USER_X_is_not_an_administrator_of_the_centre_Y = // Warning: it is very important to include two %s in the following sentences +#if L==0 + "%s no es administrador/a" + " del centro %s."; // Necessita traduccio +#elif L==1 + "%s is not an administrator" + " of the centre %s."; // Übersetzung notwendig +#elif L==2 + "%s is not an administrator" + " of the centre %s."; +#elif L==3 + "%s no es administrador/a" + " del centro %s."; +#elif L==4 + "%s is not an administrator" + " of the centre %s."; // Besoin de traduction +#elif L==5 + "%s no es administrador/a" + " del centro %s."; // Okoteve traducción +#elif L==6 + "%s non è un amministratore" + " del centro %s."; +#elif L==7 + "%s is not an administrator" + " of the centre %s."; // Potrzebujesz tlumaczenie +#elif L==8 + "%s is not an administrator" + " of the centre %s."; // Necessita de tradução +#endif + const char *Txt_THE_USER_X_is_not_an_administrator_of_the_degree_Y = // Warning: it is very important to include two %s in the following sentences #if L==0 "%s no es administrador/a" @@ -42190,6 +42589,36 @@ const char *Txt_THE_USER_X_is_not_an_administrator_of_the_degree_Y = // Warning: " of the degree %s."; // Necessita de tradução #endif +const char *Txt_THE_USER_X_is_not_an_administrator_of_the_institution_Y = // Warning: it is very important to include two %s in the following sentences +#if L==0 + "%s no es administrador/a" + " de la institución %s."; // Necessita traduccio +#elif L==1 + "%s is not an administrator" + " of the institution %s."; // Übersetzung notwendig +#elif L==2 + "%s is not an administrator" + " of the institution %s."; +#elif L==3 + "%s no es administrador/a" + " de la institución %s."; +#elif L==4 + "%s is not an administrator" + " of the institution %s."; // Besoin de traduction +#elif L==5 + "%s no es administrador/a" + " de la institución %s."; // Okoteve traducción +#elif L==6 + "%s non è un amministratore" + " della istituzione %s."; +#elif L==7 + "%s is not an administrator" + " of the institution %s."; // Potrzebujesz tlumaczenie +#elif L==8 + "%s is not an administrator" + " of the institution %s."; // Necessita de tradução +#endif + const char *Txt_THE_USER_X_is_not_found_in_the_file_of_marks = // Warning: it is very important to include %s in the following sentences #if L==0 "No se ha encontrado a %s en el archivo de calificaciones."; // Necessita traduccio