Version 15.161.1

This commit is contained in:
Antonio Cañas Vargas 2016-03-24 16:49:36 +01:00
parent c4b9526c72
commit 70c54684c6
7 changed files with 103 additions and 80 deletions

View File

@ -482,7 +482,7 @@ void Ann_ShowFormAnnouncement (void)
1 << Rol__GUEST_ |
1 << Rol_STUDENT |
1 << Rol_TEACHER,
false);
false,false);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
@ -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);

View File

@ -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');

View File

@ -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)
"<td class=\"LEFT_MIDDLE\">",
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,"</td>"
"</tr>");
@ -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,"</td>"
"</tr>"
"</table>");
/* Send button */
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
Act_LinkFormSubmitAnimated (Txt_Update,The_ClassFormBold[Gbl.Prefs.Theme]);
Lay_PutCalculateIconWithText (Txt_Update,Txt_Update);
fprintf (Gbl.F.Out,"</div>");
/* 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<<crs_usr_requests.Role)&%u)<>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<<crs_usr_requests.Role)&%u)<>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<<crs_usr_requests.Role)&%u)<>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<<Role)&%u)<>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<<crs_usr_requests.Role)&%u)<>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<<crs_usr_requests.Role)&%u)<>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<<crs_usr_requests.Role)&%u)<>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<<crs_usr_requests.Role)&%u)<>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<<Role)&%u)<>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 ***********************/
/*****************************************************************************/

View File

@ -395,6 +395,10 @@ struct Globals
Sco_Scope_t Default;
unsigned Allowed;
} Scope;
struct
{
unsigned RolesSelected;
} EnrollmentRequests;
struct
{
struct Country Cty;

View File

@ -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,"<input type=\"checkbox\" name=\"Roles\" value=\"%u\"",
fprintf (Gbl.F.Out,"<input type=\"checkbox\" name=\"Role\" value=\"%u\"",
(unsigned) Role);
if ((RolesSelected & (1 << Role)))
fprintf (Gbl.F.Out," checked=\"checked\"");
if (Disabled)
fprintf (Gbl.F.Out," disabled=\"disabled\"");
if (SendOnChange)
fprintf (Gbl.F.Out," onchange=\"document.getElementById('%s').submit();\"",
Gbl.Form.Id);
@ -372,33 +375,44 @@ void Rol_WriteSelectorRoles (unsigned RolesAllowed,unsigned RolesSelected,
/******************** Put hidden param with users' roles *********************/
/*****************************************************************************/
void Rol_PutHiddenParamRoles (unsigned Role)
void Rol_PutHiddenParamRoles (unsigned Roles)
{
fprintf (Gbl.F.Out,"<input type=\"hidden\" name=\"Roles\" value=\"%u\" />",
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;
}
/*****************************************************************************/

View File

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

View File

@ -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,"</div>");
/* Users' roles who can answer the survey */
fprintf (Gbl.F.Out,"<div class=\"%s\">%s:",
fprintf (Gbl.F.Out,"<div class=\"%s\">%s:<br />",
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,"<input type=\"checkbox\" name=\"Roles\" value=\"%u\" disabled=\"disabled\"",
(unsigned) Role);
if (Svy.Roles & (1 << Role))
fprintf (Gbl.F.Out," checked=\"checked\"");
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,"</div>");
/* 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,"</td>"
"</tr>");
@ -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