From 75d802bb7cf315ee966ac3e0d9148d9b96cbaec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 12 Apr 2019 10:14:29 +0200 Subject: [PATCH] Version18.112.1 --- css/{swad18.92.css => swad18.112.1.css} | 21 +- swad_changelog.h | 5 +- swad_project.c | 38 ++- swad_text.c | 308 ++++++++++++++++++++---- 4 files changed, 307 insertions(+), 65 deletions(-) rename css/{swad18.92.css => swad18.112.1.css} (99%) diff --git a/css/swad18.92.css b/css/swad18.112.1.css similarity index 99% rename from css/swad18.92.css rename to css/swad18.112.1.css index 65fd5c55b..13704f1c3 100644 --- a/css/swad18.92.css +++ b/css/swad18.112.1.css @@ -2420,6 +2420,25 @@ a:hover img.CENTRE_PHOTO_SHOW { max-width:500px; } +.PRJ_MEMBER_ICO + { + width:30px; + text-align:center; + vertical-align:middle; + } +.PRJ_MEMBER_PHO + { + width:30px; + text-align:center; + vertical-align:middle; + } +.PRJ_MEMBER_NAM + { + text-align:left; + vertical-align:middle; + color:#4D88A1; + font-size:11pt; + } /********************************** Tests ************************************/ .TAG_SEL {box-sizing:border-box; width:346px;} @@ -2807,7 +2826,7 @@ a:hover img.CENTRE_PHOTO_SHOW overflow:hidden; text-overflow:ellipsis; } -.AUTHOR_TXT {color:#4D88A1; font-size:11pt;} +.AUTHOR_TXT {color:#4D88A1; font-size:11pt;} .AUTHOR_TXT_LIGHT {color:#AFC4CC; font-size:11pt;} .AUTHOR_TXT_NEW {color:#4D88A1; font-size:11pt; font-weight:bold;} diff --git a/swad_changelog.h b/swad_changelog.h index f533014a2..94e5a94cf 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -456,10 +456,11 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.112 (2019-04-11)" -#define CSS_FILE "swad18.92.css" +#define Log_PLATFORM_VERSION "SWAD 18.112.1 (2019-04-12)" +#define CSS_FILE "swad18.112.1.css" #define JS_FILE "swad18.92.js" /* + Version 18.112.1: Apr 12, 2019 Minor changes in layout of projects. (? lines) Version 18.112: Apr 11, 2019 Code refactoring related to attendance. (242538 lines) Version 18.111: Apr 11, 2019 New option to select users to compose an email to them. (242541 lines) 1 change necessary in database: diff --git a/swad_project.c b/swad_project.c index c6ab664aa..2efbc4f27 100644 --- a/swad_project.c +++ b/swad_project.c @@ -1667,7 +1667,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj, /* Icon to remove user */ if (ProjectView == Prj_EDIT_ONE_PROJECT) { - fprintf (Gbl.F.Out,""); + fprintf (Gbl.F.Out,""); Lay_PutContextualLinkOnlyIcon (ActionReqRemUsr[RoleInProject],NULL, Prj_PutCurrentParams, "trash.svg", @@ -1676,7 +1676,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj, } /* Put user's photo */ - fprintf (Gbl.F.Out,""); + fprintf (Gbl.F.Out,""); ShowPhoto = Pho_ShowingUsrPhotoIsAllowed (&Gbl.Usrs.Other.UsrDat,PhotoURL); Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,ShowPhoto ? PhotoURL : NULL, @@ -1684,7 +1684,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj, fprintf (Gbl.F.Out,""); /* Write user's name */ - fprintf (Gbl.F.Out,"%s", + fprintf (Gbl.F.Out,"%s", Gbl.Usrs.Other.UsrDat.FullName); /* End row for this user */ @@ -1697,7 +1697,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj, { case Prj_EDIT_ONE_PROJECT: fprintf (Gbl.F.Out,"" - ""); + ""); Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter snprintf (Gbl.Title,sizeof (Gbl.Title), Txt_Add_USERS, @@ -1706,11 +1706,8 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj, Prj_PutCurrentParams, Gbl.Title); fprintf (Gbl.F.Out,"" - "" // Column for photo - ""); - if (RoleInProject == Prj_ROLE_STD) - fprintf (Gbl.F.Out,""); // Column for user's IDs - fprintf (Gbl.F.Out,"" // Column for name + "" // Column for photo + "" // Column for name ""); break; default: @@ -1958,7 +1955,7 @@ static void Prj_AddEvls (void) static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject) { 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_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS]; long PrjCod; const char *Ptr; bool ItsMe; @@ -1996,7 +1993,7 @@ static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject) /* Show success alert */ Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project, Gbl.Usrs.Other.UsrDat.FullName, - Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]); + Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex]); } } @@ -2027,9 +2024,8 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject) { 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_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_user_from_this_project; + extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS]; + extern const char *Txt_Remove_USER_from_this_project; static Act_Action_t ActionRemUsr[Prj_NUM_ROLES_IN_PROJECT] = { ActUnk, // Prj_ROLE_UNK, Unknown @@ -2058,11 +2054,11 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject) { ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); - /***** Show question and button to remove user as administrator *****/ + /***** Show question and button to remove user as a role from project *****/ /* Start alert */ Ale_ShowAlertAndButton1 (Ale_QUESTION,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_as_a_X_from_the_project_Y, - Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject], + Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex], Prj.Title); /* Show user's record */ @@ -2072,8 +2068,10 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject) Frm_StartForm (ActionRemUsr[RoleInProject]); Gbl.Prjs.PrjCod = Prj.PrjCod; Prj_PutCurrentParams (); - Btn_PutRemoveButton (ItsMe ? Txt_Remove_me_from_this_project : - Txt_Remove_user_from_this_project); + snprintf (Gbl.Title,sizeof (Gbl.Title), + Txt_Remove_USER_from_this_project, + Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex]); + Btn_PutRemoveButton (Gbl.Title); Frm_EndForm (); /* End alert */ @@ -2114,7 +2112,7 @@ void Prj_RemEvl (void) 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_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS]; struct Project Prj; bool ItsMe; @@ -2151,7 +2149,7 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject) /***** Show success alert *****/ Ale_ShowAlert (Ale_SUCCESS,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], + Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex], Prj.Title); } else diff --git a/swad_text.c b/swad_text.c index 1679b4fa9..d751cdd47 100644 --- a/swad_text.c +++ b/swad_text.c @@ -30161,9 +30161,10 @@ const char *Txt_PROJECT_ROLES_SINGUL_Abc[Prj_NUM_ROLES_IN_PROJECT] = #endif }; -const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] = +const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS] = +{ { -#if L==1 // ca // Prj_ROLE_UNK +#if L==1 // ca // Prj_ROLE_UNK - Usr_SEX_UNKNOWN "desconegut/da" #elif L==2 // de "Unbekannter/e" @@ -30182,8 +30183,69 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] = #elif L==9 // pt "desconhecido/a" #endif - , -#if L==1 // ca // Prj_ROLE_STD + , +#if L==1 // ca // Prj_ROLE_UNK - Usr_SEX_FEMALE + "desconeguda" +#elif L==2 // de + "Unbekanntere" +#elif L==3 // en + "unknown" +#elif L==4 // es + "desconocida" +#elif L==5 // fr + "inconnu/e" +#elif L==6 // gn + "desconocida" // Okoteve traducción +#elif L==7 // it + "sconosciuta" +#elif L==8 // pl + "nieznany" +#elif L==9 // pt + "desconhecida" +#endif + , +#if L==1 // ca // Prj_ROLE_UNK - Usr_SEX_MALE + "desconegut" +#elif L==2 // de + "Unbekannter" +#elif L==3 // en + "unknown" +#elif L==4 // es + "desconocido" +#elif L==5 // fr + "inconnu" +#elif L==6 // gn + "desconocido" // Okoteve traducción +#elif L==7 // it + "sconosciuto" +#elif L==8 // pl + "nieznany" +#elif L==9 // pt + "desconhecido" +#endif + , +#if L==1 // ca // Prj_ROLE_UNK - Usr_SEX_ALL + "desconegut/da" +#elif L==2 // de + "Unbekannter/e" +#elif L==3 // en + "unknown" +#elif L==4 // es + "desconocido/a" +#elif L==5 // fr + "inconnu/e" +#elif L==6 // gn + "desconocido/a" // Okoteve traducción +#elif L==7 // it + "sconosciuto/a" +#elif L==8 // pl + "nieznany" +#elif L==9 // pt + "desconhecido/a" +#endif + }, + { +#if L==1 // ca // Prj_ROLE_STD - Usr_SEX_UNKNOWN "estudiant" #elif L==2 // de "Student" @@ -30202,8 +30264,69 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] = #elif L==9 // pt "estudante" #endif - , -#if L==1 // ca // Prj_ROLE_TUT + , +#if L==1 // ca // Prj_ROLE_STD - Usr_SEX_FEMALE + "estudiant" +#elif L==2 // de + "Student" +#elif L==3 // en + "student" +#elif L==4 // es + "estudiante" +#elif L==5 // fr + "étudiante" +#elif L==6 // gn + "temimbo'e" +#elif L==7 // it + "studente" +#elif L==8 // pl + "student" +#elif L==9 // pt + "estudante" +#endif + , +#if L==1 // ca // Prj_ROLE_STD - Usr_SEX_MALE + "estudiant" +#elif L==2 // de + "Student" +#elif L==3 // en + "student" +#elif L==4 // es + "estudiante" +#elif L==5 // fr + "étudiant" +#elif L==6 // gn + "temimbo'e" +#elif L==7 // it + "studente" +#elif L==8 // pl + "student" +#elif L==9 // pt + "estudante" +#endif + , +#if L==1 // ca // Prj_ROLE_STD - Usr_SEX_ALL + "estudiant" +#elif L==2 // de + "Student" +#elif L==3 // en + "student" +#elif L==4 // es + "estudiante" +#elif L==5 // fr + "étudiant/e" +#elif L==6 // gn + "temimbo'e" +#elif L==7 // it + "studente" +#elif L==8 // pl + "student" +#elif L==9 // pt + "estudante" +#endif + }, + { +#if L==1 // ca // Prj_ROLE_TUT - Usr_SEX_UNKNOWN "tutor/a" #elif L==2 // de "Tutor" @@ -30212,7 +30335,7 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] = #elif L==4 // es "tutor/a" #elif L==5 // fr - "tuteur" + "tuteur/trice" #elif L==6 // gn "tutor/a" // Okoteve traducción #elif L==7 // it @@ -30222,8 +30345,69 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] = #elif L==9 // pt "tutor/a" #endif - , -#if L==1 // ca // Prj_ROLE_EVL + , +#if L==1 // ca // Prj_ROLE_TUT - Usr_SEX_FEMALE + "tutora" +#elif L==2 // de + "Tutor" +#elif L==3 // en + "tutor" +#elif L==4 // es + "tutora" +#elif L==5 // fr + "tutrice" +#elif L==6 // gn + "tutora" // Okoteve traducción +#elif L==7 // it + "precettore" +#elif L==8 // pl + "nauczyciel" +#elif L==9 // pt + "tutora" +#endif + , +#if L==1 // ca // Prj_ROLE_TUT - Usr_SEX_MALE + "tutor" +#elif L==2 // de + "Tutor" +#elif L==3 // en + "tutor" +#elif L==4 // es + "tutor" +#elif L==5 // fr + "tuteur" +#elif L==6 // gn + "tutor" // Okoteve traducción +#elif L==7 // it + "precettore" +#elif L==8 // pl + "nauczyciel" +#elif L==9 // pt + "tutor" +#endif + , +#if L==1 // ca // Prj_ROLE_TUT - Usr_SEX_ALL + "tutor/a" +#elif L==2 // de + "Tutor" +#elif L==3 // en + "tutor" +#elif L==4 // es + "tutor/a" +#elif L==5 // fr + "tuteur/trice" +#elif L==6 // gn + "tutor/a" // Okoteve traducción +#elif L==7 // it + "precettore" +#elif L==8 // pl + "nauczyciel" +#elif L==9 // pt + "tutor/a" +#endif + }, + { +#if L==1 // ca // Prj_ROLE_EVL - Usr_SEX_UNKNOWN "avaluador/a" #elif L==2 // de "Auswerter" @@ -30232,7 +30416,7 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] = #elif L==4 // es "evaluador/a" #elif L==5 // fr - "évaluateur" + "évaluateur/trice" #elif L==6 // gn "evaluador/a" // Okoteve traducción #elif L==7 // it @@ -30242,7 +30426,68 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] = #elif L==9 // pt "avaliador/a" #endif - }; + , +#if L==1 // ca // Prj_ROLE_EVL - Usr_SEX_FEMALE + "avaluadora" +#elif L==2 // de + "Auswerter" +#elif L==3 // en + "evaluator" +#elif L==4 // es + "evaluadora" +#elif L==5 // fr + "évaluatrice" +#elif L==6 // gn + "evaluadora" // Okoteve traducción +#elif L==7 // it + "valutatore" +#elif L==8 // pl + "ewaluator" +#elif L==9 // pt + "avaliadora" +#endif + , +#if L==1 // ca // Prj_ROLE_EVL - Usr_SEX_MALE + "avaluador" +#elif L==2 // de + "Auswerter" +#elif L==3 // en + "evaluator" +#elif L==4 // es + "evaluador" +#elif L==5 // fr + "évaluateur" +#elif L==6 // gn + "evaluador" // Okoteve traducción +#elif L==7 // it + "valutatore" +#elif L==8 // pl + "ewaluator" +#elif L==9 // pt + "avaliador" +#endif + , +#if L==1 // ca // Prj_ROLE_EVL - Usr_SEX_ALL + "avaluador/a" +#elif L==2 // de + "Auswerter" +#elif L==3 // en + "evaluator" +#elif L==4 // es + "evaluador/a" +#elif L==5 // fr + "évaluateur/trice" +#elif L==6 // gn + "evaluador/a" // Okoteve traducción +#elif L==7 // it + "valutatore" +#elif L==8 // pl + "ewaluator" +#elif L==9 // pt + "avaliador/a" +#endif + } +}; const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] = { @@ -32193,27 +32438,6 @@ const char *Txt_Remove_me_from_this_course = "Tirar me desta disciplina"; #endif -const char *Txt_Remove_me_from_this_project = -#if L==1 // ca - "Eliminarme d'aquest projecte"; -#elif L==2 // de - "Entfernen Sie diesen Projekt"; -#elif L==3 // en - "Remove me from this project"; -#elif L==4 // es - "Eliminarme de este proyecto"; -#elif L==5 // fr - "Enlever-moi de ce projet"; -#elif L==6 // gn - "Eliminarme de este proyecto"; // Okoteve traducción -#elif L==7 // it - "Rimuovimi da questo progetto"; -#elif L==8 // pl - "Usuñ z projekt"; -#elif L==9 // pt - "Tirar me deste projeto"; -#endif - const char *Txt_Remove_me_from_THE_COURSE_X = // Warning: it is very important to include %s in the following sentences #if L==1 // ca "Eliminarme de %s"; @@ -32466,25 +32690,25 @@ const char *Txt_Remove_user_from_this_course = "Tirar utilizador desta disciplina"; #endif -const char *Txt_Remove_user_from_this_project = +const char *Txt_Remove_USER_from_this_project = // Warning: it is very important to include %s in the following sentences #if L==1 // ca - "Eliminar usuari d'aquest projecte"; + "Eliminar %s d'aquest projecte"; #elif L==2 // de - "Entfernen Benutzer Sie diesen Projekt"; + "Entfernen %s Sie diesen Projekt"; #elif L==3 // en - "Remove user from this project"; + "Remove %s from this project"; #elif L==4 // es - "Eliminar usuario de este proyecto"; + "Eliminar %s de este proyecto"; #elif L==5 // fr - "Enlever utilisateur de ce projet"; + "Enlever %s de ce projet"; #elif L==6 // gn - "Eliminar usuario de este proyecto"; // Okoteve traducción + "Eliminar %s de este proyecto"; // Okoteve traducción #elif L==7 // it - "Rimuovi utente da questo progetto"; + "Rimuovi %s da questo progetto"; #elif L==8 // pl - "Usuñ użytkownika z projekt"; + "Usuñ %s z projekt"; #elif L==9 // pt - "Tirar utilizador deste projeto"; + "Tirar %s deste projeto"; #endif const char *Txt_Remove_USER_as_an_administrator =