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,"");
+ /* 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