mirror of https://github.com/acanas/swad-core.git
Version 17.7
This commit is contained in:
parent
391ce45801
commit
efe2ec546b
|
@ -252,13 +252,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 17.6 (2017-09-22)"
|
#define Log_PLATFORM_VERSION "SWAD 17.7 (2017-09-23)"
|
||||||
#define CSS_FILE "swad17.0.css"
|
#define CSS_FILE "swad17.0.css"
|
||||||
#define JS_FILE "swad16.206.3.js"
|
#define JS_FILE "swad16.206.3.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// 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
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 17.7: Sep 23, 2017 Remove user from project. (230798 lines)
|
||||||
Version 17.6: Sep 22, 2017 Actions to remove user from project. (230559 lines)
|
Version 17.6: Sep 22, 2017 Actions to remove user from project. (230559 lines)
|
||||||
6 changes necessary in database:
|
6 changes necessary in database:
|
||||||
UPDATE actions SET Txt='Solicitar ID añadir evaluador a proyecto' WHERE ActCod='1686' AND Language='es';
|
UPDATE actions SET Txt='Solicitar ID añadir evaluador a proyecto' WHERE ActCod='1686' AND Language='es';
|
||||||
|
|
200
swad_project.c
200
swad_project.c
|
@ -50,19 +50,6 @@ extern struct Globals Gbl;
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************************* Public constants and types ************************/
|
/************************* Public constants and types ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// Related with user's roles in a project
|
|
||||||
/*
|
|
||||||
Don't change these numbers! They are used in database
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define Prj_NUM_ROLES_IN_PROJECT 4
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
Prj_ROLE_UNK = 0, // Unknown
|
|
||||||
Prj_ROLE_STD = 1, // Student
|
|
||||||
Prj_ROLE_TUT = 2, // Tutor
|
|
||||||
Prj_ROLE_EVA = 3, // Evaluator
|
|
||||||
} Prj_RoleInProject_t;
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -99,6 +86,7 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||||
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject);
|
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject);
|
||||||
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject);
|
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject);
|
||||||
static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
|
static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
|
||||||
|
static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
|
||||||
static bool Prj_CheckIfICanRemUsrFromPrj (void);
|
static bool Prj_CheckIfICanRemUsrFromPrj (void);
|
||||||
|
|
||||||
static void Prj_GetParamPrjOrder (void);
|
static void Prj_GetParamPrjOrder (void);
|
||||||
|
@ -367,9 +355,8 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
|
||||||
extern const char *Txt_Required_knowledge;
|
extern const char *Txt_Required_knowledge;
|
||||||
extern const char *Txt_Required_materials;
|
extern const char *Txt_Required_materials;
|
||||||
extern const char *Txt_Preassigned_QUESTION;
|
extern const char *Txt_Preassigned_QUESTION;
|
||||||
extern const char *Txt_Tutors;
|
extern const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
Prj_RoleInProject_t RoleInProject;
|
||||||
extern const char *Txt_Evaluators;
|
|
||||||
static unsigned UniqueId = 0;
|
static unsigned UniqueId = 0;
|
||||||
|
|
||||||
/***** Get data of this project *****/
|
/***** Get data of this project *****/
|
||||||
|
@ -476,17 +463,12 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
|
||||||
(Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes :
|
(Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes :
|
||||||
Txt_No);
|
Txt_No);
|
||||||
|
|
||||||
/* Project tutors */
|
/* Project members */
|
||||||
Prj_ShowOneProjectUsrsRow (Prj,ProjectView,
|
for (RoleInProject = Prj_ROLE_STD;
|
||||||
Txt_Tutors,Prj_ROLE_TUT);
|
RoleInProject <= Prj_ROLE_EVA;
|
||||||
|
RoleInProject++)
|
||||||
/* Project students */
|
Prj_ShowOneProjectUsrsRow (Prj,ProjectView,
|
||||||
Prj_ShowOneProjectUsrsRow (Prj,ProjectView,
|
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject],RoleInProject);
|
||||||
Txt_ROLES_PLURAL_Abc[Rol_STD][Usr_SEX_UNKNOWN],Prj_ROLE_STD);
|
|
||||||
|
|
||||||
/* Project evaluators */
|
|
||||||
Prj_ShowOneProjectUsrsRow (Prj,ProjectView,
|
|
||||||
Txt_Evaluators,Prj_ROLE_EVA);
|
|
||||||
|
|
||||||
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
|
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
|
||||||
}
|
}
|
||||||
|
@ -609,7 +591,8 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||||
extern const char *Txt_Remove;
|
extern const char *Txt_Remove;
|
||||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||||
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||||
extern const char *Txt_Add_user;
|
extern const char *Txt_Add_USER;
|
||||||
|
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||||
char Query[2048];
|
char Query[2048];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
@ -730,9 +713,10 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td colspan=\"3\" class=\"LEFT_MIDDLE\">");
|
"<td colspan=\"3\" class=\"LEFT_MIDDLE\">");
|
||||||
Gbl.Prjs.PrjCodToEdit = PrjCod; // Used to pass project code as a parameter
|
Gbl.Prjs.PrjCodToEdit = PrjCod; // Used to pass project code as a parameter
|
||||||
|
sprintf (Gbl.Title,Txt_Add_USER,Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
|
||||||
Lay_PutContextualLink (ActionReqAddUsr[RoleInProject],NULL,Prj_PutParams,
|
Lay_PutContextualLink (ActionReqAddUsr[RoleInProject],NULL,Prj_PutParams,
|
||||||
"plus64x64.png",
|
"plus64x64.png",
|
||||||
Txt_Add_user,Txt_Add_user,
|
Gbl.Title,Gbl.Title,
|
||||||
NULL);
|
NULL);
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
@ -767,7 +751,8 @@ void Prj_ReqAddEva (void)
|
||||||
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject)
|
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_ASSESSMENT_Projects_add_user;
|
extern const char *Hlp_ASSESSMENT_Projects_add_user;
|
||||||
extern const char *Txt_Add_user;
|
extern const char *Txt_Add_USER;
|
||||||
|
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||||
static Act_Action_t ActionAddUsr[Prj_NUM_ROLES_IN_PROJECT] =
|
static Act_Action_t ActionAddUsr[Prj_NUM_ROLES_IN_PROJECT] =
|
||||||
{
|
{
|
||||||
ActUnk, // Prj_ROLE_UNK, Unknown
|
ActUnk, // Prj_ROLE_UNK, Unknown
|
||||||
|
@ -781,7 +766,8 @@ static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject)
|
||||||
Lay_ShowErrorAndExit ("Code of project is missing.");
|
Lay_ShowErrorAndExit ("Code of project is missing.");
|
||||||
|
|
||||||
/***** Start box *****/
|
/***** Start box *****/
|
||||||
Box_StartBox (NULL,Txt_Add_user,NULL,
|
sprintf (Gbl.Title,Txt_Add_USER,Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
|
||||||
|
Box_StartBox (NULL,Gbl.Title,NULL,
|
||||||
Hlp_ASSESSMENT_Projects_add_user,Box_NOT_CLOSABLE);
|
Hlp_ASSESSMENT_Projects_add_user,Box_NOT_CLOSABLE);
|
||||||
|
|
||||||
/***** Write form to request another user's ID *****/
|
/***** Write form to request another user's ID *****/
|
||||||
|
@ -815,7 +801,8 @@ void Prj_AddEva (void)
|
||||||
|
|
||||||
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject)
|
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject)
|
||||||
{
|
{
|
||||||
extern const char *Txt_THE_USER_X_has_been_enroled_in_the_project;
|
extern const char *Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project;
|
||||||
|
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||||
extern const char *Txt_THE_USER_X_already_exists_in_Y_but_is_not_yet_enroled_in_the_course_Z;
|
extern const char *Txt_THE_USER_X_already_exists_in_Y_but_is_not_yet_enroled_in_the_course_Z;
|
||||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||||
long PrjCod;
|
long PrjCod;
|
||||||
|
@ -852,8 +839,9 @@ static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject)
|
||||||
PrjCod,(unsigned) RoleInProject,Gbl.Usrs.Other.UsrDat.UsrCod);
|
PrjCod,(unsigned) RoleInProject,Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||||
DB_QueryREPLACE (Query,"can not add user to project");
|
DB_QueryREPLACE (Query,"can not add user to project");
|
||||||
|
|
||||||
sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_enroled_in_the_project,
|
sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project,
|
||||||
Gbl.Usrs.Other.UsrDat.FullName);
|
Gbl.Usrs.Other.UsrDat.FullName,
|
||||||
|
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
||||||
}
|
}
|
||||||
else // User does not belong to the current course
|
else // User does not belong to the current course
|
||||||
|
@ -895,8 +883,9 @@ void Prj_ReqRemEva (void)
|
||||||
|
|
||||||
static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
|
static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Do_you_really_want_to_be_removed_from_the_project_X;
|
extern const char *Txt_Do_you_really_want_to_be_removed_as_a_X_from_the_project_Y;
|
||||||
extern const char *Txt_Do_you_really_want_to_remove_the_following_user_from_the_project_X;
|
extern const char *Txt_Do_you_really_want_to_remove_the_following_user_as_a_X_from_the_project_Y;
|
||||||
|
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||||
extern const char *Txt_Remove_me_from_this_project;
|
extern const char *Txt_Remove_me_from_this_project;
|
||||||
extern const char *Txt_Remove_user_from_this_project;
|
extern const char *Txt_Remove_user_from_this_project;
|
||||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||||
|
@ -907,8 +896,21 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
|
||||||
ActRemTutPrj, // Prj_ROLE_TUT, Tutor
|
ActRemTutPrj, // Prj_ROLE_TUT, Tutor
|
||||||
ActRemEvaPrj, // Prj_ROLE_EVA, Evaluator
|
ActRemEvaPrj, // Prj_ROLE_EVA, Evaluator
|
||||||
};
|
};
|
||||||
|
struct Project Prj;
|
||||||
bool ItsMe;
|
bool ItsMe;
|
||||||
|
|
||||||
|
/***** Allocate memory for the project *****/
|
||||||
|
Prj_AllocMemProject (&Prj);
|
||||||
|
|
||||||
|
/***** Get parameters *****/
|
||||||
|
Prj_GetParamPrjOrder ();
|
||||||
|
Gbl.Prjs.CurrentPage = Pag_GetParamPagNum (Pag_PROJECTS);
|
||||||
|
if ((Prj.PrjCod = Prj_GetParamPrjCod ()) == -1L)
|
||||||
|
Lay_ShowErrorAndExit ("Code of project is missing.");
|
||||||
|
|
||||||
|
/***** Get data of the project from database *****/
|
||||||
|
Prj_GetDataOfProjectByCod (&Prj);
|
||||||
|
|
||||||
/***** Get user to be removed *****/
|
/***** Get user to be removed *****/
|
||||||
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
|
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
|
||||||
{
|
{
|
||||||
|
@ -919,9 +921,10 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
|
||||||
/***** Show question and button to remove user as administrator *****/
|
/***** Show question and button to remove user as administrator *****/
|
||||||
/* Start alert */
|
/* Start alert */
|
||||||
sprintf (Gbl.Alert.Txt,
|
sprintf (Gbl.Alert.Txt,
|
||||||
ItsMe ? Txt_Do_you_really_want_to_be_removed_from_the_project_X :
|
ItsMe ? Txt_Do_you_really_want_to_be_removed_as_a_X_from_the_project_Y :
|
||||||
Txt_Do_you_really_want_to_remove_the_following_user_from_the_project_X,
|
Txt_Do_you_really_want_to_remove_the_following_user_as_a_X_from_the_project_Y,
|
||||||
Gbl.CurrentCrs.Crs.FullName);
|
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject],
|
||||||
|
Prj.Title);
|
||||||
Ale_ShowAlertAndButton1 (Ale_QUESTION,Gbl.Alert.Txt);
|
Ale_ShowAlertAndButton1 (Ale_QUESTION,Gbl.Alert.Txt);
|
||||||
|
|
||||||
/* Show user's record */
|
/* Show user's record */
|
||||||
|
@ -929,7 +932,8 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
|
||||||
|
|
||||||
/* Show form to request confirmation */
|
/* Show form to request confirmation */
|
||||||
Act_FormStart (ActionRemUsr[RoleInProject]);
|
Act_FormStart (ActionRemUsr[RoleInProject]);
|
||||||
Usr_PutParamUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
|
Gbl.Prjs.PrjCodToEdit = Prj.PrjCod;
|
||||||
|
Prj_PutParams ();
|
||||||
Btn_PutRemoveButton (ItsMe ? Txt_Remove_me_from_this_project :
|
Btn_PutRemoveButton (ItsMe ? Txt_Remove_me_from_this_project :
|
||||||
Txt_Remove_user_from_this_project);
|
Txt_Remove_user_from_this_project);
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -942,6 +946,84 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||||
|
|
||||||
|
/***** Free memory of the project *****/
|
||||||
|
Prj_FreeMemProject (&Prj);
|
||||||
|
|
||||||
|
/***** Put form to edit project again *****/
|
||||||
|
Prj_RequestCreatOrEditPrj (Prj.PrjCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************************ Remove user from project ***************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Prj_RemStd (void)
|
||||||
|
{
|
||||||
|
Prj_RemUsrFromPrj (Prj_ROLE_STD);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Prj_RemTut (void)
|
||||||
|
{
|
||||||
|
Prj_RemUsrFromPrj (Prj_ROLE_TUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Prj_RemEva (void)
|
||||||
|
{
|
||||||
|
Prj_RemUsrFromPrj (Prj_ROLE_EVA);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
|
||||||
|
{
|
||||||
|
extern const char *Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z;
|
||||||
|
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||||
|
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||||
|
char Query[256];
|
||||||
|
struct Project Prj;
|
||||||
|
|
||||||
|
/***** Allocate memory for the project *****/
|
||||||
|
Prj_AllocMemProject (&Prj);
|
||||||
|
|
||||||
|
/***** Get parameters *****/
|
||||||
|
Prj_GetParamPrjOrder ();
|
||||||
|
Gbl.Prjs.CurrentPage = Pag_GetParamPagNum (Pag_PROJECTS);
|
||||||
|
if ((Prj.PrjCod = Prj_GetParamPrjCod ()) == -1L)
|
||||||
|
Lay_ShowErrorAndExit ("Code of project is missing.");
|
||||||
|
|
||||||
|
/***** Get data of the project from database *****/
|
||||||
|
Prj_GetDataOfProjectByCod (&Prj);
|
||||||
|
|
||||||
|
/***** Get user to be removed *****/
|
||||||
|
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
|
||||||
|
{
|
||||||
|
if (Prj_CheckIfICanRemUsrFromPrj ())
|
||||||
|
{
|
||||||
|
/***** Remove user from the table of project-users *****/
|
||||||
|
sprintf (Query,"DELETE FROM prj_usr"
|
||||||
|
" WHERE PrjCod=%ld AND RoleInProject=%u AND UsrCod=%ld",
|
||||||
|
Prj.PrjCod,
|
||||||
|
(unsigned) RoleInProject,
|
||||||
|
Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||||
|
DB_QueryDELETE (Query,"can not remove a user from a project");
|
||||||
|
|
||||||
|
/***** Show success alert *****/
|
||||||
|
sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z,
|
||||||
|
Gbl.Usrs.Other.UsrDat.FullName,
|
||||||
|
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject],
|
||||||
|
Prj.Title);
|
||||||
|
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||||
|
|
||||||
|
/***** Free memory of the project *****/
|
||||||
|
Prj_FreeMemProject (&Prj);
|
||||||
|
|
||||||
|
/***** Put form to edit project again *****/
|
||||||
|
Prj_RequestCreatOrEditPrj (Prj.PrjCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -953,25 +1035,6 @@ static bool Prj_CheckIfICanRemUsrFromPrj (void)
|
||||||
return true; // TODO: Rewrite this function
|
return true; // TODO: Rewrite this function
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/************************ Remove user from project ***************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Prj_RemStd (void)
|
|
||||||
{
|
|
||||||
Prj_AddUsrToProject (Prj_ROLE_STD);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Prj_RemTut (void)
|
|
||||||
{
|
|
||||||
Prj_AddUsrToProject (Prj_ROLE_TUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Prj_RemEva (void)
|
|
||||||
{
|
|
||||||
Prj_AddUsrToProject (Prj_ROLE_EVA);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********* Get parameter with the type or order in list of projects **********/
|
/********* Get parameter with the type or order in list of projects **********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1511,11 +1574,10 @@ static void Prj_RequestCreatOrEditPrj (long PrjCod)
|
||||||
extern const char *Txt_Create_project;
|
extern const char *Txt_Create_project;
|
||||||
extern const char *Txt_Save;
|
extern const char *Txt_Save;
|
||||||
extern const char *Txt_Project_members;
|
extern const char *Txt_Project_members;
|
||||||
extern const char *Txt_Tutors;
|
extern const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
|
||||||
extern const char *Txt_Evaluators;
|
|
||||||
struct Project Prj;
|
struct Project Prj;
|
||||||
bool ItsANewProject;
|
bool ItsANewProject;
|
||||||
|
Prj_RoleInProject_t RoleInProject;
|
||||||
|
|
||||||
/***** Allocate memory for the project *****/
|
/***** Allocate memory for the project *****/
|
||||||
Prj_AllocMemProject (&Prj);
|
Prj_AllocMemProject (&Prj);
|
||||||
|
@ -1653,15 +1715,11 @@ static void Prj_RequestCreatOrEditPrj (long PrjCod)
|
||||||
{
|
{
|
||||||
Box_StartBoxTable (NULL,Txt_Project_members,NULL,
|
Box_StartBoxTable (NULL,Txt_Project_members,NULL,
|
||||||
NULL,Box_NOT_CLOSABLE,2);
|
NULL,Box_NOT_CLOSABLE,2);
|
||||||
Prj_ShowOneProjectUsrsRow (&Prj,Prj_EDIT_ONE_PROJECT,
|
for (RoleInProject = Prj_ROLE_STD;
|
||||||
Txt_Tutors,
|
RoleInProject <= Prj_ROLE_EVA;
|
||||||
Prj_ROLE_TUT); // Tutors
|
RoleInProject++)
|
||||||
Prj_ShowOneProjectUsrsRow (&Prj,Prj_EDIT_ONE_PROJECT,
|
Prj_ShowOneProjectUsrsRow (&Prj,Prj_EDIT_ONE_PROJECT,
|
||||||
Txt_ROLES_PLURAL_Abc[Rol_STD][Usr_SEX_UNKNOWN],
|
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject],RoleInProject);
|
||||||
Prj_ROLE_STD); // Students
|
|
||||||
Prj_ShowOneProjectUsrsRow (&Prj,Prj_EDIT_ONE_PROJECT,
|
|
||||||
Txt_Evaluators,
|
|
||||||
Prj_ROLE_EVA); // Evaluators
|
|
||||||
Box_EndBoxTable ();
|
Box_EndBoxTable ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,17 @@ typedef enum
|
||||||
Prj_PREASSIGNED = 1,
|
Prj_PREASSIGNED = 1,
|
||||||
} Prj_Preassigned_t;
|
} Prj_Preassigned_t;
|
||||||
|
|
||||||
|
// Related with user's roles in a project
|
||||||
|
// Don't change these numbers! They are used in database
|
||||||
|
#define Prj_NUM_ROLES_IN_PROJECT 4
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
Prj_ROLE_UNK = 0, // Unknown
|
||||||
|
Prj_ROLE_STD = 1, // Student
|
||||||
|
Prj_ROLE_TUT = 2, // Tutor
|
||||||
|
Prj_ROLE_EVA = 3, // Evaluator
|
||||||
|
} Prj_RoleInProject_t;
|
||||||
|
|
||||||
struct Project
|
struct Project
|
||||||
{
|
{
|
||||||
long PrjCod;
|
long PrjCod;
|
||||||
|
|
463
swad_text.c
463
swad_text.c
|
@ -2908,25 +2908,25 @@ const char *Txt_Add_this_ID =
|
||||||
"Adicionar este nº identif.";
|
"Adicionar este nº identif.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Add_user =
|
const char *Txt_Add_USER = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"Afegir usuari";
|
"Afegir %s";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"Fügen Benutzer";
|
"Fügen %s";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"Add user";
|
"Add %s";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"Añadir usuario";
|
"Añadir %s";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"Ajouter utilisateur";
|
"Ajouter %s";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"Añadir usuario"; // Okoteve traducción
|
"Añadir %s"; // Okoteve traducción
|
||||||
#elif L==7
|
#elif L==7
|
||||||
"Aggiungere utente";
|
"Aggiungere %s";
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"Dodaj użytkownika";
|
"Dodaj %s";
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"Adicionar usuário";
|
"Adicionar %s";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Announcement_created =
|
const char *Txt_Announcement_created =
|
||||||
|
@ -8999,25 +8999,34 @@ const char *Txt_Do_you_really_want_to_be_removed_from_the_course_X = // Warning:
|
||||||
" (removing your works, enrolment in groups, etc.)?"; // Necessita de tradução
|
" (removing your works, enrolment in groups, etc.)?"; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Do_you_really_want_to_be_removed_from_the_project_X = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Do_you_really_want_to_be_removed_as_a_X_from_the_project_Y = // Warning: it is very important to include two %s in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"¿De veres voleu ser eliminat del projecte <strong>%s</strong>?";
|
"¿De veres voleu ser eliminat"
|
||||||
|
" como a %s del projecte <strong>%s</strong>?";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"Möchten Sie wirklich aus dem Projekt <strong>%s</strong> entfernt werden?";
|
"Möchten Sie wirklich"
|
||||||
|
" als %s aus dem Projekt <strong>%s</strong> entfernt werden?";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"Do you really want to be removed from the project <strong>%s</strong>";
|
"Do you really want to be removed"
|
||||||
|
" as a %s from the project <strong>%s</strong>";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"¿Realmente desea ser eliminado del proyecto <strong>%s</strong>?";
|
"¿Realmente desea ser eliminado"
|
||||||
|
" como %s del proyecto <strong>%s</strong>?";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"Voulez-vous vraiment être retiré du projet <strong>%s</strong>?";
|
"Voulez-vous vraiment être retiré"
|
||||||
|
" en tant que %sdu projet <strong>%s</strong>?";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"¿Realmente desea ser eliminado del proyecto <strong>%s</strong>?"; // Okoteve traducción
|
"¿Realmente desea ser eliminado"
|
||||||
|
" como %s del proyecto <strong>%s</strong>?"; // Okoteve traducción
|
||||||
#elif L==7
|
#elif L==7
|
||||||
"Vuoi realmente rimuovere dal progetto <strong>%s</strong>?";
|
"Vuoi realmente rimuovere"
|
||||||
|
" come %s dal progetto <strong>%s</strong>?";
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"Czy naprawdę chcesz zostać usunięty z projektu <strong>%s</strong>?";
|
"Czy naprawdę chcesz zostać usunięty"
|
||||||
|
" jako %s z projektu <strong>%s</strong>?";
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"Você realmente quer ser removido do projeto <strong>%s</strong>?";
|
"Você realmente quer ser removido"
|
||||||
|
" como %s do projeto <strong>%s</strong>?";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Do_you_really_want_to_completely_eliminate_the_following_user =
|
const char *Txt_Do_you_really_want_to_completely_eliminate_the_following_user =
|
||||||
|
@ -9632,25 +9641,34 @@ const char *Txt_Do_you_really_want_to_remove_the_following_user_from_the_course_
|
||||||
" (removendo seus trabalhos, inscrição em grupos, etc.)?";
|
" (removendo seus trabalhos, inscrição em grupos, etc.)?";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Do_you_really_want_to_remove_the_following_user_from_the_project_X = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Do_you_really_want_to_remove_the_following_user_as_a_X_from_the_project_Y = // Warning: it is very important to include two %s in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"¿De veres voleu eliminar el següent usuari del projecte <strong>%s</strong>?";
|
"¿De veres voleu eliminar el següent usuari"
|
||||||
|
" com a %s del projecte <strong>%s</strong>?";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"Möchten Sie den folgenden Benutzer wirklich aus dem Projekt <strong>%s</strong> entfernen?";
|
"Möchten Sie den folgenden Benutzer wirklich"
|
||||||
|
" als %s aus dem Projekt <strong>%s</strong> entfernen?";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"Do you really want to remove the following user from the project <strong>%s</strong>";
|
"Do you really want to remove the following user"
|
||||||
|
" as a %s from the project <strong>%s</strong>";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"¿Realmente desea eliminar el siguiente usuario del proyecto <strong>%s</strong>?";
|
"¿Realmente desea eliminar el siguiente usuario"
|
||||||
|
" como %s del proyecto <strong>%s</strong>?";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"Voulez-vous vraiment supprimer l'utilisateur suivant du projet <strong>%s</strong>?";
|
"Voulez-vous vraiment supprimer l'utilisateur suivant"
|
||||||
|
" en tant que %s du projet <strong>%s</strong>?";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"¿Realmente desea eliminar el siguiente usuario del proyecto <strong>%s</strong>?"; // Okoteve traducción
|
"¿Realmente desea eliminar el siguiente usuario"
|
||||||
|
" como %s del proyecto <strong>%s</strong>?"; // Okoteve traducción
|
||||||
#elif L==7
|
#elif L==7
|
||||||
"Vuoi realmente rimuovere il seguente utente dal progetto <strong>%s</strong>?";
|
"Vuoi realmente rimuovere il seguente utente"
|
||||||
|
" como %s dal progetto <strong>%s</strong>?";
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"Czy na pewno chcesz usunąć następujący użytkownik z projekt <strong>%s</strong>?";
|
"Czy na pewno chcesz usunąć następujący użytkownik"
|
||||||
|
" jako %s z projektu <strong>%s</strong>?";
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"Você deseja realmente remover o seguinte usuário do projeto <strong>%s</strong>?";
|
"Você deseja realmente remover o seguinte usuário"
|
||||||
|
" como %s do projeto <strong>%s</strong>?";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Do_you_really_want_to_remove_the_game_X = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Do_you_really_want_to_remove_the_game_X = // Warning: it is very important to include %s in the following sentences
|
||||||
|
@ -11527,27 +11545,6 @@ const char *Txt_Error_receiving_or_processing_image =
|
||||||
"Erro no recebimento ou processamento de imagem.";
|
"Erro no recebimento ou processamento de imagem.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Evaluators =
|
|
||||||
#if L==1
|
|
||||||
"Avaluadors";
|
|
||||||
#elif L==2
|
|
||||||
"Auswerter";
|
|
||||||
#elif L==3
|
|
||||||
"Evaluators";
|
|
||||||
#elif L==4
|
|
||||||
"Evaluadores";
|
|
||||||
#elif L==5
|
|
||||||
"Évaluateurs";
|
|
||||||
#elif L==6
|
|
||||||
"Evaluadores"; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Valutatori";
|
|
||||||
#elif L==8
|
|
||||||
"Oceniający";
|
|
||||||
#elif L==9
|
|
||||||
"Avaliadores";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Event =
|
const char *Txt_Event =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Esdeveniment";
|
"Esdeveniment";
|
||||||
|
@ -30870,6 +30867,172 @@ const char *Txt_Project_X_removed = // Warning: it is very important to include
|
||||||
"Projeto <strong>%s</strong> removido.";
|
"Projeto <strong>%s</strong> removido.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] =
|
||||||
|
{
|
||||||
|
#if L==1 // Prj_ROLE_UNK
|
||||||
|
"desconegut/da"
|
||||||
|
#elif L==2
|
||||||
|
"Unbekannter/e"
|
||||||
|
#elif L==3
|
||||||
|
"unknown"
|
||||||
|
#elif L==4
|
||||||
|
"desconocido/a"
|
||||||
|
#elif L==5
|
||||||
|
"inconnu/e"
|
||||||
|
#elif L==6
|
||||||
|
"desconocido/a" // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"sconosciuto/a"
|
||||||
|
#elif L==8
|
||||||
|
"nieznany"
|
||||||
|
#elif L==9
|
||||||
|
"desconhecido/a"
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
#if L==1 // Prj_ROLE_STD
|
||||||
|
"estudiant"
|
||||||
|
#elif L==2
|
||||||
|
"Student"
|
||||||
|
#elif L==3
|
||||||
|
"student"
|
||||||
|
#elif L==4
|
||||||
|
"estudiante"
|
||||||
|
#elif L==5
|
||||||
|
"étudiant/e"
|
||||||
|
#elif L==6
|
||||||
|
"temimbo'e"
|
||||||
|
#elif L==7
|
||||||
|
"studente"
|
||||||
|
#elif L==8
|
||||||
|
"student"
|
||||||
|
#elif L==9
|
||||||
|
"estudante"
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
#if L==1 // Prj_ROLE_TUT
|
||||||
|
"tutor"
|
||||||
|
#elif L==2
|
||||||
|
"Tutor"
|
||||||
|
#elif L==3
|
||||||
|
"tutor"
|
||||||
|
#elif L==4
|
||||||
|
"tutor"
|
||||||
|
#elif L==5
|
||||||
|
"tuteur"
|
||||||
|
#elif L==6
|
||||||
|
"tutor" // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"precettore"
|
||||||
|
#elif L==8
|
||||||
|
"nauczyciel"
|
||||||
|
#elif L==9
|
||||||
|
"tutor"
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
#if L==1 // Prj_ROLE_EVA
|
||||||
|
"avaluador"
|
||||||
|
#elif L==2
|
||||||
|
"Auswerter"
|
||||||
|
#elif L==3
|
||||||
|
"evaluator"
|
||||||
|
#elif L==4
|
||||||
|
"evaluador"
|
||||||
|
#elif L==5
|
||||||
|
"évaluateur"
|
||||||
|
#elif L==6
|
||||||
|
"evaluador" // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"valutatore"
|
||||||
|
#elif L==8
|
||||||
|
"ewaluator"
|
||||||
|
#elif L==9
|
||||||
|
"avaliador"
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
|
||||||
|
{
|
||||||
|
#if L==1 // Prj_ROLE_UNK
|
||||||
|
"Desconeguts"
|
||||||
|
#elif L==2
|
||||||
|
"Unbekannte"
|
||||||
|
#elif L==3
|
||||||
|
"Unknown"
|
||||||
|
#elif L==4
|
||||||
|
"Desconocidos"
|
||||||
|
#elif L==5
|
||||||
|
"Inconnus"
|
||||||
|
#elif L==6
|
||||||
|
"Desconocidos" // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"Sconosciuti"
|
||||||
|
#elif L==8
|
||||||
|
"Nieznany"
|
||||||
|
#elif L==9
|
||||||
|
"Desconhecidos"
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
#if L==1 // Prj_ROLE_STD
|
||||||
|
"Estudiants"
|
||||||
|
#elif L==2
|
||||||
|
"Studenten"
|
||||||
|
#elif L==3
|
||||||
|
"Students"
|
||||||
|
#elif L==4
|
||||||
|
"Estudiantes"
|
||||||
|
#elif L==5
|
||||||
|
"Étudiants"
|
||||||
|
#elif L==6
|
||||||
|
"Temimbo'e"
|
||||||
|
#elif L==7
|
||||||
|
"Studenti"
|
||||||
|
#elif L==8
|
||||||
|
"Studenci"
|
||||||
|
#elif L==9
|
||||||
|
"Estudantes"
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
#if L==1 // Prj_ROLE_TUT
|
||||||
|
"Tutors"
|
||||||
|
#elif L==2
|
||||||
|
"Tutoren"
|
||||||
|
#elif L==3
|
||||||
|
"Tutors"
|
||||||
|
#elif L==4
|
||||||
|
"Tutores"
|
||||||
|
#elif L==5
|
||||||
|
"Tuteurs"
|
||||||
|
#elif L==6
|
||||||
|
"Tutores" // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"Precettori"
|
||||||
|
#elif L==8
|
||||||
|
"Nauczyciele"
|
||||||
|
#elif L==9
|
||||||
|
"Tutores"
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
#if L==1 // Prj_ROLE_EVA
|
||||||
|
"Avaluadors"
|
||||||
|
#elif L==2
|
||||||
|
"Auswerter"
|
||||||
|
#elif L==3
|
||||||
|
"Evaluators"
|
||||||
|
#elif L==4
|
||||||
|
"Evaluadores"
|
||||||
|
#elif L==5
|
||||||
|
"Évaluateurs"
|
||||||
|
#elif L==6
|
||||||
|
"Evaluadores" // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"Valutatori"
|
||||||
|
#elif L==8
|
||||||
|
"Ewaluatorów"
|
||||||
|
#elif L==9
|
||||||
|
"Avaliadores"
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
const char *Txt_Projects =
|
const char *Txt_Projects =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Projectes (treballs fi de grau, projectes final de carrera, tesi…)";
|
"Projectes (treballs fi de grau, projectes final de carrera, tesi…)";
|
||||||
|
@ -47566,25 +47729,34 @@ const char *Txt_THE_USER_X_already_exists_in_Y_but_is_not_yet_enroled_in_the_cou
|
||||||
" in the course <strong>%s</strong>."; // Necessita de tradução
|
" in the course <strong>%s</strong>."; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_THE_USER_X_has_been_enroled_in_the_project = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project = // Warning: it is very important to include two %s in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"<strong>%s</strong> ha estat afegit/da al projecte.";
|
"<strong>%s</strong> ha estat afegit/da"
|
||||||
|
" com a %s al projecte.";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"<strong>%s</strong> hat sich im Projekt eingeschrieben.";
|
"<strong>%s</strong> hat sich"
|
||||||
|
" als %s im Projekt eingeschrieben.";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"<strong>%s</strong> has been enroled in the project.";
|
"<strong>%s</strong> has been enroled"
|
||||||
|
" as a %s in the project.";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"<strong>%s</strong> ha sido añadido/a al proyecto.";
|
"<strong>%s</strong> ha sido añadido/a"
|
||||||
|
" como %s al proyecto.";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"<strong>%s</strong> a été inscrit dans le projet.";
|
"<strong>%s</strong> a été inscrit"
|
||||||
|
" en tant que %s dans le projet.";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"<strong>%s</strong> ha sido añadido/a al proyecto."; // Okoteve traducción
|
"<strong>%s</strong> ha sido añadido/a"
|
||||||
|
" como %s al proyecto."; // Okoteve traducción
|
||||||
#elif L==7
|
#elif L==7
|
||||||
"<strong>%s</strong> è stato registrato/a nel progetto.";
|
"<strong>%s</strong> è stato registrato/a"
|
||||||
|
" como %s nel progetto.";
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"<strong>%s</strong> został zapisany do projektu.";
|
"<strong>%s</strong> został zapisany"
|
||||||
|
" jako %s do projektu.";
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"<strong>%s</strong> foi matriculado/a no projeto.";
|
"<strong>%s</strong> foi matriculado/a"
|
||||||
|
" como %s no projeto.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_THE_USER_X_has_been_enroled_as_administrator_of_Y = // Warning: it is very important to include two %s in the following sentences
|
const char *Txt_THE_USER_X_has_been_enroled_as_administrator_of_Y = // Warning: it is very important to include two %s in the following sentences
|
||||||
|
@ -47698,6 +47870,36 @@ const char *Txt_THE_USER_X_has_been_removed_as_administrator = // Warning: it is
|
||||||
"<strong>%s</strong> has been removed as administrator."; // Necessita de tradução
|
"<strong>%s</strong> has been removed as administrator."; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_THE_USER_X_has_been_removed_as_administrator_of_Y = // Warning: it is very important to include two %s in the following sentences
|
||||||
|
#if L==1
|
||||||
|
"<strong>%s</strong> ha sido eliminado/a como administrador/a"
|
||||||
|
" de <strong>%s</strong>."; // Necessita traduccio
|
||||||
|
#elif L==2
|
||||||
|
"<strong>%s</strong> has been removed as administrator"
|
||||||
|
" of <strong>%s</strong>."; // Übersetzung notwendig
|
||||||
|
#elif L==3
|
||||||
|
"<strong>%s</strong> has been removed as administrator"
|
||||||
|
" of <strong>%s</strong>.";
|
||||||
|
#elif L==4
|
||||||
|
"<strong>%s</strong> ha sido eliminado/a como administrador/a"
|
||||||
|
" de <strong>%s</strong>.";
|
||||||
|
#elif L==5
|
||||||
|
"<strong>%s</strong> has been removed as administrator"
|
||||||
|
" of <strong>%s</strong>."; // Besoin de traduction
|
||||||
|
#elif L==6
|
||||||
|
"<strong>%s</strong> ha sido eliminado/a como administrador/a"
|
||||||
|
" de <strong>%s</strong>."; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"<strong>%s</strong> è stato rimosso come amministratore"
|
||||||
|
" de <strong>%s</strong>.";
|
||||||
|
#elif L==8
|
||||||
|
"<strong>%s</strong> has been removed as administrator"
|
||||||
|
" of <strong>%s</strong>."; // Potrzebujesz tlumaczenie
|
||||||
|
#elif L==9
|
||||||
|
"<strong>%s</strong> has been removed as administrator"
|
||||||
|
" of <strong>%s</strong>."; // Necessita de tradução
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_THE_USER_X_has_been_removed_from_all_his_her_courses = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_THE_USER_X_has_been_removed_from_all_his_her_courses = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"<strong>%s</strong> ha sido eliminado/a de todas sus asignaturas."; // Necessita traduccio
|
"<strong>%s</strong> ha sido eliminado/a de todas sus asignaturas."; // Necessita traduccio
|
||||||
|
@ -47719,6 +47921,36 @@ const char *Txt_THE_USER_X_has_been_removed_from_all_his_her_courses = // Warnin
|
||||||
"<strong>%s</strong> has been removed from all her/his courses."; // Necessita de tradução
|
"<strong>%s</strong> has been removed from all her/his courses."; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_THE_USER_X_has_not_been_removed_from_any_group = // Warning: it is very important to include %s in the following sentences
|
||||||
|
#if L==1
|
||||||
|
"<strong>%s</strong> no ha sido eliminado/a"
|
||||||
|
" de ningún grupo."; // Necessita traduccio
|
||||||
|
#elif L==2
|
||||||
|
"<strong>%s</strong> has not been removed"
|
||||||
|
" from any group."; // Übersetzung notwendig
|
||||||
|
#elif L==3
|
||||||
|
"<strong>%s</strong> has not been removed"
|
||||||
|
" from any group.";
|
||||||
|
#elif L==4
|
||||||
|
"<strong>%s</strong> no ha sido eliminado/a"
|
||||||
|
" de ningún grupo.";
|
||||||
|
#elif L==5
|
||||||
|
"<strong>%s</strong> has not been removed"
|
||||||
|
" from any group."; // Besoin de traduction
|
||||||
|
#elif L==6
|
||||||
|
"<strong>%s</strong> no ha sido eliminado/a"
|
||||||
|
" de ningún grupo."; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"<strong>%s</strong> non è stato rimosso"
|
||||||
|
" da alcun gruppo.";
|
||||||
|
#elif L==8
|
||||||
|
"<strong>%s</strong> has not been removed"
|
||||||
|
" from any group."; // Potrzebujesz tlumaczenie
|
||||||
|
#elif L==9
|
||||||
|
"<strong>%s</strong> has not been removed"
|
||||||
|
" from any group."; // Necessita de tradução
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_THE_USER_X_has_been_removed_from_Y_groups = // Warning: it is very important to include %s and %u in the following sentences
|
const char *Txt_THE_USER_X_has_been_removed_from_Y_groups = // Warning: it is very important to include %s and %u in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"<strong>%s</strong> ha sido eliminado/a de %u grupos."; // Necessita traduccio
|
"<strong>%s</strong> ha sido eliminado/a de %u grupos."; // Necessita traduccio
|
||||||
|
@ -47763,11 +47995,11 @@ const char *Txt_THE_USER_X_has_been_removed_from_one_group = // Warning: it is v
|
||||||
|
|
||||||
const char *Txt_THE_USER_X_has_been_removed_from_the_course_Y = // Warning: it is very important to include two %s in the following sentences
|
const char *Txt_THE_USER_X_has_been_removed_from_the_course_Y = // Warning: it is very important to include two %s in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"<strong>%s</strong> ha sido eliminado/a"
|
"<strong>%s</strong> ha estat eliminat"
|
||||||
" de la asignatura <strong>%s</strong>."; // Necessita traduccio
|
" de l'assignatura <strong>%s</strong>.";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"<strong>%s</strong> has been removed"
|
"<strong>%s</strong> wurde aus"
|
||||||
" from the course <strong>%s</strong>."; // Übersetzung notwendig
|
" dem Kurs <strong>%s</strong> entfernt.";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"<strong>%s</strong> has been removed"
|
"<strong>%s</strong> has been removed"
|
||||||
" from the course <strong>%s</strong>.";
|
" from the course <strong>%s</strong>.";
|
||||||
|
@ -47775,8 +48007,8 @@ const char *Txt_THE_USER_X_has_been_removed_from_the_course_Y = // Warning: it i
|
||||||
"<strong>%s</strong> ha sido eliminado/a"
|
"<strong>%s</strong> ha sido eliminado/a"
|
||||||
" de la asignatura <strong>%s</strong>.";
|
" de la asignatura <strong>%s</strong>.";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"<strong>%s</strong> has been removed"
|
"<strong>%s</strong> a été retiré"
|
||||||
" from the course <strong>%s</strong>."; // Besoin de traduction
|
" de la matière <strong>%s</strong>.";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"<strong>%s</strong> ha sido eliminado/a"
|
"<strong>%s</strong> ha sido eliminado/a"
|
||||||
" de la asignatura <strong>%s</strong>."; // Okoteve traducción
|
" de la asignatura <strong>%s</strong>."; // Okoteve traducción
|
||||||
|
@ -47784,41 +48016,11 @@ const char *Txt_THE_USER_X_has_been_removed_from_the_course_Y = // Warning: it i
|
||||||
"<strong>%s</strong> è stato rimosso"
|
"<strong>%s</strong> è stato rimosso"
|
||||||
" dal corso <strong>%s</strong>.";
|
" dal corso <strong>%s</strong>.";
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"<strong>%s</strong> has been removed"
|
"<strong>%s</strong> został usunięty"
|
||||||
" from the course <strong>%s</strong>."; // Potrzebujesz tlumaczenie
|
" z trasy <strong>%s</strong>.";
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"<strong>%s</strong> has been removed"
|
"<strong>%s</strong> foi removido"
|
||||||
" from the course <strong>%s</strong>."; // Necessita de tradução
|
" da disciplina <strong>%s</strong>.";
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_THE_USER_X_has_been_removed_as_administrator_of_Y = // Warning: it is very important to include two %s in the following sentences
|
|
||||||
#if L==1
|
|
||||||
"<strong>%s</strong> ha sido eliminado/a como administrador/a"
|
|
||||||
" de <strong>%s</strong>."; // Necessita traduccio
|
|
||||||
#elif L==2
|
|
||||||
"<strong>%s</strong> has been removed as administrator"
|
|
||||||
" of <strong>%s</strong>."; // Übersetzung notwendig
|
|
||||||
#elif L==3
|
|
||||||
"<strong>%s</strong> has been removed as administrator"
|
|
||||||
" of <strong>%s</strong>.";
|
|
||||||
#elif L==4
|
|
||||||
"<strong>%s</strong> ha sido eliminado/a como administrador/a"
|
|
||||||
" de <strong>%s</strong>.";
|
|
||||||
#elif L==5
|
|
||||||
"<strong>%s</strong> has been removed as administrator"
|
|
||||||
" of <strong>%s</strong>."; // Besoin de traduction
|
|
||||||
#elif L==6
|
|
||||||
"<strong>%s</strong> ha sido eliminado/a como administrador/a"
|
|
||||||
" de <strong>%s</strong>."; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"<strong>%s</strong> è stato rimosso come amministratore"
|
|
||||||
" de <strong>%s</strong>.";
|
|
||||||
#elif L==8
|
|
||||||
"<strong>%s</strong> has been removed as administrator"
|
|
||||||
" of <strong>%s</strong>."; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==9
|
|
||||||
"<strong>%s</strong> has been removed as administrator"
|
|
||||||
" of <strong>%s</strong>."; // Necessita de tradução
|
|
||||||
#endif
|
#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
|
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
|
||||||
|
@ -47851,34 +48053,34 @@ const char *Txt_THE_USER_X_has_been_removed_from_the_group_of_type_Y_to_which_it
|
||||||
" from the group of type %s to which it belonged."; // Necessita de tradução
|
" from the group of type %s to which it belonged."; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_THE_USER_X_has_not_been_removed_from_any_group = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z = // Warning: it is very important to include three %s in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"<strong>%s</strong> no ha sido eliminado/a"
|
"<strong>%s</strong> ha estat eliminat"
|
||||||
" de ningún grupo."; // Necessita traduccio
|
" como a %s del projecte <strong>%s</strong>.";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"<strong>%s</strong> has not been removed"
|
"<strong>%s</strong> wurde"
|
||||||
" from any group."; // Übersetzung notwendig
|
" als %s aus dem Projekt <strong>%s</strong> entfernt.";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"<strong>%s</strong> has not been removed"
|
"<strong>%s</strong> has been removed"
|
||||||
" from any group.";
|
" as a %s from the project <strong>%s</strong>.";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"<strong>%s</strong> no ha sido eliminado/a"
|
"<strong>%s</strong> ha sido eliminado/a"
|
||||||
" de ningún grupo.";
|
" como %s del proyecto <strong>%s</strong>.";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"<strong>%s</strong> has not been removed"
|
"<strong>%s</strong> a été retiré"
|
||||||
" from any group."; // Besoin de traduction
|
" en tant que %s du projet <strong>%s</strong>.";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"<strong>%s</strong> no ha sido eliminado/a"
|
"<strong>%s</strong> ha sido eliminado/a"
|
||||||
" de ningún grupo."; // Okoteve traducción
|
" como %s del proyecto <strong>%s</strong>."; // Okoteve traducción
|
||||||
#elif L==7
|
#elif L==7
|
||||||
"<strong>%s</strong> non è stato rimosso"
|
"<strong>%s</strong> è stato rimosso"
|
||||||
" da alcun gruppo.";
|
" come %s dal progetto <strong>%s</strong>.";
|
||||||
#elif L==8
|
#elif L==8
|
||||||
"<strong>%s</strong> has not been removed"
|
"<strong>%s</strong> został wyeliminowany"
|
||||||
" from any group."; // Potrzebujesz tlumaczenie
|
" jako %s z projektu <strong>%s</strong>.";
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"<strong>%s</strong> has not been removed"
|
"<strong>%s</strong> foi removido"
|
||||||
" from any group."; // Necessita de tradução
|
" como %s do projeto <strong>%s</strong>.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
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
|
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
|
||||||
|
@ -50323,27 +50525,6 @@ const char *Txt_TF_QST[2] =
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *Txt_Tutors =
|
|
||||||
#if L==1
|
|
||||||
"Tutors";
|
|
||||||
#elif L==2
|
|
||||||
"Tutoren";
|
|
||||||
#elif L==3
|
|
||||||
"Tutors";
|
|
||||||
#elif L==4
|
|
||||||
"Tutores";
|
|
||||||
#elif L==5
|
|
||||||
"Tuteurs";
|
|
||||||
#elif L==6
|
|
||||||
"Tutores"; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Tutori";
|
|
||||||
#elif L==8
|
|
||||||
"Opiekunowie";
|
|
||||||
#elif L==9
|
|
||||||
"Tutores";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Type =
|
const char *Txt_Type =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Tipus";
|
"Tipus";
|
||||||
|
|
Loading…
Reference in New Issue