Version 16.228

This commit is contained in:
Antonio Cañas Vargas 2017-05-30 11:35:01 +02:00
parent 588c0a5c92
commit 95b28e3c41
3 changed files with 54 additions and 27 deletions

View File

@ -233,14 +233,15 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.227.2 (2017-05-30)"
#define Log_PLATFORM_VERSION "SWAD 16.228 (2017-05-30)"
#define CSS_FILE "swad16.226.css"
#define JS_FILE "swad16.206.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 16.227.3: May 30, 2017 Behaviour of registering non-editing teachers in groups similar to registering students. (? lines)
Version 16.228: May 30, 2017 Non-editing teachers can not change their selection of groups.
Removed alert with origin of copy when pasting. (220722 lines)
Version 16.227.2: May 30, 2017 Button to upload photo integrated in alert. (220694 lines)
Version 16.227.1: May 30, 2017 Button to check email integrated in alert. (220693 lines)
Version 16.227: May 30, 2017 Changes in selector or roles in record cards. (220694 lines)

View File

@ -7438,9 +7438,6 @@ void Brw_PasteIntoFileBrowser (void)
break;
}
/***** Write the origin of the copy *****/
Brw_WriteCurrentClipboard ();
/***** Copy files recursively *****/
Brw_PasteClipboard ();

View File

