From 70c54684c60ca63c5936c262923c27261e5fece4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Thu, 24 Mar 2016 16:49:36 +0100 Subject: [PATCH] Version 15.161.1 --- swad_announcement.c | 4 +- swad_changelog.h | 4 +- swad_enrollment.c | 110 +++++++++++++++++++++++++------------------- swad_global.h | 4 ++ swad_role.c | 30 ++++++++---- swad_role.h | 4 +- swad_survey.c | 27 +++-------- 7 files changed, 103 insertions(+), 80 deletions(-) diff --git a/swad_announcement.c b/swad_announcement.c index f295cbe2..bb55f740 100644 --- a/swad_announcement.c +++ b/swad_announcement.c @@ -482,7 +482,7 @@ void Ann_ShowFormAnnouncement (void) 1 << Rol__GUEST_ | 1 << Rol_STUDENT | 1 << Rol_TEACHER, - false); + false,false); fprintf (Gbl.F.Out,"" ""); @@ -513,7 +513,7 @@ void Ann_ReceiveAnnouncement (void) Str_TO_RIGOROUS_HTML,true); /* Get users who can view this announcement */ - Rol_GetSelectedRoles (&Roles); + Roles = Rol_GetSelectedRoles (); /***** Create a new announcement in database *****/ Ann_CreateAnnouncement (Roles,Subject,Content); diff --git a/swad_changelog.h b/swad_changelog.h index 532bf78d..6bf54251 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -137,13 +137,15 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 15.161 (2016-03-24)" +#define Log_PLATFORM_VERSION "SWAD 15.161.1 (2016-03-24)" #define CSS_FILE "swad15.160.2.css" #define JS_FILE "swad15.131.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 15.161.1: Mar 24, 2016 Code refactoring in forms to select roles. + Put contextual icon "update" integrated in frame in "enrollment requests". (196598 lines) Version 15.161: Mar 24, 2016 Changes related to enrollments requests. (196581 lines) 1 change necessary in database: INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1522','es','N','Actualizar inscripciones pendientes'); diff --git a/swad_enrollment.c b/swad_enrollment.c index 389d6f06..9e44ad45 100644 --- a/swad_enrollment.c +++ b/swad_enrollment.c @@ -102,7 +102,8 @@ static void Enr_MarkOfficialStdsAsRemovable (long ImpGrpCod,bool RemoveSpecified static void Enr_PutLinkToRemAllStdsThisCrs (void); -static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected); +static void Enr_ShowEnrollmentRequestsGivenRoles (void); +static void Enr_PutIconToUpdateEnrollmentRequests (void); static void Enr_RemoveEnrollmentRequest (long CrsCod,long UsrCod); @@ -2159,14 +2160,16 @@ void Enr_ShowEnrollmentRequests (void) switch (Gbl.Usrs.Me.LoggedRole) { case Rol_TEACHER: - Enr_ShowEnrollmentRequestsGivenRoles ((1 << Rol_STUDENT) | - (1 << Rol_TEACHER)); + Gbl.EnrollmentRequests.RolesSelected = (1 << Rol_STUDENT) | + (1 << Rol_TEACHER); + Enr_ShowEnrollmentRequestsGivenRoles (); break; case Rol_DEG_ADM: case Rol_CTR_ADM: case Rol_INS_ADM: case Rol_SYS_ADM: - Enr_ShowEnrollmentRequestsGivenRoles (1 << Rol_TEACHER); + Gbl.EnrollmentRequests.RolesSelected = (1 << Rol_TEACHER); + Enr_ShowEnrollmentRequestsGivenRoles (); break; default: Lay_ShowErrorAndExit ("You don't have permission to list requesters."); @@ -2180,27 +2183,24 @@ void Enr_ShowEnrollmentRequests (void) void Enr_UpdateEnrollmentRequests (void) { - unsigned RolesSelected; - /***** Get selected roles *****/ - Rol_GetSelectedRoles (&RolesSelected); + Gbl.EnrollmentRequests.RolesSelected = Rol_GetSelectedRoles (); /***** Update enrollment requests *****/ - Enr_ShowEnrollmentRequestsGivenRoles (RolesSelected); + Enr_ShowEnrollmentRequestsGivenRoles (); } /*****************************************************************************/ /************* Show pending requests for enrollment given roles **************/ /*****************************************************************************/ +// Gbl.EnrollmentRequests.RolesSelected must be set -static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) +static void Enr_ShowEnrollmentRequestsGivenRoles (void) { extern const char *The_ClassForm[The_NUM_THEMES]; - extern const char *The_ClassFormBold[The_NUM_THEMES]; extern const char *Txt_Enrollment_requests; extern const char *Txt_Scope; extern const char *Txt_Users; - extern const char *Txt_Update; extern const char *Txt_Course; extern const char *Txt_Teachers_ABBREVIATION; extern const char *Txt_Requester; @@ -2226,8 +2226,18 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) char PhotoURL[PATH_MAX+1]; Rol_Role_t DesiredRole; + /***** Get scope *****/ + Gbl.Scope.Allowed = 1 << Sco_SCOPE_SYS | + 1 << Sco_SCOPE_CTY | + 1 << Sco_SCOPE_INS | + 1 << Sco_SCOPE_CTR | + 1 << Sco_SCOPE_DEG | + 1 << Sco_SCOPE_CRS; + Gbl.Scope.Default = Sco_SCOPE_CRS; + Sco_GetScope (); + /***** Start frame *****/ - Lay_StartRoundFrame (NULL,Txt_Enrollment_requests,NULL); + Lay_StartRoundFrame ("100%",Txt_Enrollment_requests,Enr_PutIconToUpdateEnrollmentRequests); /***** Selection of scope and roles *****/ /* Start form */ @@ -2242,14 +2252,6 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) "", The_ClassForm[Gbl.Prefs.Theme], Txt_Scope); - Gbl.Scope.Allowed = 1 << Sco_SCOPE_SYS | - 1 << Sco_SCOPE_CTY | - 1 << Sco_SCOPE_INS | - 1 << Sco_SCOPE_CTR | - 1 << Sco_SCOPE_DEG | - 1 << Sco_SCOPE_CRS; - Gbl.Scope.Default = Sco_SCOPE_CRS; - Sco_GetScope (); Sco_PutSelectorScope (true); fprintf (Gbl.F.Out,"" ""); @@ -2264,17 +2266,13 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) Txt_Users); Rol_WriteSelectorRoles (1 << Rol_STUDENT | 1 << Rol_TEACHER, - RolesSelected, - true); + Gbl.EnrollmentRequests.RolesSelected, + false,true); fprintf (Gbl.F.Out,"" "" ""); - /* Send button */ - fprintf (Gbl.F.Out,"
"); - Act_LinkFormSubmitAnimated (Txt_Update,The_ClassFormBold[Gbl.Prefs.Theme]); - Lay_PutCalculateIconWithText (Txt_Update,Txt_Update); - fprintf (Gbl.F.Out,"
"); + /* End form */ Act_FormEnd (); /***** Build query *****/ @@ -2298,7 +2296,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, (unsigned) Rol_TEACHER, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_DEG_ADM: // Requests in all degrees administrated by me @@ -2314,7 +2312,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " AND ((1<0" " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_CTR_ADM: // Requests in all centres administrated by me @@ -2331,7 +2329,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " AND ((1<0" " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_INS_ADM: // Requests in all institutions administrated by me @@ -2349,7 +2347,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " AND ((1<0" " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_SYS_ADM: // All requests @@ -2361,7 +2359,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " FROM crs_usr_requests" " WHERE ((1<0" " ORDER BY RequestTime DESC", - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; default: Lay_ShowErrorAndExit ("You don't have permission to list requesters."); @@ -2392,7 +2390,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) Gbl.Usrs.Me.UsrDat.UsrCod, (unsigned) Rol_TEACHER, Gbl.CurrentCty.Cty.CtyCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_DEG_ADM: // Requests in degrees of this country administrated by me @@ -2413,7 +2411,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.CurrentCty.Cty.CtyCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_CTR_ADM: // Requests in centres of this country administrated by me @@ -2434,7 +2432,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.CurrentCty.Cty.CtyCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_INS_ADM: // Requests in institutions of this country administrated by me @@ -2455,7 +2453,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.CurrentCty.Cty.CtyCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_SYS_ADM: // Requests in any course of this country @@ -2473,7 +2471,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " AND ((1<0" " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.CurrentCty.Cty.CtyCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; default: Lay_ShowErrorAndExit ("You don't have permission to list requesters."); @@ -2503,7 +2501,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) Gbl.Usrs.Me.UsrDat.UsrCod, (unsigned) Rol_TEACHER, Gbl.CurrentIns.Ins.InsCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_DEG_ADM: // Requests in degrees of this institution administrated by me @@ -2523,7 +2521,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.CurrentIns.Ins.InsCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_CTR_ADM: // Requests in centres of this institution administrated by me @@ -2543,7 +2541,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.CurrentIns.Ins.InsCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this institution case Rol_SYS_ADM: @@ -2561,7 +2559,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " AND ((1<0" " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.CurrentIns.Ins.InsCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; default: Lay_ShowErrorAndExit ("You don't have permission to list requesters."); @@ -2590,7 +2588,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) Gbl.Usrs.Me.UsrDat.UsrCod, (unsigned) Rol_TEACHER, Gbl.CurrentCtr.Ctr.CtrCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_DEG_ADM: // Requests in degrees of this centre administrated by me @@ -2609,7 +2607,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.CurrentCtr.Ctr.CtrCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this centre case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this centre @@ -2627,7 +2625,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " AND ((1<0" " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.CurrentCtr.Ctr.CtrCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; default: Lay_ShowErrorAndExit ("You don't have permission to list requesters."); @@ -2655,7 +2653,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) Gbl.Usrs.Me.UsrDat.UsrCod, (unsigned) Rol_TEACHER, Gbl.CurrentDeg.Deg.DegCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; case Rol_DEG_ADM: // If I am logged as admin of this degree , I can view all the requesters from this degree case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this degree @@ -2673,7 +2671,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " AND ((1<0" " ORDER BY crs_usr_requests.RequestTime DESC", Gbl.CurrentDeg.Deg.DegCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; default: Lay_ShowErrorAndExit ("You don't have permission to list requesters."); @@ -2696,7 +2694,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) " AND ((1<0" " ORDER BY RequestTime DESC", Gbl.CurrentCrs.Crs.CrsCod, - RolesSelected); + Gbl.EnrollmentRequests.RolesSelected); break; default: Lay_ShowErrorAndExit ("You don't have permission to list requesters."); @@ -2868,6 +2866,24 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected) Lay_EndRoundFrame (); } +/*****************************************************************************/ +/***************** Put icon to update enrollment requests ********************/ +/*****************************************************************************/ + +static void Enr_PutIconToUpdateEnrollmentRequests (void) + { + extern const char *The_ClassFormBold[The_NUM_THEMES]; + extern const char *Txt_Update; + + Act_FormStart (ActUpdSignUpReq); + Sco_PutParamScope (Gbl.Scope.Current); + Rol_PutHiddenParamRoles (Gbl.EnrollmentRequests.RolesSelected); + Par_PutHiddenParamUnsigned ("Roles",Gbl.EnrollmentRequests.RolesSelected); + Act_LinkFormSubmitAnimated (Txt_Update,The_ClassFormBold[Gbl.Prefs.Theme]); + Lay_PutCalculateIcon (Txt_Update); + Act_FormEnd (); + } + /*****************************************************************************/ /******************** Remove a request for inscription ***********************/ /*****************************************************************************/ diff --git a/swad_global.h b/swad_global.h index a884c9e4..9e91d4e5 100644 --- a/swad_global.h +++ b/swad_global.h @@ -395,6 +395,10 @@ struct Globals Sco_Scope_t Default; unsigned Allowed; } Scope; + struct + { + unsigned RolesSelected; + } EnrollmentRequests; struct { struct Country Cty; diff --git a/swad_role.c b/swad_role.c index d688a817..b1a726ae 100644 --- a/swad_role.c +++ b/swad_role.c @@ -343,7 +343,7 @@ void Rol_ChangeMyRole (void) /*****************************************************************************/ void Rol_WriteSelectorRoles (unsigned RolesAllowed,unsigned RolesSelected, - bool SendOnChange) + bool Disabled,bool SendOnChange) { extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; Rol_Role_t Role; @@ -353,12 +353,15 @@ void Rol_WriteSelectorRoles (unsigned RolesAllowed,unsigned RolesSelected, Role++) if ((RolesAllowed & (1 << Role))) { - fprintf (Gbl.F.Out,"", - Role); + Roles); } /*****************************************************************************/ /************************* Get selected users' roles *************************/ /*****************************************************************************/ -void Rol_GetSelectedRoles (unsigned *Roles) +unsigned Rol_GetSelectedRoles (void) { char StrRoles[(10+1)*2]; const char *Ptr; char UnsignedStr[10+1]; + unsigned UnsignedNum; Rol_Role_t Role; + unsigned Roles; - Par_GetParMultiToText ("Roles",StrRoles,(10+1)*2); - *Roles = 0; + /***** Try to get param "Roles" with multiple roles *****/ + Par_GetParToText ("Roles",UnsignedStr,10); + if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1) + Roles = UnsignedNum; + else + Roles = 0; + + /***** Try to get multiple param "Role" *****/ + Par_GetParMultiToText ("Role",StrRoles,(10+1)*2); for (Ptr = StrRoles; *Ptr;) { Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10); if (sscanf (UnsignedStr,"%u",&Role) != 1) Lay_ShowErrorAndExit ("can not get user's role"); - *Roles |= (1 << Role); + Roles |= (1 << Role); } + + return Roles; } /*****************************************************************************/ diff --git a/swad_role.h b/swad_role.h index 879f6b02..0f520ef7 100644 --- a/swad_role.h +++ b/swad_role.h @@ -79,9 +79,9 @@ void Rol_PutFormToChangeMyRole (bool FormInHead); void Rol_ChangeMyRole (void); void Rol_WriteSelectorRoles (unsigned RolesAllowed,unsigned RolesSelected, - bool SendOnChange); + bool Disabled,bool SendOnChange); void Rol_PutHiddenParamRoles (unsigned Role); -void Rol_GetSelectedRoles (unsigned *Roles); +unsigned Rol_GetSelectedRoles (void); Rol_Role_t Rol_GetRequestedRole (long UsrCod); diff --git a/swad_survey.c b/swad_survey.c index d79d4d75..8c872bed 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -378,13 +378,10 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,bool Sh extern const char *Txt_Degree; extern const char *Txt_Course; extern const char *Txt_Users; - extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_Answer_survey; extern const char *Txt_View_survey_results; static unsigned UniqueId = 0; struct Survey Svy; - Rol_Role_t Role; - bool RolesSelected; char Txt[Cns_MAX_BYTES_TEXT+1]; /***** Start frame *****/ @@ -503,24 +500,14 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,bool Sh fprintf (Gbl.F.Out,""); /* Users' roles who can answer the survey */ - fprintf (Gbl.F.Out,"
%s:", + fprintf (Gbl.F.Out,"
%s:
", Svy.Status.Visible ? "ASG_GRP" : "ASG_GRP_LIGHT", Txt_Users); - for (Role = Rol_STUDENT, RolesSelected = false; - Role <= Rol_TEACHER; - Role++) - { - if (RolesSelected) - fprintf (Gbl.F.Out,","); - else - RolesSelected = true; - fprintf (Gbl.F.Out,"%s",Txt_ROLES_PLURAL_abc[Role][Usr_SEX_UNKNOWN]); - } + Rol_WriteSelectorRoles (1 << Rol_STUDENT | + 1 << Rol_TEACHER, + Svy.Roles, + true,false); fprintf (Gbl.F.Out,"
"); /* Groups whose users can answer this survey */ @@ -1605,7 +1592,7 @@ void Svy_RequestCreatOrEditSvy (void) Rol_WriteSelectorRoles (1 << Rol_STUDENT | 1 << Rol_TEACHER, Svy.Roles, - false); + false,false); fprintf (Gbl.F.Out,"" ""); @@ -1805,7 +1792,7 @@ void Svy_RecFormSurvey (void) NewSvy.TimeUTC[Svy_END_TIME] = NewSvy.TimeUTC[Svy_START_TIME] + 24*60*60; // +24 hours /***** Get users who can answer this survey *****/ - Rol_GetSelectedRoles (&(NewSvy.Roles)); + NewSvy.Roles = Rol_GetSelectedRoles (); /***** Check if title is correct *****/ if (NewSvy.Title[0]) // If there's a survey title