Version 16.247.3

This commit is contained in:
Antonio Cañas Vargas 2017-07-02 18:53:35 +02:00
parent 4499b07d3b
commit b8beeeb1c5
11 changed files with 42 additions and 34 deletions

View File

@ -1935,7 +1935,7 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
Hlp_USERS_Attendance,Box_NOT_CLOSABLE); Hlp_USERS_Attendance,Box_NOT_CLOSABLE);
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (ActSeeOneAtt,false); Grp_ShowFormToSelectSeveralGroups (ActSeeOneAtt,Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
@ -2672,7 +2672,7 @@ void Usr_ReqListStdsAttendanceCrs (void)
Hlp_USERS_Attendance_attendance_list,Box_NOT_CLOSABLE); Hlp_USERS_Attendance_attendance_list,Box_NOT_CLOSABLE);
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (ActReqLstStdAtt,false); Grp_ShowFormToSelectSeveralGroups (ActReqLstStdAtt,Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);

View File

@ -232,18 +232,24 @@
// TODO: Cuando sólo se cambian los grupos y no el rol de un profesor ya existente, no sale ningún mensaje. se haga lo que se haga en la edición debería salir un mensaje del tipo "Cambios realizados" // TODO: Cuando sólo se cambian los grupos y no el rol de un profesor ya existente, no sale ningún mensaje. se haga lo que se haga en la edición debería salir un mensaje del tipo "Cambios realizados"
// TODO: Al buscar asignaturas, Estudiantes y Profesores están al revés
// !!!!!!!!!!!!!!!!!!!!!!!!!
// BUG!!!! Al ver resultados de una encuesta: "Space allocated to string is full."
/*****************************************************************************/ /*****************************************************************************/
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.247.2 (2017-06-23)" #define Log_PLATFORM_VERSION "SWAD 16.247.3 (2017-07-02)"
#define CSS_FILE "swad16.235.1.css" #define CSS_FILE "swad16.235.1.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 16.247.2: Jun 23, 2017 Non-editing teachers can not view records of users who do not share groups with them. Version 16.247.3: Jul 02, 2017 Students can not view records of some users who do not share groups with them. (222132 lines)
Version 16.247.2: Jun 23, 2017 Non-editing teachers can not view records of some users who do not share groups with them.
Code refactoring related with roles. (222094 lines) Code refactoring related with roles. (222094 lines)
Version 16.247.1: Jun 23, 2017 Non-editing teachers can select all groups when writing a message. (222068 lines) Version 16.247.1: Jun 23, 2017 Non-editing teachers can select all groups when writing a message. (222068 lines)
Version 16.247: Jun 20, 2017 Fixed bug when removing a user from a course. Version 16.247: Jun 20, 2017 Fixed bug when removing a user from a course.

View File

@ -3124,7 +3124,7 @@ void Brw_AskEditWorksCrs (void)
Hlp_FILES_Homework_for_teachers,Box_NOT_CLOSABLE); Hlp_FILES_Homework_for_teachers,Box_NOT_CLOSABLE);
/***** Show form to select the groups *****/ /***** Show form to select the groups *****/
Grp_ShowFormToSelectSeveralGroups (ActReqAsgWrkCrs,false); Grp_ShowFormToSelectSeveralGroups (ActReqAsgWrkCrs,Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);

View File

