Version 17.5

This commit is contained in:
Antonio Cañas Vargas 2017-09-21 01:33:23 +02:00
parent c8d62fe570
commit ffe019a50a
3 changed files with 78 additions and 44 deletions

View File

@ -252,13 +252,14 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 17.4.3 (2017-09-21)"
#define Log_PLATFORM_VERSION "SWAD 17.5 (2017-09-21)"
#define CSS_FILE "swad17.0.css"
#define JS_FILE "swad16.206.3.js"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/*
Version 17.5: Sep 21, 2017 Users can be added to a project. (230250 lines)
Version 17.4.3: Sep 21, 2017 Changes in listing and edition of projects. (230222 lines)
Version 17.4.2: Sep 20, 2017 Changes in listing and edition of projects. (230203 lines)
Version 17.4.1: Sep 20, 2017 Changes adding users to a project. Not finished. (230141 lines)

View File

@ -743,12 +743,63 @@ void Prj_AddRev (void)
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_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_;
long PrjCod;
struct ListUsrCods ListUsrCods;
unsigned NumUsr;
char Query[512];
/***** Get project code *****/
if ((Gbl.Prjs.PrjCodToEdit = Prj_GetParamPrjCod ()) == -1L)
if ((PrjCod = Prj_GetParamPrjCod ()) == -1L)
Lay_ShowErrorAndExit ("Code of project is missing.");
if (RoleInProject != Prj_ROLE_UNK) // TODO: Remove
Ale_ShowAlert (Ale_WARNING,"Not yet implemented.");
/***** Use user's ID to identify the user(s) to be enroled /removed *****/
Usr_GetParamOtherUsrIDNickOrEMailAndGetUsrCods (&ListUsrCods);
if (ListUsrCods.NumUsrs) // User(s) found with the ID
{
/***** For each user found... *****/
for (NumUsr = 0;
NumUsr < ListUsrCods.NumUsrs;
NumUsr++)
{
/* Get user's data */
Gbl.Usrs.Other.UsrDat.UsrCod = ListUsrCods.Lst[NumUsr];
Usr_GetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat);
/* Check if this user belongs to the current course */
if (Usr_CheckIfUsrBelongsToCurrentCrs (&Gbl.Usrs.Other.UsrDat))
{
/***** Add user to project *****/
sprintf (Query,"REPLACE INTO prj_usr"
" (PrjCod,RoleInProject,UsrCod)"
" VALUES"
" (%ld,%u,%ld)",
PrjCod,(unsigned) RoleInProject,Gbl.Usrs.Other.UsrDat.UsrCod);
DB_QueryREPLACE (Query,"can not add user to project");
sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_enroled_in_the_project,
Gbl.Usrs.Other.UsrDat.FullName);
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
}
else // User does not belong to the current course
{
sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_already_exists_in_Y_but_is_not_yet_enroled_in_the_course_Z,
Gbl.Usrs.Other.UsrDat.FullName,Cfg_PLATFORM_SHORT_NAME,Gbl.CurrentCrs.Crs.FullName);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
}
/***** Free list of users' codes *****/
Usr_FreeListUsrCods (&ListUsrCods);
}
else // No users found
Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
/***** Put form to edit project again *****/
Prj_RequestCreatOrEditPrj (PrjCod);
}
/*****************************************************************************/

View File

@ -47504,6 +47504,27 @@ 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
#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
#if L==1
"<strong>%s</strong> ha estat afegit/da al projecte.";
#elif L==2
"<strong>%s</strong> hat sich im Projekt eingeschrieben.";
#elif L==3
"<strong>%s</strong> has been enroled in the project.";
#elif L==4
"<strong>%s</strong> ha sido a&ntilde;adido/a al proyecto.";
#elif L==5
"<strong>%s</strong> a &eacute;t&eacute; inscrit dans le projet.";
#elif L==6
"<strong>%s</strong> ha sido a&ntilde;adido/a al proyecto."; // Okoteve traducción
#elif L==7
"<strong>%s</strong> &egrave; stato registrato/a nel progetto.";
#elif L==8
"<strong>%s</strong> zosta&lstrok; zapisany do projektu.";
#elif L==9
"<strong>%s</strong> foi matriculado/a no projeto.";
#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
#if L==1
"<strong>%s</strong> ha sido inscrito/a"
@ -47539,7 +47560,7 @@ const char *Txt_THE_USER_X_has_been_enroled_in_the_course_Y = // Warning: it is
"<strong>%s</strong> ha estat afegit/da"
" a l'assignatura <strong>%s</strong>.";
#elif L==2
"<strong>%s</strong> hat sich im"
"<strong>%s</strong> hat sich"
" im Kurs <strong>%s</strong> eingeschrieben.";
#elif L==3
"<strong>%s</strong> has been enroled"
@ -48575,45 +48596,6 @@ const char *Txt_There_is_no_user_with_ID_nick_or_email_X = // Warning: it is ver
" with ID, nick or email <strong>%s</strong>."; // Necessita de tradução
#endif
const char *Txt_There_is_no_user_with_ID_nick_or_e_mail_X_in_the_course_Y = // Warning: it is very important to include two %s in the following sentences
#if L==1
"No existe ning&uacute;n usuario"
" con ID (DNI/c&eacute;dula), apodo o correo <strong>%s</strong>"
" en la asignatura <strong>%s</strong>."; // Necessita traduccio
#elif L==2
"There is no user"
" with ID, nick or email <strong>%s</strong>"
" in the course <strong>%s</strong>."; // Übersetzung notwendig
#elif L==3
"There is no user"
" with ID, nick or email <strong>%s</strong>"
" in the course <strong>%s</strong>.";
#elif L==4
"No existe ning&uacute;n usuario"
" con ID (DNI/c&eacute;dula), apodo o correo <strong>%s</strong>"
" en la asignatura <strong>%s</strong>.";
#elif L==5
"There is no user"
" with ID, nick or email <strong>%s</strong>"
" in the course <strong>%s</strong>."; // Besoin de traduction
#elif L==6
"No existe ning&uacute;n usuario"
" con ID (DNI/c&eacute;dula), apodo o correo <strong>%s</strong>"
" en la asignatura <strong>%s</strong>."; // Okoteve traducción
#elif L==7
"Non c'&egrave; alcun utente"
" con ID, nome utente o email <strong>%s</strong>"
" nel corso <strong>%s</strong>.";
#elif L==8
"There is no user"
" with ID, nick or email <strong>%s</strong>"
" in the course <strong>%s</strong>."; // Potrzebujesz tlumaczenie
#elif L==9
"There is no user"
" with ID, nick or email <strong>%s</strong>"
" in the course <strong>%s</strong>."; // Necessita de tradução
#endif
const char *Txt_There_is_no_user_with_nickname_X = // Warning: it is very important to include %s in the following sentences
#if L==1
"No existe ning&uacute;n usuario"