Version18.112.1

This commit is contained in:
Antonio Cañas Vargas 2019-04-12 10:14:29 +02:00
parent 8615d161e0
commit 75d802bb7c
4 changed files with 307 additions and 65 deletions

View File

@ -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;}

View File

@ -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:

View File

@ -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,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
fprintf (Gbl.F.Out,"<td class=\"PRJ_MEMBER_ICO\">");
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,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
fprintf (Gbl.F.Out,"<td class=\"PRJ_MEMBER_PHO\">");
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,"</td>");
/* Write user's name */
fprintf (Gbl.F.Out,"<td class=\"AUTHOR_TXT LEFT_MIDDLE\">%s</td>",
fprintf (Gbl.F.Out,"<td class=\"PRJ_MEMBER_NAM\">%s</td>",
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,"<tr>"
"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
"<td class=\"PRJ_MEMBER_ICO\">");
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,"</td>"
"<td style=\"width:30px;\">" // Column for photo
"</td>");
if (RoleInProject == Prj_ROLE_STD)
fprintf (Gbl.F.Out,"<td></td>"); // Column for user's IDs
fprintf (Gbl.F.Out,"<td></td>" // Column for name
"<td class=\"PRJ_MEMBER_PHO\"></td>" // Column for photo
"<td class=\"PRJ_MEMBER_NAM\"></td>" // Column for name
"</tr>");
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

View File

@ -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
"&eacute;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
"&eacute;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
"&eacute;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
"&eacute;valuateur"
"&eacute;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
"&eacute;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
"&eacute;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
"&eacute;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&ntilde; 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 <strong>%s</strong>";
@ -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&ntilde; u&zdot;ytkownika z projekt";
"Usu&ntilde; %s z projekt";
#elif L==9 // pt
"Tirar utilizador deste projeto";
"Tirar %s deste projeto";
#endif
const char *Txt_Remove_USER_as_an_administrator =