@ -90,7 +90,7 @@ static void Grp_EditGroups (void);
static void Grp_PutIconsEditingGroups (void); static void Grp_PutIconsEditingGroups (void);
static void Grp_PutIconToCreateNewGroup (void); static void Grp_PutIconToCreateNewGroup (void);
static void Grp_PutCheckboxAllGrps (bool AllGroupsSelectable); static void Grp_PutCheckboxAllGrps (Grp_WhichGroups_t GroupsSelectableByStdsOrNETs);
static void Grp_ConstructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType); static void Grp_ConstructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType);
static void Grp_DestructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType); static void Grp_DestructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType);
@ -112,7 +112,7 @@ static bool Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
unsigned *NumGrpsThisTypeIBelong); unsigned *NumGrpsThisTypeIBelong);
static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod); static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod);
static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp, static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp,
bool AllGroupsSelectable); Grp_WhichGroups_t GroupsSelectableByStdsOrNETs);
static void Grp_WriteGrpHead (struct GroupType *GrpTyp); static void Grp_WriteGrpHead (struct GroupType *GrpTyp);
static void Grp_WriteRowGrp (struct Group *Grp,bool Highlight); static void Grp_WriteRowGrp (struct Group *Grp,bool Highlight);
static void Grp_PutFormToCreateGroupType (void); static void Grp_PutFormToCreateGroupType (void);
@ -347,7 +347,8 @@ static void Grp_PutIconToCreateNewGroup (void)
/*************** Show form to select one or several groups *******************/ /*************** Show form to select one or several groups *******************/
/*****************************************************************************/ /*****************************************************************************/
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,bool AllGroupsSelectable) void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
Grp_WhichGroups_t GroupsSelectableByStdsOrNETs)
{ {
extern const char *Hlp_USERS_Groups; extern const char *Hlp_USERS_Groups;
extern const char *The_ClassFormBold[The_NUM_THEMES]; extern const char *The_ClassFormBold[The_NUM_THEMES];
@ -377,7 +378,7 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,bool AllGroupsSe
Usr_PutExtraParamsUsrList (NextAction); Usr_PutExtraParamsUsrList (NextAction);
/***** Select all groups *****/ /***** Select all groups *****/
Grp_PutCheckboxAllGrps (AllGroupsSelectable); Grp_PutCheckboxAllGrps (GroupsSelectableByStdsOrNETs);
/***** Get list of groups types and groups in this course *****/ /***** Get list of groups types and groups in this course *****/
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS); Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
@ -389,7 +390,7 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,bool AllGroupsSe
NumGrpTyp++) NumGrpTyp++)
if (Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) if (Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
Grp_ListGrpsForMultipleSelection (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp], Grp_ListGrpsForMultipleSelection (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
AllGroupsSelectable); GroupsSelectableByStdsOrNETs);
Tbl_EndTable (); Tbl_EndTable ();
/***** Free list of groups types and groups in this course *****/ /***** Free list of groups types and groups in this course *****/
@ -417,7 +418,7 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,bool AllGroupsSe
/******************* Put checkbox to select all groups ***********************/ /******************* Put checkbox to select all groups ***********************/
/*****************************************************************************/ /*****************************************************************************/
static void Grp_PutCheckboxAllGrps (bool AllGroupsSelectable) static void Grp_PutCheckboxAllGrps (Grp_WhichGroups_t GroupsSelectableByStdsOrNETs)
{ {
extern const char *The_ClassForm[The_NUM_THEMES]; extern const char *The_ClassForm[The_NUM_THEMES];
extern const char *Txt_All_groups; extern const char *Txt_All_groups;
@ -425,10 +426,10 @@ static void Grp_PutCheckboxAllGrps (bool AllGroupsSelectable)
switch (Gbl.Usrs.Me.Role.Logged) switch (Gbl.Usrs.Me.Role.Logged)
{ {
case Rol_NET:
ICanSelUnselGroup = AllGroupsSelectable;
break;
case Rol_STD: case Rol_STD:
case Rol_NET:
ICanSelUnselGroup = (GroupsSelectableByStdsOrNETs == Grp_ALL_GROUPS);
break;
case Rol_TCH: case Rol_TCH:
case Rol_DEG_ADM: case Rol_DEG_ADM:
case Rol_CTR_ADM: case Rol_CTR_ADM:
@ -976,8 +977,8 @@ bool Grp_CheckIfSelectionGrpsSingleEnrolmentIsValid (Rol_Role_t Role,struct List
/***** Create and initialize list of groups already selected *****/ /***** Create and initialize list of groups already selected *****/
Grp_ConstructorListGrpAlreadySelec (&AlreadyExistsGroupOfType); Grp_ConstructorListGrpAlreadySelec (&AlreadyExistsGroupOfType);
/***** Go across the list of groups selected checking if a group of the same type /***** Go across the list of groups selected
is already selected *****/ checking if a group of the same type is already selected *****/
SelectionValid = true; SelectionValid = true;
for (NumCodGrp = 0; for (NumCodGrp = 0;
SelectionValid && NumCodGrp < LstGrps->NumGrps; SelectionValid && NumCodGrp < LstGrps->NumGrps;
@ -1003,7 +1004,6 @@ bool Grp_CheckIfSelectionGrpsSingleEnrolmentIsValid (Rol_Role_t Role,struct List
/***** Free memory of the list of booleanos that indicates /***** Free memory of the list of booleanos that indicates
if a group of each type has been selected *****/ if a group of each type has been selected *****/
Grp_DestructorListGrpAlreadySelec (&AlreadyExistsGroupOfType); Grp_DestructorListGrpAlreadySelec (&AlreadyExistsGroupOfType);
return SelectionValid; // Return true if the selection of groups is correct return SelectionValid; // Return true if the selection of groups is correct
case Rol_NET: case Rol_NET:
case Rol_TCH: case Rol_TCH:
@ -2131,7 +2131,7 @@ static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod)
/*****************************************************************************/ /*****************************************************************************/
static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp, static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp,
bool AllGroupsSelectable) Grp_WhichGroups_t GroupsSelectableByStdsOrNETs)
{ {
extern const char *Txt_users_with_no_group; extern const char *Txt_users_with_no_group;
unsigned NumGrpThisType; unsigned NumGrpThisType;
@ -2166,20 +2166,20 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp,
else else
switch (Gbl.Usrs.Me.Role.Logged) switch (Gbl.Usrs.Me.Role.Logged)
{ {
case Rol_STD:
case Rol_NET: case Rol_NET:
ICanSelUnselGroup = AllGroupsSelectable || ICanSelUnselGroup = (GroupsSelectableByStdsOrNETs == Grp_ALL_GROUPS) ||
IBelongToThisGroup; IBelongToThisGroup;
break; break;
case Rol_STD:
case Rol_TCH: case Rol_TCH:
case Rol_DEG_ADM: case Rol_DEG_ADM:
case Rol_CTR_ADM: case Rol_CTR_ADM:
case Rol_INS_ADM: case Rol_INS_ADM:
case Rol_SYS_ADM: case Rol_SYS_ADM:
ICanSelUnselGroup = true; ICanSelUnselGroup = true; // GroupsSelectable is ignored
break; break;
default: default:
ICanSelUnselGroup = false; ICanSelUnselGroup = false; // GroupsSelectable is ignored
break; break;
} }

View File

@ -135,7 +135,8 @@ typedef enum
void Grp_WriteNamesOfSelectedGrps (void); void Grp_WriteNamesOfSelectedGrps (void);
void Grp_ReqEditGroups (void); void Grp_ReqEditGroups (void);
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,bool AllGroupsSelectable); void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
Grp_WhichGroups_t GroupsSelectable);
void Grp_PutParamsCodGrps (void); void Grp_PutParamsCodGrps (void);
void Grp_GetParCodsSeveralGrpsToShowUsrs (void); void Grp_GetParCodsSeveralGrpsToShowUsrs (void);
void Grp_GetParCodsSeveralGrps (void); void Grp_GetParCodsSeveralGrps (void);

View File

@ -892,7 +892,7 @@ void Mai_ListEmails (void)
Hlp_MESSAGES_Email,Box_NOT_CLOSABLE); Hlp_MESSAGES_Email,Box_NOT_CLOSABLE);
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (ActMaiStd,false); Grp_ShowFormToSelectSeveralGroups (ActMaiStd,Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);

View File

@ -238,7 +238,8 @@ static void Msg_PutFormMsgUsrs (char Content[Cns_MAX_BYTES_LONG_TEXT + 1])
if (GetUsrsInCrs) if (GetUsrsInCrs)
{ {
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr,true); Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr,
Grp_ALL_GROUPS); // All groups are selectable to send a message
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);

View File

@ -480,7 +480,7 @@ void Sta_AskShowCrsHits (void)
Hlp_STATS_Visits_visits_to_course,Box_NOT_CLOSABLE); Hlp_STATS_Visits_visits_to_course,Box_NOT_CLOSABLE);
/***** Show form to select the groups *****/ /***** Show form to select the groups *****/
Grp_ShowFormToSelectSeveralGroups (ActReqAccCrs,false); Grp_ShowFormToSelectSeveralGroups (ActReqAccCrs,Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);