@ -90,7 +90,8 @@ static void Grp_WriteHeadingGroups (void);
static void Grp_PutIconToEditGroups (void);
static void Grp_ShowWarningToStdsToChangeGrps (void);
static unsigned Grp_ListGrpsForChange (struct GroupType *GrpTyp);
static bool Grp_ListGrpsForChange (struct GroupType *GrpTyp,
unsigned *NumGrpsThisTypeIBelong);
static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod);
static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp);
static void Grp_WriteGrpHead (struct GroupType *GrpTyp);
@ -1651,11 +1652,13 @@ void Grp_ShowLstGrpsToChgMyGrps (void)
extern const char *Txt_No_groups_have_been_created_in_the_course_X;
extern const char *Txt_Create_group;
unsigned NumGrpTyp;
unsigned NumGrpsThisTypeIBelong;
unsigned NumGrpsIBelong = 0;
bool PutFormToChangeGrps = !Gbl.Form.Inside; // Not inside another form (record card)
bool ICanEdit = !Gbl.Form.Inside &&
(Gbl.Usrs.Me.LoggedRole == Rol_TCH ||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM);
bool ICanChangeMySelection = false;
if (Gbl.CurrentCrs.Grps.NumGrps) // This course has groups
{
@ -1686,14 +1689,19 @@ void Grp_ShowLstGrpsToChgMyGrps (void)
NumGrpTyp < Gbl.CurrentCrs.Grps.GrpTypes.Num;
NumGrpTyp++)
if (Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If there are groups of this type
NumGrpsIBelong += Grp_ListGrpsForChange (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp]);
{
ICanChangeMySelection |= Grp_ListGrpsForChange (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
&NumGrpsThisTypeIBelong);
NumGrpsIBelong += NumGrpsThisTypeIBelong;
}
Lay_EndTable ();
/***** End form *****/
if (PutFormToChangeGrps)
{
Lay_PutConfirmButton (NumGrpsIBelong ? Txt_Change_my_groups :
Txt_Enrol_in_groups);
if (ICanChangeMySelection)
Lay_PutConfirmButton (NumGrpsIBelong ? Txt_Change_my_groups :
Txt_Enrol_in_groups);
Act_FormEnd ();
}
}
@ -1774,15 +1782,16 @@ static void Grp_ShowWarningToStdsToChangeGrps (void)
/*****************************************************************************/
/*************** List the groups of a type to register in ********************/
/*****************************************************************************/
// Returns the number of groups of this type I belong to
// Returns true if I can change my selection
static unsigned Grp_ListGrpsForChange (struct GroupType *GrpTyp)
static bool Grp_ListGrpsForChange (struct GroupType *GrpTyp,
unsigned *NumGrpsThisTypeIBelong)
{
struct ListCodGrps LstGrpsIBelong;
unsigned NumGrpThisType;
struct Group *Grp;
bool IBelongToThisGroup;
unsigned NumGrpsIBelong;
bool ICanChangeMySelection = false;
/***** Write heading *****/
Grp_WriteGrpHead (GrpTyp);
@ -1790,7 +1799,7 @@ static unsigned Grp_ListGrpsForChange (struct GroupType *GrpTyp)
/***** Query in the database the group of this type that I belong to *****/
Grp_GetLstCodGrpsUsrBelongs (Gbl.CurrentCrs.Crs.CrsCod,GrpTyp->GrpTypCod,
Gbl.Usrs.Me.UsrDat.UsrCod,&LstGrpsIBelong);
NumGrpsIBelong = LstGrpsIBelong.NumGrps;
*NumGrpsThisTypeIBelong = LstGrpsIBelong.NumGrps;
/***** List the groups *****/
for (NumGrpThisType = 0;
@ -1800,20 +1809,18 @@ static unsigned Grp_ListGrpsForChange (struct GroupType *GrpTyp)
Grp = &(GrpTyp->LstGrps[NumGrpThisType]);
IBelongToThisGroup = Grp_CheckIfGrpIsInList (Grp->GrpCod,&LstGrpsIBelong);
/* Put icon to select the group */
/* Put radio item or checkbox to select the group */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"LEFT_MIDDLE");
if (IBelongToThisGroup)
fprintf (Gbl.F.Out," LIGHT_BLUE");
fprintf (Gbl.F.Out,"\">"
"<input type=\"");
// If user is a student and the enrolment is single
// and there are more than a group, put a radio item
if (Gbl.Usrs.Me.LoggedRole == Rol_STD &&
!GrpTyp->MultipleEnrolment &&
GrpTyp->NumGrps > 1)
if (Gbl.Usrs.Me.LoggedRole == Rol_STD && // If user is a student
!GrpTyp->MultipleEnrolment && // ...and the enrolment is single
GrpTyp->NumGrps > 1) // ...and there are more than a group
{
/* Put a radio item */
fprintf (Gbl.F.Out,"radio\" id=\"Grp%ld\" name=\"GrpCod%ld\""
" value=\"%ld\"",
Grp->GrpCod,GrpTyp->GrpTypCod,
@ -1822,18 +1829,40 @@ static unsigned Grp_ListGrpsForChange (struct GroupType *GrpTyp)
fprintf (Gbl.F.Out," onclick=\"selectUnselectRadio(this,this.form.GrpCod%ld,%u)\"",
GrpTyp->GrpTypCod,GrpTyp->NumGrps);
}
else // Put a checkbox item
else
/* Put a checkbox item */
fprintf (Gbl.F.Out,"checkbox\" id=\"Grp%ld\" name=\"GrpCod%ld\""
" value=\"%ld\"",
Grp->GrpCod,GrpTyp->GrpTypCod,
Grp->GrpCod);
if (IBelongToThisGroup)
fprintf (Gbl.F.Out," checked=\"checked\"");
else if ((Gbl.Usrs.Me.LoggedRole == Rol_STD) &&
((!Grp->Open) || (Grp->NumStudents >= Grp->MaxStudents)))
fprintf (Gbl.F.Out," disabled=\"disabled\"");
fprintf (Gbl.F.Out," /></td>");
fprintf (Gbl.F.Out," checked=\"checked\""); // Group selected
switch (Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB)
{
case Rol_STD:
if (Grp->Open) // If group is open
{
if (IBelongToThisGroup || // I belong to group
Grp->NumStudents < Grp->MaxStudents) // Group is not full
ICanChangeMySelection = true; // I can register/unregister in this group
else // I don't belong to group and it's full
fprintf (Gbl.F.Out," disabled=\"disabled\""); // I can not register in this group
}
break;
case Rol_NET:
fprintf (Gbl.F.Out," disabled=\"disabled\""); // I can not register/unregister
break;
case Rol_TCH:
ICanChangeMySelection = true; // I can not register/unregister
break;
default:
Lay_ShowErrorAndExit ("Wrong role.");
break;
}
fprintf (Gbl.F.Out," />"
"</td>");
Grp_WriteRowGrp (Grp,IBelongToThisGroup);
@ -1843,7 +1872,7 @@ static unsigned Grp_ListGrpsForChange (struct GroupType *GrpTyp)
/***** Free memory with the list of groups a the that belongs the user *****/
Grp_FreeListCodGrp (&LstGrpsIBelong);
return NumGrpsIBelong;
return ICanChangeMySelection;
}
/*****************************************************************************/