View File

@ -6986,7 +6986,7 @@ void Tst_SelUsrsToSeeUsrsTestResults (void)
Hlp_ASSESSMENT_Tests_test_results,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Tests_test_results,Box_NOT_CLOSABLE);
/***** Show form to select the groups *****/ /***** Show form to select the groups *****/
Grp_ShowFormToSelectSeveralGroups (ActReqSeeUsrTstRes,false); Grp_ShowFormToSelectSeveralGroups (ActReqSeeUsrTstRes,Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);

View File

@ -30700,23 +30700,23 @@ const char *Txt_Register_teacher =
const char *Txt_Register_user_IN_A_COURSE_OR_DEGREE = const char *Txt_Register_user_IN_A_COURSE_OR_DEGREE =
#if L==1 #if L==1
"Inscriure usuari"; "Inscriure usuari/a";
#elif L==2 #elif L==2
"Anmeldung Benutzer"; "Anmeldung Benutzer";
#elif L==3 #elif L==3
"Register user"; "Register user";
#elif L==4 #elif L==4
"Inscribir usuario"; "Inscribir usuario/a";
#elif L==5 #elif L==5
"Inscrire utilisateur"; "Inscrire utilisateur/se";
#elif L==6 #elif L==6
"Inscribir usuario"; // Okoteve traducción "Inscribir usuario/a"; // Okoteve traducción
#elif L==7 #elif L==7
"Registrare utente"; "Registrare utente";
#elif L==8 #elif L==8
"Rejestracja u&zdot;ytkownika"; "Rejestracja u&zdot;ytkownika";
#elif L==9 #elif L==9
"Registrar utilizador"; "Registrar utilizador/a";
#endif #endif
const char *Txt_Register_me_in_X = // Warning: it is very important to include %s in the following sentences const char *Txt_Register_me_in_X = // Warning: it is very important to include %s in the following sentences

View File

@ -7451,7 +7451,7 @@ void Usr_SeeStudents (void)
/***** Form to select groups *****/ /***** Form to select groups *****/
if (Gbl.Scope.Current == Sco_SCOPE_CRS) if (Gbl.Scope.Current == Sco_SCOPE_CRS)
Grp_ShowFormToSelectSeveralGroups (ActLstStd,false); Grp_ShowFormToSelectSeveralGroups (ActLstStd,Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);
@ -7626,7 +7626,7 @@ void Usr_SeeTeachers (void)
/***** Form to select groups *****/ /***** Form to select groups *****/
if (Gbl.Scope.Current == Sco_SCOPE_CRS) if (Gbl.Scope.Current == Sco_SCOPE_CRS)
Grp_ShowFormToSelectSeveralGroups (ActLstTch,false); Grp_ShowFormToSelectSeveralGroups (ActLstTch,Grp_ONLY_MY_GROUPS);
/***** Start section with user list *****/ /***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID); Lay_StartSection (Usr_USER_LIST_SECTION_ID);